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

<channel>
	<title>MarkPReynolds.com &#187; Projects</title>
	<atom:link href="http://markpreynolds.com/category/projects/feed" rel="self" type="application/rss+xml" />
	<link>http://markpreynolds.com</link>
	<description>... an Archive of My Miscellaneum</description>
	<lastBuildDate>Sat, 28 Aug 2010 11:03:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.3</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A $1 Planter</title>
		<link>http://markpreynolds.com/projects/1-dollar-planter</link>
		<comments>http://markpreynolds.com/projects/1-dollar-planter#comments</comments>
		<pubDate>Tue, 09 Jun 2009 03:26:21 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://markpreynolds.com/?p=828</guid>
		<description><![CDATA[How do you build a planter for one buck?  First, forget to throw away that old fence you tore down earlier in the year.  Second, think rustic.  A bent nail or split piece of wood just makes it more stylish.  Then invest about thirty cents in nails and about the same [...]]]></description>
			<content:encoded><![CDATA[<p>How do you build a planter for one buck?  First, forget to throw away that old fence you tore down earlier in the year.  Second, think rustic.  A bent nail or split piece of wood just makes it more stylish.  Then invest about thirty cents in nails and about the same in a plastic painting liner.</p>
<p style="text-align: center;">And wallah!</p>
<p><img class="aligncenter size-full wp-image-825" title="planter" src="http://markpreynolds.com/wp-content/uploads/2009/06/planter.jpg" alt="" /></p>
<p>I need about four of these, so the price is right.  Put a little TLC into the project and you are sure to create a planter of your own that looks like it cost at least three or four bucks.</p>
]]></content:encoded>
			<wfw:commentRss>http://markpreynolds.com/projects/1-dollar-planter/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>WordPress UnGallery</title>
		<link>http://markpreynolds.com/technology/wordpress-ungallery</link>
		<comments>http://markpreynolds.com/technology/wordpress-ungallery#comments</comments>
		<pubDate>Wed, 27 May 2009 09:34:47 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://markpreynolds.com/?p=707</guid>
		<description><![CDATA[The PHP gallery application used on my previous Web site, is now available as a WordPress extension plugin!  UnGallery dynamically imports a directory tree of images and embeds them into a WordPress Page.  The name describes the goal to stay out of your way and publish photos with no administration.
This approach allows your powerful administration [...]]]></description>
			<content:encoded><![CDATA[<p>The PHP gallery application used on my previous Web site, is now available as a WordPress <span style="text-decoration: line-through;">extension</span> plugin!  UnGallery dynamically imports a directory tree of images and embeds them into a WordPress Page.  The name describes the goal to stay out of your way and publish photos with no administration.</p>
<p>This approach allows your powerful administration tools like FTP, SCP, automation scripts or image editors to directly manage the content being published.  Changes are automatically seen in WordPress.  There are no web forms to select files for upload.  There is no importing or modifications to the database.  The gallery files are accessed remotely by WordPress and remain accessible and manageable, outside the WordPress environment.</p>
<p>If you&#8217;ve ever had to reorganize where your photos are stored, remove a few from a large set, or edit the red-eye of a dozen noticed after uploading, you know how inconvenient it is to return to the gallery management UI to update everything.  With UnGallery, all these add/remove/edit changes you make to your library are automatically rolled into the WordPress UnGallery view on the next browser load.<br />
<img class="aligncenter size-full wp-image-730" src="http://markpreynolds.com/wp-content/uploads/2009/05/gallery3.png" alt="" /></p>
<p><strong>Features:</strong></p>
<ul>
<li>Unlimited depth, breadth, and number of photos. <a href="http://markpreynolds.com/gallery">The gallery here</a> has approx 8,000.</li>
<li>Multiple gallery views:  Top level marquee (optional), thumbnails, browsing previous and next pictures.</li>
<li>Gallery hierarchy breadcrumbs with links to parent, present, and sub-galleries</li>
<li>Photo library is managed outside of WordPress, simply update via FTP, SCP, etc.  UnGallery sees changes immediately.</li>
<li>Optional banner captions</li>
<li>Unbrowsable, private galleries</li>
<li>Thumbnail cache for faster page loads</li>
<li>Support for MP4 movies embedded within WordPress</li>
<li>Automatic image rotation of jpegs with exif orientation</li>
</ul>
<p><strong>To Do:</strong></p>
<ul>
<li>Make many of the setup options manageable on the plugin admin screen.  These include:  Thumbnail sizes, path to the gallery directories, caption text, and hidden text.</li>
<li>Optional caching</li>
<li>Move state, position handling to session</li>
<li>Fix MP4 case sensitivity</li>
<li>Allow other names than &#8216;gallery&#8217; as the base URI / page name</li>
</ul>
<p><strong>Notes:</strong></p>
<ul>
<li>The default WordPress page width is a bit small for a gallery.  I use the excellent <a href="http://wordpress.org/extend/themes/atahualpa">Atahualpa</a> theme and increase the page width to a modern browser standard.  If you want to squeeze UnGallery into a small width WordPress install, you&#8217;ll want to update the width of the thumbnails it generates.  See the readme file.</li>
<li>This plugin is still young, so there will be things to fix.  Feel free to use it, extend it or contact me with questions.</li>
<li>Much is taken from other sources and noted inline.</li>
</ul>
<p><strong>Download:</strong></p>
<ul>
<li>Grab the <a href="http://wordpress.org/extend/plugins/ungallery/">current version at WordPress.org</a>.</li>
<li>The installation steps are mostly standard, though there are couple simple, extra steps, noted in the instructions.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://markpreynolds.com/technology/wordpress-ungallery/feed</wfw:commentRss>
		<slash:comments>60</slash:comments>
		</item>
		<item>
		<title>A Hybrid Fence</title>
		<link>http://markpreynolds.com/projects/a-hybrid-fence</link>
		<comments>http://markpreynolds.com/projects/a-hybrid-fence#comments</comments>
		<pubDate>Mon, 09 Mar 2009 18:32:23 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Misc]]></category>
		<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://work.markpreynolds.com/?p=370</guid>
		<description><![CDATA[We wanted to see down into the greenbelt valley behind our home. So I took down the decrepit fence at the rear of our propery. Great! We can see the deer, rock squirrels, falcons, etc. But it’s also somewhat of a security hole, since the home is now more accessible from that side and with [...]]]></description>
			<content:encoded><![CDATA[<div class="entrybody">
<p>We wanted to see down into the greenbelt valley behind our home. So I took down the decrepit fence at the rear of our propery. Great! We can see the deer, rock squirrels, falcons, etc. But it’s also somewhat of a security hole, since the home is now more accessible from that side and with less visibility than from the front.</p>
<p>So, how about putting up a property line fence that does not block the view? The standard solutions for this either chain link which looks cheap or wrought iron which for 100+ feet came in at about $5,000. This is about $5,000 more than I was looking to spend considering our back yard is classified as zero maintenance, rarely entered and not much to look at.</p>
<p style="text-align: center;"><img src="http://markpreynolds.com/wp-content/plugins/ungallery/thumb.php?src=pics/2009/March/Fence/IMG_6347.JPG&#038;w=300" alt="" /> <img src="http://markpreynolds.com/wp-content/plugins/ungallery/thumb.php?src=pics/2009/March/Fence/IMG_6350.JPG&#038;w=300" alt="" /></p>
<p>I decided on treated 2×2s attached to the existing 4×4s already mounted in concrete for the current fence. These will act as crossbeams and when cut in half at a 45 degree angle, the pickets. The architecture is structurally sound but not as completely sturdy as if I’d used 2×4s for the crossbeams. A strong person could tear at the fence and break sections apart, but then again, I can pull off pieces of the old fence and the neighbor’s fence with one hand. And the other neighbor has no fence. So this option, complete with sharp, upward facing spires will provide an obstacle that is not scalable and would force a probably loud demolition to break through.</p>
<p style="text-align: center;"><img src="http://markpreynolds.com/wp-content/plugins/ungallery/thumb.php?src=pics/2009/March/Fence/IMG_6353.JPG&#038;w=300" alt="" /> <img src="http://markpreynolds.com/wp-content/plugins/ungallery/thumb.php?src=pics/2009/March/Fence/IMG_6366.JPG&#038;w=300" alt="" /></p>
<p>Maybe I’ll stain it, maybe reinforce the crossbeams with 2×4s, maybe not. But the yard is fenced again and now we can see down into the valley!</p></div>
]]></content:encoded>
			<wfw:commentRss>http://markpreynolds.com/projects/a-hybrid-fence/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Configuration Automation</title>
		<link>http://markpreynolds.com/technology/configuration-automation</link>
		<comments>http://markpreynolds.com/technology/configuration-automation#comments</comments>
		<pubDate>Sun, 01 Mar 2009 18:35:42 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://work.markpreynolds.com/?p=373</guid>
		<description><![CDATA[This project scripts the remote setup of Ubuntu 8.x servers as a Ruby on Rails application servers. It installs all necessary libraries, packages, and optionally, deploys Ruby on Rails applications. I’ve published a few of these automation scripts on the FiveRuns Blog. The most recent version of configuration-automation includes a menu of Rails application choices [...]]]></description>
			<content:encoded><![CDATA[<div class="entrybody">
<p>This project scripts the remote setup of Ubuntu 8.x servers as a Ruby on Rails application servers. It installs all necessary libraries, packages, and optionally, deploys Ruby on Rails applications. I’ve published a few of these automation scripts on the <a href="http://blog.fiveruns.com/">FiveRuns Blog.</a> The most recent version of configuration-automation includes a menu of Rails application choices to install after the Linux bootstrap completes and was published in February on the <a href="http://blog.fiveruns.com/2009/2/23/automatic-rails-applications">FiveRuns blog</a>.  I’ve archived those posts here with additional comments.</p>
<p>The current post: <a href="http://markpreynolds.com/2009/2/23/automatic-rails-applications">Automatic Rails Applications</a></p>
<p>The previous post: <a href="http://markpreynolds.com/2008/10/19/automatic-production-rails">Automatic Production Rails</a></p>
<p>The original post: <a href="http://markpreynolds.com/2008/9/24/automatic-rails-at-slicehost">Automatic Rails at Slicehost</a></div>
]]></content:encoded>
			<wfw:commentRss>http://markpreynolds.com/technology/configuration-automation/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automatic Rails Applications</title>
		<link>http://markpreynolds.com/technology/automatic-rails-applications</link>
		<comments>http://markpreynolds.com/technology/automatic-rails-applications#comments</comments>
		<pubDate>Mon, 23 Feb 2009 18:37:03 +0000</pubDate>
		<dc:creator>mark</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://work.markpreynolds.com/?p=375</guid>
		<description><![CDATA[The following article was written for the FiveRuns blog.  FiveRuns makes Ruby on Rails performance and monitoring tools.  With the release of Dash, they’ve extended the tool set to include more frameworks and social networking integration.  Very cool stuff.
A few additional notes on the article:

Use a hostname and not an IP in [...]]]></description>
			<content:encoded><![CDATA[<p>The following article was written for the <a href="http://blog.fiveruns.com/">FiveRuns blog</a>.  <a href="http://www.fiveruns.com/">FiveRuns</a> makes Ruby on Rails performance and monitoring <a href="http://www.fiveruns.com/products">tools</a>.  With the release of <a href="http://dash.fiveruns.com/">Dash</a>, they’ve extended the tool set to include more frameworks and social networking integration.  Very cool stuff.</p>
<p><strong>A few additional notes on the article:</strong></p>
<ul>
<li>Use a hostname and not an IP in order to automatically install the Rails apps. This is because Passenger uses virtual hosts to direct traffic to each app.</li>
<li>Because this script configures production servers and not client development environments, I chose not download the Rails projects’ source to the client. This is simple to add via an additional git clone statement, but this way it runs faster and cleaner using only the config files that Capistrano needs.</li>
</ul>
<p><strong>Some potential future enhancements:</strong></p>
<ol>
<li>Enter the password only once or pull it from a hash file</li>
<li>Alternately, install a key pair to the new server automatically so the password isn’t needed after the first ssh connection.</li>
<li>Add additional Rails applications</li>
<li>Add an option to provide the installed Rails application’s dynamically. That is, the menu could prompt for target repository url, deploy.rb, database.yml, etc. instead of using predefined, included app config files.</li>
</ol>
<p><strong>The Original Article Follows:</strong></p>
<p>Welcome to the third installment of <a href="http://github.com/mmond/configuration-automation/tree">configuration-automation</a>, a Ruby on Rails environment setup script. We’ll take a remote Linux server from first boot to fully configured, live Rails application server with just a hostname and password. This version includes a menu of Rails applications to choose from and replaces the nginx/mongrel servers with <a href="http://www.modrails.com/">Phusion Passenger</a>.  Four popular Rails applications:  <a href="http://radiantcms.org/blog/">Radiant</a>, <a href="http://spreehq.org/">Spree</a>, <a href="http://jobberrails.comingsoooon.com/">jobberRails</a> and <a href="http://almosteffortless.com/eldorado/">El Dorado</a> are available to be deployed automatically.</p>
<p><strong>What’s Needed</strong></p>
<p>All you need is <a href="http://capify.org/">Capistrano</a> and <a href="http://git-scm.com/">git</a> installed on your *nix client to download and execute the scripts. On the remote server, Ubuntu 8.04 or 8.10 with ssh listening is supported, such as a <a href="http://slicehost.com/">Slicehost</a> VM or VMWare image.</p>
<p><strong>Using The Script</strong></p>
<p>Just download the  files from github and run:<br />
<code>git clone git://github.com/mmond/configuration-automation.git</code><br />
<code>cd ./configuration-automation</code><br />
<code>git checkout -b origin/production-v1</code><br />
<code>sh configure_ubuntu.sh</code></p>
<p><strong>What Happens</strong></p>
<p>An ssh connection to the Ubuntu server updates core system libraries and installs dependencies such as Ruby and MySQL. The Rails application chosen is deployed via Capistrano with a second ssh connection. Each connection requires the target server’s password or you can install an <a href="http://sial.org/howto/openssh/publickey-auth/">ssh key pair</a> to skip those prompts.</p>
<p>To install additional Rails applications to the newly configured server, run configure_rails_apps.sh from the same ./configuration-automation directory. The main script can also be rerun from the same directory against other blank Ubuntu targets.</p>
<p><strong>Why Do This?</strong></p>
<p>With no <span class="caps">DSL</span> to learn or manifests to build, this is a fast, simple way to bootstrap a Rails server. I built it to test (and quickly retest) compatibility with FiveRuns <a href="http://www.fiveruns.com/products/manage">Manage</a> and <a href="http://www.fiveruns.com/products/tuneup">TuneUp</a> product updates. As such, it makes a decent acceptance test environment builder. It is also a way to experiment with a functioning Ruby on Rails app server without working through every installation issue.</p>
<p>It’s not intended to meet the meet the same needs as more powerful tools like <a href="http://reductivelabs.com/">Puppet</a>, or now <a href="http://wiki.opscode.com/display/chef/Home">Chef</a>, though you could easily add these after running configuration-automation.  For <span class="caps">EC2</span> environments, also check out Matt Conway’s cool <a href="http://github.com/wr0ngway/rubber/tree/master">Rubber</a> Capistrano/Rails plugin.</p>
<p>The Rails app versions are frozen to today to ensure their project updates don’t break the automation. I’ll refresh these in later updates to configuration-automation. Suggestions and feedback are welcome via comments below or on <a href="http://blog.markpreynolds.com/technology">my blog</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://markpreynolds.com/technology/automatic-rails-applications/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
