windhamdavid 2 years ago
commit
c72585e313
30 changed files with 4159 additions and 0 deletions
  1. 8 0
      .gitignore
  2. 1 0
      .tm_properties
  3. 14 0
      Readme.md
  4. 37 0
      Summary.md
  5. 34 0
      book.json
  6. 3 0
      db/db.md
  7. 4 0
      db/mongodb.md
  8. 344 0
      db/ubuntu-mongo.md
  9. 92 0
      editors/atom.md
  10. 18 0
      editors/editors.md
  11. 131 0
      editors/terminal.md
  12. 108 0
      editors/textmate.md
  13. 288 0
      editors/vi.md
  14. 224 0
      editors/zsh.md
  15. 96 0
      help.md
  16. 617 0
      lang/git.md
  17. 1 0
      lang/js.md
  18. 1 0
      lang/lang.md
  19. 1 0
      lang/nodejs.md
  20. 27 0
      package.json
  21. 2 0
      projects/juryd.md
  22. 1 0
      projects/projects.md
  23. 0 0
      random/random.md
  24. 0 0
      servers/apache.md
  25. 0 0
      servers/nginx.md
  26. 2 0
      servers/servers.md
  27. 1417 0
      servers/ubuntu.md
  28. 683 0
      software/adobe.md
  29. 2 0
      software/software.md
  30. 3 0
      styles/website.css

+ 8 - 0
.gitignore

