<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="http://feeds.feedburner.com/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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" version="2.0">

<channel>
	<title>Put Together Quickly</title>
	
	<link>http://michael.biven.org</link>
	<description />
	<pubDate>Thu, 20 Nov 2008 17:45:43 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.3</generator>
	<language>en</language>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/PutTogetherQuickly" type="application/rss+xml" /><item>
		<title>2400 miles later</title>
		<link>http://michael.biven.org/2008/11/09/2400-miles-later/</link>
		<comments>http://michael.biven.org/2008/11/09/2400-miles-later/#comments</comments>
		<pubDate>Sun, 09 Nov 2008 22:21:29 +0000</pubDate>
		<dc:creator>michaelb</dc:creator>
		
		<category><![CDATA[Featured]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[Sys Admin]]></category>

		<category><![CDATA[Work]]></category>

		<guid isPermaLink="false">http://michael.biven.org/?p=90</guid>
		<description><![CDATA[It has been a busy last couple of months for me with a cross country move and a new job.
I drove across the country (the third such road trip this year) from Frankfort, KY to Alameda, CA to move in with girlfriend, Bay Area photographer Lane Hartwell. Who I&#8217;ve had a wonderful summer with driving [...]]]></description>
			<content:encoded><![CDATA[<p>It has been a busy last couple of months for me with a cross country move and a new job.</p>
<p>I drove across the country (the third such <a href="http://flickr.com/photos/michaelbiven/sets/72157608056417570/">road trip</a> this year) from Frankfort, KY to Alameda, CA to move in with girlfriend, Bay Area photographer <a href="http://fetching.net/">Lane Hartwell</a>. Who I&#8217;ve had a wonderful summer with driving twice together cross-country, including driving through parts of Route 66. Driving 2400 plus miles with two cats was a test in patience requiring a stop every four or so hours to give both the cats and me a break. </p>
<p>The new job is working as the systems administrator with <a href="http://www.crowdscience.com/">Crowd Science</a> at their new office in Mountain View ( I do get to telecommute too). It is a great opportunity with plenty of technical challenges to sort out and I&#8217;m getting to work with some really sharp people who genuinely believe in their product and work. Like making real changes in the way online research is done. If you are an online publisher and looking for an audience analytics service take a look at <a href="http://www.crowdscience.com/overview/">Crowd Science Demographics</a>.</p>
<p>The new job included a new MacBook Pro maxed out on memory which makes running some Solaris VMs in Fusion a breeze for testing. Being a Python shop this is letting me get up to speed on it and Django.  I&#8217;ve always had the opinion of eating your own dog food so I&#8217;m planning to build a site using <a href="http://www.blueprintcss.org/">BluePrintCSS</a> as I have it laid out <a href="http://biven.org/">here</a> as a template and migrate over to Django here very soon.</p>
<img src="http://feeds.feedburner.com/~r/PutTogetherQuickly/~4/447787397" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michael.biven.org/2008/11/09/2400-miles-later/feed/</wfw:commentRss>
		<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=PutTogetherQuickly&amp;itemurl=http%3A%2F%2Fmichael.biven.org%2F2008%2F11%2F09%2F2400-miles-later%2F</feedburner:awareness></item>
		<item>
		<title>Millennium Falcon Cake: The KY to Maryland run in Less Than Nine Hours</title>
		<link>http://michael.biven.org/2008/07/14/millennium-falcon-cake/</link>
		<comments>http://michael.biven.org/2008/07/14/millennium-falcon-cake/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 16:03:32 +0000</pubDate>
		<dc:creator>michaelb</dc:creator>
		
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://michael.biven.org/?p=84</guid>
		<description><![CDATA[

Photo by Michael Biven
First thanks to everyone who helped pull this off: Mom, Dad, Carrie, Lane, Kegan, Biddy, Tom, Charm City Cakes, the staff at Tsunami&#8217;s Baltimore and everyone who showed up. Without these people the event wouldn&#8217;t have happened, the cake would not have been made and I would have probably had a heart [...]]]></description>
			<content:encoded><![CDATA[<p><a title="Millennium Falcon Cake" href="http://www.flickr.com/photos/michaelbiven/sets/72157606164278575"><img src="http://michael.biven.org/blog/wp-content/uploads/2008/07/mil-fal-ccc.jpg" alt="Millennium Falcon Caker" /></a></p>
<p><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/><br/></p>
<p>Photo by <a href="http://michael.biven.org">Michael Biven</a></p>
<p>First thanks to everyone who helped pull this off: Mom, Dad, Carrie, Lane, Kegan, Biddy, Tom, Charm City Cakes, the staff at Tsunami&#8217;s Baltimore and everyone who showed up. Without these people the event wouldn&#8217;t have happened, the cake would not have been made and I would have probably had a heart attack from stressing out trying to have everything work out. Thank you all big time!</p>
<p>UPDATE 7/15 : Charm City Cakes emailed me today to say they are glad the cake was a hit and that it should appear in an episode in September.</p>
<p>A little over four months ago I started hatching a plan to surprise my brother Brian with a birthday party at Tsunami’s in Baltimore. The idea was to have some family and friends to come in from his home town of Louisville to surprise him with his friends in Maryland and a cake from Charm City Cakes. With Brian’s job and CCC both in Baltimore it seemed like the perfect over the top way to celebrate his birthday. The original idea for the cake was a simple round cake with some type of collage of little bits of his life; music (he plays in a couple of local bands), Tsunami’s (he manages and helped open the Baltimore location) and Star Wars (from his childhood). After talking with Mary Alice at CCC the idea of doing the Millennium Falcon was brought up and after thinking it over that is what we stuck with.</p>
<p>Brian tried very hard to wreck the plans twice. Originally he told me he was going to be working on his birthday which was going to make it hard to smuggle everyone into the restaurant plus the cake. Later I found out he had the day off and had a show scheduled  with one of his bands, but with Carrie’s help we were able to get that show cancelled. Then he tells me he was thinking about leaving the restaurant and moving back to Louisville, I had to ask him to not rush into anything and at least wait till after his birthday since I had not seen the Baltimore location (there is a Tsunami’s in Annapolis as well). The last thing that complicated things was that Lane and I had to drive in that morning from Kentucky and the GPS unit was not set correctly for DST and was showing us an incorrect arrival time. It was our responsibility to get Brian there at 6 PM and CCC was scheduled to be there about 6:15. A few frantic phone calls later with Lane’s, Carrie’s and Mary Alice’s help everything was taken care of and we arrived with Brian a bit late surprising him with a group of close family and friends and a very kick ass cake!</p>
<p>Keep an eye out for the episode later this year on Ace of Cakes. I have a feeling that it will be the one were Duff is in Louisville delivering a cake to the Lebowski Fest. Brian was great on camera, but for myself I don’t think they ever had a person who will be blipped so much in what gets aired. I was a bit excited, relieved and that was the first and last surprise party I ever organize.</p>
<p>Added for those viewing this in a feed reader and not seeing the comments. As Lane pointed out the cake was chocolate cherry with the cockpit and several of the other details made out of a very dense rice krispie treat. There was a couple of wooden dow rods to keep two pieces of the cake attached and it was mounted on a pedestal to give the look it was in flight. We did start to wonder how we would cut the cake, but Lane had the great idea to grab a knife from one of the sushi chefs there and as soon as it was in Brian&#8217;s hands he had no problem dismantling the ship. Another comment or assumption made by people is that it would not taste as good as it looked, while fondate isn&#8217;t the best the cake and the rice krispie tasted great. I don&#8217;t remember seeing anyone without a smile eating the cake and even with the large amount of fondate there was plenty of cake to go around.</p>
<p>Thanks for the comments, it was a great addition to Brian&#8217;s surprise party and to a very long week. Lane and I drove from San Francisco, CA to Louisville, KY; got a few days break and then drove from Kentucky to Annapolis, MD to check into our hotel, grab Brian and rush out to the restaurant in Baltimore.</p>
<img src="http://feeds.feedburner.com/~r/PutTogetherQuickly/~4/335209603" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michael.biven.org/2008/07/14/millennium-falcon-cake/feed/</wfw:commentRss>
		<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=PutTogetherQuickly&amp;itemurl=http%3A%2F%2Fmichael.biven.org%2F2008%2F07%2F14%2Fmillennium-falcon-cake%2F</feedburner:awareness></item>
		<item>
		<title>Migrating WordPress to a different domain or server</title>
		<link>http://michael.biven.org/2008/01/31/migrating-wordpress-to-a-different-domain-or-server/</link>
		<comments>http://michael.biven.org/2008/01/31/migrating-wordpress-to-a-different-domain-or-server/#comments</comments>
		<pubDate>Thu, 31 Jan 2008 20:12:19 +0000</pubDate>
		<dc:creator>michaelb</dc:creator>
		
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://michael.biven.org/2008/01/31/migrating-wordpress-to-a-different-domain-or-server/</guid>
		<description><![CDATA[Two common questions I see both at work and from friends is how best to migrate a WordPress site from one server to another or how to go about changing the Domain Name. There are four different scenarios that will affect the changes you would be making:
Changing the Domain Name only or in combination with [...]]]></description>
			<content:encoded><![CDATA[<p>Two common questions I see both at <a href="http://laughingsquid.net/">work</a> and from friends is how best to migrate a WordPress site from one server to another or how to go about changing the Domain Name. There are four different scenarios that will affect the changes you would be making:</p>
<p>Changing the Domain Name only or in combination with one of the scenarios below<br />
Moving from one self-installed server to another self-installed server<br />
Moving from a self-installed server to WordPress.com<br />
Moving from WordPress.com to a self-installed server</p>
<p>Below are the steps that I suggest including backups, starting DNS changes, configuring the new server, database import and changes, verifying the new server, final DNS changes, 301 redirects and final verification. I will point out which applies to each of the different scenarios and also briefly go over a few tools that can help at the end of the guide. Remember though I don&#8217;t expect anything bad to happen this guide is completely use at your own risk and I do not take responsibility for anything resulting from following them.</p>
<h3>Backup:</h3>
<p>(applies to all four scenarios)</p>
<p>The very first thing to do is make a complete backup of the existing site for a few different reasons. First if you really do care about the work and effort you are putting into your site take the extra time to backup it up on some sort of regular schedule. Next is that we are about to make changes to the site and you will want a recent (as in the day your making the changes) backup to fall back on just in case something goes awry. And if you are moving from a self-installed copy of WordPress to another you will already have a copy of the plugins, themes and uploads to copy over to the new server. You do already have a <a href="http://michael.biven.org/2008/01/23/optimizing-performance-for-wordpress/">current copy of WordPress and any plugins</a> you have installed right?</p>
<p>So now on to backing up your site. I would suggest that you follow <a href="http://lorelle.wordpress.com/2005/09/20/backing-up-wordpress/">Lorelle&#8217;s guide</a> to create a backup for WordPress and keep in mind the XML export would be needed if you are migrating from or to WordPress.com.</p>
<h3>First set of DNS changes:</h3>
<p>(applies to all four scenarios)</p>
<p>Try to make the following changes in DNS at least 24 hours before you plan to switch to the new domain name or server. Drop the Time To Live (TTL) for the A record that the blog uses down to something like 300 (make note of it&#8217;s original setting since you will need to change it back later). The TTL is in seconds so the 300 is equal to 5 minutes. During the migration to the new server you will be getting a new IP address, this way the TTL is dropped and since you made the change at least 24 hours before your migration you should only be looking at a 5 minute hiccup during the switch to the new server.</p>
<h3>Configuring the new server:</h3>
<p>(applies to all four scenarios)</p>
<p>Next on the new server go ahead and complete the basic install of WordPress. If you are moving to WordPress.com configure the new site, keep it set to private, but do not enable the domain alias at this point (under Options &gt; Domains). For self-installed copies of WordPress depending on what type of access you have with the server you may need to edit your <a href="http://en.wikipedia.org/wiki/Hosts_file">hosts file</a> on your local computer to complete the install since you do not have DNS pointing to the new IP address, specifically when you run the file wp-admin/install.php.</p>
<h3>Importing the data:</h3>
<p>(applies to all four scenarios)</p>
<p>Now that we have the basic WordPress site completed it is time to import the data (posts, comments, pages) into the new server. Remember if you will be changing the Domain Name as well you will need to make the necessary changes in two tables in the database which I will go over at the end of this step.</p>
<p>If you are moving from one self-installed copy of WordPress to another use the backup of the database to create a new database on the new server. You will need to recreate the database user and edit the file wp-config.php to reflect any changes in the database name, user and password.</p>
<p>If you are moving to or from  WordPress.com you will only be able to import the data to the new server from the XML export you created earlier. From the dashboard at the new WordPress.com site go to Manage &gt; Import and then select WordPress. You will then be prompted to browse to the location of the XML from the previous export. Also when importing the file you will be asked if you want to change the author for the posts and drafts you are importing.</p>
<p>If you have changed the domain name used for the site and used the database backup to import your data you will need to make changes to two different tables. We need to change the  Blog Address (URL), WordPress Address (URL) and the GUID for the posts. The Blog Address is listed as siteurl in the field option_name and the WordPress Address is home in the same field. You can use either phpMyAdmin or mysql if you have shell access, but the examples I give will be using phpMyAdmin.</p>
<p>The first two fields are located in the tables wp_options. After logging into phpMyAdmin click on the name of the database in the left hand side (you will need to select it form the drop down box if you have multiple databases) and then click on the SQL tab at the top of the page. In the &#8220;Run SQL query/queries&#8221; text box enter the following and press &#8220;Go&#8221; to change the Blog Address (URL):</p>
<pre>UPDATE wp_options SET option_value =</pre>
<pre>replace(option_value, 'http://old.domain.com', 'http://new.domain.com')</pre>
<pre>WHERE option_name = 'home';</pre>
<p>And to change the WordPress Address (URL):</p>
<p>(remember if you have your WordPress files in its own <a href="http://codex.wordpress.org/Giving_WordPress_Its_Own_Directory">separate directory</a> this URL will be different than the Blog Address)</p>
<pre>UPDATE wp_options SET option_value =</pre>
<pre>replace(option_value, 'http://old.domain.com', 'http://new.domain.com')</pre>
<pre>WHERE option_name = 'siteurl';</pre>
<p>To update the GUID with the new domain name enter:</p>
<pre>UPDATE wp_posts SET guid = replace(guid, 'http://old.domain.com','http://new.domain.com');</pre>
<p>And for any links to other pages or posts internally in your site with absolute URLs:</p>
<pre>UPDATE wp_posts SET post_content =</pre>
<pre>replace(post_content, 'http://old.domain.com', 'http://new.domain.com');</pre>
<p>Now that we have the data over get your theme and any plugins that you will be using configured on the new site.</p>
<h3>Checking our work up to this point:</h3>
<p>(applies to all four scenarios)</p>
<p>At this point you should have the new site up and running on the new server, but before we make it live by updating DNS with the new IP address or enabling the domain alias in WordPress.com you should take a moment to verify (thanks to the edit to the hosts file) that everything looks and behaves correctly. Consider viewing the site both while you are logged in as an admin and while logged out. You won&#8217;t be able to view a WordPress.com site while logged out unless you create a new user account and grant it permissions to access the site under Options &gt; Privacy.</p>
<h3>Final changes to DNS:</h3>
<p>(applies to all scenarios)</p>
<p>After you are satisfied with the new install make the final change to DNS by either changing the A record or enabling the domain alias in WordPress.com. The changes for the A record includes updating it with the new IP address and changing the TTL back to it&#8217;s original setting.</p>
<h3>301 redirects:</h3>
<p>(applies to scenarios where the domain name changes)</p>
<p>So you just changed the domain name for the site and you might be asking yourself what about any links to the old domain name that are still getting spit out by search engines. You can take care of this with a simple .htaccess file in the root of your old domain names web server. Simply create or edit the file to include the following:</p>
<pre>RedirectMatch permanent (.*) http://new-doamin.com$1</pre>
<p>This will send any links to the old domain to their corresponding page at the new domain name as long as you do not make changes in the permalink structure. The longer you can leave this the better, but you should start seeing search engines updating with the new link, because we used a permanent redirect.</p>
<h3>Final checks:</h3>
<p>(applies to all scenarios)</p>
<p>It would be easy to think you&#8217;re done and stop right here, but I would suggest a couple more checks. Though you might have to wait a few hours or a day depending on how you made your DNS changes, take advantage of <a href="http://www.google.com/webmasters/start/%23utm_source=en-et-wc&amp;utm_medium=et&amp;utm_campaign=sitemaps-us-wc">Google&#8217;s Webmaster tools</a>, the <a href="http://feedvalidator.org/">Feed Validator</a>, or <a href="http://siteexplorer.search.yahoo.com/">Yahoo! Site Explorer</a> to verify your sites robots.txt, sitemap, and any errors that they encounter with your site or feed. Also keep an eye on your bandwidth after the change just in case you have misconfigured something that is causing any problems with the site making calls to itself (ie using the RSS widget to load its own RSS feed) or anything else that we might not think of at the moment.</p>
<h3>Closing and additional tools to help:</h3>
<p>If you are planning on moving your site I hope you&#8217;ve found this guide useful, good luck and enjoy.</p>
<p>A few additional tips to help you check things as you go or troubleshoot (hopefully not) any problems.</p>
<h4>Flush your local DNS cache:</h4>
<p>In addition to making the changes in your local compuaters hosts file you may need to clear out your local DNS cache.</p>
<p>Mac OS 10.4 and older:</p>
<pre>lookupd -flushcache</pre>
<p>Mac OS 10.5:</p>
<pre>dscacheutil -flushcache</pre>
<p>Windows XP and newer (might work on Windows 2000):</p>
<pre>ipconfig /flushdns</pre>
<h4>Query DNS servers with dig:</h4>
<p>Being able to query the DNS server you are using or others is another handy skill to have when your mucking around in your sites DNS. On a Mac running OS X or Linux you can query your&#8217;s and other DNS server to see what they have listed for your domain using dig.</p>
<p>check your current DNS server for the A record</p>
<pre>dig domain.com</pre>
<p>check your current DNS server for the MX record</p>
<pre>dig domain.com mx</pre>
<p>check your current DNS server for the A record on a subdomain</p>
<pre>dig sub.domain.com</pre>
<p>check a different DNS server for the A record</p>
<pre>dig @DNS.server.com domain.com</pre>
<p>check a different DNS server for the MX record</p>
<pre>dig @DNS.server.com domain.com mx</pre>
<p>check a different DNS server for the A record on a subdomain</p>
<pre>dig @DNS.server.com sub.domain.com</pre>
<img src="http://feeds.feedburner.com/~r/PutTogetherQuickly/~4/226755368" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michael.biven.org/2008/01/31/migrating-wordpress-to-a-different-domain-or-server/feed/</wfw:commentRss>
		<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=PutTogetherQuickly&amp;itemurl=http%3A%2F%2Fmichael.biven.org%2F2008%2F01%2F31%2Fmigrating-wordpress-to-a-different-domain-or-server%2F</feedburner:awareness></item>
		<item>
		<title>Tumbleblogs and reblogging</title>
		<link>http://michael.biven.org/2008/01/28/tumbleblogs-and-reblogging/</link>
		<comments>http://michael.biven.org/2008/01/28/tumbleblogs-and-reblogging/#comments</comments>
		<pubDate>Tue, 29 Jan 2008 04:28:20 +0000</pubDate>
		<dc:creator>michaelb</dc:creator>
		
		<category><![CDATA[Microformats]]></category>

		<category><![CDATA[Tumbleblog]]></category>

		<guid isPermaLink="false">http://michael.biven.org/2008/01/28/tumbleblogs-and-reblogging/</guid>
		<description><![CDATA[There has been an interesting conversation bouncing between a few tumbleblogs over at Tumblr on reblogging and how tumbleblogs compliment blogs that got me thinking on how Tumblr&#8217;s reblog button can be improved and to improve comments for blogs.
If you&#8217;re not familiar with the term a tumbleblog is a short version of a what we [...]]]></description>
			<content:encoded><![CDATA[<p>There has been an <a href="http://numblr.nostrich.net/post/24772766">interesting</a> <a href="http://numblr.nostrich.net/post/24877572">conversation</a> bouncing between a few tumbleblogs over at <a href="http://www.tumblr.com/">Tumblr</a> on reblogging and how tumbleblogs compliment blogs that got me thinking on how Tumblr&#8217;s reblog button can be improved and to improve comments for blogs.</p>
<p>If you&#8217;re not familiar with the term a tumbleblog is a short version of a what we now know as a blog combining different media types (audio, video, pictures, links, quotes, conversations (ITC / Tweets), and code snippets). Think of the <a href="http://www.flickr.com/groups/moleskinerie/">Moleskin galleries</a> you might have seen on Flickr with everything from notes, sketches and poems as an analog version of a tumbleblog. It is not so much as moving blogging in a new direction, but really just <a href="http://en.wikipedia.org/wiki/Blog#1983.E2.80.931990_.28Pre-HTTP.29">going back</a> to what it used to be before permalinks, Google and Digg.</p>
<p>One thing Tumblr does <a href="http://newcritics.com/blog1/2008/01/26/the-reblog-button">very well</a> is allowing people to use their &#8220;reblog&#8221; button to quickly add content from other sites hosted on Tumblr and still give attribution to the original author. The drawback is that both the original content and the persons site needs to be hosted on Tumblr. I think we would be better off if popular CMS&#8217;s like WordPress, Drupal and others started adding the authors name, blog&#8217;s title, and the post&#8217;s title in one of the available microformats (not sure which if any would be the best to use, still reading through them). Not only would a bookmarklet or other tool be possible to work just like the &#8220;reblog&#8221; button for any site supporting this, but other services like Ma.gnolia and Del.icio.us would have an easier time pulling in some basic information for a site or post.</p>
<p>While some probably would not view them as a true tumbleblog both <a href="http://www.planetplanet.org/">Planet</a> and <a href="http://www.feedjack.org/">Feedjack</a> have and can be used to create your own. Remember with exception to adding options to change your theme, create posts and additional features like the &#8220;reblog&#8221; button most tumbleblogs will just pull in a set feeds that you give it. And that last part is pretty much all what Planet and Feedjack does. Some of the earlier examples of Planet that I came across were usually for a Linux group pulling in their members blog feeds (maybe even for a specific linux feed) and conversations from a IRC bot they would have running in their channel. Very stream of conscious and I can remember seeing many a conversation playing out in it. If you were to see the members individual site these little messages wouldn&#8217;t make since at all unless you viewed after they had been pooled together using the Planet.</p>
<p>Taking that idea of how those conversations worked across multiple sites I&#8217;m playing with the idea of moving the comments on a blog over to a service like Twitter or Pownce. This would get (hopefully) more people involved or at least following the conversation. The only downside would be starting to see more spam ending up in either service.</p>
<img src="http://feeds.feedburner.com/~r/PutTogetherQuickly/~4/224993795" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michael.biven.org/2008/01/28/tumbleblogs-and-reblogging/feed/</wfw:commentRss>
		<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=PutTogetherQuickly&amp;itemurl=http%3A%2F%2Fmichael.biven.org%2F2008%2F01%2F28%2Ftumbleblogs-and-reblogging%2F</feedburner:awareness></item>
		<item>
		<title>Installing Ruby on Rails on Mac OS 10.5 or patching Dan Benjamin’s guide</title>
		<link>http://michael.biven.org/2008/01/25/installing-ruby-on-rails-on-mac-os-105-or-patching-dan-benjamins-guide/</link>
		<comments>http://michael.biven.org/2008/01/25/installing-ruby-on-rails-on-mac-os-105-or-patching-dan-benjamins-guide/#comments</comments>
		<pubDate>Sat, 26 Jan 2008 02:34:25 +0000</pubDate>
		<dc:creator>michaelb</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Ruby]]></category>

		<guid isPermaLink="false">http://michael.biven.org/2008/01/25/installing-ruby-on-rails-on-mac-os-105-or-patching-dan-benjamins-guide/</guid>
		<description><![CDATA[Update: Dan has posted his updated guide for installing Ruby on Rails on Leopard.
I don&#8217;t think there are too many people who hasn&#8217;t come across either of Dan Benjamin&#8217;s guides when looking to install Ruby on Rails on a Mac. They are simple, to the point and you could basically copy and paste to get [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Update</strong>: Dan has <a href="http://hivelogic.com/articles/ruby-rails-leopard/">posted</a> his updated guide for installing Ruby on Rails on Leopard.</p>
<p>I don&#8217;t think there are too many people who hasn&#8217;t come <a href="http://hivelogic.com/articles/ruby-rails-mongrel-mysql-osx/">across</a> <a href="http://hivelogic.com/narrative/articles/ruby_rails_lighttpd_mysql_tiger">either</a> of Dan Benjamin&#8217;s guides when looking to install Ruby on Rails on a Mac. They are simple, to the point and you could basically copy and paste to get Ruby, Rails, MySQL and depending on which guide either Mongrel or LightTPD installed, but since the release of Leopard the instructions if unaltered would fail when installing Readline, Ruby and Subversion. Dan has <a href="http://hivelogic.com/articles/installing-rails-on-leopard-article-coming-soon/">mentioned</a> that he will be providing an update to the guide for Leopard users, but with a new baby and job it might (and justifiably so) be a bit before he has the chance to finish them. What I&#8217;m going to cover are the additional steps I added to Dan&#8217;s guide to get everything up and running for me. First thing to do is read his guide making sure to note the following sections: What&#8217;s needed (except we are using OS 10.5 and Xcode 3.0), bash, Quick Warning, sudo and paths. To get the parts of Dan&#8217;s guide that would fail to work we will be applying some patches to Readline, Ruby and Subversion. If you are uncomfortable with this then I would suggest that you wait for his updated guide. And if you haven&#8217;t already tried installing the unaltered version on Leopard, consider running through each step to see the error before and after the patches. And remember just as he points out himself these instructions are completely use at your own risk and I do not take responsibility for anything resulting from following them.</p>
<h3>Before you begin</h3>
<p>Make sure to follow the steps from his guide to install Xcode, update your path and create the directory at /usr/local/src if you have not already done so.</p>
<h3>Ruby</h3>
<p>If you have tried his guide while using Leopard you probably got stuck at the first step when trying to compile readline. You will need to apply a <a href="http://ftp.gnu.org/gnu/readline/readline-5.2-patches/readline52-012">patch</a> from the developers, because the unpatched version of readline checks for the version of the operating system but does not include darwin9 (Leopard) in it&#8217;s list. We will be applying a patch to the file support/shobj-conf located in the readline-5.2 directory in /usr/local/src/ and then we can compile it without getting an error. You should also notice that we are installing the latest stable version.</p>
<pre>curl -O ftp://ftp.gnu.org/gnu/readline/readline-5.2.tar.gz</pre>
<pre>tar xzvf readline-5.2.tar.gz</pre>
<pre>cd readline-5.2</pre>
<pre>curl -O http://ftp.gnu.org/gnu/readline/readline-5.2-patches/readline52-012</pre>
<pre>patch -p0 &lt; readline52-012</pre>
<pre>./configure --prefix=/usr/local</pre>
<pre>make</pre>
<pre>sudo make install</pre>
<pre>cd ..</pre>
<pre></pre>
<p>And now on to installing Ruby. While looking into why Ruby would segfault during the install I came across  Laurent Sansonetti&#8217;s <a href="http://www.ruby-forum.com/topic/131149#585198">explanation</a> and the set of <a href="http://www.ruby-forum.com/topic/129201">patches</a> that are applied to Ruby by Apple for the version that Mac OS ships with.</p>
<pre>curl -O ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6-p111.tar.gz</pre>
<pre>tar xzvf ruby-1.8.6-p111.tar.gz</pre>
<pre>cd ruby-1.8.6-p111</pre>
<pre>curl http://chopine.be/lrz/ruby-osx-patches/dot-darwin.diff | patch -p0</pre>
<pre>curl http://chopine.be/lrz/ruby-osx-patches/etc-irbrc.diff | patch -p0</pre>
<pre>curl http://chopine.be/lrz/ruby-osx-patches/ignore-gsetcontext.diff | patch -p0</pre>
<pre>curl http://chopine.be/lrz/ruby-osx-patches/md5_sha1_commoncrypto.diff | patch -p0</pre>
<pre>curl http://chopine.be/lrz/ruby-osx-patches/use-dyld.diff | patch -p0</pre>
<pre>curl http://chopine.be/lrz/ruby-osx-patches/use-setreugid.diff | patch -p0</pre>
<pre>curl http://chopine.be/lrz/ruby-osx-patches/words-bigendian-from-arch.diff | patch -p0</pre>
<pre>./configure --prefix=/usr/local --enable-pthread --with-readline-dir=/usr/local --enable-shared</pre>
<pre>make</pre>
<pre>sudo make install</pre>
<pre>sudo make install-doc</pre>
<pre>cd ..</pre>
<pre></pre>
<pre></pre>
<h3>RubyGems</h3>
<p>Only change here is using the current version.</p>
<pre>curl -O http://files.rubyforge.mmmultiworks.com/rubygems/rubygems-1.0.1.tgz</pre>
<pre>tar xzvf rubygems-1.0.1.tgz</pre>
<pre>cd rubygems-1.0.1</pre>
<pre>sudo /usr/local/bin/ruby setup.rb</pre>
<pre>cd ..</pre>
<pre></pre>
<h3>Ruby on Rails</h3>
<pre>sudo gem install rails --include-dependencies</pre>
<pre></pre>
<p>Remember one change in Rails 2.0.2 is that SQLite3 is now the default database. When you followed Dan&#8217;s instructions and changed the path you lost the SQLite3 bindings for Rails that Leopard ships with so we need to add them back.</p>
<pre>gem install sqlite3-ruby</pre>
<pre></pre>
<h3>Mongrel</h3>
<p>Just like RubyGems no changes here except it will be grabbing the latest version.</p>
<pre>sudo gem install mongrel --include-dependencies</pre>
<pre></pre>
<h3>Subversion</h3>
<p>This would be the next step that you should see an error while following the unaltered guide. I came across a <a href="http://www.briandwells.com/main/Files.html">patch</a> from <a href="http://www.briandwells.com/main/Blog/Entries/2007/4/22_More_on_Subversion%2C_Mac_OS_X%2C_and_SMB.html">Brian D. Well</a>s that allowed for me to complete the install.</p>
<pre>curl -O http://subversion.tigris.org/downloads/subversion-1.4.6.tar.gz</pre>
<pre>curl -O http://subversion.tigris.org/downloads/subversion-deps-1.4.6.tar.gz</pre>
<pre>tar xzvf subversion-1.4.6.tar.gz</pre>
<pre>tar xzvf subversion-deps-1.4.6.tar.gz</pre>
<pre>cd subversion-1.4.6</pre>
<pre>curl -O http://homepage.mac.com/brianwells/.Public/apr_darwin_smb_patch</pre>
<pre>patch -d apr -p0 &lt;apr_darwin_smb_patch</pre>
<pre>./configure --prefix=/usr/local --with-openssl --with-ssl --with-zlib</pre>
<pre>Edit the file /usr/local/src/subversion-1.4.6/apr/include/apr.h</pre>
<pre>Changing the line #define APR_HAS_SENDFILE 1 to #define APR_HAS_SENDFILE 0</pre>
<pre>make</pre>
<pre>sudo make install</pre>
<pre>cd ..</pre>
<pre></pre>
<h3>Capistrano</h3>
<pre>sudo gem install capistrano --include-dependencies</pre>
<pre>sudo gem install termios --include-dependencies</pre>
<pre></pre>
<h3>MySQL</h3>
<p>And finally we&#8217;re ready to follow Dan&#8217;s <a href="http://hivelogic.com/articles/installing-mysql-on-mac-os-x/">instructions</a> to install MySQL.</p>
<h3>Alternatives</h3>
<p>A big thanks to Dan for creating each of these guides and keeping them updated over the years.  I hope you find these additions useful and remember usually there are a few <a href="http://weblog.rubyonrails.org/2006/8/7/ruby-on-rails-will-ship-with-os-x-10-5-leopard">different</a> <a href="http://www.robbyonrails.com/articles/2008/01/22/installing-ruby-on-rails-and-postgresql-on-os-x-third-edition">alternatives</a> to doing something.</p>
<img src="http://feeds.feedburner.com/~r/PutTogetherQuickly/~4/223273671" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michael.biven.org/2008/01/25/installing-ruby-on-rails-on-mac-os-105-or-patching-dan-benjamins-guide/feed/</wfw:commentRss>
		<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=PutTogetherQuickly&amp;itemurl=http%3A%2F%2Fmichael.biven.org%2F2008%2F01%2F25%2Finstalling-ruby-on-rails-on-mac-os-105-or-patching-dan-benjamins-guide%2F</feedburner:awareness></item>
		<item>
		<title>Optimizing performance for WordPress</title>
		<link>http://michael.biven.org/2008/01/23/optimizing-performance-for-wordpress/</link>
		<comments>http://michael.biven.org/2008/01/23/optimizing-performance-for-wordpress/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 02:17:43 +0000</pubDate>
		<dc:creator>michaelb</dc:creator>
		
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://michael.biven.org/2008/01/23/optimizing-performance-for-wordpress/</guid>
		<description><![CDATA[Taking responsibility of your WordPress site by keeping it up to date to the latest version and managing itâ€™s load on the server hosting it is just as important as the content youâ€™re writing for it. Security updates, performance improvements and other bug fixes will help keep your site running smoothly, but there are a [...]]]></description>
			<content:encoded><![CDATA[<p>Taking responsibility of your WordPress site by keeping it up to date to the latest version and managing itâ€™s load on the server hosting it is just as important as the content youâ€™re writing for it. Security updates, performance improvements and other bug fixes will help keep your site running smoothly, but there are a few other steps you can take to improve it&#8217;s performance.</p>
<h3>Keeping WordPress in check:</h3>
<p>First thing is to make sure your install is current. Itâ€™s amazing the number of sites that you can come across that are still running older versions even with great tools like the <a href="http://techie-buzz.com/wordpress-plugins/wordpress-automatic-upgrade-plugin.html">Wordpress Automatic Upgrade</a> plugin written by Keith Dsouza of Techie Buzz which is a very simple way to update your site. It will backup your sites files and database, download the latest version of WordPress, place the site in maintenance mode (a simple splash screen), de-activate all plugins, updates WordPress and then reactivates the plugins after you have clicked the upgrade link. This step is probably one of the most missed tasks in maintaining your WordPress site and remember weâ€™re not just talking about performance improvements here, but also keeping it update to any available security patches and preventing exploits like <a href="http://ma.tt/2007/11/al-gore-hacked/">adding spam</a> or <a href="http://laughingsquid.com/wordpress-232-urgent-security-release/">reading</a> copies of your saved drafts.</p>
<h3>Caching in WordPress:</h3>
<p>After making sure you have the latest version installed using caching is one of the simplest ways to improve your sites load times and also help reduce its load on the server. Donncha O Caoimhâ€™s <a href="http://ocaoimh.ie/wp-super-cache/">WordPress Super Cache</a> plugin is an improved version of the <a href="http://mnm.uib.es/gallir/wp-cache-2/">WP-Cache 2</a> plugin by Ricardo Galli Granda. One improvement is that unlike the WP-Cache 2 plugin Super Cache will actually create a static HTML page instead of still having some PHP calls when served from the cache. It will serve simple HTML without having to use any PHP as long as the user visiting the site is not logged in or has not posted a comment. If they have commented or are logged in and tries to load a cached page the normal WP-Cache function will serve the page, but one of the best features of this plugin is the â€œLockDownâ€ button. This will prevent the cache files from being deleted when a new comment is made. So if you think a post of yours is going to get hit by Digg or Slashdot you can have the server ready for the traffic or simply enable this after noticing any high traffic.</p>
<h3>Comment and Pingback Spam:</h3>
<p>Besides being just plain annoying comment and pingback spam can actually increase the load generated by your site. First make sure you are using the Akistmet plugin that comes with WordPress, then take a look at the using the comment blacklist feature under Options &gt; Discussion. This will help reduce the number of spam that finds its way into your comments and pingbacks, but we also want to prevent blatant spam from posting at all to keep your queue of stuff marked as such as low as possible. To do that you can add some additional lines to your sites .htaccess file that I found at <a href="http://perishablepress.com/press/2006/11/20/block-spam-by-denying-access-to-no-referrer-requests/">Perishable Press</a>. By adding the rule found at the previous link you can keep any spammer from directly calling the file wp-comments-post.php to post a comment. If you do find that you have a large number of items marked as spam (hundreds or more of pages when you got to Comments &gt; Akismet Spam) keep in mind that Akismet will automatically delete messages marked as spam greater than 15 days old. Depending on how your sever is performing itâ€™s possible you might see the site slow down while its deleting all of those items marked as spam (a little later Iâ€™ll show you a tool that will help see what is going on in the background).</p>
<h3>Offload as much as possible:</h3>
<p>Any images, videos, audio,  CSS and JavaScript files that you are serving from your server increase the number of requests that the web browser makes each time it loads your site. The good thing is that there are some very simple alternatives to place these files on a different server that is configured especially to serve static files. Instead of just using the obvious services from Flickr and YouTube for images and videos you can also use services like <a href="http://www.amazon.com/gp/browse.html?node=16427261">Amazonâ€™s S3</a> to serve the CSS and any JavaScript files that your site is using. Also take a look at any additional JavaScript that you are adding for statistics, ads, calendars or basically any other information your are adding to it that is not a post or page. Consider using a web statistics product that is hosted on a different server (Google Analytics) instead of one that is served from your site like Mint for example. Other web stats tools like AWStats and Webalizer donâ€™t actually place any scripts on the site, but instead use the web servers access logs to generate the statistics, either of these tools would allow you  to remove a call to any type of a webstats tool, but remember these are generally created from a scheduled job that is run and would not provide you with any type of real time reporting.</p>
<h3>Pruning the Plugins:</h3>
<p>If there are any plugins that you are not using you should deactivate and remove them from the wp-contents/plugins directory. After that take a close look at each plugin and try to determine the value your site gets out of it and what actually goes on in the background when the it is used. In the next section Iâ€™ll briefly go over a few tools that you can use, but remember to check both the <a href="http://codex.wordpress.org/Main_Page">WordPress Codex</a>, <a href="http://wordpress.org/support/">forums</a> and the plugins site as some of the question youâ€™re about to ask may already been answered. If the plugin actually interacts with the database look at the number of queries that it is sending to it and try to determine if it using any type of caching or can be rewritten without using the database. If you are lucky enough to find a way to improve itâ€™s performance make sure to submit a patch to the plugins author to allow others to benefit from your hard work.</p>
<h3>How to see what is going on:</h3>
<p>Here are a few tools you can use to see what is going on in the background on the web server your site is hosted on.</p>
<h4>Firebug</h4>
<p>A Firefox <a href="http://www.getfirebug.com/">add-on</a> giving you tools to edit, troubleshoot and view CSS, HTML and JavaScript in real time for a web page. Allowing you to see the load times and sizes of individual files (images, CSS and JavaScript) it can help pin down what is slowing down a site.  And if you add the <a href="http://developer.yahoo.com/yslow/">YSlow</a> add-on from the Yahoo Developer Network it will integrate with Firebug to give you some feedback on your sites performance and some suggestions on how to improve things.</p>
<h4>LiveHTTPHeaders</h4>
<p>Another FireFox add-on <a href="https://addons.mozilla.org/en-US/firefox/addon/3829">LiveHTTPHeaders</a> will display the http headers showing you any redirects, sessions, cookies, compression or caching that may be happening when viewing your site.</p>
<h4>Mytop</h4>
<p>To see what queries are running in your database you could use <a href="http://jeremy.zawodny.com/mysql/mytop/">mytop</a> which is similar to the Top command, but looks at MySQL instead. This tool would require that you have shell access and the ability to install it if it is not already there, but itâ€™s a great way to see real time what your sites is asking the database for and to do.</p>
<h4>Access / Error logs</h4>
<p>Looking at your web servers access and error logs can give you a great deal of information. Being able to see any web server or PHP errors, where all of that traffic is coming from if the site starts to crawl to a halt from high traffic, if it is getting crawled or scraped by a bot, and can show suspicious activity.  If you see a problem or suspect something unusual is happening these logs should be one of the first places you look.</p>
<h4>Phpinfo</h4>
<p>And donâ€™t forget to take a look at how PHP is setup by using phpinfo. Create a file called phpinfo.php and enter only the following in it:</p>
<p>&lt;?php</p>
<p>phpinfo();</p>
<p>?&gt;</p>
<p>Save that and place it in your sites directory on the web server and you will be able to view the options, extensions, and a slew of additional information on PHP and the web server when you load the file in your web browser.</p>
<p>OK, that was a basic overview of some steps I take to optimize a WordPress site (or any site for that matter), but donâ€™t forget another way to keep things humming along would be to consider actually hosting it on <a href="http://wordpress.com/">WordPress.com</a>. Hopefully these steps will point you in the right direction to improving your site performance.</p>
<img src="http://feeds.feedburner.com/~r/PutTogetherQuickly/~4/222003823" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michael.biven.org/2008/01/23/optimizing-performance-for-wordpress/feed/</wfw:commentRss>
		<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=PutTogetherQuickly&amp;itemurl=http%3A%2F%2Fmichael.biven.org%2F2008%2F01%2F23%2Foptimizing-performance-for-wordpress%2F</feedburner:awareness></item>
		<item>
		<title>Encoding video for the Blackberry Curve on a Mac</title>
		<link>http://michael.biven.org/2007/06/21/encoding-video-for-the-blackberry-curve-on-a-mac/</link>
		<comments>http://michael.biven.org/2007/06/21/encoding-video-for-the-blackberry-curve-on-a-mac/#comments</comments>
		<pubDate>Thu, 21 Jun 2007 14:26:17 +0000</pubDate>
		<dc:creator>michaelb</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Blackberry]]></category>

		<guid isPermaLink="false">http://michael.biven.org/?p=297</guid>
		<description><![CDATA[After trying a few different methods (QuickTime Pro, iSquint) of encoding video for the Curve I&#8217;ve found a simple tool that works. Using Alec Peden&#8217;s Universal Build of mencoder and his Automator Workflow; converting a video  for the Curve was as simple as right clicking the file.
QuickTime Pro took too long and seemed to [...]]]></description>
			<content:encoded><![CDATA[<p>After trying a few different methods (QuickTime Pro, iSquint) of encoding video for the Curve I&#8217;ve found a simple tool that works. Using <a href="http://www.the8thsign.com/2006/11/22/encode-video-for-the-blackberry-pearl-8100-mac-edition/">Alec Peden&#8217;s</a> Universal Build of mencoder and his Automator Workflow; converting a video  for the Curve was as simple as right clicking the file.</p>
<p>QuickTime Pro took too long and seemed to hang, while iSquint worked fine except for the audio was out of sync. Menucoder worked perfectly the first time and in a reasonable amount of time too. Took an 173M AVI file down to 57M, plugged the Curve and now that I have the 2GB microSD card in it mounts as an external drive leaving me just the task of copying it over.</p>
<p>Having never messed around with Automator before this I&#8217;m thinking that between it and PocketMac I might not need to <a href="http://michael.biven.org/2007/06/15/using-the-blackberry-curve-8300-with-a-mac/">try</a> any other Blackberry to Mac syncing applications. If I can get Automator to recognize when a drive is mounted then I should be able to get it to copy audio, pictures or videos that I&#8217;ve recently re-encoded.</p>
<img src="http://feeds.feedburner.com/~r/PutTogetherQuickly/~4/218999557" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michael.biven.org/2007/06/21/encoding-video-for-the-blackberry-curve-on-a-mac/feed/</wfw:commentRss>
		<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=PutTogetherQuickly&amp;itemurl=http%3A%2F%2Fmichael.biven.org%2F2007%2F06%2F21%2Fencoding-video-for-the-blackberry-curve-on-a-mac%2F</feedburner:awareness></item>
		<item>
		<title>Using the Blackberry Curve (8300) with a Mac</title>
		<link>http://michael.biven.org/2007/06/15/using-the-blackberry-curve-8300-with-a-mac/</link>
		<comments>http://michael.biven.org/2007/06/15/using-the-blackberry-curve-8300-with-a-mac/#comments</comments>
		<pubDate>Fri, 15 Jun 2007 14:09:35 +0000</pubDate>
		<dc:creator>michaelb</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Blackberry]]></category>

		<guid isPermaLink="false">http://michael.biven.org/?p=291</guid>
		<description><![CDATA[I picked up a new Blackberry Curve (8300) last week as my new phone. Besides using it for work, its great to have IM with me as Carol can ping me when she is up and able to chat while she is in China.
PocketMac was included on the CD, but it still lags behind the [...]]]></description>
			<content:encoded><![CDATA[<p>I picked up a new Blackberry Curve (8300) last week as my new phone. Besides using it for work, its great to have IM with me as Carol can ping me when she is up and able to chat while she is in China.</p>
<p>PocketMac was included on the CD, but it still lags behind the native Windows Blackberry application. There is no way to manage the music, video, pictures or ring tones like you can with the native application and so far Iâ€™ve not been able to transfer files over Bluetooth originating from either the Curve or MacBook. So when the makers of PocketMac say:</p>
<blockquote><p> â€œ14 months of hard work, engineering and testing PocketMac For BlackBerry means you&#8217;ll never need a Windows-based PC to sync your crucial data with your BlackBerry device and that synching is fast and rock-solid. â€œ</p></blockquote>
<p>That is not necessarily the case. This included installing Google Talk, while the other Google service can be installed over the air it requires IE to install it. But having a camera readily available again is nice (Carol took ours to China), maybe I can upload some <a href="http://michael.biven.org/2007/06/12/staff-reporter-ejected-from-ncaa-baseball-game-for-live-blogging/">action shoots</a> from the next baseball game? I&#8217;m hoping when the microSD card comes in later today Iâ€™ll be able to mount the card through the terminal.</p>
<p>Tethering it as a Bluetooth modem was pretty simple; I used the script and instructions from <a href="http://forums.fibble.org/viewtopic.php?t=29">here</a>. Only thing I changed was updated the script to identify it as a 8300 instead of the 8800. It has worked fine except for this morning Iâ€™ve not been able to connect, but I made a change to the data plan yesterday (added the tethering option) and I think that has something to do with it.</p>
<p>Over a great phone and probably one of the better alternatives to the iPhone right now, it even includes a SDK.</p>
<img src="http://feeds.feedburner.com/~r/PutTogetherQuickly/~4/218999563" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michael.biven.org/2007/06/15/using-the-blackberry-curve-8300-with-a-mac/feed/</wfw:commentRss>
		<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=PutTogetherQuickly&amp;itemurl=http%3A%2F%2Fmichael.biven.org%2F2007%2F06%2F15%2Fusing-the-blackberry-curve-8300-with-a-mac%2F</feedburner:awareness></item>
		<item>
		<title>not what you want to see when returning home…</title>
		<link>http://michael.biven.org/2007/03/04/not-what-you-want-to-see-when-returning-home/</link>
		<comments>http://michael.biven.org/2007/03/04/not-what-you-want-to-see-when-returning-home/#comments</comments>
		<pubDate>Sun, 04 Mar 2007 19:11:30 +0000</pubDate>
		<dc:creator>michaelb</dc:creator>
		
		<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://michael.biven.org/?p=277</guid>
		<description><![CDATA[Carol and I stayed the night at family last night while visiting and drove home this morning to find the street leading to our place blocked off with Police and the Fire Department. It turned out that a nearby building had caught fire spreading to the adjacent building and causing a partial collapse of the [...]]]></description>
			<content:encoded><![CDATA[<p>Carol and I stayed the night at family last night while visiting and drove home this morning to find the street leading to our place blocked off with Police and the Fire Department. It turned out that a nearby building had caught fire spreading to the adjacent building and causing a partial collapse of the third floor.</p>
<p>Luckily no one (including pets) was hurt, but a few of our neighbors lost everything. The power is out right now and I don&#8217;t expect it to be back on anytime soon. We had some smoke in our place and I&#8217;m sure tomorrow we&#8217;ll be doing a lot of cleaning to get rid of the smell while we talking with the insurance company to cover the smoke damage. Carol, our two cats and I are staying with family again tonight as I was told they donâ€™t want anyone in any of the buildings.</p>
<p><a href="http://mbiven.files.wordpress.com/2007/03/lewis-1.jpg" title="lewis-1.jpg"><img src="http://mbiven.files.wordpress.com/2007/03/lewis-1.thumbnail.jpg" alt="lewis-1.jpg" /></a></p>
<p><a href="http://mbiven.files.wordpress.com/2007/03/st-clair-1.jpg" title="st-clair-1.jpg"><img src="http://mbiven.files.wordpress.com/2007/03/st-clair-1.thumbnail.jpg" alt="st-clair-1.jpg" /></a></p>
<p><a href="http://mbiven.files.wordpress.com/2007/03/st-clair-2.jpg" title="st-clair-2.jpg"><img src="http://mbiven.files.wordpress.com/2007/03/st-clair-2.thumbnail.jpg" alt="st-clair-2.jpg" /></a></p>
<img src="http://feeds.feedburner.com/~r/PutTogetherQuickly/~4/444850813" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michael.biven.org/2007/03/04/not-what-you-want-to-see-when-returning-home/feed/</wfw:commentRss>
		<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=PutTogetherQuickly&amp;itemurl=http%3A%2F%2Fmichael.biven.org%2F2007%2F03%2F04%2Fnot-what-you-want-to-see-when-returning-home%2F</feedburner:awareness></item>
		<item>
		<title>Starting Mongrel or Memcached with Launchd</title>
		<link>http://michael.biven.org/2006/12/22/starting-mongrel-or-memcached-with-launchd/</link>
		<comments>http://michael.biven.org/2006/12/22/starting-mongrel-or-memcached-with-launchd/#comments</comments>
		<pubDate>Fri, 22 Dec 2006 05:51:44 +0000</pubDate>
		<dc:creator>michaelb</dc:creator>
		
		<category><![CDATA[Apple]]></category>

		<category><![CDATA[Sys Admin]]></category>

		<guid isPermaLink="false">http://michael.biven.org/?p=250</guid>
		<description><![CDATA[I recently needed to create some start-up scripts for both a Mongrel cluster and a couple of Memcached servers using Launchd on a Mac. Using Lingon to generate a plist for each I went through a few versions before I came up with one that would do what I wanted. Until the final version I [...]]]></description>
			<content:encoded><![CDATA[<p>I recently needed to create some start-up scripts for both a <a href="http://mongrel.rubyforge.org/">Mongrel</a> cluster and a couple of <a href="http://www.danga.com/memcached/">Memcached</a> servers using <a href="http://launchd.macosforge.org/">Launchd</a> on a Mac. Using <a href="http://lingon.sourceforge.net/">Lingon</a> to generate a plist for each I went through a few versions before I came up with one that would do what I wanted. Until the final version I would constantly get an error that the launchd item had failed or was spawning to quickly and that after 9 more failures the item would be unload from Launchd.</p>
<p>What was causing the problem was that Launchd cannot have an item run be called as a daemon, (no using the &#8220;-d&#8221; switch when starting Memcached). Starting a cluster of Mongrels using mongrel_rails cluster::start either from a script or by calling the command directly in the Launchd item ended up with the same errors. Instead of using Mongrel_rails cluster I had to start each Mongrel individually from the plist file.</p>
<p>The other part of using Launchd is that it can work as a watchdog service if you use the &#8220;&lt;key&gt;OnDemand&lt;/key&gt; &lt;false/&gt;&#8221; in the plist file. If you do use it in this manner remember to unload the Launchd item before stopping whatever your running or else Launchd will only restart the service for you. So if I need to make some changes that require me to stop Memcached or Mongrel, I need to first unload the item using either Lingon again or launchctl from the terminal and then stop the service. When the work is done I can then just load the Launchd item and the service should be backup. If you do have a problem getting your item to work make sure to set StandardOutPath and StandardErrorPath to see what your service (in my case Mongrel or Memcached) is or is not doing.</p>
<p>Thanks to Jean-NoÃ«l Rivasseau for sending me a copy of a working Launchd item for a basic Memcached server to help me figure out what I was doing wrong. One question that Jean-NoÃ«l had was that when using launchctl list the Memcached item was not listed, but was obviously running. Remember that there are a few different places for the plist files to be kept at and that determines who and how they are started. So if you don&#8217;t see your item listed after you&#8217;ve run the command as you try running &#8220;sudo launchctl list&#8221; instead to view jobs in /Library instead of just ~/Library.</p>
<p>Sample Launchd plist file for Memcached to start with 64 MB,  run as www and on port 11211. This would be started when the server boots-up and Launchd would keep it running.</p>
<blockquote><p>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<br />
&lt;!DOCTYPE plist PUBLIC &#8220;-//Apple Computer//DTD PLIST 1.0//EN&#8221; &#8220;http://www.apple.com/DTDs/PropertyList-1.0.dtd&#8221;&gt;<br />
&lt;plist version=&#8221;1.0&#8243;&gt;<br />
&lt;dict&gt;<br />
&lt;key&gt;Disabled&lt;/key&gt;<br />
&lt;true/&gt;<br />
&lt;key&gt;Label&lt;/key&gt;<br />
&lt;string&gt;local.server.memcached&lt;/string&gt;<br />
&lt;key&gt;OnDemand&lt;/key&gt;<br />
&lt;false/&gt;<br />
&lt;key&gt;ProgramArguments&lt;/key&gt;<br />
&lt;array&gt;<br />
&lt;string&gt;/usr/local/bin/memcached&lt;/string&gt;<br />
&lt;string&gt;-m&lt;/string&gt;<br />
&lt;string&gt;64&lt;/string&gt;<br />
&lt;string&gt;-u&lt;/string&gt;<br />
&lt;string&gt;www&lt;/string&gt;<br />
&lt;string&gt;-p&lt;/string&gt;<br />
&lt;string&gt;11211&lt;/string&gt;<br />
&lt;/array&gt;<br />
&lt;key&gt;RunAtLoad&lt;/key&gt;<br />
&lt;true/&gt;<br />
&lt;/dict&gt;<br />
&lt;/plist&gt;</p></blockquote>
<p>Sample Launchd plist file for Mongrel to start two Mongrels in production, running as www on ports 3000 and 3001. This would be started when the server boots-up and Launchd would keep it running.</p>
<blockquote><p> &lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<br />
&lt;!DOCTYPE plist PUBLIC &#8220;-//Apple Computer//DTD PLIST 1.0//EN&#8221; &#8220;http://www.apple.com/DTDs/PropertyList-1.0.dtd&#8221;&gt;<br />
&lt;plist version=&#8221;1.0&#8243;&gt;<br />
&lt;dict&gt;<br />
&lt;key&gt;Label&lt;/key&gt;<br />
&lt;string&gt;local.server.mongrel&lt;/string&gt;<br />
&lt;key&gt;OnDemand&lt;/key&gt;<br />
&lt;false/&gt;<br />
&lt;key&gt;ProgramArguments&lt;/key&gt;<br />
&lt;array&gt;<br />
&lt;string&gt;/usr/local/bin/mongrel_rails&lt;/string&gt;<br />
&lt;string&gt;start&lt;/string&gt;<br />
&lt;string&gt;-e&lt;/string&gt;<br />
&lt;string&gt;production&lt;/string&gt;<br />
&lt;string&gt;-p&lt;/string&gt;<br />
&lt;string&gt;3000&lt;/string&gt;<br />
&lt;string&gt;-P&lt;/string&gt;<br />
&lt;string&gt;log/mongrel.3000.pid&lt;/string&gt;<br />
&lt;string&gt;-c&lt;/string&gt;<br />
&lt;string&gt;/Path/To/Rails/App/&lt;/string&gt;<br />
&lt;string&gt;&#8211;user&lt;/string&gt;<br />
&lt;string&gt;www&lt;/string&gt;<br />
&lt;string&gt;&#8211;group&lt;/string&gt;<br />
&lt;string&gt;www&lt;/string&gt;<br />
&lt;string&gt;/usr/local/bin/mongrel_rails&lt;/string&gt;<br />
&lt;string&gt;start&lt;/string&gt;<br />
&lt;string&gt;-e&lt;/string&gt;<br />
&lt;string&gt;production&lt;/string&gt;<br />
&lt;string&gt;-p&lt;/string&gt;<br />
&lt;string&gt;3001&lt;/string&gt;<br />
&lt;string&gt;-P&lt;/string&gt;<br />
&lt;string&gt;log/mongrel.3001.pid&lt;/string&gt;<br />
&lt;string&gt;-c&lt;/string&gt;<br />
&lt;string&gt;/Path/To/Rails/App/&lt;/string&gt;<br />
&lt;string&gt;&#8211;user&lt;/string&gt;<br />
&lt;string&gt;www&lt;/string&gt;<br />
&lt;string&gt;&#8211;group&lt;/string&gt;<br />
&lt;string&gt;www&lt;/string&gt;<br />
&lt;/array&gt;<br />
&lt;key&gt;RunAtLoad&lt;/key&gt;<br />
&lt;true/&gt;<br />
&lt;/dict&gt;<br />
&lt;/plist&gt;</p></blockquote>
<img src="http://feeds.feedburner.com/~r/PutTogetherQuickly/~4/444850814" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://michael.biven.org/2006/12/22/starting-mongrel-or-memcached-with-launchd/feed/</wfw:commentRss>
		<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetItemData?uri=PutTogetherQuickly&amp;itemurl=http%3A%2F%2Fmichael.biven.org%2F2006%2F12%2F22%2Fstarting-mongrel-or-memcached-with-launchd%2F</feedburner:awareness></item>
	<feedburner:awareness xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">http://api.feedburner.com/awareness/1.0/GetFeedData?uri=PutTogetherQuickly</feedburner:awareness></channel>
</rss><!-- Dynamic Page Served (once) in 0.478 seconds -->
