Skip to content

Instantly share code, notes, and snippets.

@bdunagan
bdunagan / salesforce-timezones.txt
Created December 29, 2016 04:34
Salesforce: How to Set Up US Timezones with a Custom Formula
# Salesforce Custom Formula for US Timezones based on Billing State
# Note there are 51 because DC counts.
CASE(BillingState,
"HI","US-PST",
"AK","US-PST",
"WA","US-PST",
"OR","US-PST",
"CA","US-PST",
"NV","US-PST",
"MT","US-MST",
@bdunagan
bdunagan / git.log.with.lines.changed.rb
Created November 13, 2011 19:05
git log with colors and lines changed
# See colored 'git log' with lines changes in Terminal on Mac
# => * 1234567 - 2001-01-01 - NNNNN - description <user>
# Based on http://www.jukie.net/bart/blog/pimping-out-git-log
# git config --global alias.lg "log --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --date=relative"
# To install as 'gl' alias (not overriding 'git log'):
# 1) save this as ~/.gitlog.rb
# 2) add to ~/.bash_profile: 'alias gl="ruby ~/.gitlog.rb | more -r"'
@bdunagan
bdunagan / how-to-disable-multi-touch-on-apple-magic-mouse.bash
Created December 5, 2016 21:08
Terminal: How to Disable Multi-Touch on Apple Magic Mouse
# Launch Terminal.
defaults write com.apple.AppleMultitouchMouse MouseMomentumScroll -bool NO
defaults write com.apple.AppleMultitouchMouse MouseHorizontalScroll -bool NO
defaults write com.apple.AppleMultitouchMouse MouseVerticalScroll -bool NO
defaults write com.apple.driver.AppleBluetoothMultitouchMouse MouseMomentumScroll -bool NO
defaults write com.apple.driver.AppleBluetoothMultitouchMouse MouseHorizontalScroll -bool NO
defaults write com.apple.driver.AppleBluetoothMultitouchMouse MouseVerticalScroll -bool NO
# Restart the computer.
@bdunagan
bdunagan / s3-delete-bucket.rb
Created November 21, 2011 17:23
s3-delete-bucket.rb: quickly delete large AWS S3 buckets using fog
#!/usr/bin/env ruby
# s3-delete-bucket.rb
# Fog-based script for deleting large Amazon AWS S3 buckets (~100 files/second)
# Forked from this excellent script: https://github.com/SFEley/s3nuke
require 'rubygems'
require 'thread'
require 'fog'
@bdunagan
bdunagan / salesforce-opportunity-field-days-since-release.txt
Last active March 18, 2017 13:11
Salesforce: Add an Opportunity formula field for "Days since release"
# Salesforce Custom Formula for "Days Since Release" based on Opportunity CloseDate
IF(
/* 2012 - Win 8, Mac 10 */
AND(
CloseDate >= DATE(2012,11,6),
CloseDate < DATE(2014,3,4)
),
CloseDate - DATE(2012,11,6),
IF(
/* 2014 - Win 9, Mac 11 */
@bdunagan
bdunagan / salesforce-opportunity-field-release-name.txt
Last active March 18, 2017 13:11
Salesforce: Add an Opportunity formula field for "Release Name"
# Salesforce Custom Formula for Release Name based on Opportunity CloseDate
IF(
/* 2012 - Win 8, Mac 10 */
AND(
CloseDate >= DATE(2012,11,6),
CloseDate < DATE(2014,3,4)
),
"2012 - Win 8, Mac 10",
IF(
/* 2014 - Win 9, Mac 11 */
# List of all uploaded videos and playlists on a YouTube Channel
# Note that YouTube API v3 requires a key. Create a browser API key with a referer at https://console.developers.google.com.
#
# Here are the steps using "curl" that matches the Ruby code below:
#
# Get channel information.
# curl --referer "YOUR_REFERER" "https://www.googleapis.com/youtube/v3/channels?part=snippet,contentDetails,statistics,status&maxResults=50&forUsername=YOUR_USERNAME&key=YOUR_KEY"
# Find "Uploads" playlist ID at items => contentDetails => relatedPlaylists => uploads.
# Find Channel ID at items => id.
#
@bdunagan
bdunagan / salesforce-report-object.rb
Created January 29, 2017 10:44
Salesforce: Create a Report object using Analytics API
# Instantiate Salesforce Report using Restforce.
# Requires Salesforce Analytics API with v29.
# Usage
# report = Restforce::Report.find("1234567890")
# puts report.name
# puts report.filters
# puts report.rows
module Restforce
@bdunagan
bdunagan / salesforce-territories.txt
Created December 25, 2016 17:13
Salesforce: How to Set Up Sales Territories with a Read-Only Custom Formula
# Salesforce Custom Formula for Worldwide Sales Territories
IF(ISBLANK(Country),"North America",
IF(CONTAINS("US:CA:PR",Country),"North America",
IF(CONTAINS("DE:AT:CH",Country),"DACH",
IF(CONTAINS("FR:MC:NC:PF:GP:RE:MQ:GY",Country),"France",
IF(CONTAINS("ES",Country),"Spain",
IF(CONTAINS("PT",Country),"Portugal",
IF(CONTAINS("IT",Country),"Italy",
IF(CONTAINS("AG:AI:AN:AR:AW:BB:BM:BO:BR:BS:BZ:CL:CO:CR:CU:DM:DO:EC:FK:GD:GL:GT:GY:HN:HT:JM:KN:KY:LC:MS:MX:NI:PA:PE:PM:PY:SR:SV:TC:TT:UY:VC:VE:VG:VI",Country),"Latam",
IF(CONTAINS("AS:AU:CK:CN:CX:FJ:FM:GU:HK:ID:JP:KH:KI:KP:KR:LA:MH:MM:MN:MO:MP:MY:NF:NR:NU:NZ:PG:PH:PN:PW:SB:SG:TH:TK:TO:TV:TW:VN:VU:WF:WS",Country),"APAC",
@bdunagan
bdunagan / gtalk-jabber-subscribe.rb
Created October 29, 2011 15:25
Invite users from Google Talk using Ruby and Jabber
# https://github.com/ln/xmpp4r
# gem install xmpp4r
require 'xmpp4r'
email = ADD_EMAIL
password = ADD_PASSWORD
friends_email = ADD_EMAIL
client = Jabber::Client::new(Jabber::JID::new(email))
client.connect("talk.google.com")
client.auth(password)
client.send(Jabber::Presence.new.set_type(:subscribe).set_to(friends_email))