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

<channel>
	<title>Franklin Strube - Web Developer</title>
	<atom:link href="http://franklinstrube.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://franklinstrube.com</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 10 Feb 2012 14:00:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Gridz: Window Resizing Utility for Linux</title>
		<link>http://franklinstrube.com/projects/gridz/</link>
		<comments>http://franklinstrube.com/projects/gridz/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 23:21:49 +0000</pubDate>
		<dc:creator>Franklin Strube</dc:creator>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[linux]]></category>
		<category><![CDATA[python]]></category>

		<guid isPermaLink="false">http://franklinstrube.com/?p=236</guid>
		<description><![CDATA[After switching to Openbox as my preferred desktop environment, I quickly became tired of dragging and resizing windows with my mouse pointer. I missed the way Unity would let me snap a window to the left half of my screen by simple tapping a combo like &#60;Super&#62; + Num 4. So, I went ahead and [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin: 2px 10px 10px 0;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffranklinstrube.com%2Fprojects%2Fgridz%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffranklinstrube.com%2Fprojects%2Fgridz%2F&amp;source=strube&amp;style=normal&amp;service=bit.ly&amp;hashtags=linux,python&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>After switching to Openbox as my preferred desktop environment, I quickly became tired of dragging and resizing windows with my mouse pointer. I missed the way Unity would let me snap a window to the left half of my screen by simple tapping a combo like &lt;Super&gt; + Num 4. So, I went ahead and hacked up a simple PyGTK app that does just that. It binds different keyboard shortcuts to some Python code that resizes and snaps windows to the edges of your screen.</p>
<p><a href="http://github.com/fstrube/gridz" target="_blank">Check it out on GitHub</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://franklinstrube.com/projects/gridz/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Magento Under-the-Hood: Advanced Layout Techniques</title>
		<link>http://franklinstrube.com/blog/magento-advanced-layout-techniques/</link>
		<comments>http://franklinstrube.com/blog/magento-advanced-layout-techniques/#comments</comments>
		<pubDate>Thu, 05 Jan 2012 03:49:06 +0000</pubDate>
		<dc:creator>Franklin Strube</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://franklinstrube.com/?p=217</guid>
		<description><![CDATA[Magento's XML layout engine is really unique because it allows you to override the presentation elements of an eCommerce site in a variety of ways. At the simplest level, an XML layout file determines which blocks are rendered on the page. A block is a PHP object that encapsulates a portion of the page's HTML output. In this article, I am going to cover the use of &#60;action /&#62; tags in XML layout files.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin: 2px 10px 10px 0;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Fmagento-advanced-layout-techniques%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Fmagento-advanced-layout-techniques%2F&amp;source=strube&amp;style=normal&amp;service=bit.ly&amp;hashtags=magento,php&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Magento&#8217;s XML layout engine is really unique because it allows you to override the presentation elements of an eCommerce site in a variety of ways. At the simplest level, an XML layout file determines which<strong> blocks</strong> are rendered on the page. A block is a PHP object that encapsulates a portion of the page&#8217;s HTML output. In this article, I am going to cover the use of <code>&lt;action /&gt;</code> tags in XML layout files.<span id="more-217"></span> If you are a beginner in need of a good starting point on understanding the basics blocks and layouts, try the <a title="Designer's Guide to Magento" href="http://www.magentocommerce.com/design_guide/articles/how-magento-builds-content" target="_blank">Designer&#8217;s Guide to Magento</a>.</p>
<h3>Calling PHP Functions</h3>
<p>The <code>&lt;action /&gt;</code> tag allows you to invoke any public method of a block object. This is extremely useful, especially if you want to override specific block settings in a custom theme (eg. in your <a title="The Better Way to Modify Magento Layouts" href="http://classyllama.com/development/magento-development/the-better-way-to-modify-magento-layout/" target="_blank">local.xml</a> file). Using an action tag, you can set various data attributes of an existing block. Here is an example of how the action tag works:</p>
<p><div id="wpshdo_1" class="wp-synhighlighter-outer"><div id="wpshdt_1" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_1"></a><a id="wpshat_1" class="wp-synhighlighter-title" href="#codesyntax_1"  onClick="javascript:wpsh_toggleBlock(1)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_1" onClick="javascript:wpsh_code(1)" title="Show code only"><img border="0" style="border: 0 none" src="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_1" onClick="javascript:wpsh_print(1)" title="Print code"><img border="0" style="border: 0 none" src="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_1" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span><span class="re2">?&gt;</span></span>
<span class="sc3"><span class="re1">&lt;layout</span> <span class="re0">version</span>=<span class="st0">&quot;0.1.0&quot;</span><span class="re2">&gt;</span></span>
	<span class="sc3"><span class="re1">&lt;default<span class="re2">&gt;</span></span></span>
		<span class="sc3"><span class="re1">&lt;reference</span> <span class="re0">name</span>=<span class="st0">&quot;head&quot;</span><span class="re2">&gt;</span></span>
			<span class="sc3"><span class="re1">&lt;action</span> <span class="re0">method</span>=<span class="st0">&quot;addJs&quot;</span><span class="re2">&gt;</span><span class="re1">&lt;script<span class="re2">&gt;</span></span></span>lib/PIE.js<span class="sc3"><span class="re1">&lt;/script<span class="re2">&gt;</span></span><span class="re1">&lt;/action<span class="re2">&gt;</span></span></span>
		<span class="sc3"><span class="re1">&lt;/reference<span class="re2">&gt;</span></span></span>
	<span class="sc3"><span class="re1">&lt;/default<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/layout<span class="re2">&gt;</span></span></span></pre></div></div></p>
<p>The above snippet will add the <a title="CSS3 PIE: CSS3 decorations for IE" href="http://css3pie.com" target="_blank">CSS3 PIE</a> Javascript file in your header. On the PHP level, the XML code triggers the <a title="Docs For Class Mage_Page_Block_Html_Head" href="http://docs.magentocommerce.com/Mage_Page/Mage_Page_Block_Html_Head.html#addJs" target="_blank">Mage_Page_Block_Html_Head::addJs()</a> function with a string parameter of &#8220;lib/PIE.js&#8221;.</p>
<h3>Array Parameters</h3>
<p>So, what happens if you need to pass an array as a parameter? Until recently, I had no idea how to do this, but as it turns out, there is an undocumented feature of the action tag. See below:</p>
<p><div id="wpshdo_2" class="wp-synhighlighter-outer"><div id="wpshdt_2" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_2"></a><a id="wpshat_2" class="wp-synhighlighter-title" href="#codesyntax_2"  onClick="javascript:wpsh_toggleBlock(2)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_2" onClick="javascript:wpsh_code(2)" title="Show code only"><img border="0" style="border: 0 none" src="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_2" onClick="javascript:wpsh_print(2)" title="Print code"><img border="0" style="border: 0 none" src="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_2" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><span class="sc3"><span class="re1">&lt;?xml</span> <span class="re0">version</span>=<span class="st0">&quot;1.0&quot;</span><span class="re2">?&gt;</span></span>
<span class="sc3"><span class="re1">&lt;layout</span> <span class="re0">version</span>=<span class="st0">&quot;0.1.0&quot;</span><span class="re2">&gt;</span></span>
	<span class="sc3"><span class="re1">&lt;default<span class="re2">&gt;</span></span></span>
		<span class="sc3"><span class="re1">&lt;reference</span> <span class="re0">name</span>=<span class="st0">&quot;content&quot;</span><span class="re2">&gt;</span></span>
			<span class="sc3"><span class="re1">&lt;action</span> <span class="re0">method</span>=<span class="st0">&quot;setSomething&quot;</span> <span class="re0">json</span>=<span class="st0">&quot;value&quot;</span><span class="re2">&gt;</span><span class="re1">&lt;value<span class="re2">&gt;</span></span></span><span class="sc2">&lt;![CDATA[</span>
<span class="sc2">				{&quot;associative&quot; : &quot;array&quot;}</span>
<span class="sc2">			]]&gt;</span><span class="sc3"><span class="re1">&lt;/value<span class="re2">&gt;</span></span><span class="re1">&lt;/action<span class="re2">&gt;</span></span></span>
			<span class="sc3"><span class="re1">&lt;action</span> <span class="re0">method</span>=<span class="st0">&quot;setSomethingElse&quot;</span> <span class="re0">json</span>=<span class="st0">&quot;value&quot;</span><span class="re2">&gt;</span><span class="re1">&lt;value<span class="re2">&gt;</span></span></span><span class="sc2">&lt;![CDATA[</span>
<span class="sc2">				[&quot;numeric&quot;, &quot;array&quot;]</span>
<span class="sc2">			]]&gt;</span><span class="sc3"><span class="re1">&lt;/value<span class="re2">&gt;</span></span><span class="re1">&lt;/action<span class="re2">&gt;</span></span></span>
		<span class="sc3"><span class="re1">&lt;/reference<span class="re2">&gt;</span></span></span>
	<span class="sc3"><span class="re1">&lt;/default<span class="re2">&gt;</span></span></span>
<span class="sc3"><span class="re1">&lt;/layout<span class="re2">&gt;</span></span></span></pre></div></div></p>
<p>If you notice, the code above adds a <strong>json</strong> attribute to the action tag. This attribute is a space-separated list of child nodes that are to be run through a JSON decoder. To see how this works under the hood, checkout the <a title="Docs For Class Mage_Core_Model_Layout" href="http://docs.magentocommerce.com/Mage_Core/Mage_Core_Model_Layout.html#_generateAction" target="_blank">source code</a> (<a href="http://svn.magentocommerce.com/source/branches/1.6/app/code/core/Mage/Core/Model/Layout.php" target="_blank">svn</a>).</p>
<p>In the past, I have felt limited when using the action tag because methods could only take flat variables. However, given this &#8220;discovery&#8221;, I am confident that I can accomplish a great deal of customization without having to create custom blocks and modules. Hopefully this tactic will help you as well!</p>
<h2>Further Reading</h2>
<p><span class="amz-product-link"><a href="http://www.amazon.com/Magento-Development-Cookbook-Nurul-Ferdous/dp/1849511446?SubscriptionId=AKIAJOL35H6TZCQ3DKWA&tag=frastrwebdev-20" target="_blank" rel="nofollow"><img src="http://ecx.images-amazon.com/images/I/41%2BD96Nx7RL._SL160_.jpg" height="160" width="130" rel="nofollow" title="Magento 1.4 Development Cookbook" /></a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://franklinstrube.com/blog/magento-advanced-layout-techniques/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Remote MySQL Administration for 1and1</title>
		<link>http://franklinstrube.com/blog/remote-mysql-administration-for-1and1/</link>
		<comments>http://franklinstrube.com/blog/remote-mysql-administration-for-1and1/#comments</comments>
		<pubDate>Tue, 28 Jun 2011 13:18:15 +0000</pubDate>
		<dc:creator>Franklin Strube</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://franklinstrube.com/?p=204</guid>
		<description><![CDATA[If you use 1and1.com for web hosting, then you are familiar with how much of a pain their MySQL management can be. In order to access your databases on 1and1, you must first login through the 1and1 customer portal, then navigate to the MySQL databases section, find the database you want to work with, and click on the PHPMyAdmin link. It's only a few steps, but between pages loads and a slow internet connection this can take up to a few minutes, and even then PHPMyAdmin can be clunky especially if you are used to using a desktop MySQL management tool such as MySQL Workbench or Sequel Pro (Mac). Although some hosting providers allow you to connect to your MySQL instances remotely, 1and1 does not support this (at least not by default).

What I am going to show you in this article is how to proxy a connection to your MySQL instance on 1and1's servers so that you can manage your databases using a full-featured application like MySQL Workbench or Sequel Pro.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin: 2px 10px 10px 0;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Fremote-mysql-administration-for-1and1%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Fremote-mysql-administration-for-1and1%2F&amp;source=strube&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>If you use 1and1.com for web hosting, then you are familiar with how much of a pain their MySQL management can be. In order to access your databases on 1and1, you must first login through the 1and1 customer portal, then navigate to the MySQL databases section, find the database you want to work with, and click on the PHPMyAdmin link. It&#8217;s only a few steps, but between pages loads and a slow internet connection this can take up to a few minutes, and even then PHPMyAdmin can be clunky especially if you are used to using a desktop MySQL management tool such as MySQL Workbench or Sequel Pro (Mac). Although some hosting providers allow you to connect to your MySQL instances remotely, 1and1 does not support this (at least not by default).</p>
<p>What I am going to show you in this article is how to proxy a connection to your MySQL instance on 1and1&#8242;s servers so that you can manage your databases using a full-featured application like MySQL Workbench or Sequel Pro.</p>
<h2>Prerequisites</h2>
<p>So far I have tested this out on a 1and1 Managed Linux server and a 1and1 Shared Linux server. For what it&#8217;s worth, the 1and1 servers that I have access to are running Debian 4.0 (Etch).</p>
<p>As for client support, this solution is rather flexible, and you can get things to work cross-platform (Linux/Mac/Windows). Of course, since the method utilizes standard Linux utilities, getting the client working on Windows is a bit clumsy.</p>
<h3>Setup Public Key Authentication</h3>
<p>A crucial element in getting this working is to setup SSH public keys for authentication. This is really simple and takes only a minute. Simply run the following commands on your local machine (not on the 1and1 server):</p>
<ol>
<li>Run the <code>ssh-keygen</code> command
<ol>
<li>Save the key files to <code>.ssh/1and1_rsa</code></li>
<li>Enter a passphrase for the private key (this is important for security)</li>
</ol>
</li>
<li>Run <code>ssh-copy-id -i .ssh/1and1_rsa <strong>user</strong>@<strong>your-1and1-hostname</strong></code></li>
<li>Run <code>ssh-add .ssh/1and1_rsa</code>. This will add the private key to the SSH agent so that you will not be prompted for the passphrase over-and-over.</li>
</ol>
<p>The goal here, is that our SSH client won&#8217;t ask us for our password every time we want to login to the server. For more information on setting up public key authentication for SSH, see <a title="Setting up public key authentication over SSH" href="http://www.petefreitag.com/item/532.cfm" target="_blank">Setting up public key authentication over SSH</a>.</p>
<h3>Install Socat</h3>
<p>You will need to install socat on both your local machine and the 1and1 server. If you are using Linux, you can easily install socat via your distributions software repository (apt, yum, etc.), for a Mac you can install socat via Macports.</p>
<p>Since 1and1 uses the Debian Linux distribution, all we need to do is download and extract the socat binaries on the server. To keep my webroot clean, I place everything inside a subfolder which is protected by .htaccess.</p>
<pre>user@localhost:~$ ssh <strong>user</strong>@<strong>your-1and1-hostname</strong>
(uiserver):user:~ &gt; mkdir -p ~/opt/src
(uiserver):user:~ &gt; echo "Deny from all" &gt; ~/opt/.htaccess
(uiserver):user:~ &gt; cd ~/opt/src &amp;&amp; wget http://archive.debian.org/debian/pool/main/s/socat/socat_1.4.3.1-1_i386.deb
(uiserver):user:~/opt/src &gt; dpkg -x socat_1.4.3.1-1_i386.deb ~/opt
(uiserver):user:~/opt/src &gt; cd &amp;&amp; echo 'export PATH=$HOME/opt/bin:$HOME/opt/usr/bin:$PATH' &gt;&gt; .bash_profile
(uiserver):user:~ &gt; . .bash_profile
(uiserver):user:~ &gt; socat -V</pre>
<p>If all went well, then you should see the socat version information:</p>
<pre>socat by Gerhard Rieger - see www.dest-unreach.org
socat version 1.4.3.1 on Apr 13 2006 15:56:26
   running on Linux version #1 SMP Tue Nov 30 18:27:29 CET 2010, release 2.6.28.8-20101130b-iscsi-ntacker-fasync-mremap-amd-sec6-grsec, machine i686
features:
  #define WITH_STDIO 1
  #define WITH_FDNUM 1
  #define WITH_FILE 1
...</pre>
<h2>Tunneling MySQL Traffic</h2>
<p>At this point, we have everything in place for allowing MySQL traffic to be tunneled through an SSH connection. All we need to do is glue everything together using socat. The following commands will establish a listening socket on your local computer that will act as a proxy to your 1and1 database (don&#8217;t forget to replace the parameters in bold with your specific information). To test the proxy, try connecting via the MySQL command line: <code>mysql -u <strong>1and1-db-user </strong>-S /tmp/1and1-mysql.sock -p</code></p>
<h3>1and1 Shared Hosting (MySQL on a separate server)</h3>
<pre>socat unix-l:/tmp/1and1-mysql.sock,fork exec:'ssh <strong>user</strong>@<strong>your-1and1-hostname</strong> "~/opt/usr/bin/socat stdio tcp:<strong>1and1-mysql-server</strong>:3306"'</pre>
<h3>1and1 Managed Hosting (MySQL on the same server)</h3>
<p>MySQL 4.x:</p>
<pre>socat unix-l:/tmp/1and1-mysql.sock,fork exec:'ssh <strong>user</strong>@<strong>your-1and1-hostname</strong> "~/opt/usr/bin/socat stdio unix:/tmp/mysql.sock"'</pre>
<p>MySQL 5.x:</p>
<pre>socat unix-l:/tmp/1and1-mysql.sock,fork exec:'ssh <strong>user</strong>@<strong>your-1and1-hostname</strong> "~/opt/usr/bin/socat stdio unix:/tmp/mysql5.sock"'</pre>
<h2>References</h2>
<p>Tunneling the qemu or kvm vnc unix socket via ssh - <a href="http://www.nico.schottelius.org/blog/tunneling-qemu-kvm-unix-socket-via-ssh/">http://www.nico.schottelius.org/blog/tunneling-qemu-kvm-unix-socket-via-ssh/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://franklinstrube.com/blog/remote-mysql-administration-for-1and1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Problems with Magento Admin 404 Pages</title>
		<link>http://franklinstrube.com/blog/problems-with-magento-admin-404-pages/</link>
		<comments>http://franklinstrube.com/blog/problems-with-magento-admin-404-pages/#comments</comments>
		<pubDate>Wed, 15 Jun 2011 19:41:15 +0000</pubDate>
		<dc:creator>Franklin Strube</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[magento]]></category>

		<guid isPermaLink="false">http://franklinstrube.com/?p=189</guid>
		<description><![CDATA[Lately, I have been having a problem with Magento (version 1.5.0.1) and how it is handling 404 errors in the admin. Basically, any time I go to a non-existent admin URL, I am getting redirected to the frontend 404 page. What should actually be happening is that I am redirected to an admin 404 page. As it [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin: 2px 10px 10px 0;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Fproblems-with-magento-admin-404-pages%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Fproblems-with-magento-admin-404-pages%2F&amp;source=strube&amp;style=normal&amp;service=bit.ly&amp;hashtags=magento&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Lately, I have been having a problem with Magento (version 1.5.0.1) and how it is handling 404 errors in the admin. Basically, any time I go to a non-existent admin URL, I am getting redirected to the <a title="Magento Frontend 404" href="http://franklinstrube.com/wp-content/uploads/2011/06/magento-frontend-404.png">frontend 404 page</a>. What should actually be happening is that I am redirected to an <a href="http://franklinstrube.com/wp-content/uploads/2011/06/magento-admin-404.png">admin 404 page</a>.</p>
<p>As it turns out, the problem lies with the Phoenix_Moneybookers extensions. In this modules config.xml file, it adds the following admin router:</p>
<p><div id="wpshdo_3" class="wp-synhighlighter-outer"><div id="wpshdt_3" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_3"></a><a id="wpshat_3" class="wp-synhighlighter-title" href="#codesyntax_3"  onClick="javascript:wpsh_toggleBlock(3)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_3" onClick="javascript:wpsh_code(3)" title="Show code only"><img border="0" style="border: 0 none" src="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_3" onClick="javascript:wpsh_print(3)" title="Print code"><img border="0" style="border: 0 none" src="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_3" class="wp-synhighlighter-inner" style="display: block;"><pre class="xml" style="font-family:monospace;"><ol start="94"><li class="li1"><div class="de1"><span class="sc3"><span class="re1">&lt;admin<span class="re2">&gt;</span></span></span></div></li><li class="li1"><div class="de1">    <span class="sc3"><span class="re1">&lt;routers<span class="re2">&gt;</span></span></span></div></li><li class="li1"><div class="de1">        <span class="sc3"><span class="re1">&lt;adminhtml<span class="re2">&gt;</span></span></span></div></li><li class="li1"><div class="de1">            <span class="sc3"><span class="re1">&lt;args<span class="re2">&gt;</span></span></span></div></li><li class="li1"><div class="de1">                <span class="sc3"><span class="re1">&lt;modules<span class="re2">&gt;</span></span></span></div></li><li class="li1"><div class="de1">                    <span class="sc3"><span class="re1">&lt;moneybookers</span> <span class="re0">before</span>=<span class="st0">&quot;Mage_Adminhtml&quot;</span><span class="re2">&gt;</span></span>Phoenix_Moneybookers<span class="sc3"><span class="re1">&lt;/moneybookers<span class="re2">&gt;</span></span></span>         </div></li><li class="li1"><div class="de1">                <span class="sc3"><span class="re1">&lt;/modules<span class="re2">&gt;</span></span></span></div></li><li class="li1"><div class="de1">            <span class="sc3"><span class="re1">&lt;/args<span class="re2">&gt;</span></span></span></div></li><li class="li1"><div class="de1">        <span class="sc3"><span class="re1">&lt;/adminhtml<span class="re2">&gt;</span></span></span></div></li><li class="li1"><div class="de1">    <span class="sc3"><span class="re1">&lt;/routers<span class="re2">&gt;</span></span></span></div></li><li class="li1"><div class="de1"><span class="sc3"><span class="re1">&lt;/admin<span class="re2">&gt;</span></span></span></div></li></ol></pre></div></div></p>
<p>On line 99, the Phoenix_Moneybookers controllers are being loaded <strong>after</strong> the Mage_Adminhtml controllers. What this means is that when Magento is parsing the routes in preparation to dispatch the appropriate controller method, if it comes across an unknown admin URL, then it will fallback to<strong> Phoenix_Moneybookers_IndexController-&gt;norouteAction()</strong> instead of<strong> Mage_Adminhtml_IndexController-&gt;norouteAction()</strong>.</p>
<p>The problem can be fixed by changing line 99 in the Moneybookers config.xml to load the controllers <strong>before </strong>the Mage_Adminhtml modules (although this hasn&#8217;t been tested), or by disabling Phoenix_Moneybookers altogether. Like I said, I haven&#8217;t tested modifying the config.xml, so if anybody who runs Moneybookers has the time to test, let me know if the module still works with it.</p>
<h2>Further Reading</h2>
<p><span class="amz-product-link"><a href="http://www.amazon.com/Magento-Development-Cookbook-Nurul-Ferdous/dp/1849511446?SubscriptionId=AKIAJOL35H6TZCQ3DKWA&tag=frastrwebdev-20" target="_blank" rel="nofollow"><img src="http://ecx.images-amazon.com/images/I/41%2BD96Nx7RL._SL160_.jpg" height="160" width="130" rel="nofollow" title="Magento 1.4 Development Cookbook" /></a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://franklinstrube.com/blog/problems-with-magento-admin-404-pages/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>An Introduction to Magento E-Commerce</title>
		<link>http://franklinstrube.com/blog/an-introduction-to-magento-e-commerce/</link>
		<comments>http://franklinstrube.com/blog/an-introduction-to-magento-e-commerce/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 00:40:57 +0000</pubDate>
		<dc:creator>Franklin Strube</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[magento]]></category>

		<guid isPermaLink="false">http://franklinstrube.com/?p=133</guid>
		<description><![CDATA[Since I have been working with the Magento E-Commerce software as of late, I will be publishing a series of blog posts to share what I have been learning with everyone.  For those of you who don't know, Magento is a popular PHP/MySQL e-commerce platform that is super-powerful and infinitely customizable.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin: 2px 10px 10px 0;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Fan-introduction-to-magento-e-commerce%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Fan-introduction-to-magento-e-commerce%2F&amp;source=strube&amp;style=normal&amp;service=bit.ly&amp;hashtags=magento&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Since I have been working with the Magento E-Commerce software as of late, I will be publishing a series of blog posts to share what I have been learning with everyone.  For those of you who don&#8217;t know, Magento is a popular PHP/MySQL e-commerce platform that is super-powerful and infinitely customizable.  Writing software and customizations for Magento is notorious for its steep learning curve.  It has foundations in the Zend framework, so if you are familiar with Zend, then theoretically you have a head-start on that curve.</p>
<h2>Magento Basics</h2>
<p>If you are just starting out be forewarned, Magento has a STEEP learning curve, but once you get the hang of it, things start to smooth out and fall into place.</p>
<h3>Model-View-Controller</h3>
<p>Magento is a Model-View-Controller (MVC) framework that adheres to the motto &#8220;configuration over convention&#8221;. This simply means that, unlike other MVC frameworks (like CakePHP or Ruby on Rails), in most cases you are specifically telling Magento where to look for MVC components. It doesn&#8217;t do much automatically other than auto-loading classes.</p>
<p>The major components of Magento&#8217;s architecture are:</p>
<ul>
<li>Model &#8211; Responsible for containing the business logic of the application.  Talks to the datastore (MySQL).</li>
<li>Block &#8211; A component of the view layer in MVC.  Represents contained portions of the view that can be reused throughout a page.</li>
<li>Layout &#8211; A component of the view layer in MVC.  Determines which components (blocks/templates) get rendered on a page.</li>
<li>Template &#8211; A component of the view layer.  Renders the actual html that will be displayed in the response.</li>
<li>Controller &#8211; Contains &#8220;actions&#8221; which correspond to URL requests.  Loads the layout for said action and any models needed for business logic, then renders the output of the page.</li>
</ul>
<p>As you can see, the Magento framework splits the view into three separate parts: blocks, layouts, and templates.  This can add confusion to the learning process, but in the end it results in more organized and object-oriented code.</p>
<h3>Directory Structure</h3>
<p><div id="attachment_137" class="wp-caption alignright" style="width: 309px"><a href="http://franklinstrube.com/wp-content/uploads/2011/02/magento-folder-structure.png"><img class="size-full wp-image-137" title="Magento Directory Structure" src="http://franklinstrube.com/wp-content/uploads/2011/02/magento-folder-structure.png" alt="Magento Directory Structure" width="299" height="625" /></a><p class="wp-caption-text">Magento Directory Structure</p></div></p>
<p>The Magento directory structure is very deep.  It can seem like a maze to newcomers, and even seasoned Magento programmers can find it clunky at times.  When you are doing some hardcore Magento programming, it always helps to use an IDE like Eclipse, which will allow you to hyperlink to various classes and functions within the code-base.  Otherwise, grep is your best (and perhaps only) friend!</p>
<p>To keep things brief, I am just going to go over a few key directories.</p>
<h4>/app/code</h4>
<p>This is where the models, blocks and controllers reside.  They are organized in segments called modules, which are of three classes: core, local, and community.  Core modules are what gets shipped with the system.  Local modules are custom modules that you install manually.  Community modules are installed from the Magento Connect repositories via PEAR.</p>
<h4>/app/code/local</h4>
<p>This is where all of your local modules reside  To keep things organized, developers are expected to contain all of their modules within a &#8220;unique&#8221; namespace of their choosing.  For example, if I chose the namespace &#8220;FranklinStrube&#8221;, then each of my modules would be its own sub-directory in <code>/app/code/local/FranklinStrube</code>.</p>
<h4>/app/design</h4>
<p>This is where your layout and template files are stored.  The sub-directory structure separates the frontend from the administrative section (adminhtml).  The sub-directory structure from there contains theme-specific files.  For example, the initial frontend theme is &#8220;default&#8221;, so Magento loads the view files from the appropriate folder under /app/design/frontend/default/default.  If the view file cannot be found their, then it loads the view files from the appropriate folder under /app/design/frontend/base/default.  So, if you changed the theme to &#8220;coolred&#8221;, then it would first look for the appropriate file under /app/design/frontend/default/coolred first, then fallback to /app/design/frontend/base/default.</p>
<h4>/app/etc</h4>
<p>This folder holds your global configuration file (local.xml), which is where you tell Magento how to connect to your database. There is also a folder called modules, which is where you enable any custom modules for your namespace.</p>
<h4>/lib</h4>
<p>The lib folder contains all of the core libraries, like the Zend Framework, and any of Varien&#8217;s core files.</p>
<h2>Next Steps</h2>
<p>This article barely scratched the surface of Magento. If you are serious about developing for the Magento platform, I would recommend reading through the tutorials in the <a title="Magento - Knowledge Base - eCommerce Software for Growth" href="http://www.magentocommerce.com/knowledge-base" target="_blank">Magento Knowledge Base</a>. You can also find good tutorials and examples on the following sites:</p>
<ul>
<li><a href="http://alanstorm.com/">http://alanstorm.com/</a></li>
<li><a href="http://blog.baobaz.com/">http://blog.baobaz.com</a></li>
<li><a href="http://www.edmondscommerce.co.uk/category/magento/">http://www.edmondscommerce.co.uk/category/magento/</a></li>
<li><a href="http://colin.mollenhour.com/">http://colin.mollenhour.com/</a></li>
</ul>
<h2>Suggested Reading</h2>
<p><span class="amz-product-link"><a href="http://www.amazon.com/Magento-Beginners-Guide-William-Rice/dp/1847195946?SubscriptionId=AKIAJOL35H6TZCQ3DKWA&tag=frastrwebdev-20" target="_blank" rel="nofollow"><img src="http://ecx.images-amazon.com/images/I/41I3gN%2BsJ5L._SL160_.jpg" height="160" width="130" rel="nofollow" title="Magento: Beginner&#8217;s Guide" /></a></span></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://franklinstrube.com/blog/an-introduction-to-magento-e-commerce/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Installing MeeGo on an EeePC 900</title>
		<link>http://franklinstrube.com/blog/installing-meego-on-an-eeepc-900/</link>
		<comments>http://franklinstrube.com/blog/installing-meego-on-an-eeepc-900/#comments</comments>
		<pubDate>Mon, 14 Mar 2011 00:22:45 +0000</pubDate>
		<dc:creator>Franklin Strube</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://franklinstrube.com/?p=149</guid>
		<description><![CDATA[I have heard about MeeGo before, but haven&#8217;t looked into the project much until now. As it turns out, MeeGo is a linux-based distribution which is aimed at handhelds, connected TVs, in-vehicle infotainment systems, and netbooks/tablets. It was only announced by Nokia and Intel in 2010 in an effort to merge the Maemo and Moblin [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin: 2px 10px 10px 0;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Finstalling-meego-on-an-eeepc-900%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Finstalling-meego-on-an-eeepc-900%2F&amp;source=strube&amp;style=normal&amp;service=bit.ly&amp;hashtags=linux&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I have heard about MeeGo before, but haven&#8217;t looked into the project much until now. As it turns out, MeeGo is a linux-based distribution which is aimed at handhelds, connected TVs, in-vehicle infotainment systems, and netbooks/tablets. It was only announced by Nokia and Intel in 2010 in an effort to merge the Maemo and Moblin platforms, so it is still relatively young. <a title="Supported Hardware Platforms | MeeGo" href="http://meego.com/devices/netbook/supported-hardware-platforms" target="_blank">According to the hardware requirements</a>, the MeeGo OS is only supported on newer Intel hardware (basically anything with an Atom chipset).</p>
<p>Despite this fact, I decided to attempt an install on my Asus EeePC 900, even though it has a 900MHz Celeron M processor (not an Atom). I was able to boot from a live CD and eventually install the OS.  But, as expected I ran into a few snags along the way (and still, not everything works).</p>
<h2>Installation Media</h2>
<p>For the installation, I followed the <a title="Installing MeeGo on your Netbook | MeeGo" href="http://meego.com/devices/netbook/installing-meego-your-netbook" target="_blank">instructions for creating a bootable USB drive</a>, only I used an SD card instead. It went something like this:</p>
<ol>
<li>Reformat SD card with ext3 filestystem, then unmount it</li>
<li>Download MeeGo 1.1 for Netbooks <a title="Releases | MeeGo" href="http://meego.com/downloads/releases/netbook" target="_blank">http://meego.com/downloads/releases/netbook</a></li>
<li>Download the <a title="image-writer" href="http://git.moblin.org/cgit.cgi/moblin-image-creator/plain/image-writer" target="_blank">Image Writer</a></li>
<li>Run: <code>sudo image-writer &lt;path-to-image&gt;</code></li>
<li>Boot from the SD card</li>
</ol>
<p><strong>Note:</strong> on the Asus EeePC 900, pressing the ESC key at startup will display the boot device selector.</p>
<h2>MeeGo Live</h2>
<p>The MeeGo OS loaded alright. I was able to browse around the interface, open the file browser and connect to wireless (only after I realized that the hardware radio was turned off on boot).  But, that was about it. Most other apps, like Chromium, would crash when I attempted to load them, probably due to the SSSE3 instructions in the code.</p>
<h2>MeeGo Installation</h2>
<p>Unfortunately, during the MeeGo installation, my mouse was not fully functional, forcing me to navigate through the installation using my keyboard. This was a bit of a pain, albeit feasible. In order to get MeeGo operational, I had to format my drive with ext3 (not the recommended btrfs).</p>
<p><div id="attachment_164" class="wp-caption alignnone" style="width: 460px"><a href="http://franklinstrube.com/wp-content/uploads/2011/03/IMG_20110222_221116.jpg"><img class="size-large wp-image-164" title="MeeGo Installation - Screen 1" src="http://franklinstrube.com/wp-content/uploads/2011/03/IMG_20110222_221116-1024x764.jpg" alt="MeeGo Installation - Screen 1" width="450" height="335" /></a><p class="wp-caption-text">Proceed past the initial screen</p></div></p>
<p><div id="attachment_165" class="wp-caption alignnone" style="width: 460px"><a href="http://franklinstrube.com/wp-content/uploads/2011/03/IMG_20110222_221200.jpg"><img class="size-large wp-image-165" title="MeeGo Installation - Screen 2" src="http://franklinstrube.com/wp-content/uploads/2011/03/IMG_20110222_221200-1024x764.jpg" alt="MeeGo Installation - Screen 2" width="450" height="335" /></a><p class="wp-caption-text">Select your language of choice</p></div></p>
<p><div id="attachment_166" class="wp-caption alignnone" style="width: 460px"><a href="http://franklinstrube.com/wp-content/uploads/2011/03/IMG_20110222_221302.jpg"><img class="size-large wp-image-166" title="MeeGo Installation - Screen 3" src="http://franklinstrube.com/wp-content/uploads/2011/03/IMG_20110222_221302-1024x764.jpg" alt="MeeGo Installation - Screen 3" width="450" height="335" /></a><p class="wp-caption-text">Make sure you select &quot;Review and modify partitioning layout&quot;</p></div></p>
<p>&nbsp;</p>
<p><div id="attachment_167" class="wp-caption alignnone" style="width: 460px"><a href="http://franklinstrube.com/wp-content/uploads/2011/03/IMG_20110222_221340.jpg"><img class="size-large wp-image-167" title="MeeGo Installation - Screen 4" src="http://franklinstrube.com/wp-content/uploads/2011/03/IMG_20110222_221340-1024x764.jpg" alt="MeeGo Installation - Screen 4" width="450" height="335" /></a><p class="wp-caption-text">Select your root partition and click &quot;Edit&quot;</p></div></p>
<p><div id="attachment_168" class="wp-caption alignnone" style="width: 460px"><a href="http://franklinstrube.com/wp-content/uploads/2011/03/IMG_20110222_221459.jpg"><img class="size-large wp-image-168" title="MeeGo Installation - Screen 5" src="http://franklinstrube.com/wp-content/uploads/2011/03/IMG_20110222_221459-1024x764.jpg" alt="MeeGo Installation - Screen 5" width="450" height="335" /></a><p class="wp-caption-text">Change the Filesystem type to ext3</p></div></p>
<p>Once the installation completes and reboots into the OS, it is supposed to run a setup script which initializes your user account and some settings.  For some reason, that script fails to start. The fix for this is to switch to a shell using <code>ctrl + alt + f1</code>, then login as <strong>root</strong> with the password <strong>meego</strong>. Once you have a shell, run:</p>
<pre>~:# startx &amp;
~:# xterm</pre>
<p>That should give you a terminal window in X (the linux GUI).  From there you should be able to run the firstboot program.</p>
<h2>Does it Work?</h2>
<p>If you have made it this far and try firing up some applications, you will notice that many of them will not run. Some will even crash X entirely! Luckily, though, wireless and SSH work out-of-the box, so we can forward X11 apps from any linux server to our EeePC. This basically makes the EeePC functional as a thin-client.</p>
<p>Since MeeGo is an RPM-based distribution, we can install rpms on the system to replace any broken apps. Unfortunately, you will quickly find yourself tracking down endless chains of dependencies, while simply trying to install something as trivial as wget. But, if you are so lucky as to get wget installed and working, then you can download the linux RPM for Chrome, and install it with the <code>--nodeps</code> flag.  Then you will have to run Chrome from the command line with the <code>--no-first-run</code> flag, and you are good to go.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://franklinstrube.com/blog/installing-meego-on-an-eeepc-900/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Magento Module-Manager Bash Completion</title>
		<link>http://franklinstrube.com/blog/magento-module-manager-bash-completion/</link>
		<comments>http://franklinstrube.com/blog/magento-module-manager-bash-completion/#comments</comments>
		<pubDate>Wed, 02 Mar 2011 08:35:16 +0000</pubDate>
		<dc:creator>Franklin Strube</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[magento]]></category>

		<guid isPermaLink="false">http://franklinstrube.com/?p=158</guid>
		<description><![CDATA[The following bash_completion script will enable your Linux shell to auto-complete Magento modman commands.  Make sure you have modman in your $PATH, then simply copy the file to /etc/bash_completion.d/modman or append to ~/.bash_completion.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin: 2px 10px 10px 0;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Fmagento-module-manager-bash-completion%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Fmagento-module-manager-bash-completion%2F&amp;source=strube&amp;style=normal&amp;service=bit.ly&amp;hashtags=magento&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>The following bash_completion script will enable your Linux shell to auto-complete Magento modman commands.  Make sure you have modman in your $PATH, then simply copy the file to /etc/bash_completion.d/modman or append to ~/.bash_completion.</p>
<pre><div id="wpshdo_4" class="wp-synhighlighter-outer"><div id="wpshdt_4" class="wp-synhighlighter-expanded"><table border="0" width="100%"><tr><td align="left" width="80%"><a name="#codesyntax_4"></a><a id="wpshat_4" class="wp-synhighlighter-title" href="#codesyntax_4"  onClick="javascript:wpsh_toggleBlock(4)" title="Click to show/hide code block">Source code</a></td><td align="right"><a href="#codesyntax_4" onClick="javascript:wpsh_code(4)" title="Show code only"><img border="0" style="border: 0 none" src="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/themes/default/images/code.png" /></a>&nbsp;<a href="#codesyntax_4" onClick="javascript:wpsh_print(4)" title="Print code"><img border="0" style="border: 0 none" src="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/themes/default/images/printer.png" /></a>&nbsp;<a href="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/About.html" target="_blank" title="Show plugin information"><img border="0" style="border: 0 none" src="http://franklinstrube.com/wp-content/plugins/wp-synhighlight/themes/default/images/info.gif" /></a>&nbsp;</td></tr></table></div><div id="wpshdi_4" class="wp-synhighlighter-inner" style="display: block;"><pre class="bash" style="font-family:monospace;"><ol><li class="li1"><div class="de1"><span class="co0">#!/bin/bash</span></div></li><li class="li1"><div class="de1">_modman<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">	<span class="kw3">local</span> cur prev opts modules mm</div></li><li class="li1"><div class="de1">	<span class="re2">COMPREPLY</span>=<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">	<span class="re2">cur</span>=<span class="st0">&quot;<span class="es3">${COMP_WORDS[COMP_CWORD]}</span>&quot;</span></div></li><li class="li1"><div class="de1">	<span class="re2">prev</span>=<span class="st0">&quot;<span class="es3">${COMP_WORDS[COMP_CWORD-1]}</span>&quot;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="re2">opts</span>=<span class="st0">&quot;init --help --version&quot;</span></div></li><li class="li1"><div class="de1">	<span class="re2">mm</span>=$<span class="br0">&#40;</span>_modman_get_mm<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">	<span class="re2">module</span>=$<span class="br0">&#40;</span>_modman_get_module<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re5">-n</span> <span class="st0">&quot;<span class="es2">$mm</span>&quot;</span> <span class="br0">&#93;</span> ; <span class="kw1">then</span></div></li><li class="li1"><div class="de1">		<span class="re2">opts</span>=<span class="st0">&quot;<span class="es3">${opts}</span> list repair update-all&quot;</span></div></li><li class="li1"><div class="de1">		<span class="re2">modules</span>=$<span class="br0">&#40;</span>modman list<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">fi</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="kw1">case</span> <span class="st0">&quot;<span class="es3">${prev}</span>&quot;</span> <span class="kw1">in</span></div></li><li class="li1"><div class="de1">		modman<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">			<span class="re2">opts</span>=<span class="st0">&quot;<span class="es3">${opts}</span> <span class="es3">${modules}</span>&quot;</span></div></li><li class="li1"><div class="de1">			<span class="br0">&#91;</span> <span class="re5">-n</span> <span class="st0">&quot;<span class="es2">$module</span>&quot;</span> <span class="br0">&#93;</span> <span class="sy0">&amp;&amp;</span> <span class="re2">opts</span>=<span class="st0">&quot;<span class="es3">${opts}</span> update deploy&quot;</span></div></li><li class="li1"><div class="de1">			<span class="sy0">;;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">		init <span class="sy0">|</span> <span class="re5">--help</span> <span class="sy0">|</span> <span class="re5">--version</span> <span class="sy0">|</span> list <span class="sy0">|</span> repair <span class="sy0">|</span> update-all<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">			<span class="re2">opts</span>=<span class="st0">&quot;&quot;</span></div></li><li class="li1"><div class="de1">			<span class="re2">modules</span>=<span class="st0">&quot;&quot;</span></div></li><li class="li1"><div class="de1">			<span class="sy0">;;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">		deploy <span class="sy0">|</span> update <span class="sy0">|</span> checkout <span class="sy0">|</span> clone<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">			<span class="re2">opts</span>=<span class="st0">&quot;--force --copy&quot;</span></div></li><li class="li1"><div class="de1">			<span class="re2">modules</span>=<span class="st0">&quot;&quot;</span></div></li><li class="li1"><div class="de1">			<span class="sy0">;;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">		<span class="re5">--force</span> <span class="sy0">|</span> --copy<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">			<span class="re2">opts</span>=<span class="st0">&quot;&quot;</span></div></li><li class="li1"><div class="de1">			<span class="re2">modules</span>=<span class="st0">&quot;&quot;</span></div></li><li class="li1"><div class="de1">			<span class="sy0">;;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">		<span class="sy0">*</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">			<span class="br0">&#91;</span> <span class="sy0">!</span> <span class="re5">-d</span> <span class="st0">&quot;<span class="es2">$mm</span>/<span class="es3">${prev}</span>&quot;</span> <span class="br0">&#93;</span> <span class="sy0">&amp;&amp;</span> <span class="re2">opts</span>=<span class="st0">&quot;checkout clone&quot;</span></div></li><li class="li1"><div class="de1">			<span class="br0">&#91;</span> <span class="re5">-d</span> <span class="st0">&quot;<span class="es2">$mm</span>/<span class="es3">${prev}</span>&quot;</span> <span class="br0">&#93;</span> <span class="sy0">&amp;&amp;</span> <span class="re2">opts</span>=<span class="st0">&quot;update deploy&quot;</span></div></li><li class="li1"><div class="de1">			<span class="re2">modules</span>=<span class="st0">&quot;&quot;</span></div></li><li class="li1"><div class="de1">			<span class="sy0">;;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="kw1">esac</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="re2">COMPREPLY</span>=<span class="br0">&#40;</span> $<span class="br0">&#40;</span><span class="kw3">compgen</span> <span class="re5">-W</span> <span class="st0">&quot;<span class="es3">${opts}</span> <span class="es3">${modules}</span>&quot;</span> <span class="re5">--</span> <span class="co1">${cur}</span><span class="br0">&#41;</span> <span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">	<span class="kw3">return</span> 0</div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">_modman_get_mm<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">	<span class="kw3">local</span> root _pwd</div></li><li class="li1"><div class="de1">	<span class="re2">_pwd</span>=<span class="sy0">`</span><span class="kw3">pwd</span><span class="sy0">`</span></div></li><li class="li1"><div class="de1">	<span class="re2">root</span>=$<span class="br0">&#40;</span>_modman_realpath <span class="sy0">`</span><span class="kw3">pwd</span><span class="sy0">`</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">	<span class="kw1">while</span> <span class="sy0">!</span> <span class="br0">&#91;</span> <span class="re5">-d</span> <span class="re1">$root</span><span class="sy0">/</span>.modman <span class="br0">&#93;</span>; <span class="kw1">do</span></div></li><li class="li1"><div class="de1">		<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="st0">&quot;<span class="es2">$root</span>&quot;</span> = <span class="st0">&quot;/&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span></div></li><li class="li1"><div class="de1">			<span class="kw3">cd</span> <span class="re1">$_pwd</span> <span class="sy0">&amp;&amp;</span> <span class="kw3">return</span> 1</div></li><li class="li1"><div class="de1">		<span class="kw1">fi</span></div></li><li class="li1"><div class="de1">		<span class="kw3">cd</span> ..</div></li><li class="li1"><div class="de1">		<span class="re2">root</span>=<span class="sy0">`</span><span class="kw3">pwd</span><span class="sy0">`</span></div></li><li class="li1"><div class="de1">	<span class="kw1">done</span></div></li><li class="li1"><div class="de1">	<span class="kw3">cd</span> <span class="re1">$_pwd</span></div></li><li class="li1"><div class="de1">	<span class="kw3">echo</span> <span class="st0">&quot;<span class="es2">$root</span>/.modman&quot;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">_modman_get_module<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">	<span class="kw3">local</span> root module modpath mm _pwd</div></li><li class="li1"><div class="de1">	<span class="re2">_pwd</span>=<span class="sy0">`</span><span class="kw3">pwd</span><span class="sy0">`</span></div></li><li class="li1"><div class="de1">	<span class="re2">mm</span>=$<span class="br0">&#40;</span>_modman_get_mm<span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">	<span class="re2">root</span>=<span class="st0">&quot;<span class="es4">$(dirname $mm)</span>&quot;</span></div></li><li class="li1"><div class="de1">	<span class="re2">module</span>=<span class="st_h">''</span></div></li><li class="li1"><div class="de1">	<span class="kw1">while</span> <span class="br0">&#91;</span> <span class="st0">&quot;<span class="es2">$root</span>&quot;</span> <span class="sy0">!</span>= <span class="st0">&quot;<span class="es4">$(pwd)</span>&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">do</span></div></li><li class="li1"><div class="de1">		<span class="re2">modpath</span>=<span class="sy0">`</span><span class="kw3">pwd</span><span class="sy0">`</span></div></li><li class="li1"><div class="de1">		<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="st0">&quot;<span class="es2">$mm</span>&quot;</span> = <span class="st0">&quot;<span class="es4">$(dirname $modpath)</span>&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">then</span></div></li><li class="li1"><div class="de1">			<span class="re2">module</span>=$<span class="br0">&#40;</span><span class="kw2">basename</span> <span class="re1">$modpath</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">			<span class="kw3">break</span></div></li><li class="li1"><div class="de1">		<span class="kw1">fi</span></div></li><li class="li1"><div class="de1">		<span class="kw3">cd</span> ..</div></li><li class="li1"><div class="de1">	<span class="kw1">done</span></div></li><li class="li1"><div class="de1">	<span class="kw3">cd</span> <span class="re1">$_pwd</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="kw1">if</span> <span class="br0">&#91;</span> <span class="re5">-z</span> <span class="st0">&quot;<span class="es2">$module</span>&quot;</span> <span class="br0">&#93;</span> ; <span class="kw1">then</span></div></li><li class="li1"><div class="de1">		<span class="kw3">return</span> 1</div></li><li class="li1"><div class="de1">	<span class="kw1">fi</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">	<span class="kw3">echo</span> <span class="re1">$module</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">_modman_realpath<span class="br0">&#40;</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">	<span class="re2">fname</span>=<span class="co1">${1%/}</span> <span class="co0"># strips trailing '/'</span></div></li><li class="li1"><div class="de1">	<span class="kw1">while</span> <span class="br0">&#91;</span> <span class="re5">-L</span> <span class="st0">&quot;<span class="es2">$fname</span>&quot;</span> <span class="br0">&#93;</span>; <span class="kw1">do</span></div></li><li class="li1"><div class="de1">	 <span class="re2">oldfname</span>=<span class="st0">&quot;<span class="es2">$fname</span>&quot;</span></div></li><li class="li1"><div class="de1">	 <span class="re2">fname</span>=<span class="st0">&quot;<span class="es4">$(command ls -l $fname)</span>&quot;</span></div></li><li class="li1"><div class="de1">	 <span class="re2">fname</span>=<span class="st0">&quot;<span class="es3">${fname#*&gt; }</span>&quot;</span></div></li><li class="li1"><div class="de1">	 <span class="kw1">if</span> <span class="br0">&#91;</span> <span class="st0">&quot;<span class="es2">$fname</span>&quot;</span> = . <span class="br0">&#93;</span> ; <span class="kw1">then</span></div></li><li class="li1"><div class="de1">	 <span class="re2">fname</span>=<span class="st0">&quot;<span class="es4">$(dirname $oldfname)</span>&quot;</span></div></li><li class="li1"><div class="de1">	 <span class="kw1">elif</span> <span class="kw3">echo</span> <span class="re1">$fname</span> <span class="sy0">|</span> <span class="kw2">grep</span> <span class="re5">-vq</span> <span class="st_h">'^/'</span> - ; <span class="kw1">then</span></div></li><li class="li1"><div class="de1">	 <span class="re2">fname</span>=<span class="st0">&quot;<span class="es4">$(dirname $oldfname)</span>/<span class="es2">$fname</span>&quot;</span></div></li><li class="li1"><div class="de1">	 <span class="kw1">fi</span></div></li><li class="li1"><div class="de1">	<span class="kw1">done</span></div></li><li class="li1"><div class="de1">	<span class="kw3">pushd</span> $<span class="br0">&#40;</span><span class="kw2">dirname</span> <span class="re1">$fname</span><span class="br0">&#41;</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null</div></li><li class="li1"><div class="de1">	<span class="re2">fname</span>=$<span class="br0">&#40;</span><span class="kw3">pwd</span> -P<span class="br0">&#41;</span><span class="sy0">/</span>$<span class="br0">&#40;</span><span class="kw2">basename</span> <span class="re1">$fname</span><span class="br0">&#41;</span></div></li><li class="li1"><div class="de1">	<span class="kw3">popd</span> <span class="sy0">&gt;</span> <span class="sy0">/</span>dev<span class="sy0">/</span>null</div></li><li class="li1"><div class="de1">	<span class="kw3">echo</span> <span class="re1">$fname</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1"><span class="kw3">complete</span> <span class="re5">-F</span> _modman modman</div></li></ol></pre></div></div></pre>
]]></content:encoded>
			<wfw:commentRss>http://franklinstrube.com/blog/magento-module-manager-bash-completion/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Town Hall with WordPress Founder Matt Mullenweg</title>
		<link>http://franklinstrube.com/blog/town-hall-with-wordpress-founder-matt-mullenweg/</link>
		<comments>http://franklinstrube.com/blog/town-hall-with-wordpress-founder-matt-mullenweg/#comments</comments>
		<pubDate>Tue, 01 Feb 2011 06:20:45 +0000</pubDate>
		<dc:creator>Franklin Strube</dc:creator>
				<category><![CDATA[Blog]]></category>

		<guid isPermaLink="false">http://franklinstrube.com/?p=124</guid>
		<description><![CDATA[I just got in from the most recent WordPressDC meetup, where the founder of WordPress and Automattic, Matt Mullenweg, entertained us with a nice QA presentation.  The event was held at Fathom Creative in D.C. near 14th and Rhode Island, with about 100 people in attendance (plus another 50 or so via Livestream).For those of you [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin: 2px 10px 10px 0;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Ftown-hall-with-wordpress-founder-matt-mullenweg%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Ftown-hall-with-wordpress-founder-matt-mullenweg%2F&amp;source=strube&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>I just got in from the most recent <a title="WordPressDC Meetup" href="http://www.meetup.com/wordpressdc" target="_blank">WordPressDC</a> meetup, where the founder of WordPress and <a title="Automattic" href="http://www.automattic.com" target="_blank">Automattic</a>, <a title="Matt Mullenweg — aka Photo Matt — on WordPress, Web, Jazz, Life, and Photography" href="http://ma.tt" target="_blank">Matt Mullenweg</a>, entertained us with a nice QA presentation.  The event was held at Fathom Creative in D.C. near 14th and Rhode Island, with about 100 people in attendance (plus another 50 or so via Livestream).<span id="more-124"></span>For those of you who don&#8217;t know, WordPress is arguably the most popular and most secure blogging platform in the open source community.  It powers something like 12 percent of all sites on the web, and according to Matt, there is little reason why WordPress can&#8217;t prove useful to the other 88 percent in the future.</p>
<p>Washinton, DC, is a very special place in the history of WordPress.  When Matt was in the Washington, DC, area during a high school field trip, he wanted to share his experiences with his friends back home in Houston, TX.  Out of that need came what we know now to be WordPress.</p>
<p>One take-away from tonights discussion for any budding entrepreneurs is that most successful entrepreneurs are pursuing something that they are utterly passionate about.  So passionate, in fact, that regardless of their profit margins, they remain committed to their mission.</p>
<p>Overall, I enjoyed tonights discussion.  It was enlightening to see how a young, down-to-earth guy changed the face of modern communication.</p>
]]></content:encoded>
			<wfw:commentRss>http://franklinstrube.com/blog/town-hall-with-wordpress-founder-matt-mullenweg/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Editing the Top Panel in Ubuntu 10.04 Netbook Edition</title>
		<link>http://franklinstrube.com/blog/editing-the-top-panel-in-ubuntu-10-04-netbook-edition/</link>
		<comments>http://franklinstrube.com/blog/editing-the-top-panel-in-ubuntu-10-04-netbook-edition/#comments</comments>
		<pubDate>Mon, 31 Jan 2011 05:41:17 +0000</pubDate>
		<dc:creator>Franklin Strube</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[gconf]]></category>
		<category><![CDATA[gnome-panel]]></category>
		<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://franklinstrube.com/?p=80</guid>
		<description><![CDATA[After upgrading my eee PC netbook to Ubuntu Netbook Remix 10.04 I found to my dismay that the top gnome-panel is completely locked-down.  Unable to find a work-around through gconf-editor or any other easily accessible means, I decided to try my hand at manually editing the gconf configuration files.  The following is a tuturial explaining how to remove the Window Picker Applet and add the DockBar and NameBar applets in its place.]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin: 2px 10px 10px 0;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Fediting-the-top-panel-in-ubuntu-10-04-netbook-edition%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffranklinstrube.com%2Fblog%2Fediting-the-top-panel-in-ubuntu-10-04-netbook-edition%2F&amp;source=strube&amp;style=normal&amp;service=bit.ly&amp;hashtags=gconf,gnome-panel,linux&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>In the Ubuntu Netbook Edition 10.04, the top panel in Gnome is locked so that you cannot add or remove applets.  This means that you are essentially forced to use the standard Ubuntu Window Picker Applet rather than go with a customized approach of Dockbar/Namebar. Fortunately, there are a few methods to overcome this hindrance.</p>
<h2>Window Picker Applet vs. NameBar</h2>
<p>The advantages to using Namebar over the standard Window Picker Applet is that NameBar throws the title of the top-most maximized window into the panel, and will also  display  minimize/restore/maximize buttons, which the Window Picker Applet is missing.</p>
<p><div id="attachment_95" class="wp-caption alignleft" style="width: 550px"><a href="http://franklinstrube.com/wp-content/uploads/2010/06/namebar.png"><img class="size-full wp-image-95 " title="Namebar Screenshot" src="http://franklinstrube.com/wp-content/uploads/2010/06/namebar.png" alt="namebar screenshot" width="540" height="124" /></a><p class="wp-caption-text">Namebar Screenshot</p></div></p>
<h2>Installing NameBar</h2>
<p>To install NameBar, download the *.deb file from <a href="http://www.webupd8.org/2009/11/use-namebar-and-dockbarx-to-optimize.html">http://www.webupd8.org/2009/11/use-namebar-and-dockbarx-to-optimize.html</a>.</p>
<h2>Add Panel Applets via GConf Config Files</h2>
<p>First backup /usr/share/gconf/une/mandatory/20_une-gconf-mandatory and /var/lib/gconf/une.mandatory/%gconf-tree.xml</p>
<p>Edit /usr/share/gconf/une/mandatory/20_une-gconf-mandatory to manually add the NameBar applet to the top panel.  My file looks something like this:</p>
<pre>
<div id="_mcePaste">/apps/gnome_settings_daemon/plugins/background false</div>
<div id="_mcePaste">/apps/nautilus/preferences/show_desktop false</div>
<div id="_mcePaste">/apps/nautilus/preferences/exit_with_last_window false</div>
<div id="_mcePaste">/apps/panel/general/toplevel_id_list [top_panel]</div>
<div id="_mcePaste">/apps/panel/general/object_id_list [menu_bar_screen0]</div>
<div id="_mcePaste">/apps/panel/general/applet_id_list [applet_0,applet_1,applet_2,applet_3,applet_5,applet_6]</div>
<div id="_mcePaste">/apps/panel/applets/applet_0/bonobo_iid OAFIID:GNOME_GoHome</div>
<div id="_mcePaste">/apps/panel/applets/applet_0/locked true</div>
<div id="_mcePaste">/apps/panel/applets/applet_0/position 0</div>
<div id="_mcePaste">/apps/panel/applets/applet_0/object_type bonobo-applet</div>
<div id="_mcePaste">/apps/panel/applets/applet_0/toplevel_id top_panel</div>
<div id="_mcePaste">/apps/panel/applets/applet_1/bonobo_iid OAFIID:GNOME_NameBarApplet</div>
<div id="_mcePaste">/apps/panel/applets/applet_1/locked false</div>
<div id="_mcePaste">/apps/panel/applets/applet_1/position 2</div>
<div id="_mcePaste">/apps/panel/applets/applet_1/object_type bonobo-applet</div>
<div id="_mcePaste">/apps/panel/applets/applet_1/toplevel_id top_panel</div>
<div id="_mcePaste">/apps/panel/applets/applet_2/bonobo_iid OAFIID:GNOME_IndicatorApplet</div>
<div id="_mcePaste">/apps/panel/applets/applet_2/locked true</div>
<div id="_mcePaste">/apps/panel/applets/applet_2/position 3</div>
<div id="_mcePaste">/apps/panel/applets/applet_2/object_type bonobo-applet</div>
<div id="_mcePaste">/apps/panel/applets/applet_2/panel_right_stick true</div>
<div id="_mcePaste">/apps/panel/applets/applet_2/toplevel_id top_panel</div>
<div id="_mcePaste">/apps/panel/applets/applet_3/bonobo_iid OAFIID:GNOME_NotificationAreaApplet</div>
<div id="_mcePaste">/apps/panel/applets/applet_3/locked true</div>
<div id="_mcePaste">/apps/panel/applets/applet_3/position 4</div>
<div id="_mcePaste">/apps/panel/applets/applet_3/object_type bonobo-applet</div>
<div id="_mcePaste">/apps/panel/applets/applet_3/panel_right_stick true</div>
<div id="_mcePaste">/apps/panel/applets/applet_3/toplevel_id top_panel</div>
<div id="_mcePaste">/apps/panel/applets/applet_5/bonobo_iid OAFIID:GNOME_ClockApplet</div>
<div id="_mcePaste">/apps/panel/applets/applet_5/locked true</div>
<div id="_mcePaste">/apps/panel/applets/applet_5/position 2</div>
<div id="_mcePaste">/apps/panel/applets/applet_5/object_type bonobo-applet</div>
<div id="_mcePaste">/apps/panel/applets/applet_5/panel_right_stick true</div>
<div id="_mcePaste">/apps/panel/applets/applet_5/toplevel_id top_panel</div>
<div id="_mcePaste">/apps/panel/applets/applet_6/bonobo_iid OAFIID:GNOME_FastUserSwitchApplet</div>
<div id="_mcePaste">/apps/panel/applets/applet_6/locked true</div>
<div id="_mcePaste">/apps/panel/applets/applet_6/position 1</div>
<div id="_mcePaste">/apps/panel/applets/applet_6/object_type bonobo-applet</div>
<div id="_mcePaste">/apps/panel/applets/applet_6/panel_right_stick true</div>
<div id="_mcePaste">/apps/panel/applets/applet_6/toplevel_id top_panel</div>
<div id="_mcePaste">/apps/panel/toplevels/disable_movement true</div>
<div id="_mcePaste">/apps/f-spot/ui/maximized true</div>
<div id="_mcePaste">/apps/gnome-do/preferences/Do/CorePreferences/QuietStart true</div>
</pre>
<p>Run sudo update-gconf-defaults &#8211;source=/usr/share/gconf/une/mandatory &#8211;destination=/var/lib/gconf/une.mandatory/ to create XML config file.</p>
<p>To refresh your gnome-panel, run the following command:</p>
<pre>killall gnome-panel</pre>
<p>That should add the NameBar applet to your top panel.  Be advised, you may want to backup the XML files in your /var/lib/gconf/une.mandatory folder before you make these changes.</p>
<h2>Further Reading</h2>
<p><span class="amz-product-link"><a href="http://www.amazon.com/Ubuntu-Hacks-Tools-Exploring-Tuning/dp/0596527209?SubscriptionId=AKIAJOL35H6TZCQ3DKWA&tag=frastrwebdev-20" target="_blank" rel="nofollow"><img src="http://ecx.images-amazon.com/images/I/51ReHaeMnQL._SL160_.jpg" height="160" width="109" rel="nofollow" title="Ubuntu Hacks: Tips &amp; Tools for Exploring, Using, and Tuning Linux" /></a></span> <span class="amz-product-link"><a href="http://www.amazon.com/The-Official-GNOME-Developers-Guide/dp/1593270305?SubscriptionId=AKIAJOL35H6TZCQ3DKWA&tag=frastrwebdev-20" target="_blank" rel="nofollow"><img src="http://ecx.images-amazon.com/images/I/41rDBidsvRL._SL160_.jpg" height="160" width="119" rel="nofollow" title="The Official GNOME 2 Developer&#8217;s Guide" /></a></span></p>
]]></content:encoded>
			<wfw:commentRss>http://franklinstrube.com/blog/editing-the-top-panel-in-ubuntu-10-04-netbook-edition/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Top Tweetmeme WordPress Plugin</title>
		<link>http://franklinstrube.com/projects/top-tweetmeme/</link>
		<comments>http://franklinstrube.com/projects/top-tweetmeme/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 04:05:40 +0000</pubDate>
		<dc:creator>Franklin Strube</dc:creator>
				<category><![CDATA[Projects]]></category>

		<guid isPermaLink="false">http://franklinstrube.com/?p=112</guid>
		<description><![CDATA[The Top Tweetmeme WordPress Plugin ranks your blog articles based on the number of retweets it has received through the Tweetmeme web service.  This plugin is currently under development and can be found at http://wordpress.org/extend/plugins/top-tweetmeme/. Update June 7, 2011: Version 1.0 has officially been released! Check out the &#8220;Top Posts&#8221; widget in my sidebar for [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: left; margin: 2px 10px 10px 0;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Ffranklinstrube.com%2Fprojects%2Ftop-tweetmeme%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Ffranklinstrube.com%2Fprojects%2Ftop-tweetmeme%2F&amp;source=strube&amp;style=normal&amp;service=bit.ly&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>The Top Tweetmeme WordPress Plugin ranks your blog articles based on the number of retweets it has received through the Tweetmeme web service.  This plugin is currently under development and can be found at <a href="http://wordpress.org/extend/plugins/top-tweetmeme/">http://wordpress.org/extend/plugins/top-tweetmeme/</a>.</p>
<p><strong>Update June 7, 2011: </strong>Version 1.0 has officially been released! Check out the &#8220;Top Posts&#8221; widget in my sidebar for a live example.</p>
]]></content:encoded>
			<wfw:commentRss>http://franklinstrube.com/projects/top-tweetmeme/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>

