Skip to content

Instantly share code, notes, and snippets.

Avatar

Gilbert Wat gilbertwat

View GitHub Profile
@gilbertwat
gilbertwat / gist:4010030
Created Nov 4, 2012 — forked from stran12/gist:1394757
Step-by-step installation of cGit with Nginx
View gist:4010030

How to install cGit on Nginx (Ubuntu server)

Step-by-step installtion of cGit on nginx without funky rewrite rules.

Pre-requisites

This is for

@gilbertwat
gilbertwat / remove-artifacts-gh.sh
Created Mar 23, 2022
Remove all Github Action Artifacts for 1 repo
View remove-artifacts-gh.sh
#!/bin/zsh
ORG=${ORG:-"preface-ai"}
REPO=${REPO:-"preface-website-frontend"}
echo "Removing artifacts in {$REPO} from {$ORG}"
IDS="$(gh api /repos/$ORG/$REPO/actions/artifacts --paginate --jq '.artifacts[] | .id')"
echo $IDS
if [ -z "$IDS" ];
@gilbertwat
gilbertwat / AppLocaleDatePickerDialog.java
Created Jan 25, 2013
DatePickerDialog that honors the locale set by the app
View AppLocaleDatePickerDialog.java
package com.gilbert.wat.widget;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.util.Calendar;
import android.app.DatePickerDialog;
import android.content.Context;
import android.os.Build;
import android.widget.DatePicker;
@gilbertwat
gilbertwat / ExpandableTextView.java
Created Aug 26, 2013
A TextView that only click to expand to show full text and click to show shorten text, The ellipsis can be configured too.
View ExpandableTextView.java
package com.mpayme.znap.core.widget;
import java.lang.reflect.Field;
import android.content.Context;
import android.text.SpannableStringBuilder;
import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.View;
import android.widget.TextView;
View .vimrc
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
" vim-plug stuff
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
call plug#begin()
" Fuzzy Search
Plug '/usr/local/opt/fzf'
" Surround open / close
Plug 'tpope/vim-surround'
" File explorer
Plug 'scrooloose/nerdtree'
View .tmux.conf
set-window-option -g mode-keys vi
set-option -g history-limit 3000
set -g mouse on
View how-to-do-technical-discussion.md

How to do technical discussion?

  1. Define problems.
  • Define common terms:
    • What means by x ? Even when x is a common terms?
      • For example in delivery platform: What means by refund? Turns out engineering team has different definition with product team 😅
      • Save us precious time and make sure our discussion is valid
  • Define priorities (Tech Lead responsibility):
  • Is it life or death?
View avoid_deadlock.rb
def must_deadlock
new_waypoints = get_new_waypoints
order.transaction do
order.waypoints.destroy_all
new_waypoints.each |waypoint| do
Order.waypoints.create!(waypoint)
end
end
end
@gilbertwat
gilbertwat / ggv_geekbot.rb
Created Dec 25, 2017
Geekbot API to CSV for easy analysis
View ggv_geekbot.rb
#!/usr/bin/env ruby
require 'net/http'
require 'uri'
require 'rubygems'
require 'json'
require 'csv'
after = 1509494400 #2017-11-01 00:00:00 +0800
user_id = 'JS Console Network Tab can help you'
@gilbertwat
gilbertwat / GGV_outage_template.md
Last active Dec 13, 2017
GGV_outage_template.md
View GGV_outage_template.md

Outage Report

Duration: (x)min
From: YYYYMMDDHHmm
To: YYYYMMDDHHmm
Summary: summary

Outage Timeline:

HHmm: Problem Found
HHmm: Ops screaming