<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>adams.co.tt blog</title>
  <id>http://adams.co.tt/</id>
  <updated>2012-11-06</updated>
  <author>
    <name></name>
  </author>
  <entry>
    <title>Canon TS-E 45mm f/2.8 Time Lapse Test</title>
    <link rel="alternate" href="http://adams.co.tt/blog/2012/11/06/canon-ts-e-45mm-f28-time-lapse-test/"/>
    <id>http://adams.co.tt/blog/2012/11/06/canon-ts-e-45mm-f28-time-lapse-test/</id>
    <published>2012-11-06</published>
    <updated>2012-11-06</updated>
    <author>
      <name></name>
    </author>
    <content type="html">&lt;p&gt;I have just purchased a Canon TS-E 45mm f/2.8 for use during time lapse filming. Here is an initial test.&lt;/p&gt;

&lt;div class="video"&gt;
&lt;iframe src="http://player.vimeo.com/video/52848442?badge=0&amp;amp;color=ffffff" width="600" height="338" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

</content>
  </entry>
  <entry>
    <title>Namespacing in JavaScript</title>
    <link rel="alternate" href="http://adams.co.tt/blog/2012/05/30/namespacing-in-javascript/"/>
    <id>http://adams.co.tt/blog/2012/05/30/namespacing-in-javascript/</id>
    <published>2012-05-30</published>
    <updated>2012-05-30</updated>
    <author>
      <name></name>
    </author>
    <content type="html">&lt;p&gt;&lt;a href="http://yuiblog.com/blog/2006/06/01/global-domination/"&gt;JavaScript&amp;rsquo;s global variables are evil&lt;/a&gt;, and namespacing is a &lt;em&gt;good thing&lt;/em&gt;. However, as I regularly move from project to project, I find myself rewriting the code to help manage namespaces again and again. Every time I search for something reusable, I find conventions that require unpleasant boilerplate.&lt;/p&gt;

&lt;p&gt;I started a little personal project, and ended up writing &lt;a href="https://github.com/adscott/n-js"&gt;this&lt;/a&gt;. Hopefully somebody might find it useful.&lt;/p&gt;

&lt;p&gt;Grab the source &lt;a href="https://raw.github.com/adscott/n-js/master/n.js"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Include it in your document like so:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;script src="/path/to/n.js" type="text/javascript"&amp;gt;&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Register objects and classes like so:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;n('foo.bar.baz', function(s) {
  s.Person = function () {
    this.greet = function () {
      alert('hello');
    };
  };
});
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Reference registered objects and classes like so:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;var myPerson = new foo.bar.baz.Person();
myPerson.greet();
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That&amp;rsquo;s all there is to it!&lt;/p&gt;

&lt;p&gt;UPDATE: A minified version can now be found &lt;a href="https://raw.github.com/adscott/n-js/master/n.min.js"&gt;here&lt;/a&gt;. Thanks &lt;a href="https://github.com/ScottHamper"&gt;Scott Hamper&lt;/a&gt;!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>iPhone Time Lapse</title>
    <link rel="alternate" href="http://adams.co.tt/blog/2012/05/04/iphone-time-lapse/"/>
    <id>http://adams.co.tt/blog/2012/05/04/iphone-time-lapse/</id>
    <published>2012-05-04</published>
    <updated>2012-05-04</updated>
    <author>
      <name></name>
    </author>
    <content type="html">&lt;p&gt;As an experiment, I decided to create, edit and publish a time lapse video using just my iPhone 4S. Here are the results:&lt;/p&gt;

&lt;div class="video"&gt;
&lt;iframe src="http://player.vimeo.com/video/41344965" width="500" height="281" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen&gt;&lt;/iframe&gt;
&lt;/div&gt;


