<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Software and Opinions &#187; dreamhost</title>
	<atom:link href="http://ianloic.com/tag/dreamhost/feed/" rel="self" type="application/rss+xml" />
	<link>http://ianloic.com</link>
	<description>from Ian McKellar</description>
	<lastBuildDate>Wed, 07 Sep 2011 21:48:48 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
	<atom:link rel='hub' href='http://ianloic.com/?pushpress=hub'/>
		<item>
		<title>DIY DDNS</title>
		<link>http://ianloic.com/2011/04/27/dreamhost-ddns/</link>
		<comments>http://ianloic.com/2011/04/27/dreamhost-ddns/#comments</comments>
		<pubDate>Thu, 28 Apr 2011 07:12:22 +0000</pubDate>
		<dc:creator>Ian McKellar</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[dns]]></category>
		<category><![CDATA[dreamhost]]></category>

		<guid isPermaLink="false">http://ianloic.com/?p=315</guid>
		<description><![CDATA[For those of us on cable or DSL who are slightly too cheap to pay for a static IP, dynamic DNS services are really useful. My DD-WRT based router knows how to talk to dynamic DNS providers, so setting it &#8230; <a href="http://ianloic.com/2011/04/27/dreamhost-ddns/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>For those of us on cable or DSL who are slightly too cheap to pay for a static IP, dynamic DNS services are really useful. My <a href="https://www.amazon.com/dp/B0028ACYEK/ref=as_li_ss_til?tag=httpianmckell-20&amp;camp=213381&amp;creative=390973&amp;linkCode=as4&amp;creativeASIN=B0028ACYEK&amp;adid=0V4M3G8BWQCAE4SVVANG&amp;">DD-WRT based router</a> knows how to talk to dynamic DNS providers, so setting it up is really easy.</p>
<p>I&#8217;ve tried both <a href="http://www.dyndns.com/">DynDNS</a> and <a href="http://www.no-ip.com/">No-IP</a>, and while they work quite well they&#8217;re kind of annoying. They really want me to sign up for a premium service, after all that&#8217;s how they make money. As a result I need to periodically visit web pages to confirm that I&#8217;m using an address or pay a fee. It&#8217;s not a big fee, but I&#8217;m already paying someone, <a href="http://www.dreamhost.com/r.cgi?235928">DreamHost</a> to host DNS for me, and they&#8217;ve got an <a href="http://wiki.dreamhost.com/API/Dns_commands">API</a>&#8230;</p>
<p>So I threw together a little script that implements the DynDNS API and modifies your own DNS zones using the DreamHost API. You can get it from here:<br />
<a href="https://github.com/ianloic/dreamhost-ddns">https://github.com/ianloic/dreamhost-ddns</a></p>
<p>The setup instructions are included in the README. Hopefully they&#8217;re pretty self-evident, but they are written from the perspective of someone who ran their own DNS servers (primary and secondary) for ten years.</p>
]]></content:encoded>
			<wfw:commentRss>http://ianloic.com/2011/04/27/dreamhost-ddns/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tracking WordPress using Git</title>
		<link>http://ianloic.com/2008/09/06/tracking-wordpress-using-git/</link>
		<comments>http://ianloic.com/2008/09/06/tracking-wordpress-using-git/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 20:40:38 +0000</pubDate>
		<dc:creator>Ian McKellar</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[git]]></category>
		<category><![CDATA[github]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://ianloic.com/?p=60</guid>
		<description><![CDATA[Update: I don&#8217;t do this anymore. I publish this blog through WordPress, for reasons I&#8217;ve outlined before. I run it with a custom theme and a bunch of plugins though, and I wanted a convenient way to keep my WordPress &#8230; <a href="http://ianloic.com/2008/09/06/tracking-wordpress-using-git/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>Update</strong>: <a href="http://ianloic.com/2009/12/29/give-me-convenience/">I don&#8217;t do this anymore</a>.</p>
<p>I publish this blog through <a href="http://www.wordpress.org/">WordPress</a>, for reasons I&#8217;ve <a href="http://ianloic.com/2008/01/12/moving-from-drupal-to-wordpress-for-blogging/">outlined before</a>. I run it with a custom theme and a bunch of plugins though, and I wanted a convenient way to keep my WordPress install up to date without having to reinstall everything all the time. I wanted source control for my blog install.</p>
<p>My first attempt involved mirroring WordPress SVN into a <a href="http://git.or.cz/">Git</a> repository on <a href="http://www.github.com/">github</a> so that I had a Git version of the SVN tree (including branches, tags and every checkin separate) and seperate repository holding the changes I&#8217;d made for my web site. This eventually failed for two reasons, first the script I was using to mirror the SVN into Git had a habit of failing in bizarre ways and secondly having two repositories confused me.</p>
<p>Yesterday I decided to update my fairly outdated WordPress install, it had been missing security fixes for some time and was one minor version behind. Since tracking SVN hadn&#8217;t worked I tried a simpler approach, a single Git repository containing a <em>master</em> branch that tracks releases and an <em>ianloic.com</em> branch to track the state of my site.</p>
<p>I set up <em>master</em> with a fresh download of WordPress 2.5 from wordpress.com, created my <em>ianloic.com</em> branch and applied the differences between my site and the <em>2.5</em> SVN tag (for all it&#8217;s failures my old approach at least let me do this easily). I switched back to the <em>master</em> branch, deleted all the files (leaving my .git directory intact) and unpacked the new WordPress 2.6.1 tarball. I checked that in (to the <em>master</em> branch), tagged it <em>2.6.1</em> and then merged that into my <em>ianloic.com</em> branch. I pushed all that to <a href="http://github.com/ianloic/wordpress/">github</a> and then checked it out on my web server (at <a href="http://www.dreamhost.com/r.cgi?235928">Dreamhost</a>).</p>
<p>Normally with Git you&#8217;re tracking just the <em>master</em> branch, but I want both <a href="http://github.com/ianloic/wordpress/commits/master"><em>master</em></a> and <a href="http://github.com/ianloic/wordpress/commits/ianloic.com"><em>ianloic.com</em></a> branches to be tracked so my .<em>git/config</em> contains:</p>
<pre>[remote "origin"]
	url = git@github.com:ianloic/wordpress.git
	fetch = +refs/heads/*:refs/remotes/origin/*
[branch "master"]
	remote = origin
	merge = refs/heads/master
[branch "ianloic.com"]
	remote = origin
	merge = refs/heads/ianloic.com</pre>
<p>Now it&#8217;s easy to track changes that I&#8217;m making to my site and update to the latest WordPress without risking losing anything. The process for updating to a new WordPress release is:</p>
<ul>
<li>on my laptop check out the <em>master</em> branch</li>
<li><em>rm</em> all the files except for <em>.git</em> from the directory</li>
<li>unpack the new release into the directory</li>
<li><em>git-add .</em> — now <em>git-status</em> will indicate what has changed, been added or removed</li>
<li><em>git-commit</em> to check in the new version of wordpress</li>
<li><em>git-tag versionnum</em> to tag which version is currently in master</li>
<li><em>git-checkout ianloic.com</em></li>
<li><em>git-merge versionnum</em> to merge the latest version into the site&#8217;s branch</li>
<li><em>git-push &#8211;all &#8211;tags</em> to push all the branches and tags to github</li>
<li>on my web server, <em>git-pull</em> to update to the latest release</li>
</ul>
<p>I end up with a tree that looks like this:</p>
<div class="mceTemp mceIEcenter">
<dl id="attachment_62" class="wp-caption aligncenter" style="width: 433px;">
<dt class="wp-caption-dt"><a href="http://ianloic.com/wp-content/uploads/2008/09/qgit.png"><img class="size-full wp-image-62" title="WordPress in Git" src="http://ianloic.com/wp-content/uploads/2008/09/qgit.png" alt="ianloic.com WordPress in Git" width="423" height="241" /></a></dt>
</dl>
</div>
]]></content:encoded>
			<wfw:commentRss>http://ianloic.com/2008/09/06/tracking-wordpress-using-git/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Installing Ruby Gems in your home directory</title>
		<link>http://ianloic.com/2007/08/29/installing_ruby_gems_in_your_home_directory/</link>
		<comments>http://ianloic.com/2007/08/29/installing_ruby_gems_in_your_home_directory/#comments</comments>
		<pubDate>Wed, 29 Aug 2007 23:32:07 +0000</pubDate>
		<dc:creator>Ian McKellar</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[I've been playing with Ruby in my <a href="http://www.dreamhost.com/r.cgi?235928">cheap shared hosting provider</a>. They don't include everything I need so I had to install <a href="http://www.rubygems.org/">Ruby Gems</a> in my home directory. The <a href="http://www.rubygems.org/read/chapter/15#page101">instructions</a> don't work. So here's what I did...

First set up environment variables to tell Ruby and Gems where to find stuff:<code>
export GEM_HOME=$HOME/lib/ruby/gems/1.8
export RUBYLIB=$HOME/lib/ruby:/home/ian/lib/site_ruby/1.8
</code>

Download and unpack the Gems source (this is the version I downloaded, you should grab the <a href="http://rubyforge.org/frs/?group_id=126">latest</a>:<code>
wget http://rubyforge.org/frs/download.php/20989/rubygems-0.9.4.tgz
tar xzvf rubygems-0.9.4.tgz
cd rubygems-0.9.4
</code>

Run the setup.rb script with the right arguments to install into your home directory:<code>
ruby setup.rb all --prefix=$HOME --siterubyver=$HOME/lib/site_ruby/1.8
</code>

This will install the gem command (and a couple of others) into <code>$HOME/bin</code> and the Gems source into <code>$HOME/lib/site_ruby</code>. Gems will be installed into <code>$HOME/lib/ruby/gems/1.8</code>. You should add <code>$HOME/bin</code> to your path. If you want to install it somewhere else replace <code>$HOME</code> with the prefix you'd like to use. <a href="http://ianloic.com/2007/08/29/installing_ruby_gems_in_your_home_directory/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p><strong>NOTE: Updated for RubyGems 1.3.7</strong></p>
<p>I&#8217;ve been playing with Ruby in my <a href="http://www.dreamhost.com/r.cgi?235928">cheap shared hosting provider</a>. They don&#8217;t include everything I need so I had to install <a href="http://www.rubygems.org/">Ruby Gems</a> in my home directory. The <a href="http://www.rubygems.org/read/chapter/15#page101">instructions</a> don&#8217;t work. So here&#8217;s what I did&#8230;</p>
<p>First set up environment variables to tell Ruby and Gems where to find stuff:</p>
<pre class="prettyprint">export GEM_HOME=$HOME/lib/ruby/gems/1.8
export RUBYLIB=$HOME/lib/ruby:$HOME/lib/site_ruby/1.8</pre>
<p>Download and unpack the Gems source (this is the version I downloaded, you should grab the <a href="http://rubyforge.org/frs/?group_id=126">latest</a>:</p>
<pre class="prettyprint">wget http://rubyforge.org/frs/download.php/70696/rubygems-1.3.7.tgz
tar xzvf rubygems-1.3.7.tgz
cd rubygems-1.3.7</pre>
<p>Run the setup.rb script with the right arguments to install into your home directory:</p>
<pre class="prettyprint">ruby setup.rb all --prefix=$HOME
ln -s $HOME/bin/gem1.8 $HOME/bin/gem</pre>
<p>This will install the <code>gem</code> command into <code>$HOME/bin</code> and the Gems source into <code>$HOME/lib/site_ruby</code>. Gems will be installed into <code>$HOME/lib/ruby/gems/1.8</code>. You should add <code>$HOME/bin</code> to your path. If you want to install it somewhere else replace <code>$HOME</code> with the prefix you&#8217;d like to use.</p>
]]></content:encoded>
			<wfw:commentRss>http://ianloic.com/2007/08/29/installing_ruby_gems_in_your_home_directory/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>OpenID for the mathematically challenged</title>
		<link>http://ianloic.com/2007/05/16/openid_for_the_mathematically_challenged/</link>
		<comments>http://ianloic.com/2007/05/16/openid_for_the_mathematically_challenged/#comments</comments>
		<pubDate>Wed, 30 Nov -0001 00:00:00 +0000</pubDate>
		<dc:creator>Ian McKellar</dc:creator>
				<category><![CDATA[Default]]></category>
		<category><![CDATA[dreamhost]]></category>
		<category><![CDATA[drupal]]></category>
		<category><![CDATA[openid]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[The other day I got the <a href="http://openid.net/">OpenID</a> bee in my bonnet and grabbed <a href="http://walkah.net/">James Walker</a>'s <a href="http://drupal.org/project/openid">module</a> and installed it on my server. Actually I grabbed it from CVS, and then discovered that the CVS version is half-ported to some new Drupal 6 form API, so I ended up using the DRUPAL-5 tag.

Anyway, I use <a href="http://www.dreamhost.com/">Dreamhost</a> which I love for many many reasons (primarilly it's really cheap and seems to work really well). Unfortunately they don't build their PHP with <a href="http://php.net/bc">BCMath</a> or even <a href="http://www.php.net/manual/en/ref.gmp.php">GMP</a>, which means my PHP can't do the <a href="http://openid.net/specs/openid-authentication-2_0-11.html#sign_algos">hard math</a> that's required for crypto. Luckily there's a mode of OpenID that doesn't require any work on the relaying party side. So I made a small change that allows James' module to work in this "dumb" mode.
 <a href="http://ianloic.com/2007/05/16/openid_for_the_mathematically_challenged/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>The other day I got the <a href="http://openid.net/">OpenID</a> bee in my bonnet and grabbed <a href="http://walkah.net/">James Walker</a>&#8216;s <a href="http://drupal.org/project/openid">module</a> and installed it on my server. Actually I grabbed it from CVS, and then discovered that the CVS version is half-ported to some new Drupal 6 form API, so I ended up using the DRUPAL-5 tag.</p>
<p>Anyway, I use <a href="http://www.dreamhost.com/">Dreamhost</a> which I love for many many reasons (primarilly it&#8217;s really cheap and seems to work really well). Unfortunately they don&#8217;t build their PHP with <a href="http://php.net/bc">BCMath</a> or even <a href="http://www.php.net/manual/en/ref.gmp.php">GMP</a>, which means my PHP can&#8217;t do the <a href="http://openid.net/specs/openid-authentication-2_0-11.html#sign_algos">hard math</a> that&#8217;s required for crypto. Luckily there&#8217;s a mode of OpenID that doesn&#8217;t require any work on the relaying party side. So I made a small change that allows James&#8217; module to work in this &#8220;dumb&#8221; mode.</p>
<pre class="prettyprint">
Index: openid.install
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/openid/openid.install,v
retrieving revision 1.2
diff -u -p -r1.2 openid.install
--- openid.install      25 Mar 2007 06:38:00 -0000      1.2
+++ openid.install      16 May 2007 22:59:56 -0000
@@ -2,24 +2,6 @@</code>

/**
- * OpenID module requires bcmath
- */
-function openid_requirements($phase) {
-  if ($phase == 'runtime') {
-    $requirements['bcmath']['title'] = t('BCMath');
-    if (function_exists('bcadd')) {
-      $requirements['bcmath']['severity'] = REQUIREMENT_OK;
-      $requirements['bcmath']['value'] = t('Enabled');
-    }
-    else {
-      $requirements['bcmath']['severity'] = REQUIREMENT_ERROR;
-      $requirements['bcmath']['description'] = t('OpenID needs the bcmath extension for encryption.');
-    }
-  }
-  return $requirements;
-}
-
-/**
* Implementation of hook_install
*/
function openid_install() {
Index: openid.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/openid/openid.module,v
retrieving revision 1.2
diff -u -p -r1.2 openid.module
--- openid.module       25 Mar 2007 06:38:00 -0000      1.2
+++ openid.module       16 May 2007 22:59:56 -0000
@@ -133,10 +133,14 @@ function openid_login_form_submit($formi

$idp_endpoint = $services[0]['uri'];
$_SESSION['openid_idp_endpoint'] = $idp_endpoint;
-  $assoc_handle = openid_association($claimed_id, $idp_endpoint);
-  if (empty($assoc_handle)) {
-    drupal_set_message(t('OpenID Association failed'), 'error');
-    return;
+
+  // if we have BCMath, we should use OpenID smart mode
+  if (function_exists('bcadd')) {
+      $assoc_handle = openid_association($claimed_id, $idp_endpoint);
+      if (empty($assoc_handle)) {
+        drupal_set_message(t('OpenID Association failed'), 'error');
+        return;
+      }
}
</pre>
<p>Also, I put the patch <a href="http://drupal.org/node/144334">up on Drupal.org</a></p>
]]></content:encoded>
			<wfw:commentRss>http://ianloic.com/2007/05/16/openid_for_the_mathematically_challenged/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>

