ootput Burst on Github via Hexo

Thanks to Hexo, I am slowly migrating my wordpress.com site towards Github. Github Pages reminds me of Nanoblogger in many ways - sans the excruciating pace of deployment. I love Github’s free-of-ads hosting, and the fact that I can tinker with the content framework in the comfort of my beloved Emacs editor. I also don’t mind the fact that I work with a local repository of text-based version-controlled blog entries.

Check out my work-in-progress at http://ootput.github.io

Changes to vanilla Hexo are courtesy of fine Hexo documentation at http://jr0cket.co.uk/hexo/

QOS on VPN Client Tunnel in Tomato

From this page, I was able to have QOS functioning on an OpenVPN tunnel in Tomato.

Essentially, I had to add the following snippet to the ADMIN->SCRIPTS->FIREWALL field (note the different device names used):

1
2
3
4
5
6
7
8
9
10
cp /etc/qos /tmp/qos-tun11
sed -i 's/vlan2/tun11/g' /tmp/qos-tun11
sed -i 's/imq0/imq1/g' /tmp/qos-tun11
chmod +x /tmp/qos-tun11
/tmp/qos-tun11
iptables -t mangle -A FORWARD -o tun11 -j QOSO
iptables -t mangle -A OUTPUT -o tun11 -j QOSO
iptables -t mangle -A PREROUTING -i tun11 -j CONNMARK --restore-mark --mask 0xff
iptables -t mangle -A PREROUTING -i tun11 -j IMQ --todev 1
ifconfig imq1 up

2014 New Years Resolution

This year I chose to watch the fireworks display from the comfort of my own home. I didn’t really want to go out and celebrate, as I was utterly miserable. My wife had taken several candid photos of me the night prior while I was doing my own thing, and moments before the fireworks were lit I chanced upon those photos.

Up until that moment, I had no idea how obese I had become. I knew I was getting chubby, but no one had taken a photo of me with my shirt off.

Lo’ and behold, my jolly ol’ self at 5’9 110kg:

Now, barely 2 minutes into the New Year, I have resolved to undo years of alcohol and food abuse. This year’s resolution is dedicated to my family.

Reset Audio on OSX

To reset CoreAudio on Mac OS X without rebooting the machine, use the following command:

# sudo kill -9 $(ps ax|grep 'coreaudio[a-z]' |awk '{print $1}'}

Alternatively, open up activity monitor, and manually search for CoreAudio

Update to Latest FreeBSD Release (9.2)

For my records, here is an outline of the steps I took to upgrade FreeBSD from 9.1 to 9.2.

# freebsd-update fetch

# freebsd-update install

(and reboot if any changes were made)

Now, fetch the upgrades that are included in the 9.2-RELEASE. The differences in configuration files will need to be merged manually.

# freebsd-update upgrade -r 9.2-RELEASE

# freebsd-update install

Reboot with the new kernel before the non-kernel components receive updates:

# shutdown -r now

After rebooting, install the new user-land components, and upgrade 3rd party packages:

# freebsd-update install

# pkg upgrade

To delete the old (no longer used) system libraries:

# freebsd-update install

Finally, reboot into 9.2-RELEASE

# shutdown -r now

Root and Flash Samsung Galaxy S2 From Within OSX

This post outlines the steps I’d taken to root and flash my Galaxy S2 (GT-i9100T) with a custom rom.

I was running the latest SGS2 firmware from Vodafone,AU - DVLS3. I decided to obtain a backup of the modem’s firmware found here. I extracted modem.bin to ~/Desktop

Rooting my GT-i9100T phone was a piece of cake thanks to Framaroot. Essentially, it is a one-click application to install Superuser and su binary on phone.

You can manually download the .apk file to your phone’s storage for installation from within any file manager. It is compatible with many phones, and in particular, Exynos devices (eg Samsung Galaxy S2 GT-i9100T) work with the Aragorn exploit. At the time of this writing, I used version 1.6.0 of Framaroot successfully. Read the FAQ on the linked page for further information.

Optional: Next, I installed BusyBox and DroidWall from within the PlayStore.

Next, I downloaded codeworkx’s ClockworkMod Recovery found here. I extracted its contents (zImage) to my Desktop.

Next, I downloaded my preferred custom rom (Omega Jelly Bean) to the phone’s storage at /sdcard.

Next, I visited this page and downloaded heimdall-suite-1.3.2-mac.dmg — **Heimdall Suite 1.3.2** - OS X binaries (universal). At the time of this writing, version 1.4.0 only works with OSX 10.8+ (Mountain Lion) in 64bit mode - 1.3.2 works fine with other OSX versions, though. After installation of the package, I had to reboot the machine.

Finally, I followed the instructions found here to install CWM-recovery. Essentially I had to do the following:

  • Boot the Galaxy S II into download mode by holding down Volume Down, Home & Power.
  • Insert the USB cable into the device.
  • Run heimdall flash --kernel ~/Desktop/zImage --no-reboot from Terminal.app
  • Also, run heimdall flash --modem ~/modem.bin --no-reboot
  • Turn off the phone.
  • Boot the phone into ClockworkMod Recovery mode by holding Volume Up, Home, & Power.

I then proceeded with the rest of the guide to flash the custom rom.