&lt;p&gt;I used &lt;a href="http://itunes.apple.com/us/app/imotion-hd/id421365625?mt=8"&gt;iMotion HD&lt;/a&gt; and &lt;a href="http://itunes.apple.com/us/app/imovie/id377298193?mt=8"&gt;iMovie&lt;/a&gt;. This would not be possible without the ability for applications to share content between them. I would encourage iOS developers to take this into consideration when building apps, rather trying to bolt in every possible piece of functionality into a given app.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Rendering partials in toto</title>
    <link rel="alternate" href="http://adams.co.tt/blog/2012/04/19/rendering-partials-in-toto/"/>
    <id>http://adams.co.tt/blog/2012/04/19/rendering-partials-in-toto/</id>
    <published>2012-04-19</published>
    <updated>2012-04-19</updated>
    <author>
      <name></name>
    </author>
    <content type="html">&lt;p&gt;&lt;a href="https://github.com/cloudhead/toto"&gt;toto&lt;/a&gt; is a fantastic lightweight blogging engine. In fact, at the time of writing, this very blog is running on it. By looking at &lt;a href="https://github.com/cloudhead/dorothy"&gt;dorothy&lt;/a&gt; you can see how it uses a layout and templates to render content. However, by default, it does not provide support for template partials.&lt;/p&gt;

&lt;p&gt;However, that&amp;rsquo;s easily solved with a little monkey patching:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;module Toto
  class Site
    class Context
      def to_partial(page)
        to_html page, @config
      end
    end
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now you can include partials in your templates like this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;%= render 'sidebar', :partial %&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now, I&amp;rsquo;m not a fan of monkey patching for a number reasons, not least of which is the fact that a good monkey patch is often a missed opportunity to improve an open source project. With that in mind, &lt;a href="https://github.com/cloudhead/toto/pull/121"&gt;here&lt;/a&gt; is the pull request to have this functionality added to toto itself.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Stunning landscape photography by Peter Zeglis</title>
    <link rel="alternate" href="http://adams.co.tt/blog/2012/04/16/stunning-landscape-photography-by-peter-zeglis/"/>
    <id>http://adams.co.tt/blog/2012/04/16/stunning-landscape-photography-by-peter-zeglis/</id>
    <published>2012-04-16</published>
    <updated>2012-04-16</updated>
    <author>
      <name></name>
    </author>
    <content type="html">&lt;p&gt;These images, reminiscent of work by Ansel Adams, were taken in Iceland by &lt;a href="http://www.behance.net/peterzeglis"&gt;Peter Zeglis&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://adams.co.tt/images/articles/2012-04-16-stunning-landscape-photography-by-peter-zeglis/01.jpg" alt="01" /&gt;
&lt;img src="http://adams.co.tt/images/articles/2012-04-16-stunning-landscape-photography-by-peter-zeglis/02.jpg" alt="02" /&gt;
&lt;img src="http://adams.co.tt/images/articles/2012-04-16-stunning-landscape-photography-by-peter-zeglis/03.jpg" alt="03" /&gt;
&lt;img src="http://adams.co.tt/images/articles/2012-04-16-stunning-landscape-photography-by-peter-zeglis/04.jpg" alt="04" /&gt;&lt;/p&gt;

&lt;p&gt;More of his Iceland project can be seen &lt;a href="http://www.behance.net/gallery/Iceland/2317760"&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Duplicate Active Model validation errors</title>
    <link rel="alternate" href="http://adams.co.tt/blog/2012/04/12/duplicate-active-model-validation-errors/"/>
    <id>http://adams.co.tt/blog/2012/04/12/duplicate-active-model-validation-errors/</id>
    <published>2012-04-12</published>
    <updated>2012-04-12</updated>
    <author>
      <name></name>
    </author>
    <content type="html">&lt;p&gt;When attempting to test a model using Active Model validations, I came across a rather odd problem.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;require 'active_model'

class Person
  include ActiveModel::Validations
  validates_length_of :name, :maximum =&amp;gt; 40, :message =&amp;gt; 'name too long'
  attr_reader :name
  def initialize(attrs)
    @name = attrs[:name]
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I was seeing duplicate &lt;code&gt;'name too long'&lt;/code&gt; error messages in the errors hash.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;describe Person do
  describe 'validation' do
    it 'should be invalid if name is too long' do
      person = Person.new(:name =&amp;gt; 'a' * 41)
      person.should_not be_valid
      person.errors[:name].should == ['name too long']
    end
  end
