<?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"
	>

<channel>
	<title>Penguin Dreams</title>
	<atom:link href="http://penguindreams.org/feed/" rel="self" type="application/rss+xml" />
	<link>http://penguindreams.org</link>
	<description></description>
	<pubDate>Wed, 31 Dec 2008 17:27:03 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6.5</generator>
	<language>en</language>
			<item>
		<title>Upgrading the MacBook</title>
		<link>http://penguindreams.org/blog/upgrading-the-macbook/</link>
		<comments>http://penguindreams.org/blog/upgrading-the-macbook/#comments</comments>
		<pubDate>Wed, 31 Dec 2008 17:27:03 +0000</pubDate>
		<dc:creator>sumdog</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[battery]]></category>

		<category><![CDATA[hard drive]]></category>

		<category><![CDATA[laptop]]></category>

		<category><![CDATA[macos]]></category>

		<category><![CDATA[upgrade]]></category>

		<guid isPermaLink="false">http://penguindreams.org/?p=183</guid>
		<description><![CDATA[My MacBook is about two and a half years old. Aside from upgrading the memory to 2GB when I initially purchased it, I&#8217;ve kept it stock and it&#8217;s been a fairly reliable laptop and the most convenient laptop I&#8217;ve owned. Currently it&#8217;s also the only computer I own that will let me edit and play [...]]]></description>
			<content:encoded><![CDATA[<p>My MacBook is about two and a half years old. Aside from upgrading the memory to 2GB when I initially purchased it, I&#8217;ve kept it stock and it&#8217;s been a fairly reliable laptop and the most convenient laptop I&#8217;ve owned. Currently it&#8217;s also the only computer I own that will let me edit and play HD content. Even then, the video becomes jumpy after about fifteen to twenty seconds during the editing process. Also, the battery no longer holds enough power to keep the laptop operational for over an hour. So a few weeks back I decided some upgrades were in order: upgrading to OS X 10.5, a new 500GB hard drive and new battery.<br />
<span id="more-183"></span></p>

<h3>The Battery</h3>

<p>Looking at the simplest upgrade first: the battery. There is an excellent free utility called <a href="http://www.coconut-flavour.com/coconutbattery/">Coconut Battery</a> which allows you to not only see the current battery capacity, but look at the original capacity and the age of the laptop. Newer versions of the application allow saving data points to track the capacity and degradation of the battery. </p>

<div width="720" height="510">
<img src="http://penguindreams.org/files/2008/12/cocobatteryold.png" alt="Old Battery Stats" title="cocobatteryold" width="356" height="506" class=" size-full wp-image-186" style="float:left;" />
<img src="http://penguindreams.org/files/2008/12/cocobatterynew.png" alt="New Battery Stats" title="cocobatterynew" width="356" height="506" class=" size-full wp-image-185" style="clear:right;" />
</div>

<p>Lithium Ion (Li-Ion) batteries don&#8217;t suffer from the same <em>memory effect</em> as other types of rechargeable such Nickel Cadmium (NiCd) or Nickel-metal Hydride (NiMH). However, as can clearly been see by the screenshots above, Li-Ion batteries still degrade naturally over a period of time. After two and a half years, my laptop battery could barely hold over a third of its original capacity. In addition, it took much longer to charge as well. </p>

<p>Since the new version of Coconut Battery can save data points, I&#8217;m hoping by the time I retire this laptop that I&#8217;ll be able to be able to chart the capacity pattern of this new battery. I&#8217;m predicting it will be a natural logarithmic regression. </p>

<p>One additional thing I learned about the MacBook battery. It can not be removed while the laptop is on, even if it is plugged in. Unlike my old Dell Laptop which had two expansion slots providing for the ability to hot swap two batteries, removing the MacBook battery while hot caused the MacBook to crash and it had to be rebooted. </p>

<h3>The Hard Drive</h3>

<p><img src="http://penguindreams.org/files/2008/12/old_mac_hdd_enclosed.jpg" alt="Old Mac HDD in an External Enclosure" title="Old Mac HDD in an External Enclosure" width="211" height="158" class="aligncenter size-full wp-image-189" /></p>

<p>The previous hard drive was the standard 80GB that came with the laptop. I had found myself deleting unused applications and moving media from my laptop just so I could log and transfer video clips for editing. I eventually had to use a 40GB external <span class="caps">USB </span>drive as my video scratch disk. With dropping prices for <span class="caps">SATA </span>internal drives, I decided to upgrade to a 500GB, giving me more than enough room for all my applications and media clips. In addition, a low cost external <span class="caps">SATA </span>to <span class="caps">USB </span>enclosure allowed me to still utilize my old 80GB hard drive as an external disk.</p>

<p>Replacing the hard drive was about as simple as replacing the memory. They are both behind a plate on the side of the battery compartment. The hard drive did require a hex-screwdriver, which I did not expect.</p>

<h3>The Operating System</h3>

<p>One of the biggest reason I wanted to upgrade to MacOS 10.5 was the addition of &#8220;spaces&#8221; which is basically another term for virtual desktops. In 10.4, third party software such as <a href="http://desktopmanager.berlios.de/">Desktop Manager</a> had to be used to add in support for virtual desktops. They were buggy at best and different applications would react different to being on a virtual desktop. </p>

<p>Virtual desktops aren&#8217;t anything new or innovative. They&#8217;ve been available naively on <span class="caps">UNIX</span>/Linux systems for over a decade and as third party addons to Windows and Mac for years. The advantage of having &#8220;spaces&#8221; as part of the operating system layer itself is that newer version of applications will develop around and for the &#8220;spaces&#8221; rather than third party applications having to accommodate for other programs. </p>

<p>In addition OS X 10.5 does seem to add some speed increases. The visual additions and other small features are nice as well.</p>

<h3>Conclusions</h3>

<p>The upgrades I made were primarily to make the laptop useful again as a laptop and not just an overpriced desktop. However I did notice speed improvements when playing HD video within editing software. I&#8217;m not sure whether to attribute this to a higher efficiency from OS X 10.5 or if the larger hard drive allows the OS to have more swap space to play with (or both). In any case, these small upgrades, which cost under $200, seem to have given me some more life and years out of my laptop.    </p>]]></content:encoded>
			<wfw:commentRss>http://penguindreams.org/blog/upgrading-the-macbook/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Guide for New WordPressMu Administrators</title>
		<link>http://penguindreams.org/blog/guide-for-new-wordpressmu-administrators/</link>
		<comments>http://penguindreams.org/blog/guide-for-new-wordpressmu-administrators/#comments</comments>
		<pubDate>Wed, 17 Dec 2008 15:27:22 +0000</pubDate>
		<dc:creator>sumdog</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[administration]]></category>

		<category><![CDATA[mysql]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[wordpress]]></category>

		<category><![CDATA[wordpressMu]]></category>

		<guid isPermaLink="false">http://penguindreams.org/?p=162</guid>
		<description><![CDATA[Recently I migrated several websites from various web applications and frameworks onto a common WordPress base. I chose WordPress because it has a large adoption audience, a massive range of plug-ins and a good release cycle. I decided to use WordPressMu (multi-user) to handle several websites from one base install. I ran into a couple [...]]]></description>
			<content:encoded><![CDATA[<p>Recently I migrated several websites from various web applications and frameworks onto a common WordPress base. I chose WordPress because it has a large adoption audience, a massive range of plug-ins and a good release cycle. I decided to use WordPressMu (multi-user) to handle several websites from one base install. I ran into a couple of interesting caveats and unique gotchas I&#8217;ve decided to document here in hopes of assisting other WordPressMu administrators. </p>

<p><span id="more-162"></span></p>

<p><br /></p>

<h3>Introduction</h3>

<p>This guide is intended for administrators who are familiar with their operating system (Windows, Linux, Mac), MySQL and, to a lesser extent, <span class="caps">PHP.</span> It does have a lot of assumed knowledge, such as that you have successfully installed WordPressMu and know how to access a MySQL console to the database. You may want to read the documentation on <a href="http://mu.wordpress.org/">WordPressMu</a> website for installation guides and additional assistance. </p>

<p><br /></p>

<h3>Installation and Quick Upgrades</h3>

<p>If you&#8217;re running a dedicated server and have control over the virtual host configuration, you&#8217;ll probably point your <code>DocumentRoot</code> of each domain to your WordPressMu installation. For those of you on shared hosting or cloud hosting solutions, you&#8217;ll most likely symbolically link the predetermined document root to your WordPressMu install. In either case, it&#8217;s good practice to include the version number with the installation directory and use a symbolic link to point to the current version as shown below. </p>

<p><img src="http://penguindreams.org/files/2008/12/wp_installation_screen.png" alt="WP Install Dir" title="WordPressMu Installation Directories"  class="size-full wp-image-176" /></p>

<p>It may seem redundant to have a symbolic link called <code>wordpress</code> which points to the specific production version. Why not just point to the directory with the version number directly? Using the <code>wordpress</code> link allows an administrator to switch over from one one version of WordPressMu to another quickly without having to change a series of other symbolic links or <code>DocumentRoot</code> directives. It also allows for an administrator to test a new version of WordPressMu on just one or two domains. You may even consider setting up a <code>wordpress-dev</code> symbolic link to use for development environments if they happen to be hosted on the same server. </p>

<p><br /></p>

<h3>Setting up Multiple Domains</h3>

<p>By default the base WordPressMu is intended to allow users to register new blogs and place them in subdomains of the domain for the base blog. I wanted to use WordPressMu for multiple websites each on their own domain. Two plug-ins are offered specifically for domain management in WordPressMu which can be confusing. There is the <a href="http://wordpress.org/extend/plugins/wordpress-mu-domain-mapping/">Domain Mapping</a> plugin and the <a href="http://wpmudev.org/project/Multi-Site-Manager">Multi-Site Manager</a> plugin. </p>

<p>The Domain Mapping plugin is more designed for wrapping subdomains and subdirectories.. For the purpose of having several independent websites, the Multi-Site Manager seemed more appropriate. The Multi-Site Manager still allows for multiple blogs per domain (in subdomains) as well. Explore both plugins in your development environment as your mileage with each may vary. For the purpose of this guide, the Multi-Site Manager will be examined. </p>

<p>With the Multi Domain Plugin, one blog is automatically created when a site is created. It&#8217;s a WordPressMu specific plugin and must be installed in the <code>mu-plugins</code> directory. Additional blogs for subdomains and subdirectories can be added later in addition to the base blog. Sites can be created by navigating to Site Admin&gt;Sites from within the administration console. It is important to note when you create new sites you should, at the very least, clone the <code>site_admins</code> and <code>admin_user_id attributes</code> from the base blog. Failure to do so will result in the Site Admin tab not appearing on the new site when logged in as admin. </p>

<p><img src="http://penguindreams.org/files/2008/12/wp-new-site.png" alt="Create a New Site Screen" title="Create a New Site" class="size-full wp-image-179" /></p>

<p>Forgot to close those essential site variables? That can easily be remedied by issuing the following <span class="caps">SQL </span>statement on the WordPressMu database with <em>x</em> being replaced by the appropriate <code>blog_id</code>.</p>



<pre class="sh_sourceCode sh_sql">
INSERT INTO wp_sitemeta VALUES(NULL,x,'site_admins','a:1:{i:0;s:5:&quot;admin&quot;;}');
</pre>

<p> </p>

<p>The value to the key <code>site_admins</code> is a serialized <span class="caps">PHP </span>object contain the array of site administrators for the given blog.</p>

<p><br /></p>

<h3>Setting up a Development Environment</h3>

<p>One of the more trickier tasks is creating a separate and independent development environment that&#8217;s setup similar or exactly like production. One would think you could just copy the install and the database to a local server, change the database settings, and the site would run locally. The trouble arises because one install is used by multiple domains and settings about each of those domains is stored directly in the database.</p>



<pre class="sh_sourceCode sh_sql" >
mysql&gt; SELECT option_id,blog_id,option_name,LEFT(option_value,100) as name
    -&gt;  ,autoload FROM wp_5_options HAVING name like '%penguindreams.org%' LIMIT 3;
+-----------+---------+----------------+--------------------------------+----------+
| option_id | blog_id | option_name    | name                           | autoload |
+-----------+---------+----------------+--------------------------------+----------+
|         1 |       0 | siteurl        | http://penguindreams.org/      | yes      |
|        40 |       0 | home           | http://penguindreams.org/      | yes      |
|        80 |       0 | fileupload_url | http://penguindreams.org/files | yes      |
+-----------+---------+----------------+--------------------------------+----------+
3 rows in set (0.01 sec)
</pre>



<p>In addition, other plugins may also store the site&#8217;s domain name for their own purposes. To run the site locally, it would be necessary to creates scripts that would be able to pull a production copy of the site&#8217;s database and also change all appropriate fields within each sites <code>wp_n_options</code> table. </p>

<p>One may be tempted to download a FireFox plugin that allows you to modify the <code>Host</code> header transmitted the web browser. This would work to display a single page, but many if not all of the links on the site would direct back to the full address of the production install.</p>

<p>One of the best solutions I have found is to simply modify the <code>hosts</code> file to direct traffic bound for the production install to another machine. This fine can be located in <code>/etc/hosts</code> on Linux/UNIX/Mac and in <code>C:\WINDOWS\system32\drivers\etc</code> on Windows. </p>



<pre class="sh_sh sh_sourceCode">
# /etc/hosts: Local Host Database
#
# This file describes a number of aliases-to-address mappings for the for
# local hosts that share this file.
#
# In the presence of the domain name service or NIS, this file may not be
# consulted at all; see /etc/host.conf for the resolution order.
#

# IPv4 and IPv6 localhost aliases
127.0.0.1       localhost mycomputer
::1             localhost
192.168.12.12   penguindreams.org
</pre>



<p>In the above example, all requests to penguindreams.org are now forwarded to a server on the local network. It may be necessary to close and reopen the web browser as it may have cached the previous <span class="caps">DNS </span>request. There are plugins available for FireFox to clear the <span class="caps">DNS </span>cache without restarting the browser. </p>

<p><br /></p>

<h3>Unsafe <span class="caps">HTML</span></h3>

<p>In a normal WordPress install there is an option to enable unsafe <span class="caps">HTML </span>including <code>&lt;iframe&gt;</code> and <code>&lt;embed&gt;</code> tags which are used by some video sites. Typically you don&#8217;t want anyone to use such unsafe <span class="caps">HTML </span>unless they really know what they&#8217;re doing, but the option was available to administrators in WordPress, an option that is entirely missing in WordPressMu. If a writer tries to add an <code>&lt;iframe&gt;</code>, it disappears immediately after saving the post. The solution? </p>

<p>The <a href="http://wordpress.org/extend/plugins/unfiltered-mu/">Unfiltered MU</a> plugin allows anyone with the rights of editor or above or use unsafe <span class="caps">HTML.</span> It can be placed in the <code>mu-plugins</code> directory to give every blog this capability. If you don&#8217;t trust all your end users, placing it in the regular <code>plugins</code> directory will work, even for this WordPressMu specific plugin, to enable it on a per-blog basis. </p>

<p><br /></p>

<h3>Closing Notes</h3>

<p>During the migration process, I was forced to deal with a lot of the <span class="caps">SQL </span>and became quite familiar with many of the table schemas. Although it isn&#8217;t an absolute requirement to be familiar with the underlying tables to administrator a WordPressMu installation, it certainly does help in understanding the underlying system, migrating content and diagnosing problems.</p>

<p>Two other major challenges not covered in this article were migration, both from a standard WordPress install and various other content management systems (outdated versions of Drupal and custom Rails applications) as well as converting existing layouts into WordPress themes. </p>

<p>This isn&#8217;t an exhaustive list of all the challenges I faced with installing and maintaining WordPressMu, but these were some of the most frustrating. Overall, I have been very impressed with WordPressMu engine and it&#8217;s a welcome change from the other content management systems I&#8217;ve either used or created. </p>

<p><br /><br /><br /></p>]]></content:encoded>
			<wfw:commentRss>http://penguindreams.org/blog/guide-for-new-wordpressmu-administrators/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Joe Lance for Chattanooga</title>
		<link>http://penguindreams.org/video/joe-lance-for-chattanooga/</link>
		<comments>http://penguindreams.org/video/joe-lance-for-chattanooga/#comments</comments>
		<pubDate>Wed, 10 Dec 2008 14:01:58 +0000</pubDate>
		<dc:creator>sumdog</dc:creator>
		
		<category><![CDATA[video]]></category>

		<category><![CDATA[chattanooga]]></category>

		<category><![CDATA[joe lance]]></category>

		<category><![CDATA[mayor]]></category>

		<guid isPermaLink="false">http://penguindreams.org/?p=169</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[<p><object width="640" height="360"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2483066&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2483066&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="360"></embed></object></p>]]></content:encoded>
			<wfw:commentRss>http://penguindreams.org/video/joe-lance-for-chattanooga/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rear View Mirror 0.8.8.1 Released</title>
		<link>http://penguindreams.org/blog/rear-view-mirror-0881-released/</link>
		<comments>http://penguindreams.org/blog/rear-view-mirror-0881-released/#comments</comments>
		<pubDate>Wed, 03 Dec 2008 21:38:59 +0000</pubDate>
		<dc:creator>sumdog</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://penguindreams.org/?p=167</guid>
		<description><![CDATA[A new version of RearViewMirror is out. This version fixes several of the crashing problems, uses the camera name as the viewer window title, improves the URL list saving and contains various other bug fixes. ]]></description>
			<content:encoded><![CDATA[<p>A new version of <a href="http://penguindreams.org/projects/rearviewmirror">RearViewMirror</a> is out. This version fixes several of the crashing problems, uses the camera name as the viewer window title, improves the <span class="caps">URL </span>list saving and contains various other bug fixes. </p>]]></content:encoded>
			<wfw:commentRss>http://penguindreams.org/blog/rear-view-mirror-0881-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Tennessee River Gorge Explorer</title>
		<link>http://penguindreams.org/video/tennessee-river-gorge-explorer/</link>
		<comments>http://penguindreams.org/video/tennessee-river-gorge-explorer/#comments</comments>
		<pubDate>Mon, 24 Nov 2008 20:02:19 +0000</pubDate>
		<dc:creator>sumdog</dc:creator>
		
		<category><![CDATA[video]]></category>

		<category><![CDATA[chattanooga]]></category>

		<category><![CDATA[tennessee river]]></category>

		<guid isPermaLink="false">http://penguindreams.org/?p=154</guid>
		<description><![CDATA[


My first attempt at filming with my HD camcorder, this is video of a ride on the TN Aquarium&#8217;s new riverboat. It starts at Ross&#8217;s Landing in Chattanooga, TN and continues for about an hour downstream into Georgia. 

The camcorder is a Sony CX7. The Vimeo high definition version has fairly decent quality, however the [...]]]></description>
			<content:encoded><![CDATA[<p><object width="640" height="360"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2333201&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=2333201&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=00ADEF&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="640" height="360"></embed></object><br /><br />
<span id="more-154"></span></p>

<p>My first attempt at filming with my HD camcorder, this is video of a ride on the TN Aquarium&#8217;s new riverboat. It starts at Ross&#8217;s Landing in Chattanooga, TN and continues for about an hour downstream into Georgia. </p>

<p>The camcorder is a Sony <span class="caps">CX7.</span> The <a href="http://vimeo.com/2333201">Vimeo high definition version</a> has fairly decent quality, however the limited streaming bitrates combined with the fast motion and high amount of detail cause parts of the video to look somewhat blocky. An <span class="caps">MPEG</span>-4 version is available on the <a href="http://vimeo.com/2333201">viemo</a> page. Its free to reedit for non-commercial use (see license below) so if you want a high quality version for editing purposes, just e-mail me.<br />
<br /><br />
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/"><img alt="Creative Commons License" style="border-width:0" src="http://i.creativecommons.org/l/by-nc-sa/3.0/us/88x31.png" /></a><br /><span xmlns:dc="http://purl.org/dc/elements/1.1/" href="http://purl.org/dc/dcmitype/MovingImage" property="dc:title" rel="dc:type">Tennessee River Gorge Explorer</span> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/3.0/us/">Creative Commons Attribution-Noncommercial-Share Alike 3.0 United States License</a><br />
<br /></p>]]></content:encoded>
			<wfw:commentRss>http://penguindreams.org/video/tennessee-river-gorge-explorer/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Rear View Mirror 0.8.6 Released</title>
		<link>http://penguindreams.org/blog/rear-view-mirror-086-released/</link>
		<comments>http://penguindreams.org/blog/rear-view-mirror-086-released/#comments</comments>
		<pubDate>Wed, 19 Nov 2008 21:48:40 +0000</pubDate>
		<dc:creator>sumdog</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[c#]]></category>

		<category><![CDATA[rear view mirror]]></category>

		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://penguindreams.org/?p=150</guid>
		<description><![CDATA[I&#8217;ve released a new version of RearViewMirror, an application that turns an ordinary web camera into a fancy mirror. The application also has a motion detector that will keep the camera window hidden until somebody is actually sneaking up on you (or walking behind you). 

The biggest new feature of this release is support for [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve released a new version of <a href="/projects/rearviewmirror">RearViewMirror</a>, an application that turns an ordinary web camera into a fancy mirror. The application also has a motion detector that will keep the camera window hidden until somebody is actually sneaking up on you (or walking behind you). </p>

<p>The biggest new feature of this release is support for multiple cameras. Not only can you view multiple locally connected cameras, but you can connect to remote cameras and share your cameras with others. This is a beta release so use it an your own risk. </p>]]></content:encoded>
			<wfw:commentRss>http://penguindreams.org/blog/rear-view-mirror-086-released/feed/</wfw:commentRss>
		</item>
		<item>
		<title>BlueHost is a Failure at Customer Service</title>
		<link>http://penguindreams.org/blog/bluehost-is-a-failure-of-customer-service/</link>
		<comments>http://penguindreams.org/blog/bluehost-is-a-failure-of-customer-service/#comments</comments>
		<pubDate>Tue, 18 Nov 2008 19:05:46 +0000</pubDate>
		<dc:creator>sumdog</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<category><![CDATA[bluehost]]></category>

		<category><![CDATA[darkfiles]]></category>

		<category><![CDATA[drupal]]></category>

		<category><![CDATA[migration]]></category>

		<category><![CDATA[ruby on rails]]></category>

		<category><![CDATA[web hosting]]></category>

		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://penguindreams.org/?p=137</guid>
		<description><![CDATA[A few weeks ago my hosting provider, BlueHost, upgraded their servers. In doing so, they also removed the options of using PHP4 and went to PHP5 exclusively. Several angry phone calls to them later resulted in yielding no meaningful resolution. Many of my sites work fine on PHP5, however I had one legacy site from [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks ago my hosting provider, <a href="http://bluehost.com">BlueHost</a>, upgraded their servers. In doing so, they also removed the options of using <span class="caps">PHP4 </span>and went to <span class="caps">PHP5 </span>exclusively. Several angry phone calls to them later resulted in yielding no meaningful resolution. Many of my sites work fine on <span class="caps">PHP5, </span>however I had one legacy site from a rather large customer still on an old version of Drupal. </p>

<p>This isn&#8217;t the first time I&#8217;ve had trouble with BlueHost. They had upgraded their rails installation twice, also without any prior notice, breaking several of my production websites. I&#8217;ve read other horror stories concerning BluHhost, including <a href="http://hijinksensue.com/2008/02/18/bluehostcom-i-invite-you-to-eat-a-dick/">one from my favorite webcomic</a>, but in the several years I had been with them I didn&#8217;t have any major issues. It is only this past year that they preformed lots of random upgrades without telling anyone. </p>

<p>When I asked why they hadn&#8217;t sent out any notices, the manager on their support line told me they had sent out a notice a year ago that <span class="caps">PHP4 </span>would be phased out. I asked repeatedly why they hadn&#8217;t sent out a recent notice within the past month or week? He felt as if the notice a year previous had been enough. I checked my e-mail and sure enough, the very last message I ever received from BlueHost was dated November 29, 2007.</p>

<p>The past three week has been spent moving to a much faster and more reliable web hosting solution. I&#8217;ve migrated several old legacy applications that were originally managed by Drupal and Ruby on Rails into WordPress. I&#8217;ve had a love/hate relationship with Rails so far and with my new host charging extra for Rails, I decided I&#8217;m better off migrating those sites to Wordpress. I&#8217;ve been impressed with Wordpress and all its functionality and plug-ins. I&#8217;ve come to realize I&#8217;d rather spend more time doing what I want to do rather than trying to figure out how to do it.</p>

<p>The last time I had to move web hosts was from DarkFiles. They gave their customers plenty of notice when they decided to get out of the web hosting industry. At the time I was in school and had more time to work on the transition (and fewer sites). This transition has helped me deal with a lot of things that needed to be upgraded and changed. In ways I am glad, but the timing couldn&#8217;t have been worse. Moving forward, I would highly suggest to anyone using BlueHost to migrate their web hosting provider soon. BlueHost&#8217;s service has been absolutely horrible and is only suitable for the smallest and least relevant website. Their hosting may be cheap, but you do get what you pay for.</p>]]></content:encoded>
			<wfw:commentRss>http://penguindreams.org/blog/bluehost-is-a-failure-of-customer-service/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Breaking the Multi-Colored Box</title>
		<link>http://penguindreams.org/blog/breakingthemulti-coloredbox/</link>
		<comments>http://penguindreams.org/blog/breakingthemulti-coloredbox/#comments</comments>
		<pubDate>Tue, 26 Aug 2008 22:06:34 +0000</pubDate>
		<dc:creator>sumdog</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">d7d90ff4-0672-102c-ab4c-5e29b100eb99</guid>
		<description><![CDATA[I&#8217;ve released an alpha version of Bmcb or Breaking the Multi-Colored Box, a framework intended to generate known CAPTCHA challenges and then test various techniques to break them. Although it&#8217;s fully functional and has a decent amount of preliminary documentation, it&#8217;s far from being really useful. The built in analysis and filtering techniques can only [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve released an alpha version of <a href="/page/see/Bmcb">Bmcb</a> or Breaking the Multi-Colored Box, a framework intended to generate known <span class="caps">CAPTCHA </span>challenges and then test various techniques to break them. Although it&#8217;s fully functional and has a decent amount of preliminary documentation, it&#8217;s far from being really useful. The built in analysis and filtering techniques can only solve the most trivial cases efficiently.</p>

<p>However, the framework is well structured and sound. I&#8217;m hoping I can develop interested from other open source developers who have skills in fields I lack in such as image recognition, analysis and <span class="caps">AI.</span> It will be the first project I&#8217;ve had where I&#8217;m actively seeking developers from the community. Anyone interested in a challenge? </p>

<p>If I can generate a decent amount of interest, I&#8217;ll move it over to a full project hosting repository such as SourceForge or Google Code.  </p>]]></content:encoded>
			<wfw:commentRss>http://penguindreams.org/blog/breakingthemulti-coloredbox/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Converting oggs to mp3s</title>
		<link>http://penguindreams.org/blog/convertingoggstomp3s/</link>
		<comments>http://penguindreams.org/blog/convertingoggstomp3s/#comments</comments>
		<pubDate>Fri, 11 Jul 2008 09:30:26 +0000</pubDate>
		<dc:creator>sumdog</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">d7d90e1e-0672-102c-ab4c-5e29b100eb99</guid>
		<description><![CDATA[I created a new script, oggfolder2mp3, to recursively convert ogg files into mp3s while maintaining file meta-data (i.e. copying vorbis comments to MP3 ID3 tags). ]]></description>
			<content:encoded><![CDATA[<p>I created a new script, <a href="/scripts/oggfolder2mp3">oggfolder2mp3</a>, to recursively convert ogg files into mp3s while maintaining file meta-data (i.e. copying vorbis comments to <span class="caps">MP3 ID3 </span>tags). </p>]]></content:encoded>
			<wfw:commentRss>http://penguindreams.org/blog/convertingoggstomp3s/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Simple Fours Problem</title>
		<link>http://penguindreams.org/blog/simplefoursproblem/</link>
		<comments>http://penguindreams.org/blog/simplefoursproblem/#comments</comments>
		<pubDate>Wed, 18 Jun 2008 20:13:21 +0000</pubDate>
		<dc:creator>sumdog</dc:creator>
		
		<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">d7d90ce8-0672-102c-ab4c-5e29b100eb99</guid>
		<description><![CDATA[My mom sent me this simple problem.Combine four fours arithmetically (i.e. 4 / 4 - 4 * 4) so the result is 20. The following solution is written in C++ and uses brute force to find all possible solutions:




/*
 *  combo.cxx - Four Fours Combination Problem Solver
 *       [...]]]></description>
			<content:encoded><![CDATA[<p>My mom sent me this simple problem.Combine four fours arithmetically (i.e. 4 / 4 - 4 * 4) so the result is 20. The following solution is written in C++ and uses brute force to find all possible solutions:</p>



<pre class="sh_cpp">
/*
 *  combo.cxx - Four Fours Combination Problem Solver
 *              (using brute force)
 *
 *  Solves the simple problem: How do you combine four fours 
 *       using standard arithmetic operations to equal 20.
 *
 *  This program solves this puzzle using brute force and 
 *       shows the answer ignoring order of operations.
 *
 *
 *  Sumit Khanna / http://penguindreams.org
 *    free to modify and redistribute
 */

#include &lt;iostream&gt;
using std::cout;
using std::endl;

int doOp(char op, int a,int b) {
  if(op == '+') {
    return a + b;
  }
  else if(op == '-') {
    return a - b;
  }
  else if(op == '*') {
    return a * b;
  }
  else if(op == '/') {
    return a / b;
  }
  else {
    cout &lt;&lt; &quot;Error. Invalid Operation &quot; &lt;&lt; op &lt;&lt; endl;
    exit(2);
    return 0;
  }
}

int main(int argc, char **argv) {

 char *ops = new char[4];
 ops[0] =  '+';
 ops[1] =  '-';
 ops[2] =  '*';
 ops[3] =  '/';

 for(int i=0; i&lt;4; i++) {
   for(int j=0; j&lt;4; j++) {
     for(int k=0; k&lt;4; k++) {

          int r = doOp(ops[i],4,4); 
          r = doOp(ops[j],r,4);
          r = doOp(ops[k],r,4);

          if(r == 20) {
            cout &lt;&lt; &quot; 4 &quot; &lt;&lt; ops[i] &lt;&lt; &quot; 4 &quot; &lt;&lt; ops[j] &lt;&lt; &quot; 4 &quot; &lt;&lt; ops[k] &lt;&lt; &quot; 4 = 20 &quot; &lt;&lt;  endl;
          }

     }
   }
 }
 
 cout &lt;&lt; &quot;Note: Solutions ignores order of operations&quot; &lt;&lt; endl &lt;&lt; endl; 

 delete[] ops;
 exit(0);

}

</pre>

<p> </p>]]></content:encoded>
			<wfw:commentRss>http://penguindreams.org/blog/simplefoursproblem/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
