Skip to content

Instantly share code, notes, and snippets.

View kevinjalbert's full-sized avatar

Kevin Jalbert kevinjalbert

View GitHub Profile
@kevinjalbert
kevinjalbert / git-bisect-branch.sh
Last active September 1, 2022 03:34
Git Bisect: Only the Current Branch
#!/usr/bin/env bash
while getopts 'b:dh' OPTION; do
case "$OPTION" in
b)
divergent_branch=$OPTARG
;;
d)
debug=true
;;
h)
@kevinjalbert
kevinjalbert / git_dig.rb
Last active August 1, 2022 03:06
Git Dig (find deleted files whose content matches a regex)
#!/usr/bin/env ruby
require 'optparse'
require 'open3'
def files_with_search_query(sha, search_query)
`git show --format="" --name-only #{sha} -i --pickaxe-regex -S #{search_query}`.split("\n")
end
def grep_over_file(sha, file, search_query)
@kevinjalbert
kevinjalbert / import-raindrop-highlights-into-readwise.rb
Last active March 23, 2024 20:13
Import Raindrop.io Highlights into Readwise
#!/usr/bin/env ruby
require "httparty"
require "nokogiri"
require "open-uri"
require "uri"
RAINDROP_AUTH_TOKEN="xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
READWISE_AUTH_TOKEN="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
LAST_SAVED_HIGHLIGHT=000000000 # <- Keeps track of import position (Updates automatically)
@kevinjalbert
kevinjalbert / mirror.scpt
Last active September 16, 2022 10:42
AppleScript to Mirror iPhone to QuickTime
set deviceName to "Kevin’s iPhone"
activateScreenKeepAwake()
readyQuickTime()
setVideoInput(deviceName)
setAudioInput(deviceName)
setVolume(1.0)
setScreenSize("maximize")
# ----- Functions -----
@kevinjalbert
kevinjalbert / Coronavirus.js
Last active August 17, 2021 15:04 — forked from planecore/Coronavirus.js
Coronavirus Scriptable Widget (For Canadian Provinces)
// Variables used by Scriptable.
// These must be at the very top of the file. Do not edit.
// icon-color: deep-green; icon-glyph: user-md;
// heavily inspired by https://gist.github.com/planecore/e7b4c1e5db2dd28b1a023860e831355e
const province = "ON" // change this to your province
const url = "https://api.covid19tracker.ca/summary/split"
const req = new Request(url)
const res = await req.loadJSON()
@kevinjalbert
kevinjalbert / bluetooth_headphones.scpt
Last active June 27, 2020 02:49
AppleScript to connect bluetooth headphones and show its battery level
activate application "SystemUIServer"
set deviceName to "Kevin Jalbert's BeatsX"
tell application "System Events"
tell process "SystemUIServer"
set bluetoothMenu to (menu bar item 1 of menu bar 1 whose description contains "bluetooth")
tell bluetoothMenu
click
set deviceMenuItem to (menu item deviceName of menu 1)
@kevinjalbert
kevinjalbert / keybase.md
Created April 26, 2016 00:40
Proof Keybase.io

Keybase proof

I hereby claim:

  • I am kevinjalbert on github.
  • I am kevinjalbert (https://keybase.io/kevinjalbert) on keybase.
  • I have a public key ASBaI00PzCjfm33W097j1OlZBBHZahbLTV3TXXSnFT7Jsgo

To claim this, I am signing this object:

@kevinjalbert
kevinjalbert / enhanced-vim-searching.md
Last active September 1, 2017 15:49
Enhanced Vim Searching

Enhanced Vim Searching

Basic Searching

Vim provides rather simple searching capabilities using the following keys while in normal mode:

  • / performs a forward search of the provided pattern
  • ? performs a backward search of the provided pattern
  • * performs a forward search of the word under the cursor
  • # performs a backward search of the word under the cursor
@kevinjalbert
kevinjalbert / vim-over.md
Created April 24, 2015 19:45
Vim substitution feedback using vim-over

Vim substitution feedback using vim-over

It is common while in vim to perform substitution tasks over the text you are editing. This is often accomplished using the following command:

:%s/<find>/<replacement>/g

The %s command will perform substitution over every line within the buffer. The /<find>/<replace> specifies the substitution to perform. Finally the /g indicates that this should apply to multiple occurrences if they are present on the same line.

This works great, although there is little affordance in determining whether the specified <find> will hit the matches you are interested in. The aforementioned command is a all-or-nothing with respect to execution, there is no visual feedback until you execute the command.

Visual Feedback via vim-over

@kevinjalbert
kevinjalbert / record_screen.applescript
Created April 10, 2015 13:32
Record Screen with Applescript
on run {input, parameters}
tell application "QuickTime Player" to quit
delay 0.5
tell application "QuickTime Player" to activate
delay 0.5