end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The above spec failed with the following message:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;Failures:

  1) Person validation should be invalid if name is too long
     Failure/Error: person.errors[:name].should == ['name too long']
       expected: ["name too long"]
            got: ["name too long", "name too long"] (using ==)
     # ./spec/person_spec.rb:17
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Some further digging revealed that the &lt;code&gt;Person&lt;/code&gt; was being loaded twice by the &lt;code&gt;require&lt;/code&gt; method. &lt;code&gt;require&lt;/code&gt; was being called twice with two different paths, which both resolved to the file containing &lt;code&gt;Person&lt;/code&gt;. Removing the extra call to &lt;code&gt;require&lt;/code&gt; fixed the issue. This seems to be a problem particular to ruby 1.8.7.&lt;/p&gt;

&lt;p&gt;The runnable code examples reproducing this issue can be found &lt;a href="https://github.com/adscott/validations-spike"&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Updated jasmine-underscore</title>
    <link rel="alternate" href="http://adams.co.tt/blog/2012/03/14/updated-jasmine-underscore/"/>
    <id>http://adams.co.tt/blog/2012/03/14/updated-jasmine-underscore/</id>
    <published>2012-03-14</published>
    <updated>2012-03-14</updated>
    <author>
      <name></name>
    </author>
    <content type="html">&lt;p&gt;Last year &lt;a href="https://github.com/adscott/jasmine-underscore"&gt;jasmine-underscore&lt;/a&gt; was &lt;a href="http://adams.co.tt/blog/2011/06/19/jasmine-underscore/"&gt;released&lt;/a&gt;. Since then, some issues have been fixed, and two new matchers have also been included:&lt;/p&gt;

&lt;h5&gt;allToSatisfy&lt;/h5&gt;

&lt;pre&gt;&lt;code&gt;expect([2, 4, 6]).allToSatisfy(function (val) { return val%2 == 0; });
expect([1, 4, 6]).not.allToSatisfy(function (val) { return val%2 == 0; });
&lt;/code&gt;&lt;/pre&gt;

&lt;h5&gt;anyToSatisfy&lt;/h5&gt;

&lt;pre&gt;&lt;code&gt;expect([2, 3, 5]).anyToSatisfy(function (val) { return val%2 == 0; });
expect([1, 3, 5]).not.anyToSatisfy(function (val) { return val%2 == 0; });
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;These matchers allow any predicate to be applied to element of a collection, with the test only passing if all/any of the elements in collection satisfy the predicate.&lt;/p&gt;

&lt;p&gt;Get version 1.1 &lt;a href="https://github.com/downloads/adscott/jasmine-underscore/jasmine-underscore-v1.1.zip"&gt;here&lt;/a&gt;. Enjoy!&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Introducing mailcrate</title>
    <link rel="alternate" href="http://adams.co.tt/blog/2012/03/12/introducing-mailcrate/"/>
    <id>http://adams.co.tt/blog/2012/03/12/introducing-mailcrate/</id>
    <published>2012-03-12</published>
    <updated>2012-03-12</updated>
    <author>
      <name></name>
    </author>
    <content type="html">&lt;p&gt;Often when I&amp;rsquo;m working near the top of the &lt;a href="http://blog.goneopen.com/2010/08/test-automation-pyramid-review/"&gt;test automation pyramid&lt;/a&gt;, I find myself needing to test interactions with outside services such as SMTP servers.&lt;/p&gt;

&lt;p&gt;On projects in the past, I&amp;rsquo;ve been able to leverage java tools such as &lt;a href="http://www.icegreen.com/greenmail/"&gt;greenmail&lt;/a&gt;, which lets me have logic like this.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;public class MailerTest {

  private Greenmail greenmail

  @Before
  public void startGreenmail() {
    greenMail = new GreenMail();
    greenMail.start();
  }

  @After
  public void stopGreenmail() {
    greenMail.stop();
  }

  @Test
  public void testYourSendingCode() throws Exception {    
    new Mailer().send("to@localhost.com", "body");

    assertEquals("body", GreenMailUtil.getBody(greenMail.getReceivedMessages()[0]));
  }

}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This library is particularly useful as it allows interrogation of sent mails directly from the test. However, I have had trouble finding an equivalent gem for ruby development. However, there is the fantastic command line tool, &lt;a href="https://github.com/mmower/mailtrap"&gt;mailtrap&lt;/a&gt;. Mailtrap is written in ruby and:&lt;/p&gt;

