Skip to content

Instantly share code, notes, and snippets.

View brayhoward's full-sized avatar

Brandon R. Howard brayhoward

View GitHub Profile
# LINKED
txtblk='[\e[0;30m]' # Black
txtred='\[\e[0;31m\]' # Red
txtgrn='\[\e[0;32m\]' # Green
txtylw='\[\e[0;33m\]' # Yellow
txtblu='\[\e[0;34m\]' # Blue
txtpur='\[\e[0;35m\]' # Purple
txtcyn='\[\e[0;36m\]' # Cyan
txtwht='\[\e[0;37m\]' # White
if [ $UID -eq 0 ]; then NCOLOR="red"; else NCOLOR="green"; fi
local return_code="%(?..%{$fg[red]%}%? ↵%{$reset_color%})"
# color vars
eval gray='$FG[237]'
eval orange='$FG[214]'
eval yellow='$fg[yellow]'
eval red='$fg[red]'
eval cyan='$fg[cyan]'
eval magenta='$fg[magenta]'
@brayhoward
brayhoward / globals.d.ts
Last active August 14, 2020 19:20
Typescript utility types. Mostly more descriptive aliases for the any type
type IFixMe = any;
type IToDo = any;
type IInexpressible = any;
type INotWorthIt = any;
type IFuckIt = any;
// When the library you are consuming is fucked up
type IBadTypings = any;
type IAnyFields = { [field: string]: any };
type IWithAnyFields<T> = T & IAnyFields;
@brayhoward
brayhoward / Correct_GnuPG_Permission.sh
Created July 28, 2020 22:51 — forked from oseme-techguy/Correct_GnuPG_Permission.sh
This fixes the " gpg: WARNING: unsafe permissions on homedir '/home/path/to/user/.gnupg' " error while using Gnupg .
#!/usr/bin/env bash
# To fix the " gpg: WARNING: unsafe permissions on homedir '/home/path/to/user/.gnupg' " error
# Make sure that the .gnupg directory and its contents is accessibile by your user.
chown -R $(whoami) ~/.gnupg/
# Also correct the permissions and access rights on the directory
chmod 600 ~/.gnupg/*
chmod 700 ~/.gnupg
@brayhoward
brayhoward / getStatusBarHeight.ts
Last active February 10, 2023 07:32
A react hook for getting status bar height in ReactNative that works with iOS and android. This accounts for hotspot and GPS banners
import { useState, useEffect } from "react";
import { NativeModules, StatusBarIOS, Platform, StatusBar } from "react-native";
import get from "lodash/get";
const { StatusBarManager } = NativeModules;
export default function useStatusBarHeight() {
// Initialize w/ currentHeight b/c StatusBar.currentHeight works properly on android on Android
const [height, setHeight] = useState(StatusBar.currentHeight || 0);
@brayhoward
brayhoward / getLast.ts
Created March 1, 2020 22:18
Example of using Typescript keyof operator
interface RecursiveArray<T> extends Array<T | RecursiveArray<T>> {}
function getLast<O extends object, K extends keyof O>(
mapOrList: O | RecursiveArray<O>,
key: K
): O[K] | null {
if (!mapOrList) return null;
if (Array.isArray(mapOrList)) {
return getLast(mapOrList.reverse().find(m => !!getLast(m, key))!, key);
@brayhoward
brayhoward / useAttentionWithin.ts
Created June 27, 2019 16:55
A React hook for determining whether or not a section of DOM still has the users attention. It's like clickAway logic on steroids
import { useState, useEffect, RefObject } from "react";
export default function useAttentionWithin(ref: RefObject<HTMLElement>) {
const [attentionWithin, setAttentionWithin] = useState(false);
function handleAttentionLeave({ target }: Event) {
const targetIsWithin = !!(
ref.current && ref.current.contains(target as Node)
);
@brayhoward
brayhoward / iterm2.md
Created June 5, 2018 14:18 — forked from squarism/iterm2.md
iterm2 cheatsheet

Tabs and Windows

Function Shortcut
Fullscreen + Enter
Previous Tab + Left Arrow
Next Tab + Right Arrow
Go to Tab + Number
Go to Window + Option + Number
Go to Split Pane by Direction + Option + Arrow
@brayhoward
brayhoward / MySQL_macOS_Sierra.md
Created February 26, 2018 16:42 — forked from nrollr/MySQL_macOS_Sierra.md
Install MySQL on Sierra using Homebrew

Install MySQL on macOS Sierra

This procedure explains how to install MySQL using Homebrew on macOS Sierra 10.12

Install Homebrew

  • Installing Homebrew is effortless, open Terminal and enter :
    $ /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • Note: Homebrew will download and install Command Line Tools for Xcode 8.0 as part of the installation process.

Install MySQL

At this time of writing, Homebrew has MySQL version 5.7.15 as default formulae in its main repository :

@brayhoward
brayhoward / time_convert.ex
Created January 17, 2018 02:54
Elixir time conversion module for converting milliseconds or seconds to a readable format.
defmodule TimeConvert do
@minute 60
@hour @minute*60
@day @hour*24
@week @day*7
@divisor [@week, @day, @hour, @minute, 1]
def to_str(time) do
to_str(time, :ms)
end