View vnc-over-ssh.sh
# You want to VNC to Box A but you don't have access to it
# over public Internet. You do have SSH access to Box B in
# the same private network.
# firewall
# ┌─────┐ ╏╏ ┌─────┐
# │ You │──SSH──╏╏────│ B │ bastion
# └─────┘ ╏╏ └──┬──┘
# ╏╏ SSH
# ╏╏ ┌──┴──┐
View update-site-urls.sh
!/bin/bash
# WordPress Multisite HTTP to HTTPS migration
# Use wp-cli to assist HTTP to HTTPS migration for a WP Multisite installation.
# Update site metadata for the main site as well as each site in the network.
WP_PATH=/var/www
WPCLI_PATH=/home/admin/bin/wp-cli.phar
View flickr-biggest.js
javascript:P=FLICKR.photo.getSizes();window.location=P[Object.keys(P).pop()].url;
View A cheapskate on Amazon EC2.md

September 29 2010, 9:23 PM

Amazon’s EC2 service now allows you to boot from persistent EBS volumes—a boon to those of us who like to run the occasional server-hour but don’t want to mess with bundling AMIs and other atrocities. The [AWS Management Console][1] automates most tasks, but you might find yourself quickly running into a two-part annoyance: (1) if you use public AMIs, the size of your EBS volume is chosen for you; and (2) EBS volumes are not resizable—at least, [not downwards][2]. Since Amazon charges you for allotted space on EBS volumes, this “annoyance” can literally cost you [tens of cents][3] per month!

Luckily, there is a workaround, and it has the side benefit of allowing you to boot one EBS volume on different instance types—that is, boot up your volume on an “m1.small” instance one day, a “c1.medium” the next, and so on. What follows assumes familiarity with Amazon Web Services and EC2, UNIX/Linux, the command-line, computers, typing, pants-wearing, etc.

Ok: Launch an EC2 instance fr

View getTextNodesBetween.js
// Get all *text* nodes contained in a selection object.
// Adapted from code by Tim Down.
// http://stackoverflow.com/questions/4398526/how-can-i-find-all-text-nodes-between-to-element-nodes-with-javascript-jquery
function getTextNodesBetween(selection) {
var range = selection.getRangeAt(0), rootNode = range.commonAncestorContainer,
startNode = range.startContainer, endNode = range.endContainer,
startOffset = range.startOffset, endOffset = range.endOffset,
pastStartNode = false, reachedEndNode = false, textNodes = [];
function getTextNodes(node) {
var val = node.nodeValue;
View upgrade-trac-1.0.sh
# as root
/etc/init.d/apache2 stop
easy_install --upgrade Trac==1.0
trac-admin /var/trac/sites/my-trac upgrade
trac-admin /var/trac/sites/my-trac wiki upgrade
/etc/init.d/apache2 start
View bp-custom.php
<?php
/*
BuddyPress 1.6 custom site avatars.
Add to (or create) /wp-content/plugins/bp-custom.php.
Or place in theme's functions.php.
*/
/*
Use a specific user's avatar for a site.
View sort.php
<?php
/*
* In 2013, locale-based sort is still broken or headache-inducing on many machines, and
* POSIX or C locales are the unassailable default in a shocking number of places. (For a
* fun exercise, try relying on LC_COLLATE for sorting in OS X.)
*
* This is a shameful PHP-based hack that mimics proper sorting for English using iconv
* transliteration. If doing things the WRONG WAY offends you, avert your eyes. However,
* this has worked for me in a pinch when I don’t have time to track down a box that has
View zip-epub.sh
zip -X my.epub mimetype
zip -rg my.epub META-INF -X \*.DS_Store
zip -rg my.epub OEBPS -x \*.DS_Store