&lt;blockquote&gt;&lt;p&gt;Mailtrap waits on your chosen port for a client to connect and talks &lt;em&gt;just enough&lt;/em&gt; SMTP protocol for ActionMailer to successfully deliver its message.&lt;/p&gt;&lt;/blockquote&gt;

&lt;p&gt;Unfortunately, mailtrap does not play nicely with automated tests. It writes out captured emails to the filesystem, and there is no easy way to start, stop or interrogate a server in memory. However, mailtrap and greenmail have acted as the inspiration for &lt;a href="https://github.com/adscott/mailcrate"&gt;mailcrate&lt;/a&gt;. Mailcrate is designed to be run from your test code and allows interrogation of sent mails from the test itself. For example:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;require 'mailcrate'

describe Mailer do

  before do
    @mailcrate = Mailcrate.new(2525)
    @mailcrate.start
  end

  after do
    @mailcrate.stop
  end

  it 'should use Mailcrate to send mails' do
    mail = Mailer.welcome_email('a@b.com')
    mail.deliver

    @mailcrate.mails[0][:from].should == 'from@example.com'
    @mailcrate.mails[0][:to_list].should include 'a@b.com'
    @mailcrate.mails[0][:body].should include 'Full of awesomeness.'
  end

end
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Mailcrate has been published as a gem and can be used by running:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;gem install mailcrate
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Mailcrate is still rather immature. Any feedback would be welcomed, both here on this blog or its &lt;a href="https://github.com/adscott/mailcrate"&gt;github&lt;/a&gt; page.&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>Random Excellence - Kevin O'Mara</title>
    <link rel="alternate" href="http://adams.co.tt/blog/2012/01/20/random-excellence---kevin-omara/"/>
    <id>http://adams.co.tt/blog/2012/01/20/random-excellence---kevin-omara/</id>
    <published>2012-01-20</published>
    <updated>2012-01-20</updated>
    <author>
      <name></name>
    </author>
    <content type="html">&lt;p&gt;I came across Kevin&amp;rsquo;s work on a small social networking site. I found myself enjoying a great deal, because his work always stands out for it&amp;rsquo;s creative composition and attention to detail. His work does not employ heavy post processing, nor does it rely on gimmicky filters or techniques. It stands out for itself, and as a result I keep coming back to it.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/kevinomara/2058043260/"&gt;&lt;img src="http://farm3.staticflickr.com/2280/2058043260_600d274ec6.jpg" alt="Getting ready" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/5591011436/"&gt;&lt;img src="http://farm6.staticflickr.com/5029/5591011436_c0d0de3e92.jpg" alt="The Torments of Owlman" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/2374767717/"&gt;&lt;img src="http://farm4.staticflickr.com/3219/2374767717_96997ed3c7.jpg" alt="I feel kind of bad" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/1624697177/"&gt;&lt;img src="http://farm3.staticflickr.com/2219/1624697177_ec0552410a.jpg" alt="Game not available in all locations" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/3435251290/"&gt;&lt;img src="http://farm4.staticflickr.com/3592/3435251290_5766e7dd0e.jpg" alt="Limeade may be the perfect drink" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/6534831467/"&gt;&lt;img src="http://farm8.staticflickr.com/7160/6534831467_6d5f0e3275.jpg" alt="Civil" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/1351902041/"&gt;&lt;img src="http://farm2.staticflickr.com/1389/1351902041_cee3a5cbff.jpg" alt="Stupidest painting ever" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/6442872899/"&gt;&lt;img src="http://farm8.staticflickr.com/7002/6442872899_93aa923b74.jpg" alt="" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/498386923/"&gt;&lt;img src="http://farm1.staticflickr.com/211/498386923_a128f3aa46.jpg" alt="Forgotten 1/4" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/1995143388/"&gt;&lt;img src="http://farm3.staticflickr.com/2217/1995143388_a8201260fb.jpg" alt="Matthew" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/4108384540/"&gt;&lt;img src="http://farm3.staticflickr.com/2490/4108384540_de648548cd.jpg" alt="Gear" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/451547262/"&gt;&lt;img src="http://farm1.staticflickr.com/191/451547262_a8bb5907a5.jpg" alt="When I first looked up, I thought it was floating" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/3301243065/"&gt;&lt;img src="http://farm4.staticflickr.com/3559/3301243065_0e6312a72e.jpg" alt="There is a problem with my chair" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/3568440384/"&gt;&lt;img src="http://farm4.staticflickr.com/3390/3568440384_eeb1cf9ca1.jpg" alt="" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/kevinomara/3117470461/"&gt;&lt;img src="http://farm4.staticflickr.com/3256/3117470461_efc0387dc9.jpg" alt="Pal's" /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
  <entry>
    <title>A month of black and white</title>
    <link rel="alternate" href="http://adams.co.tt/blog/2012/01/18/a-month-of-black-and-white/"/>
    <id>http://adams.co.tt/blog/2012/01/18/a-month-of-black-and-white/</id>
    <published>2012-01-18</published>
    <updated>2012-01-18</updated>
    <author>
      <name></name>
    </author>
    <content type="html">&lt;p&gt;For the past month I have set myself the challenge of shooting primarily in black and white. The purpose of this was to change my way of thinking while shooting, and rather than happening upon compositions that work well in monochrome. These are the results:&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.flickr.com/photos/adsphoto/6684420823/"&gt;&lt;img src="http://farm8.staticflickr.com/7168/6684420823_094c61f406_m.jpg" alt="Hong Kong" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6684419711/"&gt;&lt;img src="http://farm8.staticflickr.com/7002/6684419711_7d9d263c5d_m.jpg" alt="Zurich" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6684418993/"&gt;&lt;img src="http://farm8.staticflickr.com/7015/6684418993_b6bc936b4f_m.jpg" alt="Alps" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6486475539/"&gt;&lt;img src="http://farm8.staticflickr.com/7011/6486475539_63a7354b2f_m.jpg" alt="Park here" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6486474847/"&gt;&lt;img src="http://farm8.staticflickr.com/7167/6486474847_49e0e4ec3a_m.jpg" alt="Back Alley" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6486474367/"&gt;&lt;img src="http://farm8.staticflickr.com/7142/6486474367_521e3e375a_m.jpg" alt="Point of Sale" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6486473777/"&gt;&lt;img src="http://farm8.staticflickr.com/7152/6486473777_4d1d430d24_m.jpg" alt="Games" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6445785425/"&gt;&lt;img src="http://farm8.staticflickr.com/7160/6445785425_165ca83edf_m.jpg" alt="Snow in \345\244\251\345\235\233\345\205\254\345\233\255" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6445784647/"&gt;&lt;img src="http://farm8.staticflickr.com/7027/6445784647_5c4bc419c6_m.jpg" alt="\345\244\251\345\235\233\345\205\254\345\233\255" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6417793973/"&gt;&lt;img src="http://farm8.staticflickr.com/7030/6417793973_cdf1d7c847_m.jpg" alt="Southern Entrance" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6417793163/"&gt;&lt;img src="http://farm8.staticflickr.com/7173/6417793163_18797d69af_m.jpg" alt="Angled Shadows" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6417792371/"&gt;&lt;img src="http://farm8.staticflickr.com/7016/6417792371_67a8dab992_m.jpg" alt="Gateway" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6417791433/"&gt;&lt;img src="http://farm8.staticflickr.com/7151/6417791433_981ca7e435_m.jpg" alt="Sculpted Curve" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6417790889/"&gt;&lt;img src="http://farm8.staticflickr.com/7143/6417790889_285beebc1d_m.jpg" alt="Through Here" /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6445784069/"&gt;&lt;img src="http://farm8.staticflickr.com/7144/6445784069_66f6d3b92d_m.jpg" alt="." /&gt;&lt;/a&gt;
&lt;a href="http://www.flickr.com/photos/adsphoto/6486473245/"&gt;&lt;img src="http://farm8.staticflickr.com/7001/6486473245_3f34985e9e_m.jpg" alt="Drum Tower" /&gt;&lt;/a&gt;&lt;/p&gt;
</content>
  </entry>
</feed>
