A $1 Planter

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.

And wallah!

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.

WordPress UnGallery

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 graphic files and embeds them into a WordPress Page.  The name describes the goal to stay out of your way and publish photos with no administration of the picture library.

This approach allows your powerful administration tools like FTP, SCP, shell scripts and text or graphic editors to directly manage your gallery content on the server.  Changes are automatically rolled into the WordPress view.  There are no web forms to select files for upload.  There is no importing of graphic files or modifications to the database.  The gallery files are accessed remotely by WordPress and remain accessible and manageable, outside the WordPress environment.

If you’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.

Features:

  • Unlimited depth, breadth, and number of photos. The gallery here has approx 6,000.
  • Multiple gallery views:  Top level intro, thumbnails, browsing previous and next pictures.
  • Gallery hierarchy breadcrumbs with links to parent galleries and sub-galleries
  • Photo library is managed outside of WordPress, simply update via FTP, SCP, etc.  UnGallery sees changes immediately.
  • Optional banner captions
  • Unbrowsable, private galleries
  • Thumbnail cache for faster page loads
  • Support for png, jpg, bmp, mov, avi, mp3, mp4
  • Automatic image rotation of jpegs with exif orientation

To Do:

  • 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.
  • Optional caching
  • URL for gallery target instead of file pathing

Notes:

  • The default WordPress page width is a bit small for a gallery.  I use the excellent Atahualpa theme and increase the page width to a modern browser standard.  If you want to squeeze UnGallery into a small width WordPress install, you’ll want to update the width of the thumbnails it generates.  See the readme file.
  • This plugin is still young, so there will be things to fix.  Feel free to use it, extend it or contact me with questions.
  • Much is taken from other sources and noted inline.

Download:

  • Grab the current version at WordPress.org.
  • The installation steps are mostly standard, though there are couple simple, extra steps, noted in the instructions.

A Hybrid Fence

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.

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.

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.

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!

Configuration Automation

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 to install after the Linux bootstrap completes and was published in February on the FiveRuns blog. I’ve archived those posts here with additional comments.

The current post: Automatic Rails Applications

The previous post: Automatic Production Rails

The original post: Automatic Rails at Slicehost

Automatic Rails Applications

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 order to automatically install the Rails apps. This is because Passenger uses virtual hosts to direct traffic to each app.
  • 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.

Some potential future enhancements:

  1. Enter the password only once or pull it from a hash file
  2. Alternately, install a key pair to the new server automatically so the password isn’t needed after the first ssh connection.
  3. Add additional Rails applications
  4. 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.

The Original Article Follows:

Welcome to the third installment of configuration-automation, 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 Phusion Passenger. Four popular Rails applications: Radiant, Spree, jobberRails and El Dorado are available to be deployed automatically.

What’s Needed

All you need is Capistrano and git 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 Slicehost VM or VMWare image.

Using The Script

Just download the files from github and run:
git clone git://github.com/mmond/configuration-automation.git
cd ./configuration-automation
git checkout -b origin/production-v1
sh configure_ubuntu.sh

What Happens

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 ssh key pair to skip those prompts.

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.

Why Do This?

With no DSL 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 Manage and TuneUp 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.

It’s not intended to meet the meet the same needs as more powerful tools like Puppet, or now Chef, though you could easily add these after running configuration-automation. For EC2 environments, also check out Matt Conway’s cool Rubber Capistrano/Rails plugin.

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 my blog.