The end result is shown below:
IMG_20130823_145923

Copy and Paste in Tmux with Mouse

I have my iTerm2 emulate xterm-256colors, and found that it was possible to use the mouse to copy a selection in tmux.

You’d need to hold down the option key whilst left-clicking and dragging across the target text selection. If you want to now paste the selected text back in to the terminal (in say, another window), you must also hold down the option key and middle-click to paste.

Share OSX Clipboard With Emacs

Add the following to your .el init files:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
;; Use M-w to copy Emacs buffer selection; and Cmd-V to paste outside of Emacs.
;; Use Cmd-C to copy selection from OSX; and C-y to paste in Emacs
(defun copy-from-osx ()
(shell-command-to-string "pbpaste"))
(defun paste-to-osx (text &optional push)
(let ((process-connection-type nil))
(let ((proc (start-process "pbcopy" "*Messages*" "pbcopy")))
(process-send-string proc text)
(process-send-eof proc))))
(setq interprogram-cut-function 'paste-to-osx)
(setq interprogram-paste-function 'copy-from-osx)

Control iTunes with Shell Script at Command-line

Use the following script to control iTunes from the shell:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
#!/bin/sh
#
#######################################
# iTunes Command Line Control v1.0.0.1
# written by David Schlosnagle
# created 2001.11.08
# modified 2007.01.28 by David West
# modified 2013.08.02 by ootput
# filename=itunes
#######################################
showHelp () {
echo "-----------------------------";
echo "iTunes Command Line Interface";
echo "-----------------------------";
echo "Usage: `basename $0` ";
echo;
echo "Options:";
echo " status = Shows iTunes' status, current artist and track.";
echo " play = Start playing iTunes.";
echo " pause = Pause iTunes.";
echo " next = Go to the next track.";
echo " prev = Go to the previous track.";
echo " mute = Mute iTunes' volume.";
echo " unmute = Unmute iTunes' volume.";
echo " vol up = Increase iTunes' volume by 10%";
echo " vol down = Increase iTunes' volume by 10%";
echo " vol # = Set iTunes' volume to # [0-100]";
echo " stop = Stop iTunes.";
echo " search = Run query, populate playlist named foo and play. "
echo " playlist = Show playlists saved in iTunes.";
echo " clear = clear playlist foo. ";
echo " quit = Quit iTunes.";
}
if [ $# = 0 ]; then
showHelp;
fi
while [ $# -gt 0 ]; do
arg=$1;
songname=$2;
echo $songname;
case $arg in
"status" ) state=`osascript -e 'tell application "iTunes" to player state as string'`;
echo "iTunes is currently $state.";
if [ $state = "playing" ]; then
artist=`osascript -e 'tell application "iTunes" to artist of current track as string'`;
track=`osascript -e 'tell application "iTunes" to name of current track as string'`;
echo "Current track $artist: $track";
fi
break ;;
"play" ) echo "Playing iTunes.";
osascript -e 'tell application "iTunes" to play';
break ;;
"pause" ) echo "Pausing iTunes.";
osascript -e 'tell application "iTunes" to pause';
break ;;
"next" ) echo "Going to next track." ;
osascript -e 'tell application "iTunes" to next track';
break ;;
"prev" ) echo "Going to previous track.";
osascript -e 'tell application "iTunes" to previous track';
break ;;
"mute" ) echo "Muting iTunes volume level.";
osascript -e 'tell application "iTunes" to set mute to true';
break ;;
"unmute" ) echo "Unmuting iTunes volume level.";
osascript -e 'tell application "iTunes" to set mute to false';
break ;;
"vol" ) echo "Changing iTunes volume level.";
vol=`osascript -e 'tell application "iTunes" to sound volume as integer'`;
if [ $2 = "up" ]; then
newvol=$(( vol+10 ));
fi
if [ $2 = "down" ]; then
newvol=$(( vol-10 ));
fi
if [ $2 -gt 0 ]; then
newvol=$2;
fi
osascript -e "tell application "iTunes" to set sound volume to $newvol";
break ;;
"stop" ) echo "Stopping iTunes.";
osascript -e 'tell application "iTunes" to stop';
break ;;
"quit" ) echo "Quitting iTunes.";
osascript -e 'tell application "iTunes" to quit';
exit 1 ;;
"search" ) echo "Searching Library.";
songname=$2;
osascript -e "tell application "iTunes"" -e "set searchResults to search playlist "Library" for "$songname"" -e "repeat with aTrack in searchResults" -e "copy aTrack to playlist "foo"" -e "end repeat" -e "play playlist "foo"" -e "end tell";
break ;;
"playlist" )
if [ -n "$2" ]; then
echo "Changing iTunes playlists to '$2'.";
osascript -e 'tell application "iTunes"' -e "set new_playlist to \"$2\" as string" -e "play playlist new_playlist" -e "end tell";
break ;
else
# Show available iTunes playlists.
echo "Playlists:";
osascript -e 'tell application "iTunes"' -e "set allPlaylists to (get name of every playlist)" -e "end tell";
break;
fi
break;;
"clear" ) echo "Clearing Query.";
osascript -e "tell application "iTunes" to delete tracks of playlist "foo"";
break ;;
"help" | * ) echo "help:";
showHelp;
break ;;
esac
done