<?xml version='1.0' encoding='utf-8' ?>
<feed xmlns='http://www.w3.org/2005/Atom'>
  <title type='text'>Antarestrader Blog Posts</title>
  <subtitle type='html'>A blog about ruby, web development and the development of AntaresTrader a game of comerice and economic domination set among the stars.</subtitle>
  <link href='http://blog.antarestrader.com/' rel='alternate' type='text/html' />
  <link href='http://blog.antarestrader.com/feed/atom' rel='self' type='application/atom+xml' />
  <updated>2010-03-11T05:27:57Z</updated>
  <author>
    <name>John F. Miller</name>
    <email>emperor@antarestrader.com</email>
  </author>
  <id>tag:blog.antarestrader.com,2009:/feeds/atom.xml/1</id>
  <rights type='text'>Copyright 2007-2010 John F. Miller.</rights>
  <entry>
    <title>On the State of Ad Blockers</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2010-03-09T03:35:13+00:00</updated>
    <published>2010-03-09T03:34:18+00:00</published>
    <link href='http://blog.antarestrader.com/posts/150' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/150' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Ars Technica's Ken Fisher recently penned an article about <a href="http://arstechnica.com/business/news/2010/03/why-ad-blocking-is-devastating-to-the-sites-you-love.ars">Why Ad Blocking is devastating to the sites you love</a>.  As an avid Ars Technica reader (via their RSS feed) I take an interest in the health of the site, and as a user of <a href="http://adblockplus.org/en/">Ad Block Plus</a> I am just just the kind of user to which Fisher is speaking.  Here is why I still block ads.</p>
        <a href="http://blog.antarestrader.com/posts/150">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>SureWest Brings the Fiber for Less</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2010-02-15T00:13:49+00:00</updated>
    <published>2010-02-16T12:00:00+00:00</published>
    <link href='http://blog.antarestrader.com/posts/149' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/149' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>With the FCC considering the rules for the next decade of internet access, I wanted to put in my two-cents about <a href="http://surewest.net">SureWest Communications</a>.  They have just hooked me up with a Fiber Optice 3Mbps connection for about the same as AT&amp;T wanted to charge for 768Kbps and for less then a third of Comcast's asking price for the same speed.  If you have not heard of SureWest, it is because they are only in two places in the country, and I just happen to be lucky enough to live in one of them. Because of this I don't have to deal with stealth filtering (Comcast) degraded ssl connections (Comcast and AT&amp;T) and less then half of advertised speed (AT&amp;T).  The real point here is that much faster higher quality internet can be delivered at the current price point.  When AT&amp;T wants the FCC to call 350Kbps highspeed and Comcast says that they need filtering to maintain quality, the FCC needs to point to SureWest and ask why they can do it.<br/>
        </p>
        
        <p>Here's to more competition in the ISP market place!</p>
      </div>
    </summary>
  </entry>
  <entry>
    <title>No cattr_accessor Blame Rails 3</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2010-02-14T23:53:19+00:00</updated>
    <published>2010-02-14T23:48:06+00:00</published>
    <link href='http://blog.antarestrader.com/posts/148' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/148' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Here is another one of those head scratching moments that makes a lot of sense once you know what is going on.  If you have installed the Rails 3 pre release, you may have inadvertently broken a number of gems that depend on ActiveSupport.</p>
        <a href="http://blog.antarestrader.com/posts/148">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>New Digs Means No Nets</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2010-02-08T20:39:35+00:00</updated>
    <published>2010-02-08T20:39:35+00:00</published>
    <link href='http://blog.antarestrader.com/posts/147' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/147' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Your humble and not very consistent author has survived the Christmas Rush and the purchase of our first home with very few social causalities.  One of these few has been blogging. SureWest is going to come and hook up my fiber connection on Friday, until then I am at the mercy of places that advertise "Free Wifi" but don't actually have a live connection. (I'm looking at you <a href="http://www.labou.com/">LaBou Bakery</a> of S.Natomas)</p>
        
        <p>This doesn't mean I haven't been hacking.  I have started working with Mongo and MongoMapper both of which are really cool and deserve a post written with out the distraction of a fast food joint.  I'm also looking at Redis.  These alternatives to SQL databases make the complex data relations found in Antares Trader much easier.<br/>
        </p>
        
        <p>I'm also enjoying learning from the folks at the Sacramento Ruby Meet-up.  More will flow from this blog.</p>
        
        <p>Finally, I'm starting on Rails 3 sence I know that it will be the version I will want to which I will port Antares Trader.  I thought Merb was great, but it will also be nice to be back in the main stream again.</p>
        
        <p>More will flow from this blog.  Hopefully starting Friday</p>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Some Thoughts on Work Queues</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2009-11-04T03:36:38+00:00</updated>
    <published>2009-11-04T03:36:38+00:00</published>
    <link href='http://blog.antarestrader.com/posts/146' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/146' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Github has recently posted <a href="http://github.com/blog/542-introducing-resque">a wonderful article</a> about their history with job queues.  It is a superb read and I recomend looking both at it and the <a href="http://github.com/defunkt/resque#readme">README</a> file for Resque, GitHub's new Redis back job queue.  It is replacing the venerable <a href="http://github.com/tobi/delayed_job/">delayed_job</a>.  In this post I am going to briefly look at some of the concepts of Worker Queues in an attempt to better explain my hopes for <a href="http://github.com/startrader/Updater">Updater</a>, my delayed_job clone for DataMapper.</p>
        <a href="http://blog.antarestrader.com/posts/146">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Factory Girl: Continued DataMapper Compatibility</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2009-10-25T05:44:34+00:00</updated>
    <published>2009-10-25T05:44:34+00:00</published>
    <link href='http://blog.antarestrader.com/posts/145' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/145' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>The <a href="http://github.com/thoughtbot/factory_girl"><code>factory_girl</code></a> Gem is a great tool for creating <em>valid</em> test instances on the fly.  There are lots of posts about why this is <em>so</em> much better then fixtures.  Unfortunately for us DataMapper fans, the official version is not quite compatible with our favorite ORM.  I've done my best to remedy that situation.  There is now a <a href="http://github.com/startrader/factory_girl">fork of factory_girl</a> that I have made mostly compatible with <em>both</em> DataMapper and ActiveRecord.  You can also pull the gem from GemCutter as <a href="http://gemcutter.org/gems/dm-factory_girl">dm-factory_girl</a>.</p>
        <a href="http://blog.antarestrader.com/posts/145">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Updater: The Story of a Gem</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2009-10-23T01:34:48+00:00</updated>
    <published>2009-10-23T01:34:48+00:00</published>
    <link href='http://blog.antarestrader.com/posts/144' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/144' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>The <a href="/posts/136">game loop</a> is an essential part of what makes a game work.  To implement one for Antares Trader, I wrote a class that would repeatedly call the <code>update</code> method on DataMapper resources.  It was a quick hack that got my mini-game <a href="/post/16">sketches</a> working.  Eventually, I needed to pull the code out from under the web server and give it it's own process.  For a while it was just a class in the lib directory.  Eventually, updater grew to need it's own table in the database and now there was Updater code in too many different places.</p>
        
        <p>At this point I went looking for a better solution.  I picked up <a href="http://github.com/tobi/delayed_job">delayed_job</a> and liked what I saw.  It did a lot of what I needed.  It had a cool API, and GitHub used it so I knew that it had been tested in the real world.  On the other hand there were a couple of features missing, and more importantly, it depended on ActiveRecord. So it was back to Updater.</p>
        <a href="http://blog.antarestrader.com/posts/144">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Factory Girl Patch for Continued DataMapper Compatibility</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2009-09-26T00:56:48+00:00</updated>
    <published>2009-09-26T00:56:22+00:00</published>
    <link href='http://blog.antarestrader.com/posts/143' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/143' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>The <a href="http://github.com/thoughtbot/factory_girl">Factory Girl gem</a> from thoughtbot is the way to go if you have to test ORM classes.  It has been <a href="http://railscasts.com/episodes/158-factories-not-fixtures">featured</a> in <a href="http://railscasts.com/">Ryan Bates Railscast</a>, and by good fortune, it also works with DataMapper, my ORM of choice.  When I upgraded to the latest release of DataMapper however, all my user tests broke. in particular the <code>crypted_password</code> and <code>salt</code> fields were not being set when the record was saved.  I'm using the salted password mixin from Merb and I assumed that it was to blame having not gotten up to speed with some of the new API changes in DataMapper.  It turned out instead to be an incompatibility between Factory Girl and Datamapper that had existed for a long time but was now showing up.  I've modified factory girl to maintain compatibility and my changes are at <a href="http://github.com/startrader/factory_girl">http://github.com/startrader/factory_girl</a>.</p>
        <a href="http://blog.antarestrader.com/posts/143">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Finally a work around for IE</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2009-09-24T01:12:26+00:00</updated>
    <published>2009-09-25T12:00:00+00:00</published>
    <link href='http://blog.antarestrader.com/posts/142' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/142' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Internet Explorer is the bane of every web developer's existence.  Google being the one of the largest web content producers finally got fed up and has developed a work around for everything that is wrong with IE.  They have developed a browser <a href="http://blog.chromium.org/2009/09/introducing-google-chrome-frame.html">plug-in</a> that completely guts IE and replaces its rendering engine with Google Chrome.  The <a href="http://blog.chromium.org/2009/09/introducing-google-chrome-frame.html">Google Chrome Frame</a> looks like a great way to reach all the cooperate users and grandmas that cannot or will not upgrade to a new browser.</p>
        <a href="http://blog.antarestrader.com/posts/142">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Making Games Engaging: The Reward Cycle</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2009-09-24T00:00:49+00:00</updated>
    <published>2009-09-24T00:00:49+00:00</published>
    <link href='http://blog.antarestrader.com/posts/141' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/141' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>In my <a href="/posts/163">last game related post</a> I wrote about the mechanics of making a game work.  Just because a game works does not mean it is enjoyable to play.  In this post I am going to talk about the reward cycle and why some games are so addictive and other either get boring, or were never fun to begin with.</p>
        
        <p>The key concept her is the action-reward cycle. A player makes a decision and then gets some feedback on that decision.  Good decisions get rewards while poor ones are either ignored or reduce future rewards. The thing that makes a game fun to play is the balance and value of these rewards.</p>
        <a href="http://blog.antarestrader.com/posts/141">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Language Comparison Example Stink</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2009-09-16T18:13:31+00:00</updated>
    <published>2009-09-21T12:00:00+00:00</published>
    <link href='http://blog.antarestrader.com/posts/140' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/140' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Is <a href="http://www.randomhacks.net/articles/2005/12/03/why-ruby-is-an-acceptable-lisp#repost">Ruby better the Lisp</a>?  There are lots of ways and reasons to answer questions like this.  Some people rightly find the argument banal sense there are so many different values and reasons at play.  I personally enjoy such comparisons.  The give me a view of how other people code, and different things that can be done in different ways.</p>
        
        <p>My problem is that so often the examples that are chosen show me nothing.  They are so small as that they are almost pointless, and if I haven't ever seen something done before, I have no clue why I'd want to do it.  My opinion is that articles like this should have one small, but useful example written in both languages.  This example should actually solve a problem someone might care about, and it should not be the key idea of either language.</p>
        <a href="http://blog.antarestrader.com/posts/140">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Thoughts on using Cucumber Tags</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2009-09-16T15:12:59+00:00</updated>
    <published>2009-09-17T12:00:00+00:00</published>
    <link href='http://blog.antarestrader.com/posts/138' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/138' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Cucumber is an acceptance testing framework that lets you and your clients write our requirements as short stories and then test those stories fro compliance.  Those familiar with it will know that you can tag a scenario by placing putting labels precede by the <code>@</code> sign on the line imminently before the scenario starts.  There are a number of different uses for these tags.  They can sort features by priority or developer, or they can designate in what version the feature is likely to appear.</p>
        
        <p>As a one-man-band, I don't need quite that level of organization.  But I do use three tags that help me keep my development clean. I do however label all my scenarios as <code>@pending</code>, <code>@current</code> or <code>@passing</code>.  I can then use the <code>-t</code> flag to choose which tags to run.</p>
        <a href="http://blog.antarestrader.com/posts/138">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Progress Report: JZForm, Minigame, Comments</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2009-09-16T15:45:04+00:00</updated>
    <published>2009-09-16T15:45:04+00:00</published>
    <link href='http://blog.antarestrader.com/posts/139' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/139' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>JZForm is a side project I've been working on.  Its aim is to provide a DSL for html forms and input in general.  After a week of picking at it I'm setting it aside again because it is sapping my energy without showing much progress.  The problem is, I really don't know what I want.  I have some general ideas, but the API continues to be overly complex while the output is too amorphous to provide a clear path forward.</p>
        <a href="http://blog.antarestrader.com/posts/139">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Quick Tip for Git Users: Touch .nil</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2009-09-09T21:13:15+00:00</updated>
    <published>2009-09-10T12:00:00+00:00</published>
    <link href='http://blog.antarestrader.com/posts/135' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/135' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Users of Git will know that it refuses to story an empty directory.  When one is trying to check in a generated project with a bunch of empty directories this can lead to confusion.  It can also bite when you expect a directory to exist, but don't want to put it's contents under version control.  ('<code>/log</code>' for example).</p>
        
        <p>The way I have found to fix this is to <code>touch &lt;directory&gt;/.nil</code> This creates an empty hidden file in the directory that you can add to a git repository.  It would be nice if there was a way to add empty trees, unless and until that happens this will save you a few minutes when you go to deploy and find you cannot open your log files.</p>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Sake and Rake Get in a Bar Fight</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2009-09-11T18:14:29+00:00</updated>
    <published>2009-09-10T02:18:27+00:00</published>
    <link href='http://blog.antarestrader.com/posts/137' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/137' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>The latest version of <code>rake</code> is not playing nicely with the <code>sake</code>.  There is a <a href="https://err.lighthouseapp.com/projects/466/tickets/246-sake-fails-on-rake-082">lighthouse ticket</a> that explains in more detail what is going on, but the summery is rake complaining <code>can't convert true into String</code>.  There is a <a href="https://err.lighthouseapp.com/projects/466/tickets/246/a/50325/sake_rake_0.8.2.patch">patch that need to be applied to <code>sake</code></a>.  I had to do this by hand because my directory structure did not match the patch.  It is a really easy one liner.  Below I've listed both the error and the patch:</p>
        <a href="http://blog.antarestrader.com/posts/137">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Game Design: The Basics</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2009-09-09T21:12:26+00:00</updated>
    <published>2009-09-09T21:12:26+00:00</published>
    <link href='http://blog.antarestrader.com/posts/136' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/136' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>AntaresTrader is the the game I want to play, but have never actually found.  I've been writing it in some form sense I was in elementary school and learned that computers could play games.  As I have gotten more sophisticated, I have learned a lot more about why people like to play games and how to design them.  This post lays the ground work for a discussion of what makes a good game.</p>
        <a href="http://blog.antarestrader.com/posts/136">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Looking for the Best Place to Host Small Sites</title>
    <id></id>
    <updated>2009-09-09T21:17:11+00:00</updated>
    <published>2009-09-08T12:00:00+00:00</published>
    <link href='http://blog.antarestrader.com/posts/133' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/133' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Not every site needs a huge dedicated server farm.  In fact I would say that the vast majority of sites on the web do not see more then 100 visitors a day. Local businesses, churches and non-profits that must have a web presence (does any one use a phone book anymore?), but do not actually do business from that site really need little more then a domain name, some pages and a reliable server.</p>
        
        <p>Services like <a href="http://www.engineyard.com/cloud-services/solo">Engin Yard Solo</a> are great for fast moving startups, and <a href="http://slicehost.com">SliceHost</a> is fine for the tinkerers who like to role their own.  Both are overkill for a site that will be see more of its admin then its clients.  (Full disclosure: Engin Yard sponsored a recent hack-a-thon I attended including providing us a Solo instance to deploy to.  SliceHost is my web hosting provider.)</p>
        
        <p>Since I have been approached by three different people wanting just such a web site I went looking for what might be good.  There are lots of commodity hosts out there, but the one I found most interesting is <a href="http://heroku.com/">Heroku</a>  Their shared hosting environment looks like just the kind of thing, and their smallest instance is free.  For the very low traffic websites I'm looking at this might be exactly the thing.  I also like their innovative deployment model.  Sites like charities that could see a sudden spike in readership if their cause makes headlines would really benefit from it.<br/>
        </p>
        
        <p>The webmaster at my church has been bugging me to help him redo the site so it is easier to maintain.  My thought is to put an instance up on Heroko and play with it some time this fall.  If it is as good as it looks on paper, I think they will be seeing a lot more business from me.  My one hesitation in just jumping in is in their pricing tiers.  It is a huge jump from free to $36 a month.  I would like to see a $8-15 a month option with a little more space.  But for free, I'll at least take a test drive.</p>
      </div>
    </summary>
  </entry>
  <entry>
    <title>The Luxury of a Second Screen</title>
    <id></id>
    <updated>2009-09-09T21:16:46+00:00</updated>
    <published>2009-09-05T19:00:00+00:00</published>
    <link href='http://blog.antarestrader.com/posts/132' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/132' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Extravagant, that is what I used to think of people who insisted on having a second monitor.  Why would you need two screen you can only look at one thing at a time. At least that's what I thought until I got the bright idea to hook up my laptop to my desktops monitor.  Now I think that it is a Luxury worth having.</p>
        <a href="http://blog.antarestrader.com/posts/132">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Redeploy Successful:  On to Better Things</title>
    <id>tag:blog.antarestrader.com,2009:/post_id/</id>
    <updated>2009-09-04T19:32:31+00:00</updated>
    <published>2009-09-04T19:26:06+00:00</published>
    <link href='http://blog.antarestrader.com/posts/134' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/134' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>If you are reading this, then you are looking at a successfully redeployed instance of my blog.  Usually this should not be news worthy, but this redeploy required the complete rebuilding and restoration of the database.  One thing I will say is that I am defiantly getting better at this whole deployment thing.  Having a good plan helps.  So does deploying to a staging server first.  If you want the blow-by-blow check out my <a href="http://twitter.com/antarestrader">twitter feed</a>.<br/>
        </p>
        
        <p>Now it is time to work on something other then the blog for a bit.  There is a minigame that wants love and JZForm is calling again.  I also want to hack around a bit on DataMapper to see if I can get many-to-many associations to eager load.</p>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Rememberances of a First Tech Job</title>
    <id></id>
    <updated>2009-09-04T20:32:58+00:00</updated>
    <published>2009-09-04T12:00:00+00:00</published>
    <link href='http://blog.antarestrader.com/posts/128' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/128' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Some of the best lessons are learned from ones first real job.  All that schooling melts away under the harsh glare of <em>the real world</em>, what ever that is.  Some of the best stories come out of that first job as well.  A <a href="/posts/127">recent post</a> got me thinking back about my first job doing on-site tech support of a County Government Division.  If you are up for a few chuckles and some tips for fixing <em>pebkac</em> errors cause by the <code>id:10-T</code> in cubical 9 read on.</p>
        
        <p>This is Part 1 of a 2 (or 3) part series</p>
        <a href="http://blog.antarestrader.com/posts/128">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>The Big Redeploy</title>
    <id></id>
    <updated>2009-09-04T20:33:18+00:00</updated>
    <published>2009-09-04T02:39:56+00:00</published>
    <link href='http://blog.antarestrader.com/posts/131' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/131' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Tomorrow's project is redeploying these blogs.  I always get nervous when I do a big deployment.  I'm not a sysadmin, and I do not have a lot of practice at it.  Switching from WordPress over to this blog went pretty smoothly thanks to a good deal of forethought and planning.  I'm hoping that the same thing will hold true this time.</p>
        <a href="http://blog.antarestrader.com/posts/131">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Whats Next</title>
    <id></id>
    <updated>2009-09-04T20:33:45+00:00</updated>
    <published>2009-09-03T20:00:00+00:00</published>
    <link href='http://blog.antarestrader.com/posts/130' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/130' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>After a long day of coding yesterday, I've gotten to the point where I think I can add a few new feature to the blog.  Here is my list:</p>
        
        <h2>Stats</h2>
        
        <p>What kind of a person gives themselves the e-mail user name emperor (-at-) antarestrater.org?  One with a surprisingly large ego that's who.  I love to know how many people are reading my blog, what they are reading, when and how.  Which post gets the most hits.  That kind of thing.  I'm getting really tired of <code>grep</code>ing through my access log for this kind of thing</p>
        
        <p>This is going to require a bit of work to store the data and some way to track cached pages. Webbugs anyone?</p>
        
        <h2>Series, Categories, and Subjects</h2>
        
        <p>Categories will work once the database is upgraded.  You can see them in the right hand column, and they actually do lead to the old posts they are associated with, but changing them or adding new posts is broken until I <a href="/posts/115">unshared</a> my database.</p>
        
        <p>Subjects are what I'm calling tags.  I hope hey will be quick and easy with dm-tags.  We'll see.</p>
        
        <p>Series are what I am most excited about.  I can write a bout a page (500 words) without getting bored.  Some things take more then a page to write.  I want to be able to break these long thoughts up into multiple posts and have them link to each other automatically.  If I add another post, I want all the previously published ones in the series to link to it.</p>
        
        <h2>Page Caching</h2>
        
        <p>It's harder then you may think when I serve multiple blogs from the same application.  I have to put the cache in the right public folder, and expire the right file later.  I think I'm going to write a custom cache strategy using Merb's clean Cache API.  The other trick is going to be expiring the cache when a new post goes live.  At the moment nothing really happens.  If the wall clock is greater then the publication time the post shows up in the query.  With a cache there is no query to run so no new post.  I'm thinking the whenever gem may be an option here.</p>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Restoring from Backups</title>
    <id></id>
    <updated>2009-09-04T20:34:55+00:00</updated>
    <published>2009-09-03T04:40:32+00:00</published>
    <link href='http://blog.antarestrader.com/posts/127' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/127' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Backups are only as good as your ability to restore them. This is one of the axioms that I learned working tech support for a county government office.  I also majored in Physics, which meant collect data now and analyze it later. I bring this up because todays job was adding the restore feature that would read the backup feature I implemented a couple of weeks ago.  Now that I have data that is actually worth keeping (and keeping in the same place) backup and restore suddenly is not just another feature, its important.</p>
        
        <p>Todays lesson is a corollary to that lesson of so long ago: <strong>Restore is always trickier then Backup</strong>.</p>
        <a href="http://blog.antarestrader.com/posts/127">read more</a>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Saving an XML File</title>
    <id></id>
    <updated>2009-09-04T20:35:19+00:00</updated>
    <published>2009-09-02T12:00:00+00:00</published>
    <link href='http://blog.antarestrader.com/posts/124' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/124' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>For my backup solution, I am generating and XML file of all my posts and burning them to CD with my regular backups on my local machine.  I wrote an action and a Haml view to take care of generating this, but when I hit that URL, Firefox would display the XML on screen instead of offering to save it.<br/>
        </p>
        
        <p>It took me too long to solve this ever to waant to do so again.  The solution is to add a header with a key of '<code>Content-Disposition</code>' and a value of '<code>attachement; filename=backup.xml</code>'  I'm not sure that everyone will agree that it is the correct place for it, but I added this to my view as:</p>
        
        <pre><code>#!/xml
        - headers['Content-Disposition'] = 'attachment; filename=backup.xml'
        !!! xml
        ...
        </code></pre>
        
        <p>This lets me keep my <code>backup</code> action serving both an HTML form and the XML backup file with no extra logic needed.</p>
      </div>
    </summary>
  </entry>
  <entry>
    <title>Query Strings Not Returning What Was Expected</title>
    <id></id>
    <updated>2009-09-04T20:35:39+00:00</updated>
    <published>2009-09-01T12:00:00+00:00</published>
    <link href='http://blog.antarestrader.com/posts/123' rel='alternate' type='text/html' />
    <content src='http://blog.antarestrader.com/posts/123' type='text/html'>    </content>
    <summary type='xhtml'>
      <div xmlns='http://www.w3.org/1999/xhtml'>
        <p>Outdated URLs from the days of WordPress are still floating around in in collective memory of the web.  The way I had WordPress configured everything was accessed through a query string to the root document. (I think this may be true of any WordPress configuration but I'm not sure)</p>
        
        <p>The point is that hitting the root of this blog with almost any query string now just renders the home page. The query string is ignored.  I was careful tp preserve links to posts (/?p=123) and the rss feed (/?feed=rss2) but other things like tags and categories were simply not handled, and will not be any time it the future.</p>
        
        <p>Instead of rendering the main index page these query strings should return a 406 error.  doing so would clue in the search engine spiders that what they were looking up no longer existed.  I have plans to change the router to make this happen, and if I everything goes right urls like <code>/?tag=ruby</code> will return 406 by the time this post goes live.</p>
        
        <p>On the other hand, this is just one of many good reasons why using the query string for routing is just a bad idea in the long run.  It also made it very difficult to write a robots.txt that would keep the bots out of things like tags or categories.  These are just different groupings of the same content, but they often ranked higher then an individual post on a subject.  In my opinion landing on such pages from a search presents the user with too much irrelevant information.<br/>
        </p>
        
        <p>When subjects (was tags) and Categories make their reappearance they will have pretty URLs and not show up on anyones search results.</p>
      </div>
    </summary>
  </entry>
</feed>