@@ -0,0 +1,8 @@
+.DS_Store
+log/*
+*.log
+npm-debug.log*
+node_modules
+/node_modules
+/_book
+/img

+ 1 - 0
.tm_properties

@@ -0,0 +1 @@
+excludeDirectories = "{$excludeDirectories,tmp,node_modules,_book}"

File diff suppressed because it is too large
+ 14 - 0
Readme.md


+ 37 - 0
Summary.md

@@ -0,0 +1,37 @@
+#### About
+* [Introduction](Readme.md)
+* [Help](help.md) 
+
+#### Art
+
+#### Machine
+* [Editors](editors/editors.md)
+	* [Atom](editors/atom.md)
+	* [Terminal](editors/terminal.md)
+	* [Textmate](editors/textmate.md)
+	* [Vim](editors/vi.md)
+	* [Zsh](editors/zsh.md)
+* [Language](lang/lang.md)
+	* [Git](lang/git.md)
+	* [JS](lang/js.md)
+			* [nodejs](lang/nodejs.md)
+* [Server](servers/servers.md)
+	* [Ubuntu](servers/ubuntu.md)
+	* [Apache](servers/apache.md)
+	* [Nginx](servers/nginx.md)
+* [Software](software/software.md)
+	* [Adobe](software/adobe.md)
+* [Database](db/db.md)
+	* [MongoDB](db/mongodb.md)
+		* [Ubuntu](db/ubuntu-mongo.md)
+
+
+#### Projects
+* [Projects](projects/projects.md)
+	* [Juryd](projects/juryd.md)
+	
+
+#### Random
+
+
+ 

+ 34 - 0
book.json

@@ -0,0 +1,34 @@
+{   
+    "title": "Today I Learned",
+    "author": "David A. Windham",
+    "plugins": [
+		 "piwik",
+		 "video",
+		 "ace",
+		 "toggle-chapters",
+		 "toggle-headers"
+	 ],
+	 "search": {
+	         "maxIndexSize": 1000000000
+	     },
+    "pluginsConfig": {
+        "piwik": {
+        	"URL": "davidawindham.com/wik/",
+        "siteId": 1
+        }
+    },
+	"links": {
+		"sharing": {
+			"google": false,
+			"facebook": false,
+			"twitter": false,
+			"all": false
+			},
+		"sidebar": {
+			"David A. Windham": "https://davidawindham.com"
+		}
+	},
+    "styles": {
+        "website": "styles/website.css"
+    }
+}

+ 3 - 0
db/db.md

@@ -0,0 +1,3 @@
+#Database
+
+* #### [Mongodb](mongodb.md)

+ 4 - 0
db/mongodb.md

@@ -0,0 +1,4 @@
+# Mongo DB
+
+#### [MongoDB on Ubuntu 16.04](ubuntu-mongo.md)  
+####[Install MongoDB Community Edition on Ubuntu — MongoDB Manual 3.2](ubuntu-mongo.md#install-mongodb-community-edition-on-ubuntu-—-mongodb-manual-32)  

+ 344 - 0
db/ubuntu-mongo.md

@@ -0,0 +1,344 @@
+
+[Source](https://www.digitalocean.com/community/tutorials/how-to-install-mongodb-on-ubuntu-16-04)
+
+# How to Install MongoDB on Ubuntu 16.04
+
+### Introduction
+
+MongoDB is a free and open-source NoSQL document database used commonly in modern web applications. This tutorial will help you set up MongoDB on your server for a production application environment.
+
+As of publication time, the official Ubuntu 16.04 MongoDB packages have not yet been updated to use the new `systemd` init system [which is enabled by default on Ubuntu 16.04][1]. Running MongoDB using those packages on a clean Ubuntu 16.04 server involves following an additional step to configure MongoDB as a `systemd` service that will automatically start on boot.  
+
+## Prerequisites
+
+To follow this tutorial, you will need:
+
+## Step 1 — Adding the MongoDB Repository
+
+MongoDB is already included in Ubuntu package repositories, but the official MongoDB repository provides most up-to-date version and is the recommended way of installing the software. In this step, we will add this official repository to our server.
+
+Ubuntu ensures the authenticity of software packages by verifying that they are signed with GPG keys, so we first have to import they key for the official MongoDB repository.
+    
+        * sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
+    
+
+After successfully importing the key, you will see:
+
+Output
+    
+    
+    gpg: Total number processed: 1
+    gpg:               imported: 1  (RSA: 1)
+    
+
+Next, we have to add the MongoDB repository details so `apt` will know where to download the packages from.
+
+Issue the following command to create a list file for MongoDB.
+    
+        * echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
+    
+
+After adding the repository details, we need to update the packages list.
+
+## Step 2 — Installing and Verifying MongoDB
+
+Now we can install the MongoDB package itself.
+    
+        * sudo apt-get install -y mongodb-org
+    
+
+This command will install several packages containing latest stable version of MongoDB along with helpful management tools for the MongoDB server. 
+
+In order to properly launch MongoDB as a service on Ubuntu 16.04, we additionally need to create a unit file describing the service. A _unit file_ tells `systemd` how to manage a resource. The most common unit type is a _service_, which determines how to start or stop the service, when should it be automatically started at boot, and whether it is dependent on other software to run.
+
+We'll create a unit file to manage the MongoDB service. Create a configuration file named `mongodb.service` in the `/etc/systemd/system` directory using `nano` or your favorite text editor.
+    
+        * sudo nano /etc/systemd/system/mongodb.service
+    
+
+Paste in the following contents, then save and close the file.
+
+/etc/systemd/system/mongodb.service
+    
+    
+    [Unit]
+    Description=High-performance, schema-free document-oriented database
+    After=network.target
+    
+    [Service]
+    User=mongodb
+    ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
+    
+    [Install]
+    WantedBy=multi-user.target
+    
+
+This file has a simple structure:
+
+* The **Unit** section contains the overview (e.g. a human-readable description for MongoDB service) as well as dependencies that must be satisfied before the service is started. In our case, MongoDB depends on networking already being available, hence `network.target` here.
+* The **Service** section how the service should be started. The `User` directive specifies that the server will be run under the `mongodb` user, and the `ExecStart` directive defines the startup command for MongoDB server.
+* The last section, **Install**, tells `systemd` when the service should be automatically started. The `multi-user.target` is a standard system startup sequence, which means the server will be automatically started during boot. 
+
+Next, start the newly created service with `systemctl`.
+    
+        * sudo systemctl start mongodb
+    
+
+While there is no output to this command, you can also use `systemctl` to check that the service has started properly.
+    
+        * sudo systemctl status mongodb
+    
+
+Output
+    
+    
+    ● mongodb.service - High-performance, schema-free document-oriented database
+       Loaded: loaded (/etc/systemd/system/mongodb.service; enabled; vendor preset: enabled)
+       Active: active (running) since Mon 2016-04-25 14:57:20 EDT; 1min 30s ago
+     Main PID: 4093 (mongod)
+        Tasks: 16 (limit: 512)
+       Memory: 47.1M
+          CPU: 1.224s
+       CGroup: /system.slice/mongodb.service
+               └─4093 /usr/bin/mongod --quiet --config /etc/mongod.conf
+    
+
+The last step is to enable automatically starting MongoDB when the system starts.
+    
+        * sudo systemctl enable mongodb
+    
+
+The MongoDB server now configured and running, and you can manage the MongoDB service using the `systemctl` command (e.g. `sudo systemctl mongodb stop`, `sudo systemctl mongodb start`).
+
+## Step 3 — Adjusting the Firewall (Optional)
+
+Assuming you have followed the [initial server setup tutorial][2] instructions to enable the firewall on your server, MongoDB server will be inaccessible from the internet. 
+
+If you intend to use the MongoDB server only locally with applications running on the same server, it is a recommended and secure setting. However, if you would like to be able to connect to your MongoDB server from the internet, we have to allow the incoming connections in `ufw`.
+
+To allow access to MongoDB on its default port `27017` from everywhere, you could use `sudo ufw allow 27017`. However, enabling internet access to MongoDB server on a default installation gives unrestricted access to the whole database server.
+
+in most cases, MongoDB should be accessed only from certain trusted locations, such as another server hosting an application. To accomplish this task, you can allow access on MongoDB's default port while specifying the IP address of another server that will be explicitly allowed to connect.
+    
+        * sudo ufw allow from your_other_server_ip/32 to any port 27017
+    
+
+You can verify the change in firewall settings with `ufw`.
+
+You should see traffic to `27017` port allowed in the output.If you have decided to allow only a certain IP address to connect to MongoDB server, the IP address of the allowed location will be listed instead of _Anywhere_ in the output.
+
+Output
+    
+    
+    Status: active
+    
+    To                         Action      From
+    --                         ------      ----
+    27017                      ALLOW       Anywhere
+    OpenSSH                    ALLOW       Anywhere
+    27017 (v6)                 ALLOW       Anywhere (v6)
+    OpenSSH (v6)               ALLOW       Anywhere (v6)
+	 
+	 
+
+<hr>
+<hr>
+
+[Source](https://docs.mongodb.com/v3.2/tutorial/install-mongodb-on-ubuntu/ "Permalink to Install MongoDB Community Edition on Ubuntu — MongoDB Manual 3.2")
+
+# Install MongoDB Community Edition on Ubuntu — MongoDB Manual 3.2
+
+## Overview[¶][1]
+
+Use this tutorial to install MongoDB Community Edition on LTS Ubuntu Linux systems from `.deb` packages. While Ubuntu includes its own MongoDB packages, the official MongoDB Community Edition packages are generally more up-to-date.
+
+Platform Support
+
+MongoDB only provides packages for 64-bit LTS (long-term support) Ubuntu releases. For example, 12.04 LTS (precise), 14.04 LTS (trusty), 16.04 LTS (xenial), and so on. These packages may work with other Ubuntu releases, however, they are not supported.
+
+## Packages[¶][2]
+
+MongoDB provides officially supported packages in their own repository. This repository contains the following packages:
+
+These packages conflict with the `mongodb`, `mongodb-server`, and `mongodb-clients` packages provided by Ubuntu.
+
+The default `/etc/mongod.conf` configuration file supplied by the packages have `bind_ip` set to `127.0.0.1` by default. Modify this setting as needed for your environment before initializing a [replica set][3].
+
+## Init Scripts[¶][4]
+
+The `mongodb-org` package includes various [init scripts][5], including the init script `/etc/init.d/mongod`. You can use these scripts to stop, start, and restart daemon processes.
+
+The package configures MongoDB using the `/etc/mongod.conf` file in conjunction with the init scripts. See the [Configuration File][6] reference for documentation of settings available in the configuration file.
+
+There are no init scripts for `mongos. You can use the ``mongod`` init script to derive your own [`mongos`][7] init script for use in such environments. See the [`mongos`][7] reference for configuration details.
+
+## Install MongoDB Community Edition[¶][8]
+
+Note
+
+To install a version of MongoDB prior to 3.2, please refer to that version's documentation. For example, see version [3.0][9].
+
+MongoDB only provides packages for 64-bit LTS (long-term support) Ubuntu releases. For example, 12.04 LTS (precise), 14.04 LTS (trusty), 16.04 LTS (xenial), and so on. These packages may work with other Ubuntu releases, however, they are not supported.
+
+### Import the public key used by the package management system.[¶][10]
+
+The Ubuntu package management tools (i.e. `dpkg` and `apt`) ensure package consistency and authenticity by requiring that distributors sign packages with GPG keys. Issue the following command to import the [MongoDB public GPG Key][11]:
+    
+    
+    sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
+    
+
+### Create a list file for MongoDB.[¶][12]
+
+Create the `/etc/apt/sources.list.d/mongodb-org-3.2.list` list file using the command appropriate for your version of Ubuntu:
+
+Ubuntu 12.04
+    
+    
+    echo "deb http://repo.mongodb.org/apt/ubuntu precise/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
+    
+
+Ubuntu 14.04
+    
+    
+    echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
+    
+
+Ubuntu 16.04
+    
+    
+    echo "deb http://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
+    
+
+### Reload local package database.[¶][13]
+
+Issue the following command to reload the local package database:
+
+### Install the MongoDB packages.[¶][14]
+
+You can install either the latest stable version of MongoDB or a specific version of MongoDB.
+
+#### Install the latest stable version of MongoDB.[¶][15]
+
+Issue the following command:
+    
+    
+    sudo apt-get install -y mongodb-org
+    
+
+#### Install a specific release of MongoDB.[¶][16]
+
+To install a specific release, you must specify each component package individually along with the version number, as in the following example:
+    
+    
+    sudo apt-get install -y mongodb-org=3.2.13 mongodb-org-server=3.2.13 mongodb-org-shell=3.2.13 mongodb-org-mongos=3.2.13 mongodb-org-tools=3.2.13
+    
+
+If you only install `mongodb-org=3.2.13` and do not include the component packages, the latest version of each MongoDB package will be installed regardless of what version you specified.
+
+#### Pin a specific version of MongoDB.[¶][17]
+
+Although you can specify any available version of MongoDB, `apt-get` will upgrade the packages when a newer version becomes available. To prevent unintended upgrades, pin the package. To pin the version of MongoDB at the currently installed version, issue the following command sequence:
+    
+    
+    echo "mongodb-org hold" | sudo dpkg --set-selections
+    echo "mongodb-org-server hold" | sudo dpkg --set-selections
+    echo "mongodb-org-shell hold" | sudo dpkg --set-selections
+    echo "mongodb-org-mongos hold" | sudo dpkg --set-selections
+    echo "mongodb-org-tools hold" | sudo dpkg --set-selections
+    
+
+### (Ubuntu 16.04-only) Create systemd service file[¶][18]
+
+Note
+
+Follow this step ONLY if you are running Ubuntu 16.04.
+
+Create a new file at /lib/systemd/system/mongod.service with the following contents:
+    
+    
+    [Unit]
+    Description=High-performance, schema-free document-oriented database
+    After=network.target
+    Documentation=https://docs.mongodb.org/manual
+    
+    [Service]
+    User=mongodb
+    Group=mongodb
+    ExecStart=/usr/bin/mongod --quiet --config /etc/mongod.conf
+    
+    [Install]
+    WantedBy=multi-user.target
+    
+
+## Run MongoDB Community Edition[¶][19]
+
+The MongoDB instance stores its data files in `/var/lib/mongodb` and its log files in `/var/log/mongodb` by default, and runs using the `mongodb` user account. You can specify alternate log and data file directories in `/etc/mongod.conf`. See [`systemLog.path`][20] and [`storage.dbPath`][21] for additional information.
+
+If you change the user that runs the MongoDB process, you **must** modify the access control rights to the `/var/lib/mongodb` and `/var/log/mongodb` directories to give this user access to these directories.
+
+### Start MongoDB.[¶][22]
+
+Issue the following command to start [`mongod`][23]:
+    
+    
+    sudo service mongod start
+    
+
+### Verify that MongoDB has started successfully[¶][24]
+
+Verify that the [`mongod`][23] process has started successfully by checking the contents of the log file at `/var/log/mongodb/mongod.log` for a line reading
+    
+    
+    [initandlisten] waiting for connections on port 
+    
+
+where `` is the port configured in `/etc/mongod.conf`, `27017` by default.
+
+### Stop MongoDB.[¶][25]
+
+As needed, you can stop the [`mongod`][23] process by issuing the following command:
+
+### Restart MongoDB.[¶][26]
+
+Issue the following command to restart [`mongod`][23]:
+    
+    
+    sudo service mongod restart
+    
+
+### Begin using MongoDB.[¶][27]
+
+To help you start using MongoDB, MongoDB provides [Getting Started Guides][28] in various driver editions. See [Getting Started][28] for the available editions.
+
+Before deploying MongoDB in a production environment, consider the [Production Notes][29] document.
+
+Later, to stop MongoDB, press `Control+C` in the terminal where the [`mongod`][23] instance is running.
+
+## Uninstall MongoDB Community Edition[¶][30]
+
+To completely remove MongoDB from a system, you must remove the MongoDB applications themselves, the configuration files, and any directories containing data and logs. The following section guides you through the necessary steps.
+
+Warning
+
+This process will _completely_ remove MongoDB, its configuration, and _all_ databases. This process is not reversible, so ensure that all of your configuration and data is backed up before proceeding.
+
+### Stop MongoDB.[¶][31]
+
+Stop the [`mongod`][23] process by issuing the following command:
+
+### Remove Packages.[¶][32]
+
+Remove any MongoDB packages that you had previously installed.
+    
+    
+    sudo apt-get purge mongodb-org*
+    
+
+### Remove Data Directories.[¶][33]
+
+Remove MongoDB databases and log files.
+    
+    
+    sudo rm -r /var/log/mongodb
+    sudo rm -r /var/lib/mongodb

+ 92 - 0
editors/atom.md

@@ -0,0 +1,92 @@
+#Atom  
+[Atom text editor](https://atom.io)  
+
+### Atom Keyboard Shortcuts
+[Source](https://github.com/nwinkler/atom-keyboard-shortcuts)
+
+Complete listing of all available shortcuts, consult the _Settings > Keybindings_ page in Atom.
+
+
+#### General
+
+Some general keyboard shortcuts that I use frequently.
+
+| Command | macOS | Windows | Linux | Description |
+| ------- | -------- | ------- | ----- | ----------- |
+| Preferences/Settings | `cmd-,` | `ctrl-,`  | `ctrl-,` | Opens the Preferences/Settings view |
+| Command Palette | `shift-cmd-p` | `shift-ctrl-p`  | `ctrl-shift-p` | Opens & closes the command palette |
+| Open File (Fuzzy) | `cmd-p` | `ctrl-p`<br/>or<br/>`ctrl-t`  | `ctrl-p` | Opens the Fuzzy Finder palette in which you can search and open files  |
+| Browse Open Files | `cmd-b` | `ctrl-b`  | `ctrl-b` | Browse tabs within the window  |
+| Grammar Selector | `ctrl-shift-l` | `ctrl-shift-l`  | `ctrl-shift-l` | Selects the language the file is in  |
+| Markdown Preview | `ctrl-shift-m` | `ctrl-shift-m`  | `ctrl-shift-m` | Previews the file in the Markdown format |
+| Key Binding Resolver | `cmd-.` | `ctrl-.`  | `ctrl-.` | Shows what keybindings the pressed key combination resolves to |
+| Toggle Tree View | `cmd-k cmd-b`<br/>or<br/>`cmd-\` | `ctrl-k ctrl-b`<br/>or<br/>`ctrl-\` | `ctrl-k ctrl-b`<br/>or<br/>`ctrl-\`| Toggles Atom's file Tree View |
+| Reload Atom | `ctrl-alt-cmd-l` | `alt-ctrl-r` | `alt-ctrl-r` | Reloads the Editor  |
+| Open Link | `ctrl-shift-o` |  |  | Opens up a HTTP or HTTPS link |
+| Toggle Developer Tools | `alt-cmd-i` | `ctrl-alt-i`  | `ctrl-shift-i` | Opens up the Chrome Developer Tools/Console |
+| Show Available Snippets | `alt-shift-s` | `alt-shift-s`  | `alt-shift-s` | Shows the snippets available to Atom  |
+
+
+#### Window Management
+
+| Command | macOS | Windows | Linux | Description |
+| ------- | -------- | ------- | ----- | ----------- |
+| New File | `cmd-n` | `ctrl-n`  | `ctrl-n` | Opens an empty file in a new tab |
+| New Window | `shift-cmd-n` | `ctrl-shift-n`  | `ctrl-shift-n` | Opens a new editor window |
+| Open | `cmd-o` | `ctrl-o`  | `ctrl-o` | Shows the _Open File_ dialog, which lets you select a file to open in the editor |
+| Open Folder | `cmd-shift-o` | `ctrl-shift-o`  | `ctrl-shift-o` | Shows the _Open Folder_ dialog, which lets you select a folder to add to the editor's Tree View |
+| Save | `cmd-s` | `ctrl-s`  | `ctrl-s` | Saves the currently active file |
+| Save As | `shift-cmd-s` | `ctrl-shift-s`  | `ctrl-shift-s` | Saves the currently active file under a different name  |
+| Save All | `alt-cmd-s` |  |  | Saves all changed files |
+| Close Tab | `cmd-w` |  `ctrl-w` | `ctrl-w` | Closes the currently active tab|
+| Close Window | `shift-cmd-w` | `ctrl-shift-w`  | `ctrl-shift-w` | Closes the currently active editor window  |
+
+#### Editing
+
+| Command | macOS | Windows | Linux | Description |
+| ------- | -------- | ------- | ----- | ----------- |
+| Duplicate Lines | `shift-cmd-d` | `ctrl-shift-d` | `ctrl-shift-d` | Duplicates the line of the current cursor position and creates a new line under it with the same contents |
+| Delete Line | `ctrl-shift-k` | `ctrl-shift-k` | `ctrl-shift-k` | Deletes the current line |
+| Move Line Up | `ctrl-cmd-up` | `ctrl-up`  | `ctrl-up` | Moves the contents of the current cursor position up one line. If there is a line above with content, the current lines content will swap with the one above it. |
+| Move Line Down | `ctrl-cmd-down` | `ctrl-down`  | `ctrl-down` | Moves the contents of the current cursor position down one line. If there is a line below with content, the line's content will swap with the one below it. |
+| Find/Replace | `cmd-f` | `ctrl-f`  | `ctrl-f` | Opens up the Find/Replace panel |
+| Find Next | `cmd-g` | `F3`  | `F3` | Toggles forward through the results of the current buffer in the file while the Find/Replace panel is active |
+| Find Previous | `shift-cmd-g` | `shift-F3`  | `shift-F3` | Toggles backward through the results of the current buffer in the file while the Find/Replace panel is active|
+| Find in Project | `shift-cmd-f` | `ctrl-shift-f`  | `ctrl-shift-f` | Opens the Find in Project Panel |
+| Go To Line | `ctrl-g` | `ctrl-g`  | `ctrl-g` | Opens the Go To Line panel |
+| Go To Matching Bracket | `ctrl-m` | `ctrl-m`  | `ctrl-m` | The cursor goes to the matching top bracket that the cursor is ecapsulated in  |
+| Select Line | `cmd-l` | `ctrl-l`  | `ctrl-l` | Selects the entire line the cursor's current position is in |
+| Toggle Comment | `cmd-/` | `ctrl-/`  | `ctrl-/` | Toggles the selected text into a comment of the current grammar |
+| Column Selection | `ctrl-shift-up/down` |  | `shift-alt-up/down`  | Allows to select multiple rows, where the same edit will be applied |
+| Select Same Words | `cmd-d` | `ctrl-d` | `ctrl-d` | If you select a word, and then hit the key combo for this command, Atom will select the next same word for you. Then you can either type directly (which will replace the old words) or use left or right arrow to append things.
+
+#### Various Packages
+
+These are some packages I find useful, and their most useful key bindings. A list of my favorite packages can be found [here](https://atom.io/users/nwinkler/stars).
+
+| Command | macOS | Windows | Linux | Package |
+| ------- | -------- | ------- | ----- | ----------- |
+| Block Travel up/down | `alt-up`, `alt-down` |  |  | [Block Travel](https://atom.io/packages/block-travel) |
+| Beautify | `ctrl-alt-b` |  |  | [Beautify](https://atom.io/packages/atom-beautify) |
+| Expand Abbreviation | `shift-cmd-e` | `ctrl-e` | `ctrl-e` | [Emmet](https://atom.io/packages/emmet) |
+| Incremental Search | `cmd-i` |  |  | [Incremental Search](https://atom.io/packages/incremental-search) |
+| Git Plus Menu | `shift-cmd-h` | `ctrl-shift-h` | `ctrl-shift-h` | [Git Plus](https://atom.io/packages/git-plus) |
+| Jumpy | `shift-enter` |  |  | [Jumpy](https://atom.io/packages/jumpy) |
+| Minimap Toggle | `ctrl-k ctrl-m` |  |  | [Minimap](https://atom.io/packages/minimap) |
+| Open File in Browser | `ctrl-alt-m` |  |  | [Open in Browser](https://atom.io/packages/open-in-browser) |
+| Run Script | `ctrl-cmd-i` |  |  | [Script](https://atom.io/packages/script) - Keybinding remapped from original `cmd-i` to avoid conflict with Incremental Search |
+| Open Terminal | `ctrl-alt-t` |  |  | [Term2](https://atom.io/packages/term2) |
+| Open Project | `ctrl-cmd-p` | `alt-shift-p` | `ctrl-alt-shift-p` | [Project Manager](https://atom.io/packages/project-manager) |
+| Open In | `ctrl-alt-o` |  |  | [Open In](https://atom.io/packages/open-in) |
+| Sublime Style Column Selection | `alt-mouse` |  |  | [Sublime Style Column Selection](https://atom.io/packages/Sublime-Style-Column-Selection) |
+
+#### apm
+
+`apm` is Atom's package manager, based on Node's `npm` tool.
+
+| Command | Description |
+| ------- | ----------- |
+| `apm upgrade` | Updates all locally installed packages |
+| `apm upgrade --no-confirm` | Updates all locally installed packages without asking any questions |
+| `apm stars --install` | Installs/updates all packages that you have marked as a favorite (_starred_) in your Atom.io profile |
+| `apm publish minor` | If you're developing your own package, run this in the package's directory to publish a new version of the package, increasing the minor version number by one. |

+ 18 - 0
editors/editors.md

@@ -0,0 +1,18 @@
+#Editors
+
+A quick glance of the dotfiles in the home directory on a couple machines are what I generally reference.   [https://github.com/windhamdavid/dotfiles/](https://github.com/windhamdavid/dotfiles/)
+
+The terminals and editors:  
+* [atom](atom.md)
+* [textmate](textmate.md)
+* [terminal](terminal.md)
+* [vi](vi.md)
+* [zsh](zsh.md)
+
+#### Commands
+For each page I'll just put a list of commands I use and tend to forget.  
+
+```
+```
+
+

+ 131 - 0
editors/terminal.md

@@ -0,0 +1,131 @@
+# Terminal (macOS)
+
+#### SHORTCUTS
+
+| Key/Command | Description |
+| ----------- | ----------- |
+| Ctrl + A   | Go to the beginning of the line you are currently typing on.  This also works for most text input fields system wide.  Netbeans being one exception |
+| Ctrl + E   | Go to the end of the line you are currently typing on.  This also works for most text input fields system wide.  Netbeans being one exception |
+| Ctrl + Q   | Clears everything on current line |
+| Ctrl + L   | Clears the Screen |
+| ⌘Cmd + K |Clears the Screen |
+| Ctrl + U   | Cut everything backwards to beginning of line |
+| Ctrl + K   | Cut everything forward to end of line |
+| Ctrl + W   | Cut one word backwards using white space as delimiter |
+| Ctrl + Y   | Paste whatever was cut by the last cut command |
+| Ctrl + H   | Same as backspace |
+| Ctrl + C   | Kill whatever you are running |
+| Ctrl + D   | Exit the current shell when no process is running, or send EOF to a the running process |
+| Ctrl + Z   | Puts whatever you are running into a suspended background process. fg restores it. |
+| Ctrl + _   | Undo the last command. (Underscore.  So it's actually Ctrl + Shift + minus) |
+| Ctrl + T   | Swap the last two characters before the cursor |
+| Ctrl + F   | Move cursor one character forward |
+| Ctrl + B   | Move cursor one character backward |
+| Esc + F  | Move cursor one word forward |
+| Esc + B  | Move cursor one word backward |
+| Esc + T  | Swap the last two words before the cursor |
+| Tab  | Auto-complete files and folder names |
+
+## CORE COMMANDS
+
+| Key/Command | Description |
+| ----------- | ----------- |
+| cd |  Home directory |
+| cd [folder] | Change directory e.g. `cd documents` |
+| cd /  | Root of drive |
+| cd -  | Previous directory |
+| ls | Short listing |
+| ls -l | Long listing |
+| ls -a | Listing incl. hidden files |
+| ls -lh| Long listing with Human readable file sizes |
+| ls -R | Entire content of folder recursively |
+| sudo [command] | Run command with the security privileges of the superuser (Super User DO) |
+| open [file] | Opens a file ( as if you double clicked it ) |
+| top | Displays active processes. Press q to quit |
+| nano [file] | Opens the file using the nano editor |
+| vim [file] | Opens the file using the vim editor |
+| clear |  Clear screen |
+| reset |  Resets the terminal display |
+
+#### CHAINING COMMANDS
+
+| Key/Command | Description |
+| ----------- | ----------- |
+| [command-a]; [command-b] | Run command A and then B, regardless of success of A |
+| [command-a] && [command-b] | Run command B if A succeeded |
+| [command-a] || [command-b] | Run command B if A failed |
+| [command-a] & | Run command A in background |
+
+
+#### PIPING COMMANDS
+
+| Key/Command | Description |
+| ----------- | ----------- |
+| [command-a] \| [command-b] | Run command A and then pass the result to command B e.g ps auxwww \| grep google
+|
+
+
+#### COMMAND HISTORY
+
+| Key/Command | Description |
+| ----------- | ----------- |
+| history n |  Shows the stuff typed – add a number to limit the last n items |
+| Ctrl + r  | Interactively search through previously typed commands |
+| ![value] |  Execute the last command typed that starts with ‘value’ |
+| !! |  Execute the last command typed |
+
+#### FILE MANAGEMENT
+
+| Key/Command | Description |
+| ----------- | ----------- |
+| touch [file] |   Create new file |
+| pwd | Full path to working directory |
+| . |  Current folder, e.g. `ls .` |
+| .. | Parent/enclosing directory, e.g. `ls ..` |
+| `ls -l ..` | Long listing of parent directory |
+| `cd ../../` | Move 2 levels up |
+| cat | Concatenate to screen |
+| rm [file] |  Remove a file, e.g. `rm data.tmp` |
+| rm -i [file] | Remove with confirmation |
+| rm -r [dir] | Remove a directory and contents |
+| rm -f [file] | Force removal without confirmation |
+| cp [file] [newfile] | Copy file to file |
+| cp [file] [dir] | Copy file to directory |
+| mv [file] [new filename] |  Move/Rename, e.g. `mv file1.ad /tmp` |
+| pbcopy < [file] | Copies file contents to clipboard |
+| pbpaste | Paste clipboard contents |
+| pbpaste > [file] | Past clipboard contents into file, `pbpaste > paste-test.txt` |
+
+#### DIRECTORY MANAGEMENT
+
+| Key/Command | Description |
+| ----------- | ----------- |
+| mkdir [dir] | Create new directory |
+| mkdir -p [dir]/[dir] |  Create nested directories |
+| rmdir [dir] | Remove directory ( only operates on empty directories ) |
+| rm -R [dir] | Remove directory and contents |
+| [command] \| [command] | Allows to combine multiple commands that generate output, e.g. `cat data.txt | pbcopy` |
+| less |  Output content delivered in screensize chunks |
+| [command] > [file] |  Push output to file, keep in mind it will get overwritten |
+| [command] >> [file] | Append output to existing file |
+| [command] < [file] |  Tell command to read content from a file |
+
+#### SEARCH
+
+| Key/Command | Description |
+| ----------- | ----------- |
+| find [dir] -name [search_pattern] | Search for files, e.g. `find /Users -name "file.txt"` |
+| grep [search_pattern] [file] | Search for all lines that contain the pattern, e.g. `grep "Tom" file.txt` |
+| grep -r [search_pattern] [file] | Recursively search for all lines that do not contain the pattern |
+| grep -v [search_pattern] [file] | Search for all lines that do NOT contain the pattern |
+
+#### HELP
+
+| Key/Command | Description |
+| ----------- | ----------- |
+| [command] -h |  Offers help |
+| [command] —help | Offers help |
+| info [command] | Offers help |
+| man [command] |  Show the help manual for [command] |
+| whatis [command] | Gives a one-line description of [command] |
+| apropos [search-pattern] | Searches for command with keywords in description |

+ 108 - 0
editors/textmate.md

@@ -0,0 +1,108 @@
+#Textmate
+
+
+
+
+
+#### TextMate Cheat Sheet
+[Source](https://gist.github.com/jqr/45264 "Permalink to TextMate Cheat Sheet · GitHub")
+
+
+|   | ⌘Command, ⇧ Shift, ⌃ Control, ⌥ Option/Alt, ⎋ Escape, ↩ Enter/Return, ⌫ Backspace, ⇥ Tab |  
+| - | ---------------------------------------------------------------------------------------- |  
+|   | Help                                                                                     |  
+|   | ⌘? Help                                                                                  |  
+|   | ⌃⌘⌥B Bundle Docs/Editor                                                                  |  
+|   |                                                                                          |  
+|   | File                                                                                     |  
+|   | ⌘S Save File                                                                             |  
+|   | ⌘W Close File                                                                            |  
+|   | ⌃⌘S Save Project                                                                         |  
+|   | ⌃⌘W Close All Tabs in Project                                                            |  
+|   | ⇧⌘W Close Project/Window                                                                 |  
+|   | ⌃⌘R Reveal in Project                                                                    |  
+|   | ⌃⇧⌘R Reveal in Finder                                                                    |  
+|   |                                                                                          |  
+|   | General                                                                                  |  
+|   | ⌃⌘⌥D Toggle Drawer                                                                       |  
+|   | ⌘T Go to File... (supports abbreviations)                                                |  
+|   | ⇧⌘T Go to Symbol... (supports abbreviations)                                             |  
+|   | ⌃ ⇧A Ack in Project                                                                      |  
+|   | ⎋ Complete                                                                               |  
+|   | ⌘L Go to Line...                                                                         |  
+|   | ⌃U Convert to Uppercase                                                                  |  
+|   | ⌃ ⇧U Convert to Lowercase                                                                |  
+|   | ⌃ ⌥U Convert to Title Case (Entire Line)                                                 |  
+|   | ⌘↩ Newline After Line                                                                    |  
+|   | ⌘] Increase Indent                                                                       |  
+|   | ⌘[ Decrease Indent                                                                       |  
+|   | ⌘⌥[ Auto Indent                                                                          |  
+|   | ⌃⇧J Join With Next Line                                                                  |  
+|   | ⌥⌫ Delete to Previous Word                                                               |  
+|   | ⌃K Delete to End of Line                                                                 |  
+|   | ⌃⇧K Delete Line                                                                          |  
+|   | ⌃⇧N Statistics for Document (Word Count)                                                 |  
+|   | ⌘⌥W Toggle Soft Warp                                                                     |  
+|   | ⌃Q Wrap Text                                                                             |  
+|   | ⌥⌘R Filter Document Through Command                                                      |  
+|   | ⌃⇧O Open Project in Terminal                                                             |  
+|   |                                                                                          |  
+|   | lorem⇥ Insert Lorem ipsum dolor...                                                       |  
+|   |                                                                                          |  
+|   | Selections                                                                               |  
+|   | ⌃W Select Word                                                                           |  
+|   | ⌘⇧L Select Line                                                                          |  
+|   | ⌘⇧B Select Enclosing Brackets                                                            |  
+|   | ⌘⌥A Edit Multiple Lines                                                                  |  
+|   | ⌥ Change to Column Selection                                                             |  
+|   | ⌥ drag Column Select                                                                     |  
+|   | ⌘⇧ arrow Move Selection                                                                  |  
+|   |                                                                                          |  
+|   | Code                                                                                     |  
+|   | ⌃_ Toggle camelCase / snake_case / PascalCase                                            |  
+|   | ⌘/ Toggle Comment                                                                        |  
+|   | ⌃" Toggle Quotes                                                                         |  
+|   | ⌃H Docs for Language                                                                     |  
+|   | ⇧↩ New Method                                                                            |  
+|   | ⌃⇧T FIXME/TODO/CHANGED                                                                   |  
+|   | ⌃↩ Descriptive Newline                                                                   |  
+|   | ⌘⌥↩ Insert Semicolon at End of Line                                                      |  
+|   | if⇥ If Statement                                                                         |  
+|   | ife⇥ If Else Statement                                                                   |  
+|   |                                                                                          |  
+|   | :⇥ Key Value pair                                                                        |  
+|   |                                                                                          |  
+|   | Ruby on Rails                                                                            |  
+|   | ⌃H Ruby and Ruby on Rails Docs                                                           |  
+|   | %{ Toggle Block Style (do..end / {})                                                     |  
+|   | ⌘⇧H Create Partial from Selection                                                        |  
+|   | ⌃⇧M Quick Migration                                                                      |  
+|   | ⌃L Hash Arrow                                                                            |  
+|   |                                                                                          |  
+|   | cla⇥ Class Definitions                                                                   |  
+|   | mod⇥ Module Definitions                                                                  |  
+|   | ea⇥ Each                                                                                 |  
+|   | resources⇥ Create Resource Controller                                                    |  
+|   |                                                                                          |  
+|   | mcol⇥ Modify Column                                                                      |  
+|   | mtab⇥ Modify Table                                                                       |  
+|   | mind⇥ Modify Indexes                                                                     |  
+|   | dir⇥ File.dirname(__FILE__)                                                              |  
+|   |                                                                                          |  
+|   | Javascript                                                                               |  
+|   | :⇥ Key "value" pair                                                                      |  
+|   | :,⇥ Key Value pair                                                                       |  
+|   | f⇥ Anonymous Function                                                                    |  
+|   | :f⇥ Object Method                                                                        |  
+|   |                                                                                          |  
+|   | HTML                                                                                     |  
+|   | ⌃&lt; Insert Open/Close Tag                                                                 |  
+|   | ⌃H Lookup W3 Docs                                                                        |  
+|   | ⌘⌥. Insert Close Tag                                                                     |  
+|   | ⌘&amp; Url/Entity Encode/Decode                                                              |  
+|   | ⌃⇧W Wrap in Tag                                                                          |  
+|   |                                                                                          |  
+|   | doctype⇥ Insert Doctype                                                                  |  
+|   | !⇥ Conditional Comments                                                                  |  
+
+  

+ 288 - 0
editors/vi.md

@@ -0,0 +1,288 @@
+# Vim
+
+```
+vimdiff file file
+cntl+n (for Nerdtree in Vim)
+```
+
+#### Configuration
+[https://github.com/windhamdavid/dotfiles/blob/master/macs.local/.vimrc](https://github.com/windhamdavid/dotfiles/blob/master/macs.local/.vimrc)  
+[https://github.com/VundleVim/Vundle.vim](https://github.com/VundleVim/Vundle.vim)  
+[https://github.com/scrooloose/nerdtree](https://github.com/scrooloose/nerdtree)
+[https://github.com/Xuyuanp/nerdtree-git-plugin](https://github.com/Xuyuanp/nerdtree-git-plugin)
+
+#### vi cheatsheets
+
+[![vi-2](/img/vim2.png)](/img/vim2.png)
+[![vi-1](/img/vim-1.png)](/img/vim-1.png)
+
+
+
+## Vim Cheatsheet
+
+
+#### Global
+```bash
+:help keyword # open help for keyword
+:o file       # open file
+:saveas file  # save file as
+:close        # close current pane
+```
+
+#### Cursor movement
+```bash
+h        # move cursor left
+j        # move cursor down
+k        # move cursor up
+l        # move cursor right
+H        # move to top of screen
+M        # move to middle of screen
+L        # move to bottom of screen
+w        # jump forwards to the start of a word
+W        # jump forwards to the start of a word (words can contain punctuation)
+e        # jump forwards to the end of a word
+E        # jump forwards to the end of a word (words can contain punctuation)
+b        # jump backwards to the start of a word
+B        # jump backwards to the start of a word (words can contain punctuation)
+0        # jump to the start of the line
+^        # jump to the first non-blank character of the line
+$        # jump to the end of the line
+g_       # jump to the last non-blank character of the line
+gg       # go to the first line of the document
+G        # go to the last line of the document
+5G       # go to line 5
+fx       # jump to next occurrence of character x
+tx       # jump to before next occurrence of character x
+}        # jump to next paragraph (or function/block, when editing code)
+{        # jump to previous paragraph (or function/block, when editing code)
+zz       # center cursor on screen
+Ctrl + b # move back one full screen
+Ctrl + f # move forward one full screen
+Ctrl + d # move forward 1/2 a screen
+Ctrl + u # move back 1/2 a screen
+```
+
+#### Insert mode - inserting/appending text
+```bash
+i        # insert before the cursor
+I        # insert at the beginning of the line
+a        # insert (append) after the cursor
+A        # insert (append) at the end of the line
+o        # append (open) a new line below the current line
+O        # append (open) a new line above the current line
+ea       # insert (append) at the end of the word
+Esc      # exit insert mode
+```
+
+#### Editing
+```bash
+r        # replace a single character
+J        # join line below to the current one
+cc       # change (replace) entire line
+cw       # change (replace) to the end of the word
+c$       # change (replace) to the end of the line
+s        # delete character and substitute text
+S        # delete line and substitute text (same as cc)
+xp       # transpose two letters (delete and paste)
+.        # repeat last command
+u        # undo
+Ctrl + r # redo
+```
+
+#### Marking text (visual mode)
+```bash
+v        # start visual mode, mark lines, then do a command (like y-yank)
+V        # start linewise visual mode
+o        # move to other end of marked area
+O        # move to other corner of block
+aw       # mark a word
+ab       # a block with ()
+aB       # a block with {}
+ib       # inner block with ()
+iB       # inner block with {}
+Esc      # exit visual mode
+Ctrl + v # start visual block mode
+```
+
+#### Visual commands
+```bash
+>       # shift text right
+<       # shift text left
+y       # yank (copy) marked text
+d       # delete marked text
+~       # switch case
+```
+
+#### Cut and paste
+```bash
+yy       # yank (copy) a line
+2yy      # yank (copy) 2 lines
+yw       # yank (copy) the characters of the word from the cursor position to the start of the next word
+y$       # yank (copy) to end of line
+p        # put (paste) the clipboard after cursor
+P        # put (paste) before cursor
+dd       # delete (cut) a line
+2dd      # delete (cut) 2 lines
+dw       # delete (cut) the characters of the word from the cursor position to the start of the next word
+D        # delete (cut) to the end of the line
+d$       # delete (cut) to the end of the line
+x        # delete (cut) character
+```
+
+#### Search and replace
+```bash
+/pattern       # search for pattern
+?pattern       # search backward for pattern
+\vpattern      # 'very magic' pattern: non-alphanumeric characters are interpreted as special regex symbols (no escaping needed)
+n              # repeat search in same direction
+N              # repeat search in opposite direction
+:%s/old/new/g  # replace all old with new throughout file
+:%s/old/new/gc # replace all old with new throughout file with confirmations
+:noh           # remove highlighting of search matches
+```
+
+#### Search in multiple files
+```bash
+:vimgrep /pattern/ {file} # search for pattern in multiple files
+:cn                       # jump to the next match
+:cp                       # jump to the previous match
+:copen                    # open a window containing the list of matches
+```
+
+#### Exiting
+```bash
+:w              # write (save) the file, but don't exit
+:w !sudo tee %  # write out the current file using sudo
+:wq or :x or ZZ # write (save) and quit
+:q              # quit (fails if there are unsaved changes)
+:q! or ZQ       # quit and throw away unsaved changes
+```
+
+#### Working with multiple files
+```bash
+:e file       # edit a file in a new buffer
+:bnext or :bn # go to the next buffer
+:bprev or :bp # go to the previous buffer
+:bd           # delete a buffer (close a file)
+:ls           # list all open buffers
+:sp file      # open a file in a new buffer and split window
+:vsp file     # open a file in a new buffer and vertically split window
+Ctrl + ws     # split window
+Ctrl + ww     # switch windows
+Ctrl + wq     # quit a window
+Ctrl + wv     # split window vertically
+Ctrl + wh     # move cursor to the left window (vertical split)
+Ctrl + wl     # move cursor to the right window (vertical split)
+Ctrl + wj     # move cursor to the window below (horizontal split)
+Ctrl + wk     # move cursor to the window above (horizontal split)
+```
+
+#### Tabs
+```bash
+:tabnew or :tabnew file # open a file in a new tab
+Ctrl + wT               # move the current split window into its own tab
+gt or :tabnext or :tabn # move to the next tab
+gT or :tabprev or :tabp # move to the previous tab
+<number>gt              # move to tab <number>
+:tabmove <number>       # move current tab to the <number>th position (indexed from 0)
+:tabclose or :tabc      # close the current tab and all its windows
+:tabonly or :tabo       # close all tabs except for the current one
+:tabdo command          # run the command on all tabs (e.g. :tabdo q - closes all opened tabs)
+```
+
+#### NERDTree
+    o.......Open files, directories and bookmarks....................|NERDTree-o|
+    go......Open selected file, but leave cursor in the NERDTree.....|NERDTree-go|
+    t.......Open selected node/bookmark in a new tab.................|NERDTree-t|
+    T.......Same as 't' but keep the focus on the current tab........|NERDTree-T|
+    i.......Open selected file in a split window.....................|NERDTree-i|
+    gi......Same as i, but leave the cursor on the NERDTree..........|NERDTree-gi|
+    s.......Open selected file in a new vsplit.......................|NERDTree-s|
+    gs......Same as s, but leave the cursor on the NERDTree..........|NERDTree-gs|
+    O.......Recursively open the selected directory..................|NERDTree-O|
+    x.......Close the current nodes parent...........................|NERDTree-x|
+    X.......Recursively close all children of the current node.......|NERDTree-X|
+    e.......Edit the current dif.....................................|NERDTree-e|
+
+    <CR>...............same as |NERDTree-o|.
+    double-click.......same as the |NERDTree-o| map.
+    middle-click.......same as |NERDTree-i| for files, same as
+                      |NERDTree-e| for dirs.
+
+    D.......Delete the current bookmark .............................|NERDTree-D|
+
+    P.......Jump to the root node....................................|NERDTree-P|
+    p.......Jump to current nodes parent.............................|NERDTree-p|
+    K.......Jump up inside directories at the current tree depth.....|NERDTree-K|
+    J.......Jump down inside directories at the current tree depth...|NERDTree-J|
+    <C-J>...Jump down to the next sibling of the current directory...|NERDTree-C-J|
+    <C-K>...Jump up to the previous sibling of the current directory.|NERDTree-C-K|
+
+    C.......Change the tree root to the selected dir.................|NERDTree-C|
+    u.......Move the tree root up one directory......................|NERDTree-u|
+    U.......Same as 'u' except the old root node is left open........|NERDTree-U|
+    r.......Recursively refresh the current directory................|NERDTree-r|
+    R.......Recursively refresh the current root.....................|NERDTree-R|
+    m.......Display the NERD tree menu...............................|NERDTree-m|
+    cd......Change the CWD to the dir of the selected node...........|NERDTree-cd|
+
+    I.......Toggle whether hidden files displayed....................|NERDTree-I|
+    f.......Toggle whether the file filters are used.................|NERDTree-f|
+    F.......Toggle whether files are displayed.......................|NERDTree-F|
+    B.......Toggle whether the bookmark table is displayed...........|NERDTree-B|
+
+    q.......Close the NERDTree window................................|NERDTree-q|
+    A.......Zoom (maximize/minimize) the NERDTree window.............|NERDTree-A|
+    ?.......Toggle the display of the quick help.....................|NERDTree-?|
+	 
+	 
+	 
+### vimdiff cheet sheet
+
+#### git mergetool
+
+```
+git config --global merge.tool=vimdiff
+```
+
+#### vimdiff key mappings
+
+```
+map <Leader>1 :diffget LOCAL<CR>
+map <Leader>2 :diffget BASE<CR>
+map <Leader>3 :diffget REMOTE<CR>
+```
+
+#### vimdiff commands
+
+```
+]c :            next difference
+[c :            previous difference
+do              diff obtain
+dp              diff put
+zo              open folded text
+zc              close folded text
+:diffupdate     re-scan the files for differences
+```
+
+#### moving between windows
+
+```
+CTRL-W h        move to the window on the left
+CTRL-W j        move to the window below
+CTRL-W k        move to the window above
+CTRL-W l        move to the window on the right
+CTRL-W t        move to the TOP window
+CTRL-W b        move to the BOTTOM window
+CTRL-W CTRL-W   move to the next window
+```
+
+#### moving windows
+
+```
+CTRL-W K        move window to the upper
+CTRL-W H        move window to the far left
+CTRL-W J        move window to the bottom
+CTRL-W L        move window to the far right
+
+

+ 224 - 0
editors/zsh.md

@@ -0,0 +1,224 @@
+#Z shell
+
+
+
+###Oh My ZSH
+
+[Source](https://github.com/robbyrussell/oh-my-zsh/wiki/Cheatsheet "Permalink to Cheatsheet · robbyrussell/oh-my-zsh Wiki · GitHub")
+
+
+##  Commands
+
+| Command               | Description                                                                                                                  |  
+| --------------------- | ---------------------------------------------------------------------------------------------------------------------------- |  
+| _tabs_                | Create a new tab in the current directory (macOS - requires enabling access for assistive devices under System Preferences). |  
+| _take_                | Create a new directory and change to it, will create intermediate directories as required.                                   |  
+| _x_ / _extract_       | Extract an archive (supported types: tar.{bz2,gz,xz,lzma}, bz2, rar, gz, tar, tbz2, tgz, zip, Z, 7z).                        |  
+| _zsh_stats_           | Get a list of the top 20 commands and how many times they have been run.                                                     |  
+| _uninstall_oh_my_zsh_ | Uninstall Oh-my-zsh.                                                                                                         |  
+| _upgrade_oh_my_zsh_   | Upgrade Oh-my-zsh.                                                                                                           |  
+| source ~/.zshrc       | Uptake new changes                                                                                                           |  
+
+* * *
+
+| Alias   | Command                               |  
+| ------- | ------------------------------------- |  
+| _alias_ | list all aliases                      |  
+| ..      | cd ..                                 |  
+| ...     | cd ../..                              |  
+| ....    | cd ../../..                           |  
+| .....   | cd ../../../..                        |  
+| /       | cd /                                  |  
+| ~       | cd ~                                  |  
+| _cd +n_ | switch to directory number `n`        |  
+| _1_     | cd -                                  |  
+| _2_     | cd +2                                 |  
+| _3_     | cd +3                                 |  
+| _4_     | cd +4                                 |  
+| _5_     | cd +5                                 |  
+| _6_     | cd +6                                 |  
+| _7_     | cd +7                                 |  
+| _8_     | cd +8                                 |  
+| _9_     | cd +9                                 |  
+| _md_    | mkdir -p                              |  
+| _rd_    | rmdir                                 |  
+| _d_     | dirs -v (lists last used directories) |  
+
+See `~/.oh-my-zsh/lib/directories.zsh`
+
+###  Alias
+
+example:
+    
+    
+    alias -s rb=vim #opens ruby files in vim
+    # $ foo.rb 
+    # vim => foo.rb
+    alias -g gp='| grep -i' #creates a global alias for grep
+    # $ ps ax gp ruby
+    # (all ruby process will be displayed)
+
+| Flag | Description                                    |  
+| ---- | ---------------------------------------------- |  
+| L    | print each alias in the form of calls to alias |  
+| g    | list or define global aliases                  |  
+| m    | print aliases matching specified pattern       |  
+| r    | list or define regular aliases                 |  
+| s    | list or define suffix aliases                  |  
+
+##  Tab-completion
+
+| For options and helpful text of what they do |  
+| -------------------------------------------- |  
+| _ls -(tab)_                                  |  
+| _cap (tab)_                                  |  
+| _rake (tab)_                                 |  
+| _ssh (tab)_                                  |  
+| _sudo umount (tab)_                          |  
+| _kill (tab)_                                 |  
+| _unrar (tab)_                                |  
+
+##  Git
+
+| Dynamic access to current branch name with the current_branch function |  
+| ---------------------------------------------------------------------- |  
+| git pull origin $(current_branch)                                      |  
+| grb publish $(current_branch) origin                                   |  
+
+| Alias |  Command |  
+| ---- | ----  |
+| _g_ |  git |  
+| _ga_ |  git add |  
+| _gaa_ |  git add --all |  
+| _gapa_ |  git add --patch |  
+| _gb_ |  git branch |  
+| _gba_ |  git branch -a |  
+| _gbr_ |  git branch --remote |  
+| _gc_ |  git commit -v |  
+| _gc!_ |  git commit -v --amend |  
+| _gca_ |  git commit -v -a |  
+| _gca!_ |  git commit -v -a --amend |  
+| _gcl_ |  git config --list |  
+| _gclean_ |  git clean -fd |  
+| _gpristine_ |  git reset --hard && git clean -dfx |  
+| _gcm_ |  git checkout master |  
+| _gcmsg_ |  git commit -m |  
+| _gco_ |  git checkout |  
+| _gcount_ |  git shortlog -sn |  
+| _gcp_ |  git cherry-pick |  
+| _gcs_ |  git commit -S |  
+| _gd_ |  git diff |  
+| _gdca_ |  git diff --cached |  
+| _gdt_ |  git diff-tree --no-commit-id --name-only -r |  
+| _gdt_ |  git difftool |  
+| _gfa_ |  git fetch --all --prune |  
+| _gg_ |  git gui citool |  
+| _gga_ |  git gui citool --amend |  
+| _ggpnp_ |  git pull origin $(current_branch) && git push origin $(current_branch) |  
+| _ggpull_ |  git pull origin $(current_branch) |  
+| _ggl_ |  git pull origin $(current_branch) |  
+| _ggpur_ |  git pull --rebase origin $(current_branch) |  
+| _glum_ |  git pull upstream master |  
+| _ggpush_ |  git push origin $(current_branch) |  
+| _ggp_ |  git push origin $(current_branch) |  
+| _ggsup_ |  git branch --set-upstream-to=origin/$(current_branch) |  
+| _gignore_ |  git update-index --assume-unchanged |  
+| _gignored_ |  git ls-files -v | grep "^[[:lower:]]" |  
+| _git-svn-dcommit-push_ |  git svn dcommit && git push github master:svntrunk |  
+| _gk_ |  gitk --all --branches |  
+| _gl_ |  git pull |  
+| _glg_ |  git log --stat --max-count = 10 |  
+| _glgg_ |  git log --graph --max-count = 10 |  
+| _glgga_ |  git log --graph --decorate --all |  
+| _glo_ |  git log --oneline --decorate --color |  
+| _glog_ |  git log --oneline --decorate --color --graph |  
+| _glp_ |  _git_log_prettily (git log --pretty=$1) |  
+| _gm_ |  git merge |  
+| _gmt_ |  git mergetool --no-prompt |  
+| _gp_ |  git push |  
+| _gpoat_ |  git push origin --all && git push origin --tags |  
+| _gr_ |  git remote |  
+| _grba_ |  git rebase --abort |  
+| _grbc_ |  git rebase --continue |  
+| _grbs_ |  git rebase --skip |  
+| _grbi_ |  git rebase -i |  
+| _grh_ |  git reset HEAD |  
+| _grhh_ |  git reset HEAD --hard |  
+| _grmv_ |  git remote rename |  
+| _grrm_ |  git remote remove |  
+| _grset_ |  git remote set-url |  
+| _grt_ |  cd $(git rev-parse --show-toplevel || echo ".") |  
+| _grup_ |  git remote update |  
+| _grv_ |  git remote -v |  
+| _gsd_ |  git svn dcommit |  
+| _gsps_ |  git show --pretty = short --show-signature |  
+| _gsr_ |  git svn rebase |  
+| _gss_ |  git status -s |  
+| _gst_ |  git status |  
+| _gsta_ |  git stash save |  
+| _gstaa_ |  git stash apply |  
+| _gstd_ |  git stash drop |  
+| _gstl_ |  git stash list |  
+| _gstp_ |  git stash pop |  
+| _gsts_ |  git stash show --text |  
+| _gts_ |  git tag -s |  
+| _gunignore_ |  git update-index --no-assume-unchanged |  
+| _gunwip_ |  git log -n 1 | grep -q -c "--wip--" && git reset HEAD~1 |  
+| _gup_ |  git pull --rebase |  
+| _gvt_ |  git verify-tag |  
+| _gwch_ |  git whatchanged -p --abbrev-commit --pretty = medium |  
+| _gwip_ |  git add -A; git ls-files --deleted -z | xargs -r0 git rm; git commit -m "--wip--" | 
+
+You also find these commands in Dash as a Cheat-sheet.
+
+##  Editors
+
+| Alias | Command                                                                  |  
+| ----- | ------------------------------------------------------------------------ |  
+| _stt_ | (When using `sublime` plugin) Open current directory in Sublime Text 2/3 |  
+| _v_   | (When using `vi-mode` plugin) Edit current command line in Vim           |  
+
+##  Symfony2
+
+| Alias         | Command                     |  
+| ------------- | --------------------------- |  
+| _sf_          | php ./app/console           |  
+| _sfcl_        | php app/console cache:clear |  
+| _sfcontainer_ | sf debug:container          |  
+| _sfcw_        | sf cache:warmup             |  
+| _sfgb_        | sf generate:bundle          |  
+| _sfroute_     | sf debug:router             |  
+| _sfsr_        | sf server:run -vvv          |  
+
+##  tmux
+
+| Alias  | Command              |  
+| ------ | -------------------- |  
+| _ta_   | tmux attach -t       |  
+| _tad_  | tmux attach -d -t    |  
+| _ts_   | tmux new-session -s  |  
+| _tl_   | tmux list-sessions   |  
+| _tksv_ | tmux kill-server     |  
+| _tkss_ | tmux kill-session -t |  
+
+##  Systemd
+
+###  systemctl
+
+| Command           | Description                              |  
+| ----------------- | ---------------------------------------- |  
+| _sc-status NAME_  | show the status of the NAME process      |  
+| _sc-show NAME_    | show the NAME systemd .service file      |  
+| _sc-start NAME_   | start the NAME process                   |  
+| _sc-stop NAME_    | stop the NAME process                    |  
+| _sc-restart NAME_ | restart the NAME process                 |  
+| _sc-enable NAME_  | enable the NAME process to start at boot |  
+| _sc-disable NAME_ | disable the NAME process at boot         |  
+
+##  Upgrade
+
+To upgrade .oh-my-zsh, run:  
+
+```
+upgrade_oh_my_zsh
+```

+ 96 - 0
help.md

@@ -0,0 +1,96 @@
+#Help
+
+Because sometimes I forget how to drive the software I'm running. 
+
+
+### Gitbook:
+[https://github.com/GitbookIO/gitbook](https://github.com/GitbookIO/gitbook)  
+[https://github.com/GitbookIO/gitbook/blob/master/docs/setup.md](https://github.com/GitbookIO/gitbook/blob/master/docs/setup.md)  
+[https://toolchain.gitbook.com/](https://toolchain.gitbook.com/)
+```
+cd sites/til
+gitbook help
+gitbook build .
+gitbook serve .
+http://localhost:4000/
+```
+
+
+### Markdown:
+
+[Markdown Cheatsheet from Github](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet)
+
+### Code:
+#### Piwik Plugin
+[https://github.com/emmanuel-keller/gitbook-plugin-piwik](https://github.com/emmanuel-keller/gitbook-plugin-piwik)
+#### Ace Plugin
+[https://github.com/ymcatar/gitbook-plugin-ace](https://github.com/ymcatar/gitbook-plugin-ace)  
+[Ace Plugin Languages/Themes](https://github.com/ymcatar/gitbook-plugin-ace/tree/master/assets/ace)  
+
+
+
+
+{%ace edit=true, lang='javascript' theme='github'%}
+
+int main(){
+  printf("Hello World!");
+  return 1;
+}
+{%endace%}  
+
+
+or just use the language identifier after the back ticks for the code block in markdown  
+
+```html
+<style>
+    * {
+        margin: 0;
+        padding: 0;
+    }
+</style>
+<script>
+    $(document).ready(function(){
+        var something = 5;
+        if (something == 5){
+            console.log('woohoo');
+        }
+    });
+</script>
+<section>
+    <p>Hello world</p>
+</section>
+```
+
+#### Github 
+[https://github.com/visallo/gitbook-plugin-github-embed](https://github.com/visallo/gitbook-plugin-github-embed)
+
+#### Toggle Chapters
+[https://github.com/poojan/gitbook-plugin-toggle-chapters](https://github.com/poojan/gitbook-plugin-toggle-chapters)  
+[https://github.com/hypertrack/gitbook-plugin-toggle-headers](https://github.com/hypertrack/gitbook-plugin-toggle-headers)
+
+### Media:
+#### Images:
+```
+![tabs](./img/til_tabs.png)
+```  
+
+#### Add video from Youtube or Vimeo
+```
+{% video %}https://www.domain.com/video_url{% endvideo %}
+
+```
+#### Add video from source file
+```
+//add url using html5
+<video width="720" height="480" controls src="https://davidawindham.com/media/rose-syl.mp4" type="video/mp4"></video>
+```
+
+###HTML
+adding published date with microformat
+[https://www.w3.org/TR/NOTE-datetime](https://www.w3.org/TR/NOTE-datetime)
+```
+<time class="updated" datetime="2016-11-30T11:16:16+00:00" itemprop="datePublished">11/30/2016</time>
+```
+
+
+

+ 617 - 0
lang/git.md

@@ -0,0 +1,617 @@
+## Setup
+
+##### Show current configuration:
+```
+$ git config --list
+```
+##### Show repository configuration:
+```
+$ git config --local --list
+```
+
+##### Show global configuration:
+```
+$ git config --global --list
+```
+
+##### Show system configuration:
+```
+$ git config --system --list
+```
+
+##### Set a name that is identifiable for credit when review version history:
+```
+$ git config --global user.name “[firstname lastname]”
+```
+
+##### Set an email address that will be associated with each history marker:
+```
+$ git config --global user.email “[valid-email]”
+```
+
+##### Set automatic command line coloring for Git for easy reviewing:
+```
+$ git config --global color.ui auto
+```
+
+##### Set global editor for commit
+```
+$ git config --global core.editor vi
+```
+
+<hr>
+
+## Configuration Files
+
+##### Repository specific configuration file [--local]:
+```
+<repo>/.git/config
+```
+
+##### User-specific configuration file [--global]:
+```
+~/.gitconfig
+```
+
+##### System-wide configuration file [--system]:
+```
+/etc/gitconfig
+```
+
+<hr>
+
+## Create
+
+##### Clone an existing repository:
+
+There are two ways:
+
+Via SSH
+
+```
+$ git clone ssh://user@domain.com/repo.git
+```
+
+Via HTTP
+
+```
+$ git clone http://domain.com/user/repo.git
+```
+
+##### Create a new local repository:
+```
+$ git init
+```
+<hr>
+## Local Changes
+
+##### Changes in working directory:
+```
+$ git status
+```
+
+##### Changes to tracked files:
+```
+$ git diff
+```
+
+##### Add all current changes to the next commit:
+```
+$ git add .
+```
+
+##### Add some changes in &lt;file&gt; to the next commit:
+```
+$ git add -p <file>
+```
+
+##### Commit all local changes in tracked files:
+```
+$ git commit -a
+```
+
+##### Commit previously staged changes:
+```
+$ git commit
+```
+
+##### Commit with message:
+```
+$ git commit -m 'message here'
+```
+
+##### Commit skipping the staging area and adding message:
+```
+$ git commit -am 'message here'
+```
+
+##### Commit to some previous date:
+```
+$ git commit --date="`date --date='n day ago'`" -am "<Commit Message Here>"
+```
+
+##### Change last commit:<br>
+<em><sub>Don't amend published commits!</sub></em>
+
+```
+$ git commit -a --amend
+```
+
+##### Amend with last commit but use the previous commit log message
+<em><sub>Don't amend published commits!</sub></em>
+
+```shell
+$ git commit --amend --no-edit
+```
+
+##### Change committer date of last commit:
+```
+GIT_COMMITTER_DATE="date" git commit --amend
+```
+
+##### Change Author date of last commit:
+```shell
+$ git commit --amend --date="date"
+```
+
+##### Move uncommitted changes from current branch to some other branch:<br>
+```
+$ git stash
+$ git checkout branch2
+$ git stash pop
+```
+
+##### Restore stashed changes back to current branch:
+```shell
+$ git stash apply
+```
+
+#### Restore particular stash back to current branch:
+- *{stash_number}* can be obtained from `git stash list`
+
+```shell
+$ git stash apply stash@{stash_number}
+```
+
+##### Remove the last set of stashed changes:
+```
+$ git stash drop
+```
+
+<hr>
+
+## Search
+
+##### A text search on all files in the directory:
+```
+$ git grep "Hello"
+```
+
+##### In any version of a text search:
+```
+$ git grep "Hello" v2.5
+```
+
+<hr>
+
+## Commit History
+
+##### Show all commits, starting with newest (it'll show the hash, author information, date of commit and title of the commit):
+```
+$ git log
+```
+
+##### Show all the commits(it'll show just the commit hash and the commit message):
+```
+$ git log --oneline
+```
+
+##### Show all commits of a specific user:
+```
+$ git log --author="username"
+```
+
+##### Show changes over time for a specific file:
+```
+$ git log -p <file>
+```
+
+##### Display commits that are present only in remote/branch in right side
+```
+$ git log --oneline <origin/master>..<remote/master> --left-right
+```
+
+##### Who changed, what and when in &lt;file&gt;:
+```
+$ git blame <file>
+```
+
+##### Show Reference log:
+```
+$ git reflog show
+```
+
+##### Delete Reference log:
+```
+$ git reflog delete
+```
+<hr>
+
+## Branches & Tags
+
+##### List all local branches:
+```
+$ git branch
+```
+
+#### List local/remote branches
+```
+$ git branch -a
+```
+
+##### List all remote branches:
+```
+$ git branch -r
+```
+
+##### Switch HEAD branch:
+```
+$ git checkout <branch>
+```
+
+##### Checkout single file from different branch
+```
+$ git checkout <branch> -- <filename>
+```
+
+##### Create and switch new branch:
+```
+$ git checkout -b <branch>
+```
+
+#### Checkout and create a new branch from existing commit
+```
+$ git checkout <commit-hash> -b <new_branch_name>
+```
+
+##### Create a new branch based on your current HEAD:
+```
+$ git branch <new-branch>
+```
+
+##### Create a new tracking branch based on a remote branch:
+```
+$ git branch --track <new-branch> <remote-branch>
+```
+
+##### Delete a local branch:
+```
+$ git branch -d <branch>
+```
+
+##### Rename current branch to new branch name
+```shell
+$ git branch -m <new_branch_name>
+```
+
+##### Force delete a local branch:
+<em><sub>You will lose unmerged changes!</sub></em>
+
+```
+$ git branch -D <branch>
+```
+
+##### Mark the current commit with a tag:
+```
+$ git tag <tag-name>
+```
+
+##### Mark the current commit with a tag that includes a message:
+```
+$ git tag -a <tag-name>
+```
+<hr>
+
+## Update & Publish
+
+##### List all current configured remotes:
+```
+$ git remote -v
+```
+
+##### Show information about a remote:
+```
+$ git remote show <remote>
+```
+
+##### Add new remote repository, named &lt;remote&gt;:
+```
+$ git remote add <remote> <url>
+```
+
+##### Download all changes from &lt;remote&gt;, but don't integrate into HEAD:
+```
+$ git fetch <remote>
+```
+
+##### Download changes and directly merge/integrate into HEAD:
+```
+$ git remote pull <remote> <url>
+```
+
+##### Get all changes from HEAD to local repository:
+```
+$ git pull origin master
+```
+
+##### Get all changes from HEAD to local repository without a merge:
+```
+$ git pull --rebase <remote> <branch>
+```
+
+##### Publish local changes on a remote:
+```
+$ git push remote <remote> <branch>
+```
+
+##### Delete a branch on the remote:
+```
+$ git push <remote> :<branch> (since Git v1.5.0)
+```
+OR
+```
+$ git push <remote> --delete <branch> (since Git v1.7.0)
+```
+
+##### Publish your tags:
+```
+$ git push --tags
+```
+<hr>
+
+#### Configure the merge tool globally to meld (editor)
+```bash
+$ git config --global merge.tool meld
+```
+
+##### Use your configured merge tool to solve conflicts:
+```
+$ git mergetool
+```
+
+## Merge & Rebase
+
+##### Merge branch into your current HEAD:
+```
+$ git merge <branch>
+```
+
+##### Rebase your current HEAD onto &lt;branch&gt;:<br>
+<em><sub>Don't rebase published commit!</sub></em>
+
+```
+$ git rebase <branch>
+```
+
+##### Abort a rebase:
+```
+$ git rebase --abort
+```
+
+##### Continue a rebase after resolving conflicts:
+```
+$ git rebase --continue
+```
+
+##### Use your editor to manually solve conflicts and (after resolving) mark file as resolved:
+```
+$ git add <resolved-file>
+```
+
+```
+$ git rm <resolved-file>
+```
+
+##### Squashing commits:
+```
+$ git rebase -i <commit-just-before-first>
+```
+
+Now replace this,
+
+```
+pick <commit_id>
+pick <commit_id2>
+pick <commit_id3>
+```
+
+to this,
+
+```
+pick <commit_id>
+squash <commit_id2>
+squash <commit_id3>
+```
+<hr>
+
+## Undo
+
+##### Discard all local changes in your working directory:
+```
+$ git reset --hard HEAD
+```
+
+##### Get all the files out of the staging area(i.e. undo the last `git add`):
+```
+$ git reset HEAD
+```
+
+##### Discard local changes in a specific file:
+```
+$ git checkout HEAD <file>
+```
+
+##### Revert a commit (by producing a new commit with contrary changes):
+```
+$ git revert <commit>
+```
+
+##### Reset your HEAD pointer to a previous commit and discard all changes since then:
+```
+$ git reset --hard <commit>
+```
+
+##### Reset your HEAD pointer to a remote branch current state.
+```
+$ git reset --hard <remote/branch> e.g., upstream/master, origin/my-feature
+```
+
+##### Reset your HEAD pointer to a previous commit and preserve all changes as unstaged changes:
+```
+$ git reset <commit>
+```
+
+##### Reset your HEAD pointer to a previous commit and preserve uncommitted local changes:
+```
+$ git reset --keep <commit>
+```
+
+##### Remove files that were accidentally committed before they were added to .gitignore
+```
+$ git rm -r --cached .
+$ git add .
+$ git commit -m "remove xyz file"
+```
+<hr>
+
+## Git-Flow
+Improved [Git-flow](https://github.com/petervanderdoes/gitflow-avh)
+
+### Index
+* [Setup](#setup)
+* [Getting Started](#getting-started)
+* [Features](#features)
+* [Make a Release](#make-a-release)
+* [Hotfixes](#hotfixes)
+* [Commands](#commands)
+
+<hr>
+
+### Setup
+###### You need a working git installation as prerequisite. Git flow works on OSX, Linux and Windows.
+
+##### OSX Homebrew:
+```
+$ brew install git-flow-avh
+```
+
+##### OSX Macports:
+```
+$ port install git-flow
+```
+
+##### Linux (Debian-based):
+```
+$ sudo apt-get install git-flow
+```
+
+##### Windows (Cygwin):
+###### You need wget and util-linux to install git-flow.
+```bash
+$ wget -q -O - --no-check-certificate https://raw.githubusercontent.com/petervanderdoes/gitflow/develop/contrib/gitflow-installer.sh install <state> | bash
+```
+<hr>
+
+### Getting Started
+###### Git flow needs to be initialized in order to customize your project setup. Start using git-flow by initializing it inside an existing git repository:
+##### Initialize:
+###### You'll have to answer a few questions regarding the naming conventions for your branches. It's recommended to use the default values.
+```shell
+git flow init
+```
+OR
+###### To use default
+```shell
+git flow init -d
+```
+<hr>
+
+### Features
+###### Develop new features for upcoming releases. Typically exist in developers repos only.
+##### Start a new feature:
+###### This action creates a new feature branch based on 'develop' and switches to it.
+```
+git flow feature start MYFEATURE
+```
+
+##### Finish up a feature:
+###### Finish the development of a feature. This action performs the following:
+###### 1) Merged MYFEATURE into 'develop'.
+###### 2) Removes the feature branch.
+###### 3) Switches back to 'develop' branch
+```
+git flow feature finish MYFEATURE
+```
+
+##### Publish a feature:
+###### Are you developing a feature in collaboration? Publish a feature to the remote server so it can be used by other users.
+```
+git flow feature publish MYFEATURE
+```
+
+##### Getting a published feature:
+###### Get a feature published by another user.
+```
+git flow feature pull origin MYFEATURE
+```
+
+##### Tracking a origin feature:
+###### You can track a feature on origin by using
+```
+git flow feature track MYFEATURE
+```
+<hr>
+
+### Make a Release
+###### Support preparation of a new production release. Allow for minor bug fixes and preparing meta-data for a release
+
+##### Start a release:
+###### To start a release, use the git flow release command. It creates a release branch created from the 'develop' branch. You can optionally supply a [BASE] commit sha-1 hash to start the release from. The commit must be on the 'develop' branch.
+```
+git flow release start RELEASE [BASE]
+```
+###### It's wise to publish the release branch after creating it to allow release commits by other developers. Do it similar to feature publishing with the command:
+```
+git flow release publish RELEASE
+```
+###### (You can track a remote release with the: ```git flow release track RELEASE``` command)
+
+##### Finish up a release:
+###### Finishing a release is one of the big steps in git branching. It performs several actions:
+###### 1) Merges the release branch back into 'master'
+###### 2) Tags the release with its name
+###### 3) Back-merges the release into 'develop'
+###### 4) Removes the release branch
+```
+git flow release finish RELEASE
+```
+###### Don't forget to push your tags with ```git push --tags```
+
+<hr>
+
+### Hotfixes
+###### Hotfixes arise from the necessity to act immediately upon an undesired state of a live production version. May be branched off from the corresponding tag on the master branch that marks the production version.
+
+##### Git flow hotfix start:
+###### Like the other git flow commands, a hotfix is started with
+```
+$ git flow hotfix start VERSION [BASENAME]
+```
+###### The version argument hereby marks the new hotfix release name. Optionally you can specify a basename to start from.
+
+##### Finish a hotfix:
+###### By finishing a hotfix it gets merged back into develop and master. Additionally the master merge is tagged with the hotfix version
+```
+git flow hotfix finish VERSION
+```
+<hr>

+ 1 - 0
lang/js.md

@@ -0,0 +1 @@
+# JavaScript

+ 1 - 0
lang/lang.md

@@ -0,0 +1 @@
+# Computer Language

+ 1 - 0
lang/nodejs.md

@@ -0,0 +1 @@
+# Node.js

+ 27 - 0
package.json

@@ -0,0 +1,27 @@
+{
+  "name": "windhamdavid_til",
+  "version": "1.0.0",
+  "description": "my til gitbook",
+  "dependencies": {
+    "gitbook": "^3.2.2",
+    "gitbook-plugin-ace": "^0.3.2",
+    "gitbook-plugin-anchors": "^0.7.1",
+    "gitbook-plugin-github-embed": "^1.1.2",
+    "gitbook-plugin-piwik": "^0.2.1",
+    "gitbook-plugin-toggle-chapters": "0.0.3",
+    "gitbook-plugin-toggle-headers": "^0.1.0",
+    "gitbook-plugin-video": "0.0.3"
+  },
+  "devDependencies": {},
+  "repository": {
+    "type": "git",
+    "url": "https://github.com/windhamdavid/til.git"
+  },
+  "scripts": {
+    "test": "echo \"Error: no test specified\" && exit 1"
+  },
+  "author": "David A. Windham",
+  "private": true,
+  "license": "UNLICENSED",
+  "homepage": "https://davidawindham.com"
+}

+ 2 - 0
projects/juryd.md

@@ -0,0 +1,2 @@
+# Juryd
+

+ 1 - 0
projects/projects.md

@@ -0,0 +1 @@
+#Projects

+ 0 - 0
random/random.md


+ 0 - 0
servers/apache.md


+ 0 - 0
servers/nginx.md


+ 2 - 0
servers/servers.md

@@ -0,0 +1,2 @@
+#Servers
+

File diff suppressed because it is too large
+ 1417 - 0
servers/ubuntu.md


+ 683 - 0
software/adobe.md

@@ -0,0 +1,683 @@
+#Adobe
+
+### Illustrator
+
+* V
+
+Selection Tool
+
+* M
+
+Rectangle Tool
+
+* W
+
+Blend Tool
+
+* L
+
+Ellipse Tool
+
+* I
+
+Eyedropper Tool
+
+* C
+
+Scissors Tool
+
+* B
+
+Paint Brush Tool
+
+* J
+
+Column Graph Tool
+
+* Y
+
+Magic Wand Tool
+
+* S
+
+Scale Tool
+
+* G
+
+Gradient Tool
+
+* E
+
+Free Transform Tool
+
+* O
+
+Reflect Tool
+
+* T
+
+Type Tool
+
+* P
+
+Pen Tool
+
+* U
+
+Mesh Tool
+
+* A
+
+Direct Selection Tool
+
+* H or Hold Space
+
+Hand Tool
+
+* R
+
+Rotate Tool
+
+* Q
+
+Lasso Tool
+
+* D
+
+Default Fill/Stroke
+
+* F
+
+Screen Modes
+
+* K
+
+Live Paint Bucket Tool
+
+* X
+
+Switch Fill/Stroke
+
+* N
+
+Pencil Tool
+
+* ,
+
+Fill/Stroke w/ Colour
+
+* .
+
+Fill/Stroke w/ Gradient
+
+* /
+
+Fill/Strike w/ None
+
+* Line Segment Tool
+* -
+
+Delete Anchor Point
+
+* +
+
+Add Anchor Point
+
+* ⌘ + T
+
+Character Window
+
+* ⌘ + I
+
+Spell Check
+
+* ⌘ + G
+
+Group Object
+
+* ⌘ + ⇧ + G
+
+Ungroup Object
+
+* ⌘ + H
+
+Hide Anchor Points
+
+* ⌘ + B
+
+Fill Black
+
+#### Changing View
+
+* Z
+
+Zoom Tool
+
+* ⌘ + +
+
+Zoom In
+
+* ⌘ + -
+
+Zoom Out
+
+* ⌘ + 0
+
+Fit Screen
+
+* ⌘ + ~
+
+Switch open tabs
+
+* ⌘ + R
+
+Show/Hide Rulers
+
+* ⌘ + ;
+
+Show/Hide Guides
+
+* ⌘ + '
+
+Show/Hide Grid
+
+#### Shift Tool Shortcuts
+
+* ⇧ + Rotate Tool
+
+Constrain rotation angles
+
+* ⇧ + C
+
+Convert anchor point
+
+* ⇧ + B
+
+Blob Brush
+
+* ⇧ + E
+
+Eraser
+
+* ⇧ + S
+
+Symbol Sprayer
+
+* ⇧ + L
+
+Live Paint Selection
+
+* ⇧ + O
+
+Artboard Tool
+
+* ⇧ + K
+
+Slice Tool
+
+* ⇧ + X
+
+Swap Fill and Stroke
+
+#### Selecting & Moving
+
+* ⌥ + Drag Object
+
+Copy object while dragging
+
+* Arrow Keys
+
+Move selection
+
+* ⇧ + Arrow Keys
+
+Move selection by 10pt
+
+* ⇧ + Select Objects
+
+Select multiple objects
+
+* ⌘ + A
+
+Select all
+
+#### Typography
+
+* ⌘ + ⇧ + < or >
+
+Decrease/Increase type size
+
+* ⌥ + ↓ or ↑
+
+Decrease/Increase leading
+
+* ⌥ + ← or →
+
+Decrease/Increase kerning
+
+* ⌘ + ⇧ + L, R or C
+
+Align type left, right or centre
+
+* ⌘ + ⇧ + J
+
+Justify
+
+#### General
+
+* ⌘ + N
+
+New File
+
+* ⌘ + S
+
+Save
+
+* ⌘ + ⇧ + S
+
+Save As
+
+* ⌘ + ⌥ + S
+
+Save a Copy
+
+* ⌘ + ⇧ + ⌥ + S
+
+Save for Web
+
+* ⌘ + O
+
+Open
+
+* ⌘ + Q
+
+Quit
+
+* ⌘ + W
+
+Close
+
+* ⌘ + P
+
+Print
+
+* ⌘ + Z
+
+Undo
+
+* ⌘ + X
+
+Cut
+
+* ⌘ + C
+
+Copy
+
+* ⌘ + V
+
+Paste
+
+* ⌘ + K
+
+Preferences
+
+* ⌘ + M
+
+Minify Tabs
+
+----
+
+### Photoshop
+
+* V
+
+Move Tool
+
+* M
+
+Rectangular Marquee Tool
+
+* W
+
+Magic Wand Tool
+
+* L
+
+Polygonal Lasso Tool
+
+* I
+
+Eyedropper Tool
+
+* C
+
+Crop Tool
+
+* B
+
+Brush Tool
+
+* [
+
+Decrease Brush Size
+
+* ]
+
+Increase Brush Size
+
+* J
+
+Spot Healing Brush Tool
+
+* Y
+
+History Brush Tool
+
+* S
+
+Clone Stamp Tool
+
+* G
+
+Paint Bucket Tool
+
+* E
+
+Eraser Tool
+
+* O
+
+Dodge Tool
+
+* T
+
+Type Tool
+
+* P
+
+Pen Tool
+
+* U
+
+Rectangle Tool
+
+* A
+
+Direct Selection Tool
+
+* H
+
+Hand Tool
+
+* R
+
+Rotate Tool
+
+* Q
+
+Quick Mask
+
+* Toggle Layer Mask
+* D
+
+Default Colours
+
+* ⇧ + [_Tool]_
+
+Switch between tool in groups
+
+#### Changing View
+
+* Z
+
+Zoom Tool
+
+* ⌘ + +
+
+Zoom In
+
+* ⌘ + -
+
+Zoom Out
+
+* ⌘ + 0
+
+Fit Screen
+
+* Tab
+
+Hide all tools and panels
+
+* ⇧ + Tab
+
+Hide all panels except Toolbox & Options
+
+* ⌘ + ⇧ + Page Up/Down
+
+Scroll image left or right in window
+
+* ⌘ + ⇧ + Drag in Navigator
+
+Jump/Zoom to part of image
+
+* ⌘ + ~
+
+Switch open tabs
+
+* ⌘ + R
+
+Show/Hide Rulers
+
+* ⌘ + ;
+
+Show/Hide Guides
+
+* ⌘ + '
+
+Show/Hide Grid
+
+#### Selecting & Moving
+
+* ⇧ + Marquee
+
+Draw Marquee from centre
+
+* ⇧
+
+Add to a selection
+
+* ⌥
+
+Subtract from selection
+
+* ⇧ + ⌥
+
+Intersect with selection
+
+* ⌥ + Drag Selection
+
+Make copy of selection w/ Move Tool
+
+* ⌘ + ⌥ + Drag Selection
+
+Make copy of selection not in Move Tool
+
+* Arrow Keys
+
+Move selection (1 pixel increments)
+
+* ⇧ + Arrow Keys
+
+Move selection (10 pixel increments)
+
+* ⌘ + Click Layer Thumbnail
+
+Select all opaque pixels on layer
+
+* ⌘ + ⇧ + D
+
+Restore last selection
+
+* ⇧ + F6
+
+Feather selection
+
+* Hold Space
+
+Move marquee while drawing selection
+
+#### Images & Layers
+
+* ⌘ + ⌥ + I
+
+Resize Image
+
+* ⌘ + ⌥ + C
+
+Resize Canvas
+
+* ⌘ + N
+
+New Layer
+
+* ⌘ + J
+
+New Layer via Copy
+
+* ⌘ + ⇧ + J
+
+New Layer via Cut
+
+* ⌘ + G
+
+Group Layers
+
+* ⌘ + ⇧ + G
+
+Ungroup Layers
+
+* ⌘ + ⇧ + ]
+
+Bring to Front
+
+* ⌘ + ]
+
+Bring Forward
+
+* ⌘ + [
+
+Send Backward
+
+* ⌘ + ⇧ + [
+
+Send to Back
+
+* ⌘ + E
+
+Merge Layers
+
+* ⌘ + ⇧ + E
+
+Merge Visible
+
+#### Opacity
+
+* 1
+
+10% Opacity
+
+* 2
+
+20% Opacity
+
+* 3
+
+30% Opacity
+
+* 4
+
+40% Opacity
+
+* 5
+
+50% Opacity
+
+* 6
+
+60% Opacity
+
+* 7
+
+70% Opacity
+
+* 8
+
+80% Opacity
+
+* 9
+
+90% Opacity
+
+* 0
+
+100% Opacity
+
+#### General
+
+* ⌘ + N
+
+New File
+
+* ⌘ + S
+
+Save
+
+* ⌘ + ⇧ + S
+
+Save As
+
+* ⌘ + ⇧ + ⌥ + S
+
+Save for Web & Devices
+
+* ⌘ + O
+
+Open
+
+* ⌘ + Q
+
+Quit
+
+* ⌘ + W
+
+Close
+
+* ⌘ + P
+
+Print
+
+* ⌘ + Z
+
+Undo/Redo
+
+* ⌘ + ⇧ + Z
+
+Step Forward
+
+* ⌘ + ⌥ + Z
+
+Step Backward
+
+* ⌘ + X
+
+Cut
+
+* ⌘ + C
+
+Copy
+
+* ⌘ + V
+
+Paste
+
+* ⌘ + K

+ 2 - 0
software/software.md

@@ -0,0 +1,2 @@
+# Software
+Shortcuts for software I use:

+ 3 - 0
styles/website.css

@@ -0,0 +1,3 @@
+.gitbook-link {
+    display: none !important;
+}