Skip to content

Instantly share code, notes, and snippets.


Neal Fennimore nealfennimore

Block or report user

Report or block nealfennimore

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
nealfennimore / xor-encryption-decryption.js
Last active Dec 28, 2019
XOR encryption and decryption
View xor-encryption-decryption.js
* Convert character string to binary
* @param {String} str Character string
* @returns Binary String
function toBinary(str) {
let binary = '';
for (let i = 0, l = str.length; i < l; i++) {
binary += str.codePointAt(i).toString(2).padStart(8, '0');
nealfennimore / diffie-hellman.txt
Created Dec 26, 2019
Diffie-Hellman Key Exchange
View diffie-hellman.txt
--- Step 1 - exchanged common values
Initial common values:
p = 13 (prime number)
g = 7
--- Step 2 - Each user creates own secret number
Alice secret number:
a = 5
nealfennimore / binary-addition.js
Last active Dec 24, 2019
Binary addition in javascript
View binary-addition.js
* Add two bits together and get resulting bits
* @param {Number} a bit a
* @param {Number} b bit b
* @returns {Array<Number, Number>} Carry and sum as a result of addition
function addBits(a, b){
return [ +( a && b ), +( a !== b ) ];
View resume.json
"basics": {
"name": "Neal Fennimore",
"label": "Front-End Engineering Professional",
"picture": "",
"email": "",
"phone": "6093578917",
"website": "",
"summary": "Highly-analytical, innovative, and performance-driven, Front-End Engineering Professional with 8+ years of transferable experience and exposure in web development, programming languages, front-end development, JavaScript, ReactJS, strategic planning, data analysis, and cross-functional team collaboration. Possess a track record of accomplishment in managing multiple technical projects & initiatives, identifying discrepancies to create innovative solutions, facilitating continuous process improvements, and completing multiple technical projects in alignment with requirements.",
"location": {
nealfennimore /
Last active Nov 24, 2019
Nextcloud Snap Setup
# Setup firewall
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
# Install nextcloud
sudo snap install nextcloud
# Update memory limit
sudo snap set nextcloud php.memory-limit=1024M
nealfennimore /
Created Nov 14, 2019
Git checkout to previous working commit
# We're currently on `non-working` branch, and we've identified a previous working commit of `abcdef123456`.
# We want to go back to commit `abcdef123456`, and then start work anew from there
# First checkout to the working commit `abcdef123456`
git checkout abcdef123456
# You'll be in a temporary staging area now. If we want to make changes now, we'll need to copy the current commit
# into a new branch.
git checkout -b previous-working-branch
nealfennimore / wireguard.conf
Last active Nov 19, 2019
Wireguard VPN - Forward all traffic to server
View wireguard.conf
# ------------------------------------------------
# Config files are located in /etc/wireguard/wg0
# ------------------------------------------------
# ---------- Server Config ----------
Address = # IPV4 CIDR
Address = fd86:ea04:1111::1/64 # IPV6 CIDR
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ip6tables -A FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -A POSTROUTING -o eth0 -j MASQUERADE # Add forwarding when VPN is started
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ip6tables -D FORWARD -i wg0 -j ACCEPT; ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE # Remove forwarding when VPN is shutdown
nealfennimore /
Created Oct 28, 2019
Updating PGP key expiration
gpg -k # List keys
gpg --edit-key # Or key ID
key 1 # Select expired key
expire # Set new expiration
gpg --send-keys # Update keys on server
gpg --armor --output /tmp/key.gpg --export # ASCII safe key for Github or another service
View toggle_vpn
#!/usr/bin/env bash
VPNS=($(nmcli con | grep vpn))
is_active_vpn() {
row=$(nmcli con | grep $1 | sed 's/\s*$//g' ) # Trim whitespace so we can test ending column
if [[ $row =~ ^.*--$ ]]; then
echo -n 0
nealfennimore / unmount-busy-drive
Last active Oct 6, 2019
Unmounting busy drive
View unmount-busy-drive
# Check to see what processes are using drive
fuser -vm /dropbox
sudo umount /dropbox
You can’t perform that action at this time.