<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Accumulative Effect</title><link>http://ashleyangell.com</link><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AccumulativeEffect" /><description>The rants of Ashley Angell.  A geek, a husband and a father.</description><language>en-US</language><lastBuildDate>Sun, 13 Jan 2013 21:03:05 PST</lastBuildDate><generator>http://wordpress.org/?v=3.5.1</generator><sy:updatePeriod xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">hourly</sy:updatePeriod><sy:updateFrequency xmlns:sy="http://purl.org/rss/1.0/modules/syndication/">1</sy:updateFrequency><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/AccumulativeEffect" /><feedburner:info uri="accumulativeeffect" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2FAccumulativeEffect" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FAccumulativeEffect" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2FAccumulativeEffect" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/AccumulativeEffect" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2FAccumulativeEffect" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2FAccumulativeEffect" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2FAccumulativeEffect" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><item><title>How to Create a Bootable Lion Restore USB Drive without Snow Leopard</title><link>http://feedproxy.google.com/~r/AccumulativeEffect/~3/DN4B5UfyWe4/</link><category>My Mac</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ash</dc:creator><pubDate>Fri, 18 Nov 2011 11:35:03 PST</pubDate><guid isPermaLink="false">http://ashleyangell.com/?p=1225</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>If you are like me and have installed Mac OSX Lion on a computer and need or want to create a bootable OSX Lion USB Drive, Apple have released an official tool to accommodate you.</p>
<p>Its pretty basic, <a href="http://support.apple.com/kb/DL1433">download the tool</a>, run the file inside the .dmg file and follow the prompts. You will need a 8Gb USB thumb drive (I believe 4GB won't quite be enough). Now you can simply plug the thumb drive in, and on boot hold down the [option] key and select the recovery drive from the menu. I can verify that you can use this installer to create clean installs of lion without having to first install Snow Leopard and on machines other than the one that created the recovery drive.</p>
<img src="http://feeds.feedburner.com/~r/AccumulativeEffect/~4/DN4B5UfyWe4" height="1" width="1"/>]]></content:encoded><description>If you are like me and have installed Mac OSX Lion on a computer and need or want to create a bootable OSX Lion USB Drive, Apple have released an official tool to accommodate you. Its pretty basic, download the tool, run the file inside the .dmg file and follow the prompts. You will need [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://ashleyangell.com/2011/11/how-to-create-a-bootable-lion-restore-usb-drive-without-snow-leopard/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://ashleyangell.com/2011/11/how-to-create-a-bootable-lion-restore-usb-drive-without-snow-leopard/</feedburner:origLink></item><item><title>System-wide Git Global Ignores</title><link>http://feedproxy.google.com/~r/AccumulativeEffect/~3/CV7NBuuiIws/</link><category>My Mac</category><category>Programming</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ash</dc:creator><pubDate>Thu, 28 Jul 2011 05:38:28 PDT</pubDate><guid isPermaLink="false">http://ashleyangell.com/?p=1213</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>If you are like me and love using a Mac for your development tasks, and want a way to get Git to ignore any file (like those pesky .ds_store's) forever and for EVERY repository there is a very simple way to it.</p>
<p>Open Terminal and type:</p>
<p><code>git config --global core.excludesfile ~/.gitignore</code></p>
<p>and then:</p>
<p><code>echo .DS_Store &gt;&gt; ~/.gitignore</code><code></code></p>
<p>This will work for anything you want, just modify the second command as appropriate.  And you can run the second command as many times as you need.</p>
<img src="http://feeds.feedburner.com/~r/AccumulativeEffect/~4/CV7NBuuiIws" height="1" width="1"/>]]></content:encoded><description>If you are like me and love using a Mac for your development tasks, and want a way to get Git to ignore any file (like those pesky .ds_store's) forever and for EVERY repository there is a very simple way to it. Open Terminal and type: git config --global core.excludesfile ~/.gitignore and then: echo .DS_Store [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://ashleyangell.com/2011/07/system-wide-git-global-ignores/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://ashleyangell.com/2011/07/system-wide-git-global-ignores/</feedburner:origLink></item><item><title>Ruby Script to Import Google Contact Photos From Gravatar</title><link>http://feedproxy.google.com/~r/AccumulativeEffect/~3/dtwNTxZQmic/</link><category>Programming</category><category>dataportability</category><category>Google</category><category>Google Contacts</category><category>Gravatar</category><category>Ruby</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ash</dc:creator><pubDate>Sat, 11 Jun 2011 08:43:45 PDT</pubDate><guid isPermaLink="false">http://ashleyangell.com/?p=1188</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><a class="zem_slink" title="Google" rel="homepage" href="http://google.com">Google</a> Contact photos are a much neglected feature of the Google Stack. It really adds to the user experience when you see each of your contact photos when you make or receive a call. However, it can be a real pain (especially if you have hundreds of contacts).</p>
<p>But I had an idea recently, to try and match my Google Contact emails with <a class="zem_slink" title="Gravatar" rel="homepage" href="http://gravatar.com">Gravatar</a> and try to auto-populate some of the dozens of contacts that didn't already have a photo (after all a Gravatar is better than nothing).</p>
<p>So I wrote a <a class="zem_slink" title="Ruby (programming language)" rel="homepage" href="http://www.ruby-lang.org/">Ruby</a> script to find my contacts missing a photo and try to update it with a Gravatar (wherever possible). NB: You may need to first install the <a class="zem_slink" title="GData" rel="wikipedia" href="http://en.wikipedia.org/wiki/GData">GData</a> (Google Data) gem by opening a Terminal window and issuing: sudo gem install gdata.</p>
<pre class="ruby"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;">#!/usr/bin/env ruby</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;"># Google Contact Photos - Gravatar Importer</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;"># Written by Ashley Angell</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;"># http://ashleyangell.com</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;"># Licenced under Creative Commons with Attribution</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;rubygems&quot;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;gdata&quot;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;rexml/document&quot;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;digest/md5&quot;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0066; font-weight:bold;">require</span> <span style="color:#996600;">&quot;net/http&quot;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#9966CC; font-weight:bold;">include</span> REXML</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">none = <span style="color:#996600;">'d5fe5cbcc31cff5f8ac010db72eb000c'</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">user = ARGV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">pass = ARGV<span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">1</span><span style="color:#006600; font-weight:bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">client = <span style="color:#6666ff; font-weight:bold;">GData::Client::Contacts</span>.<span style="color:#9900CC;">new</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">client.<span style="color:#9900CC;">clientlogin</span><span style="color:#006600; font-weight:bold;">&#40;</span>user, pass<span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">data = client.<span style="color:#9900CC;">get</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;https://www.google.com/m8/feeds/contacts/#{user}/full?max-results=10000&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">myxml = Document.<span style="color:#9900CC;">new</span> data.<span style="color:#9900CC;">body</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0066; font-weight:bold;">p</span> <span style="color:#996600;">&quot;contacts&quot;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;-&quot;</span>*<span style="color:#006666;">70</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">i = <span style="color:#006666;">0</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">myxml.<span style="color:#9900CC;">each_element</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;feed/entry&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> |e|</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">  <span style="color:#9966CC; font-weight:bold;">begin</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">    gd = e.<span style="color:#9900CC;">elements</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'gd:email'</span><span style="color:#006600; font-weight:bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">    <span style="color:#9966CC; font-weight:bold;">if</span> !gd.<span style="color:#0000FF; font-weight:bold;">nil</span>?</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">      email = gd.<span style="color:#9900CC;">attributes</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'address'</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#9900CC;">downcase</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">      hash = <span style="color:#6666ff; font-weight:bold;">Digest::MD5</span>.<span style="color:#9900CC;">hexdigest</span><span style="color:#006600; font-weight:bold;">&#40;</span>email<span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">      image_src = <span style="color:#996600;">&quot;http://www.gravatar.com/avatar/#{hash}&quot;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">      nil_image = <span style="color:#0000FF; font-weight:bold;">false</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">      image_element = e.<span style="color:#9900CC;">get_elements</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;link[@rel='http://schemas.google.com/contacts/2008/rel#photo']&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#006666;">0</span><span style="color:#006600; font-weight:bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">      <span style="color:#9966CC; font-weight:bold;">if</span> !image_element.<span style="color:#0000FF; font-weight:bold;">nil</span>? <span style="color:#9966CC; font-weight:bold;">and</span> image_element.<span style="color:#9900CC;">attributes</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'gd:etag'</span><span style="color:#006600; font-weight:bold;">&#93;</span>.<span style="color:#0000FF; font-weight:bold;">nil</span>?</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">        data = <span style="color:#0000FF; font-weight:bold;">nil</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">        md5 = <span style="color:#0000FF; font-weight:bold;">nil</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">        <span style="color:#6666ff; font-weight:bold;">Net::HTTP</span>.<span style="color:#9900CC;">start</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">URI</span>.<span style="color:#9900CC;">parse</span><span style="color:#006600; font-weight:bold;">&#40;</span>image_src<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">host</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> |http|</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">          resp = http.<span style="color:#9900CC;">get</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#CC00FF; font-weight:bold;">URI</span>.<span style="color:#9900CC;">parse</span><span style="color:#006600; font-weight:bold;">&#40;</span>image_src<span style="color:#006600; font-weight:bold;">&#41;</span>.<span style="color:#9900CC;">path</span><span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">          data = resp.<span style="color:#9900CC;">body</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">          md5 = <span style="color:#6666ff; font-weight:bold;">Digest::MD5</span>.<span style="color:#9900CC;">hexdigest</span><span style="color:#006600; font-weight:bold;">&#40;</span>data<span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">          <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#CC0066; font-weight:bold;">open</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;#{email}.png&quot;</span>, <span style="color:#996600;">'w'</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> |f|</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">            f.<span style="color:#CC0066; font-weight:bold;">puts</span> data <span style="color:#9966CC; font-weight:bold;">if</span> md5 != none</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">          <span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">        <span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">        md5 = <span style="color:#6666ff; font-weight:bold;">Digest::MD5</span>.<span style="color:#9900CC;">hexdigest</span><span style="color:#006600; font-weight:bold;">&#40;</span>data<span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">        <span style="color:#9966CC; font-weight:bold;">if</span> md5 != none</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">          <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{email} &gt; #{image_src}&quot;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">          client.<span style="color:#9900CC;">put_file</span><span style="color:#006600; font-weight:bold;">&#40;</span>image_element.<span style="color:#9900CC;">attributes</span><span style="color:#006600; font-weight:bold;">&#91;</span><span style="color:#996600;">'href'</span><span style="color:#006600; font-weight:bold;">&#93;</span>, <span style="color:#996600;">&quot;#{email}.png&quot;</span>, <span style="color:#996600;">'image/png'</span><span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">          i = i + <span style="color:#006666;">1</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">        <span style="color:#9966CC; font-weight:bold;">else</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">          <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{email} &gt; no match&quot;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">        <span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">      <span style="color:#9966CC; font-weight:bold;">else</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">        <span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;#{email} &gt; skipped (already has photo)&quot;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">      <span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">      <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">delete</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;#{email}.png&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">if</span> <span style="color:#CC00FF; font-weight:bold;">File</span>.<span style="color:#9900CC;">exists</span>?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">&quot;#{email}.png&quot;</span><span style="color:#006600; font-weight:bold;">&#41;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">    <span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">  <span style="color:#9966CC; font-weight:bold;">rescue</span> <span style="color:#CC00FF; font-weight:bold;">Exception</span> =&gt; ex</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">    <span style="color:#CC0066; font-weight:bold;">puts</span> ex</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">  <span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#9966CC; font-weight:bold;">end</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">&quot;Updated #{i} contact photos&quot;</span></div></li></ol></pre>
<p><br/>To execute it, simply copy and paste this into a text editor (or <a href="http://ashleyangell.com/wp-content/uploads/2011/06/googlegravatarimporter.rb_1.zip" target="_blank">download it</a> and unzip) and from Terminal (command) window and execute the following commands:</p>
<pre class="bash"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> <span style="color: #c20cb9; font-weight: bold;">chmod</span> +x googlegravatarimporter.rb <span style="color: #7a0874; font-weight: bold;">&#91;</span>Enter<span style="color: #7a0874; font-weight: bold;">&#93;</span></div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">./googlegravatarer.rb your.address@gmail.com your_password <span style="color: #7a0874; font-weight: bold;">&#91;</span>Enter<span style="color: #7a0874; font-weight: bold;">&#93;</span></div></li></ol></pre>
<p><br/>It will cycle through your <a class="zem_slink" title="Google Contacts" rel="homepage" href="http://www.google.com/contacts">Google Contacts</a> and indicate what action was taken.  For me, surprisingly updated a few dozen contacts (even more than I expected).</p>
<p>I've posted this here for others that might want to do the same thing but cannot be bothered writing the script for it. Consider it posted here under <a href="http://creativecommons.org/licenses/by/3.0/" target="_blank">Creative Commons with Attribution</a>.</p>
<img src="http://feeds.feedburner.com/~r/AccumulativeEffect/~4/dtwNTxZQmic" height="1" width="1"/>]]></content:encoded><description>Google Contact photos are a much neglected feature of the Google Stack. It really adds to the user experience when you see each of your contact photos when you make or receive a call. However, it can be a real pain (especially if you have hundreds of contacts). But I had an idea recently, to [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://ashleyangell.com/2011/06/ruby-script-to-import-google-contact-photos-from-gravatar/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://ashleyangell.com/2011/06/ruby-script-to-import-google-contact-photos-from-gravatar/</feedburner:origLink></item><item><title>Convert SQL Server Database to a SQLite Database</title><link>http://feedproxy.google.com/~r/AccumulativeEffect/~3/wLidaS1HPfw/</link><category>Applications</category><category>Programming</category><category>System Administration</category><category>.Net</category><category>Databases</category><category>DBMS</category><category>SQL Server</category><category>SQLite</category><category>Windows</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ash</dc:creator><pubDate>Wed, 08 Jun 2011 02:18:53 PDT</pubDate><guid isPermaLink="false">http://ashleyangell.com/?p=1168</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>Recently, I wanted to resurrect an old project of mine I worked on in my spare time originally designed to work on .Net technologies. Naturally, I backed it against a SQL Server 2005 Database which turned out to be a bad idea because it made portability of that data a bit of a nightmare.</p>
<p>So it was with great happiness that I found <a href="http://ashleyangell.com/wp-content/uploads/2011/06/SqlConverter.bin_.zip" target="_blank">this tool</a> (mirrored here) by <a href="http://www.codeproject.com/script/Membership/View.aspx?mid=1727173">liron.levi</a> who posted an <a href="http://www.codeproject.com/KB/database/convsqlservertosqlite.aspx" target="_blank">article on CodeProject</a> on how to accomplish this task. You still need a Windows machine and an install of SQL Server (Express Edition with Advanced Tools is alright) but it got the job done just fine for me.</p>
<p><a href="http://ashleyangell.com/wp-content/uploads/2011/06/converter.png"><img class="aligncenter size-full wp-image-1170" title="converter" src="http://ashleyangell.com/wp-content/uploads/2011/06/converter.png" alt="" width="563" height="240" /></a></p>
<p>If you want a no-fuss easy way to convert your databases into a format easier to deal with and a lot more portable to-boot.</p>
<img src="http://feeds.feedburner.com/~r/AccumulativeEffect/~4/wLidaS1HPfw" height="1" width="1"/>]]></content:encoded><description>Recently, I wanted to resurrect an old project of mine I worked on in my spare time originally designed to work on .Net technologies. Naturally, I backed it against a SQL Server 2005 Database which turned out to be a bad idea because it made portability of that data a bit of a nightmare. So [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://ashleyangell.com/2011/06/convert-sql-server-database-to-a-sqlite-database/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://ashleyangell.com/2011/06/convert-sql-server-database-to-a-sqlite-database/</feedburner:origLink></item><item><title>How to Boot Toshiba Portege M200 off an SD Memory Card</title><link>http://feedproxy.google.com/~r/AccumulativeEffect/~3/Udx0mN8Mk-c/</link><category>Hardware</category><category>Booting</category><category>Memory Card</category><category>SD</category><category>Secure Digital</category><category>Tablet PC</category><category>Toshiba</category><category>USB</category><category>Windows 7</category><category>Windows XP</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ash</dc:creator><pubDate>Tue, 07 Jun 2011 23:06:47 PDT</pubDate><guid isPermaLink="false">http://ashleyangell.com/?p=1156</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>A long while ago I became the proud owner of one o the best Tablet PCs on the market, the Toshiba Portege M200. Problem is that if something goes awry on the internal hard disk, then you're in trouble because the M200 is notoriously difficult to boot on external media. This was something I needed to do after trying out Windows 7 on it (which worked extremely well by the way) - but it came at a cost too high - missing features and tools and drivers that the default factory install has.</p>
<p>Things are made complex because while it is technically possible to boot off an external CD/DVD ROM, the number of external drive it will actually boot off are very few.  Additionally, the BIOS wont boot off USB thumb drives (at all!) and USB hard disks either. There is one saving grace - you can boot off an SD memory card (as long as it *not* SDHC) from the built-in reader. The trouble with THIS is that it will only boot off an SD card if its been formatted and made bootable 'just right'. Its so finiky that Toshiba have actually created some tools to aide in the process of making them bootable.</p>
<p>So, if you have a standard SD memory card, you can use the Toshiba SD Memory Format Utility and the Toshiba SD Memory Boot Utility to create a bootable image of the restore CDs.  Obviously if the default install is bung, then how can you use these tools?</p>
<p>Well the good news is, I've got a copy of them from the Toshiba website. I have hosted them here in case they disappear, <a href="http://ashleyangell.com/wp-content/uploads/2011/06/Toshiba-SD-Format-Utility.zip" target="_blank">here is the Toshiba SD Memory Format Utility</a> and <a href="http://ashleyangell.com/wp-content/uploads/2011/06/Toshiba-SD-Memory-Boot-Utility.zip" target="_blank">here is the Toshiba SD Memory Boot Utility</a>.</p>
<p>What I did to reinstall the factory image on my Portege M200 Tablet PC:</p>
<ol>
<li>Download the 2 links above and install them.</li>
<li>Run 'as administrator' (if on Vista or Windows 7) the format utility and format the SD card.</li>
<li>Run 'as administrator' (if on Vista or Windows 7) the boot utility and select the BOOT.IMG file from the /bin folder on the first restore CD. <a href="http://ashleyangell.com/wp-content/uploads/2011/06/BOOTCD.IMG_.zip" target="_blank">Here is a copy</a> if you don't have the disks.</li>
<li>Restart the computer pressing F2 at POST and with the SD card in the reader, and use the arrows keys to select the SD/Floppy boot device.  Press [Enter].</li>
</ol>
<p>When I booted it still gave me the CD ROM selection screen, which I eventually discovered was actually compatible with the External USB DVD ROM I was using (wouldn't boot off it - but option '9' worked in DOS) - after this, it just started installing the factory image as normal.</p>
<p>Any problems, drop me a line and I will try to help.  I know how frustrating this can be after spending most of the day trying Linux boot disks and direct copying boot sectors etc.  Ahh! but finally success!</p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/AccumulativeEffect/~4/Udx0mN8Mk-c" height="1" width="1"/>]]></content:encoded><description>A long while ago I became the proud owner of one o the best Tablet PCs on the market, the Toshiba Portege M200. Problem is that if something goes awry on the internal hard disk, then you're in trouble because the M200 is notoriously difficult to boot on external media. This was something I needed [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://ashleyangell.com/2011/06/how-to-boot-toshiba-portege-m200-off-sd-memory-card/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">20</slash:comments><feedburner:origLink>http://ashleyangell.com/2011/06/how-to-boot-toshiba-portege-m200-off-sd-memory-card/</feedburner:origLink></item><item><title>‘File not found: lib’ Error installing Rails Gem</title><link>http://feedproxy.google.com/~r/AccumulativeEffect/~3/4hmzk1PnWcs/</link><category>Programming</category><category>System Administration</category><category>Mac OS X</category><category>MacBook</category><category>RDoc</category><category>Ruby</category><category>Snow Leopard</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ash</dc:creator><pubDate>Tue, 07 Jun 2011 05:32:55 PDT</pubDate><guid isPermaLink="false">http://ashleyangell.com/?p=1147</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I recently had a problem trying to install Rails 3 on my MacBook with a fresh OSX Snow Leopard:</p>
<p><pre class="bash"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> rails&lt;br /&gt;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Password: <span style="color: #7a0874; font-weight: bold;">&#123;</span>entered<span style="color: #7a0874; font-weight: bold;">&#125;</span>&lt;br /&gt;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Successfully installed rails<span style="color: #000000;">-3.0</span><span style="color: #000000;">.7</span>&lt;br /&gt;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #000000;">1</span> gem installed&lt;br /&gt;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">Installing ri documentation <span style="color: #000000; font-weight: bold;">for</span> rails<span style="color: #000000;">-3.0</span><span style="color: #000000;">.7</span>...&lt;br /&gt;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">File not found: lib</div></li></ol></pre></p>
<p>Turns out this is a somewhat common problem.  But it seems that the solution is easy, just manually reinstall RDoc. To do this run these 3 commands:</p>
<p><pre class="bash"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> rdoc-data&lt;br /&gt;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> rdoc-data --install&lt;br /&gt;</div></li><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem rdoc --all --overwrite</div></li></ol></pre></p>
<p>The last line in particular will re-generate all the documentation for your installed gems (including Rails) and can take a while, but you should be able to confirm the fix by reissuing the Rails gem install command:</p>
<p><pre class="bash"><ol><li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;"><div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #c20cb9; font-weight: bold;">sudo</span> gem <span style="color: #c20cb9; font-weight: bold;">install</span> rails</div></li></ol></pre></p>
<p>shows that rails now installs properly and says that it has installed both ri and RDoc documentation without issue.</p>
<img src="http://feeds.feedburner.com/~r/AccumulativeEffect/~4/4hmzk1PnWcs" height="1" width="1"/>]]></content:encoded><description>I recently had a problem trying to install Rails 3 on my MacBook with a fresh OSX Snow Leopard: sudo gem install rails&amp;#60;br /&amp;#62;Password: &amp;#123;entered&amp;#125;&amp;#60;br /&amp;#62;Successfully installed rails-3.0.7&amp;#60;br /&amp;#62;1 gem installed&amp;#60;br /&amp;#62;Installing ri documentation for rails-3.0.7...&amp;#60;br /&amp;#62;File not found: lib Turns out this is a somewhat common problem.  But it seems that the solution is [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://ashleyangell.com/2011/06/file-not-found-lib-error-installing-rails-gem/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://ashleyangell.com/2011/06/file-not-found-lib-error-installing-rails-gem/</feedburner:origLink></item><item><title>FeedBurner</title><link>http://feedproxy.google.com/~r/AccumulativeEffect/~3/d86_KhKjw7E/</link><category>Citizen Journalism</category><category>FeedBurner</category><category>RSS</category><category>RSS Feed</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ash</dc:creator><pubDate>Mon, 23 May 2011 18:55:22 PDT</pubDate><guid isPermaLink="false">http://ashleyangell.com/?p=1141</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I've had a FeedBurner account for a long time.  Why hav'nt I used it? I dunno.  So here marks the start of a beautiful relationship (I hope).</p>
<img src="http://feeds.feedburner.com/~r/AccumulativeEffect/~4/d86_KhKjw7E" height="1" width="1"/>]]></content:encoded><description>I've had a FeedBurner account for a long time.  Why hav'nt I used it? I dunno.  So here marks the start of a beautiful relationship (I hope).</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://ashleyangell.com/2011/05/feedburner/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">1</slash:comments><feedburner:origLink>http://ashleyangell.com/2011/05/feedburner/</feedburner:origLink></item><item><title>It turns out ‘Eat-Less’ &amp; ‘Do More’ Isn’t Enough! (for me)</title><link>http://feedproxy.google.com/~r/AccumulativeEffect/~3/60gBMoYqXTI/</link><category>Eat Less &amp; Do More</category><category>body image</category><category>calories</category><category>depression</category><category>diet</category><category>Dukan</category><category>exercise</category><category>target weight</category><category>weight loss</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ash</dc:creator><pubDate>Sun, 08 May 2011 01:21:05 PDT</pubDate><guid isPermaLink="false">http://ashleyangell.com/?p=683</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<div style="float: right;"><a href="http://ashleyangell.com/wp-content/uploads/2011/05/Screen-shot-2010-09-15-at-9.05.18-AM1133.png"><img class="aligncenter size-full wp-image-808" title="Screen shot 2010-09-15 at 9.05.18 AM" src="http://ashleyangell.com/wp-content/uploads/2011/05/Screen-shot-2010-09-15-at-9.05.18-AM1133.png" alt="" width="254" height="399" /></a></div>
<p>I've always considered myself to be a practical and rational person.  Dieting was a simple equation of energy in and energy out.  But based on the past 9 months, I have to say that its just not that simple, especially people who like me have been considerably overweight for a long time.</p>
<p>My significant weight-gain started over 11 years ago.  While I don't hold her accountable, its true that my pregnant teenage girlfriend (who I <a href="http://ashleyangell.com/2011/01/10-years-1-day/" target="_blank">married a year later</a>) peer-pressured me into eating much larger meal portions than I should have.  At the time I blamed this over eating on her need to feel better with her own weight, but the truth is that I ate it because it was in front of me and most of all, because I wanted too.</p>
<p>The gain was gradual at first...so gradual in fact that it wasn't until I saw myself in our wedding photos that I noticed at all.  I hated what I saw in myself from those photos, but after many years of consideration I wonder if I subconsciously knew in my heart that I looked fat.  I wonder if that was the reason I prioritized the importance and the significance of our wedding photos (which turned out terrible due to poor lighting control and poor quality cameras - something I regret to this day).</p>
<p>But the fact remains that I ate when I was hungry, I ate when I was happy, I ate when I was sad, I ate when I was bored, I ate in company - I medicated myself with food.  Food never judges you, and at least in the moment, food is a powerful mood elevator.</p>
<p>I also never found comfort in exercise. People all my life would often talk about how they get the endorphins and "good feeling" that comes after exercise. I very much believe that some people don't get this. I think this because I am one of them.  All my life, regardless of how much exercise I endured I never got any feeling other than hot, sweaty, tiredness.</p>
<p>Additionally, over the past couple of years I've battled diagnosed depression. Clearly, despite the growing disconcerted feelings inside about my body image, I wasn't in a place that was conducive to weight loss. Those years were one of survival (and getting better) - not about vanity.</p>
<p>But 9 months ago I reached critical moment in my life. My darling wife and I were shopping for a new suite for me to wear at her 30th birthday party and after failure after failure in several various department stores to find a suite in my size, one of the sales assistants asked me (as delicately as she could) "I think perhaps you might have more luck at a store for 'larger men'". I don't begrudge the assistant, because from the shaky delivery it was clear that she was extremely uncomfortable suggesting it and just trying to help however she could.  But those words echoed in my mind and tore at my very soul. It destroyed whatever self-respect and dignity I had left. I forced myself to shutdown all my feelings and emotions because the pain was so severe. I wanted to fall about. My wife, clearly saw that I was in extreme distress, but all I could do was make some vague hand gestures and walk around the mall, trying to focus on something, anything except the echo of the words: "<strong>you're so fat you're not even worth making clothes for</strong>" echoing in my mind. I remember forbidding my mouth to speak, because I knew that doing anything except focusing on holding myself together was going to cause a complete breakdown. My wife, feeling my pain tried to calm me. It didn't help at the time, but it helps me now to remember how much she cares for me (and it makes me warm and fuzzy inside to think of it).</p>
<p>I have never felt, like that before. Not even during my depression years. In hindsight, it's not entirely impossible that it in fact, was some kind of temporary relapse.</p>
<p>I eventually did find some courage in the tank, and having been completely robbed of any hope and completely defeated, my wife suggested we try "Roger David's" on our way back to the car.  I was convinced it was a waste of time, but defeated people with no self-respect tend to go with the flow, so I said "ok". As it had it, at 5 minutes to close we discovered that they did have a suite in my size (barely). This moderately improved my melancholy.  They put it on, measured me for the tailoring to make it fit better and we paid and left for home.</p>
<p>A couple of days later when I went to retrieve the suite after its alterations were complete, I was faced with the demons of the previous visit. Needing a coffee to bolster my confidence (and silence the pain) I entered the Border's bookstore and grabbed one. On the way out of the store, standing quite prominent near the entrance was the "Dukan Diet" book. I'd never heard of it before, so I picked it up and had a flip though. I read some of the summary pages and the way it was written (pseudo-scientifically) really resonated with me. I proudly bought it home to @<a href="http://twitter.com/MrsAngell" target="_blank">MrsAngell</a> declaring my intentions to embark on the journey it described. There is something intoxicating and powerful about taking charge of your life.</p>
<p>Initially she was unconvinced and actually quite negative towards it and it quickly erupted into an argument. During the argument I pointed out that she hadn't read the book yet a point she conceded. I also explained that I needed to do this to claw back the self-respect I so badly lost. That night we read a chunk of the book together and having been convinced by it, we elected a time to start it, together.</p>
<p>It's been hard, and while my journey still continues, her's is all but complete. She's lost 25kg and I've lost just under 30kg (so far). I still don't think that I look much better (believe it or not) but I hope the vanity will kick-in, in another 20 or so kg. My goal weight is somewhere under 80kg. A weight I haven't been since the year our first child was conceived, 11 years ago.</p>
<p>And to be honest, vanity is what it's all about. I don't think that vanity should be demonized the way that it is. A number of weight loss friends, have all mentioned to me how family in particular trivialize their weight loss goals, and even on occasion directly sabotage it. Weight loss is hard enough without the people you love destabilizing your lifestyle changes. Naturally they don't mean to, but since they love you unconditionally and aren't attracted to you, they're hardly objective folk. Friends are mostly supportive, but I have to say that this would have been impossible without the help, love and support of my dear Mrs Angell.</p>
<p>In sum it's clear that weight loss is not simple as most people believe. There are layers and complexities so deep and contradictions so entrenched that it's becoming harder and harder to differentiate the fact from fiction. Despite it's recent popularity (especially in Hollywood) it's easy to trivialize Dukan as being a fad diet - but as someone who has been on it for nearly a year, I can say that isn't the case here. In the three people close to me who have embarked on it (and stayed on it) its got a 100% success rate, and so far, they've held a constant weight after it. I've also discussed the diet with my GP and had 3 general checkups, 2 broad spectrum blood tests performed and given blood 3 times since being on this diet (one of them on day 0 of the diet as a control). I was in general good health prior to the diet (all measurable indicators within acceptable margins) but now my GP describes me as being in textbook perfect health. This diet is not something I did with whimsical triviality. I was cautious, calculated and scientific with it. I had some bad days (some of them several in a row) but for the most part I was true to the Dukan Diet. Birthdays, Christmas and Easter were basically "write-offs" and I blame these (and my own lack of self-control) for the plateau I've experienced over the past few months.</p>
<p>However, its not the only way to loose weight - its just what works best for me. My very dear Sister-in-law just <a href="http://chasingamiracle.com/operationbodylove/success-or-failure-weekly-updates/" target="_blank">reached her goal weight</a> (horray!) recently using a diet prescribed by her personal trainer. I must admit that sometimes I found myself frustrated on her behalf on her bad/stagnant weeks and I tried as best as I could to help, motive and support her on her personal journey. I can say that she's done an outstanding job on the same, for me. Honestly, without her and her sister; I don't think I could have gotten this far. However, while I am happy for her, I am also selfishly saddened because now I am about to embark the second half of my weight loss on my own. The journey is long and lonely on your own. I know they will still support me, but they're no longer in the game; and that makes a difference. I try to reassure myself that I haven't failed in not reaching my goal weight yet, but rather, that I've got 3 times as much to shift as they did.  But I will do it.  I have to.</p>
<p>I am now happy to discuss weight and diets with people now. Something I always felt awkward about before. But the one constant and most important fact I've learned is that when it comes to weight loss, its more complicated than 'Eat-Less' &amp; 'Do More'.</p>
<img src="http://feeds.feedburner.com/~r/AccumulativeEffect/~4/60gBMoYqXTI" height="1" width="1"/>]]></content:encoded><description>I've always considered myself to be a practical and rational person. Dieting was a simple equation of energy in and energy out. But based on the past 9 months, I have to say that its just not that simple, especially people who like me have been considerably overweight for a long time. My significant weight-gain [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://ashleyangell.com/2011/05/it-turns-out-eat-less-do-more-isnt-enough-for-me/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://ashleyangell.com/2011/05/it-turns-out-eat-less-do-more-isnt-enough-for-me/</feedburner:origLink></item><item><title>AirPush is Offensive to my Sensibilities</title><link>http://feedproxy.google.com/~r/AccumulativeEffect/~3/5mx1nmwKLOc/</link><category>Applications</category><category>Advertising</category><category>AirPush</category><category>Android</category><category>Apple</category><category>iPhone</category><category>mobile device</category><category>SmartPhone</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ash</dc:creator><pubDate>Fri, 29 Apr 2011 19:10:21 PDT</pubDate><guid isPermaLink="false">http://ashleyangell.com/?p=1123</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p>I saw this tweet from a friend (@<a href="http://twitter.com/#!/ryanbooker">RyanBooker</a>) today: "Is this for real? This would guarantee your software is immediately uninstalled" with a link to the following video:</p>
<p><iframe width="590" height="360" src="http://www.youtube.com/embed/bNQbo8Rao08" frameborder="0" allowfullscreen></iframe></p>
<p>And I don't know about you but it really gave me the heebie-jeebies. I found myself being repulsed in illogical, unreasonable ways. I'm not even an Android developer (or user), but I found this completely offensive. After I cooled down and was able to think clearly for a minute I reflected on why I had such an adverse reaction. I realized that its all about the sacredness of notifications.</p>
<p>You see we are slowly migrating over to a post-scarcity world. Information, is one commodity which has become so abundant (and so cheap); that it's become a limitless resource. In a post-scarce world, the main commodity is attention. User attention becomes the focus of generating profits and this is (and has always been) the entire idea behind advertising. Advertisers pay others for a slice of the attention they receive.</p>
<p>As user's expose themselves to greater quantities of new information and media, they spend greater quantities of their focus (and attention).  Sooner or later, unless users can adopt greater efficiencies their attention becomes very scarce. I think we've reached a point where our collective attention is so scarce as to it being entirely depleted. We're so saturated with new media and access to information that the effectiveness of advertising is becoming greatly diminished. We've become desperate to find "a few more minutes in a day" and thus we've adapted to ignoring advertising to steal some attention back. Most of us (especially geeks) have evolved a personal 'ad blocker' in our mind's eye.</p>
<p>Unfortunately the cost is that it's become harder to remember importances. So we rely on our mobile technology to inform us when we need to jump to action. As a primitive example, who uses the alarm function on their smart phone? Our phones are our personal assistants. They tell us when our friends are trying to contact us, they act as our saviors when something goes wrong, they entertain us when we're bored and they tell us important things WHEN we need to know them.  Usually, they do this through the notification system. It's a special sacred system devoted to the most important issues in our lives. This is what's so wrong about AirPush. They are capitalizing on the cost of our mobile notifications. Technologically speaking, the most important area of our lives. When we hear the distinctive sound, or see that special symbol of our phone's notification system; we spring into direct action.  They are cashing into our need for a system that helps us live our lives, lest we miss opportunities or forget something important.</p>
<p>That's the basis of my offense. I need my notification system to be personalized and pure because I rely on it to assist me with the day-to-day running of my life.</p>
<p>AirPush says that they've <a href="http://airpush.tumblr.com/" target="_blank">changed the API</a> to require opt-in/opt-out due the torrent of outcry and negative feedback that <a href="http://www.martinadamek.com/2011/04/28/apndroid-is-suspended-on-the-android-market/" target="_blank">developers have clearly been slammed with</a> but for me, that isn't really enough. I shouldn't HAVE to opt-out of something that uses my notification area inappropriately and without permission.  And conversely, if the system is opt-in, then its all but useless to developers (because let's be honest who would WANT such a thing?)</p>
<p>Frankly, AirPush is a violation of the way I use my mobile devices and I would never abide any application which employed such a system. It's gotta be the fastest way to get users to uninstall your app.</p>
<img src="http://feeds.feedburner.com/~r/AccumulativeEffect/~4/5mx1nmwKLOc" height="1" width="1"/>]]></content:encoded><description>I saw this tweet from a friend (@RyanBooker) today: "Is this for real? This would guarantee your software is immediately uninstalled" with a link to the following video: And I don't know about you but it really gave me the heebie-jeebies. I found myself being repulsed in illogical, unreasonable ways. I'm not even an Android [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://ashleyangell.com/2011/04/airpush-is-offensive-to-my-sensibilities/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://ashleyangell.com/2011/04/airpush-is-offensive-to-my-sensibilities/</feedburner:origLink></item><item><title>Amnesia Your Pants Off</title><link>http://feedproxy.google.com/~r/AccumulativeEffect/~3/wvtN9lHYegQ/</link><category>Games</category><category>Amnesia: The Dark Descent</category><category>computer games</category><category>Frictional Games</category><category>horror</category><category>indie</category><category>Ion Storm</category><category>MMC130</category><category>Review</category><category>Thief 3: Deadly Shadows</category><category>Troika Games</category><category>Vampire: The Masquerade – Bloodlines</category><category>Video Games</category><dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Ash</dc:creator><pubDate>Sun, 13 Mar 2011 03:54:21 PDT</pubDate><guid isPermaLink="false">http://ashleyangell.com/?p=1093</guid><content:encoded xmlns:content="http://purl.org/rss/1.0/modules/content/"><![CDATA[<p><em><a class="zem_slink" title="Amnesia: The Dark Descent" rel="wikipedia" href="http://en.wikipedia.org/wiki/Amnesia%3A_The_Dark_Descent">Amnesia: The Dark Descent</a></em> (2010) is a game unlike any other.  It’s so different that the game even starts with a disclaimer, warning the gamer that it is an atypical game and is about immersion, not about ‘winning’. Therefore, this is a game that is entirely and utterly focused on the gamer’s experience.  It for this reason that I’ve chosen to review this game in a ‘new journalism’ style – since failure to do so would fail to adequately express the single biggest success of the game, the suspension of reality. As Gillen (2004) says “<a href="http://www.alwaysblack.com/blackbox/ngj.html" target="_blank">What a gamer feels and thinks as this alien construct takes over all their sensory inputs is what’s interesting here, not just the mechanics of how it got there</a>”.  This is completely true of Amnesia: The Dark Descent since it sacrifices traditional game mechanics and instead relies almost exclusively on the gamer’s suspension of disbelief in order to invoke emotion and provide heavily scripted sensory experiences for the gamer. You simply cannot adequately describe this game to others without describing your personal experiences of this fantastical reality.</p>
<p><a href="http://ashleyangell.com/wp-content/uploads/2011/03/7732.jpg"><img class="aligncenter size-full wp-image-1099" title="7732" src="http://ashleyangell.com/wp-content/uploads/2011/03/7732.jpg" alt="" width="540" height="300" /></a></p>
<p>I love the horror genre. So it’s probably no surprise that I took to the indie developer Frictional Games’ latest survival horror video game, <em>Amnesia: The Dark Descent</em> (2010) with eager anticipation.  Two of my personal all-time favorite gaming moments is playing through ‘The Cradle’ in	Ion Storm’s <a href="http://en.wikipedia.org/wiki/Thief:_Deadly_Shadows" target="_blank"><em>Thief 3: Deadly Shadows</em></a> (2004) and playing through ‘The Mansion’ in Troika Games’ <em><a class="zem_slink" title="Vampire: The Masquerade – Bloodlines" rel="wikipedia" href="http://en.wikipedia.org/wiki/Vampire%3A_The_Masquerade_%E2%80%93_Bloodlines">Vampire: The Masquerade – Bloodlines</a></em> (2004). However, while these scary moments in gaming history were very immersive and frightening, they were only individual levels of a larger game.  While I was hopeful, I was initially skeptical that a developer would be able to sustain that kind of intensity, fear and suspense over the duration of an entire video game.  I was wrong.</p>
<p>So very wrong!</p>
<p>The eight hours or so I spent playing this game, were probably the most frightening eight hours of my life.  I say ‘eight or so’ very loosely because the reality was that I was usually only able to emotionally support playing this game in 1 or 2 hour blocks, before I was required to abandon the game for a time and change my pants.  And the new panties probably had little flowers on them, because never before has a piece of fiction made me felt so much like a frightened little girl.</p>
<p><em>Amnesia: The Dark Descent</em> puts the gamer inside the head of ‘Daniel’ a rather mysterious protagonist who unsurprisingly has suffered some kind of memory loss. After rather foolishly following a trail of blood (I generally make it a rule to avoid following trails of blood) you discover a note written by yourself telling you who you are, and that you apparently hate some guy called ‘Alexander’ and you must kill him.  I was a little irritated that the note doesn’t explain why, but it was all the motivation I needed to hunt this guy down and take him out. What I soon discovered was that not only was something very dark going on in this mansion, but that I was involved in it (somehow) and that I wasn’t alone. It was clear that evil was afoot because opening drawers and cupboards often yielded loads of creepy stuff such as human remains and bondage and torture gear. Scattered around he place was remains of a journal that slowly reveals how you got tangled up in this mess in the first place. Eventually you discover that your role in this wasn’t entirely passive either. Oh, Awesome.</p>
<p><a href="http://ashleyangell.com/wp-content/uploads/2011/03/review_01_610.jpg"><img class="aligncenter size-full wp-image-1094" title="review_01_610" src="http://ashleyangell.com/wp-content/uploads/2011/03/review_01_610.jpg" alt="" width="580" height="326" /></a></p>
<p>Just when I was starting to get used to discovering Alexander’s disturbing keepsakes, I heard an eerie sound behind me.  I’d like to describe it for you but the truth is I only saw a kind of rapidly disappearing cloud of smoke. A few journal pages later describes a ‘shadow’ that’s apparently stalking me.  Oh, Awesome.</p>
<p>Fortunately, the game was very kind to (on occasion) give me helpful hints along the way.</p>
<p><a href="http://ashleyangell.com/wp-content/uploads/2011/03/am-water.jpg"><img class="aligncenter size-full wp-image-1095" title="am-water" src="http://ashleyangell.com/wp-content/uploads/2011/03/am-water.jpg" alt="" width="580" height="166" /></a></p>
<p>The problem is that it usually handed out these ‘captain hindsight’ hints after something had just mauled me to death.</p>
<p>As I solved the basic puzzles (which seemed to be more of a way to slow you down rather than try to make you think) it proceeded to get darker and darker, making Daniel go slowly insane.  Sanity becomes important because the game is already creepy enough without the screen becoming blurry, the ground tilting beneath you, and imaginary bugs crawling over the screen. Fortunately you can increase the light levels by igniting candles and torches with tinderboxes you discover scattered about carelessly or by collecting oil (equally strewn about) for your lantern.  However, I quickly realized that simply turning on all the lights is a mixed blessing.  Sure you can get out of the darkness (which improves Daniel’s sanity) but it makes it far easier for the ‘others’ in the mansion to track you down.  This is undesirable because a) they want to wear your head like a hat, and b) there is absolutely NO WAY for you to defend yourself.  You end up trying to find a dark corner or a cupboard to hide in, which might keep you safe, but slowly sends you insane.  Arhhh!  So this is why I found myself spending long minutes huddled in a dark corner looking at the wall because I was simply too afraid to venture out.</p>
<p><a href="http://ashleyangell.com/wp-content/uploads/2011/03/Amnesia-Shambles.jpg"><img class="aligncenter size-full wp-image-1096" title="Amnesia-Shambles" src="http://ashleyangell.com/wp-content/uploads/2011/03/Amnesia-Shambles.jpg" alt="" width="580" height="327" /></a></p>
<p>But the game doesn’t rely on overt scare tactics.  It’s far smarter than that.  In actuality, upon reflection I realized that the actual monster encounters are very few and far between, but this didn’t really occur to me while I was playing. It’s actually the ever changing atmosphere that keeps you on edge, making you fearful of EVERY little detail, even rooms you’ve already explored are scary, because the game changes little details here and there and I needed to keep asking myself: “Did that look like that before?”  The constantly changing mansion isn’t just for show either.  Occasionally the stone walls of the mansion start growing some kind of organic material, which will hurt you (like everything else) if you get too close to it or stand on it.'</p>
<p><a href="http://ashleyangell.com/wp-content/uploads/2011/03/Screen-shot-2011-03-13-at-8.31.58-PM.png"><img class="aligncenter size-full wp-image-1097" title="Screen shot 2011-03-13 at 8.31.58 PM" src="http://ashleyangell.com/wp-content/uploads/2011/03/Screen-shot-2011-03-13-at-8.31.58-PM.png" alt="" width="580" height="141" /></a></p>
<p>For someone trying to maintain some resemblance of sanity, finding dead bodies around the place doesn’t help.</p>
<p>While playing the game, things get progressively worse.  Since the developers had already established the key ‘rules’ of this reality, they slowly increase the severity of the pre-established atmosphere.  More strange sounds, more darkness, more traps, and more monsters (usually whenever you least expect them).  This builds to the games pièce de résistance - the final pages of Daniel’s journal, flashbacks (via screen or audio cues, or simply text on the screen) and the discovery of the torture chambers.</p>
<p><a href="http://ashleyangell.com/wp-content/uploads/2011/03/Amnesia+2011-01-16+11-56-32-14.jpg"><img class="aligncenter size-full wp-image-1098" title="Amnesia+2011-01-16+11-56-32-14" src="http://ashleyangell.com/wp-content/uploads/2011/03/Amnesia+2011-01-16+11-56-32-14.jpg" alt="" width="581" height="158" /></a></p>
<p>I cannot think of a game that makes a better and more sophisticated use of audio and visual cues than Amnesia: The Dark Descent. I really felt as though I was living in some kind of lucid nightmare.  I soon forgot about the protagonists name (Daniel) because I really began to think it was me! While the ending was mildly disappointing, this game isn’t about the end-goal, it’s about the immersion and its string psychological thrills.  I suspect the developers didn’t bother with the ending too much because they were trying to make a game that was so scary that few people would actually make it that far! I cannot count the number of times I literally covered my eyes with my hands, peeking though a split in my fingers, my stomach in knots as my mind tried to make sense of why I would choose to endure such a unrelenting nightmare.</p>
<p>My only criticisms would be that the puzzles do feel a little ‘in the way’, instead of being a part of the overall story, and that the game lacks the ‘big reveal’ that is alluded to throughout the game.  The finale with Alexander, felt hurried and underwhelming as it felt disjointed from the rest of the game and the game just kind of ends, quite abruptly.  For a game that’s almost entirely about timing, the ending felt like a missed opportunity. However, given that the game isn’t an exercise in how quickly you can get to the finale, this is easily forgiven.</p>
<p>It might sound like a cliché but this game really will scare the pants off you.</p>
<p><strong>My Score: 9/10</strong></p>
<blockquote><p><em>This  post is a slightly  modified version of a piece I wrote for a  University assignment for the RMIT  University Subject: Computer Games, reviewing a game of my choice in either a traditional or new-journalism style</em><em><em><em>.</em></em></em></p>
<p><em><a href="../tag/mmc130/">See more from this unit</a>.</em></p></blockquote>
<img src="http://feeds.feedburner.com/~r/AccumulativeEffect/~4/wvtN9lHYegQ" height="1" width="1"/>]]></content:encoded><description>Amnesia: The Dark Descent (2010) is a game unlike any other. It’s so different that the game even starts with a disclaimer, warning the gamer that it is an atypical game and is about immersion, not about ‘winning’. Therefore, this is a game that is entirely and utterly focused on the gamer’s experience. It for [...]</description><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://ashleyangell.com/2011/03/amnesia-your-pants-off/feed/</wfw:commentRss><slash:comments xmlns:slash="http://purl.org/rss/1.0/modules/slash/">0</slash:comments><feedburner:origLink>http://ashleyangell.com/2011/03/amnesia-your-pants-off/</feedburner:origLink></item></channel></rss>
