Skip to content

Instantly share code, notes, and snippets.

Douglas Teoh dteoh

Block or report user

Report or block dteoh

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
dteoh /
Created Nov 22, 2019
Installing mysql2 gem

Installing mysql2 gem

This is always an annoying process, especially when you are setting up a new computer. I assume you are using macOS + homebrew. I also assume that you want to run an older version of MySQL (although the instructions should be adaptable).

Installing MySQL

$ brew install mysql@5.7 # change the version if needed
dteoh /
Created Oct 23, 2019
Display dictionary definition on macOS
  1. Move mouse cursor to point at a word
  2. Press Command + Ctrl + D
dteoh / custom_ar_relation_relay_connection.rb
Last active Oct 28, 2019
GrapQL Ruby: Custom Relay connection class for ActiveRecord::Relation objects
View custom_ar_relation_relay_connection.rb
# This custom relay connection class exists because the built-in connection
# class is broken when max_page_size is used.
# See:
class CustomArRelationRelayConnection < GraphQL::Relay::BaseConnection
def cursor_from_node(item)
cursor_col = item.class.implicit_order_column
dteoh /
Created Sep 26, 2019
Check CORS headers with `curl`
$ curl -X OPTIONS -H “Origin:” -H “Access-Control-Request-Method: GET“ -s -v <TARGET URL HERE> 1> /dev/null
dteoh /
Created Jun 26, 2019
NeoVim + Python 3 provider

Assuming that [Conda][1] is used, start by creating an environment for NeoVim:

$ conda create -n neovim36 python=3.6

Fish shell users:

$ source (conda info --root)/etc/fish/conf.d/  
dteoh /
Last active Apr 17, 2019
Solving "unused variable this." warnings when using ReasonML objects

unused variable this

You can create [objects in ReasonML][1]. For example:

let document = {
  pub title = "My Treatise";
  pub contents = "<a lot of words>"
dteoh /
Last active Apr 2, 2019
A pattern for encoding records with bs-json

A pattern for encoding records with bs-json

If you have a record type like:

type post = {
  title: string,
  body: string,
dteoh / .gitconfig
Created Mar 17, 2019
Use Neovim as git mergetool
View .gitconfig
tool = vimdiff
keepBackup = false
[mergetool "vimdiff"]
cmd = nvim -d $LOCAL $REMOTE $MERGED -c '$wincmd w' -c 'wincmd J'
dteoh / puma_rb_backtrace.txt
Created Apr 10, 2017
Puma rb_backtrace() crash in lldb
View puma_rb_backtrace.txt
(lldb) expression (void) rb_backtrace()
/Users/dteoh/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/puma-3.8.2/lib/puma/plugin/tmp_restart.rb:22: [BUG] pthread_cond_wait: Invalid argument (EINVAL)
ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin16]
-- Crash Report log information --------------------------------------------
See Crash Report log file under the one of following:
* ~/Library/Logs/CrashReporter
* /Library/Logs/CrashReporter
* ~/Library/Logs/DiagnosticReports
* /Library/Logs/DiagnosticReports
dteoh /
Created Feb 23, 2017
Preventing macOS from sleeping

There is a built-in command line utility caffeinate that can be used to prevent macOS from sleeping.

To prevent macOS from sleeping before a process with given PID exits:

$ caffeinate -w PID

To prevent macOS from sleeping for the next N seconds:

You can’t perform that action at this time.