<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>PhilFreo.com</title>
	
	<link>http://philfreo.com/blog</link>
	<description>The portfolio and blog of Phil Freo, on web design, development, and entrepreneurship.</description>
	<lastBuildDate>Tue, 27 Oct 2009 04:48:23 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/philfreo" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Largest website width to support 1024×768 resolution</title>
		<link>http://feedproxy.google.com/~r/philfreo/~3/xcw1XS48fOQ/</link>
		<comments>http://philfreo.com/blog/largest-website-width-to-support-1024x768-resolution/#comments</comments>
		<pubDate>Tue, 27 Oct 2009 04:47:13 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=207</guid>
		<description><![CDATA[Currently, web designers are advised to support browser resolutions of widths 1024px and greater based on current browser usage data.  The idea is that you want your site&#8217;s design to look good, and not require a horizontal scroll bar for those users.  But screen resolution and browser width are not the same thing, [...]]]></description>
			<content:encoded><![CDATA[<p>Currently, web designers are advised to support browser resolutions of widths 1024px and greater based on current browser usage data.  The idea is that you want your site&#8217;s design to look good, and not require a horizontal scroll bar for those users.  But screen resolution and browser width are not the same thing, because of browser chrome, scroll bars, and because many users browse without their window being maximized.<br />
<span id="more-207"></span></p>
<p>Common advice is that for the 1024 resolutions you have a maximum width of around <a rel="nofollow" href="http://www.cameronmoll.com/archives/001220.html">960</a> or 980px to work with.  <strong>But if you really need to get every last pixel in, I can confirm test results from Windows XP running at 1024&#215;768, with Internet Explorer 6.0 fully maximized, gives you a width of 1007px to work with.</strong></p>
<p>* Of course, fluid layouts are also nice.</p>
<img src="http://feeds.feedburner.com/~r/philfreo/~4/xcw1XS48fOQ" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/largest-website-width-to-support-1024x768-resolution/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://philfreo.com/blog/largest-website-width-to-support-1024x768-resolution/</feedburner:origLink></item>
		<item>
		<title>ExpressionEngine: “Freo Add-on Installer” makes installing add-ons a breeze</title>
		<link>http://feedproxy.google.com/~r/philfreo/~3/1PeUys2Inuw/</link>
		<comments>http://philfreo.com/blog/freo-addon-installer/#comments</comments>
		<pubDate>Wed, 07 Oct 2009 06:00:39 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[ExpressionEngine]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=143</guid>
		<description><![CDATA[I wrote my first module for ExpressionEngine, called &#8220;Freo Add-on Installer&#8221;, with the aim of saving EE developers a lot of time.  Here&#8217;s what it&#8217;s all about.

[Jump to Download/Installation Link]
Each time you set up a website with ExpressionEngine you probably want to install several different modules, extensions, and plugins.  Doing that usually involves downloading [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote my first module for ExpressionEngine, called &#8220;Freo Add-on Installer&#8221;, with the aim of <strong>saving EE developers a lot of time</strong>.  Here&#8217;s what it&#8217;s all about.</p>
<p><span id="more-143"></span></p>
<p>[<a href="#installation">Jump to Download/Installation Link</a>]</p>
<p>Each time you set up a website with ExpressionEngine you probably want to install several different modules, extensions, and plugins.  Doing that usually involves downloading a .zip file for each add-on, then individually unzipping and uploading each file/folder to the corresponding <span style="background-color: #dedede; font-size: 0.9em;">modules/</span>, <span style="background-color: #dedede; font-size: 0.9em;">extensions/</span>, <span style="background-color: #dedede; font-size: 0.9em;">plugins/</span>, <span style="background-color: #dedede; font-size: 0.9em;">language/</span>, and <span style="background-color: #dedede; font-size: 0.9em;">themes/</span> folders.<em> Then each time any add-on is updated, you have to repeat the process across all your websites.</em></p>
<p><strong>With my module,</strong> <strong>installing other add-ons is basically a one-click process</strong>.  You just visit the module page (shown below) and then either upload a .zip/.php file, or give it the URL to the source from the developer&#8217;s website.  Hit one button and my module takes the source file, extracts, and searches through the files and determines where each file/folder goes.</p>
<p>Screenshot:</p>
<p><img class="alignleft size-full wp-image-153" style="border: solid 1px #ccc;" title="Freo Add-on Installer for ExpressionEngine" src="http://philfreo.com/blog/wp-content/uploads/2009/10/screenshot1.png" alt="Freo Add-on Installer for ExpressionEngine" width="623" height="473" /></p>
<p>For example, if you just upload a .zip file that contains a folder for a module, a pi.someplugin.php, and a lang.someplugin.php, all of the files will get extracted and moved to their proper locations.  If it comes across a file it doesn&#8217;t understand, it will let you know.</p>
<p><strong>Requirements: </strong></p>
<ul>
<li>ExpressionEngine 1.6.8</li>
<li>PHP cannot be in Safe Mode</li>
<li>You may need to change permissions for a few folders if instructed</li>
</ul>
<p>These likely would only be a problem with some shared hosting companies. (If you need good <a href="/services/">ExpressionEngine hosting</a> let me know).</p>
<p><strong><a name="installation">Installation</a>:</strong></p>
<ol>
<li><strong>Download <a href="/blog/wp-content/uploads/2009/10/freo_addon_installer_1.2.zip">freo_addon_installer_1.2.zip</a></strong><strong> </strong>and unzip</li>
<li>Upload the <span style="background-color: #dedede; font-size: 0.9em;">freo_addon_installer/</span> folder to your <span style="background-color: #dedede; font-size: 0.9em;">system/modules/</span> folder</li>
<li>From the Modules page of your EE Control Panel, click &#8220;Install&#8221; next to &#8220;Freo Add-on Installer&#8221;</li>
<li>If you&#8217;re running a version of EE <strong>older</strong> than 1.6.8, copy <span style="background-color: #dedede; font-size: 0.9em;">freo_addon_installer/language/english/lang.freo_addon_installer.php</span> to <span style="background-color: #dedede; font-size: 0.9em;">system/languages/english/</span></li>
<li><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=8685097">Please donate to support development</a> of this and future add-ons.</li>
</ol>
<p><strong>Changes:</strong></p>
<ul>
<li><strong>v1.2 &#8211; </strong>Bug fixes (Oct. 25, 2009)</li>
<li><strong>v1.1</strong> &#8211; Fixed problem when URLs redirect, like on github download zip URLs.  Added better support for installing fieldtypes for Brandon Kelly&#8217;s <a href="http://brandon-kelly.com/fieldframe">FieldFrame</a> extension.  (Oct. 7, 2009)</li>
<li><strong>v1.0</strong> &#8211; Initial Release. (Oct. 7, 2009)</li>
</ul>
<p><strong>Ideas &amp; Plans:</strong></p>
<ul>
<li>Create a long list of known add-ons to choose from so that installing will truly be one-click and not require looking up a source .zip URL.</li>
<li>Integrate with LG Addon Updater so installing updates will be more of a breeze.</li>
</ul>
<p><strong>Feedback &amp; Support:</strong></p>
<p><strong></strong>If you encounter any problems or have any ideas for improvement at all please let me know. <strong>Leave a comment below and let me know how you like it. </strong><a href="http://expressionengine.com/forums/viewthread/131282/">This support thread</a> in the forums is the best place to resolve any problems you may have.</p>
<p><a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&amp;hosted_button_id=8685097">Please donate to support development</a> of this and future add-ons.</p>
<form action="https://www.paypal.com/cgi-bin/webscr" method="post">
<input name="cmd" type="hidden" value="_s-xclick" />
<input name="hosted_button_id" type="hidden" value="8685097" />
<input style="border:none !important;" alt="PayPal - The safer, easier way to pay online!" name="submit" src="https://www.paypal.com/en_US/i/btn/btn_donateCC_LG.gif" type="image" /> <img src="https://www.paypal.com/en_US/i/scr/pixel.gif" border="0" alt="" width="1" height="1" /><br />
</form>
<img src="http://feeds.feedburner.com/~r/philfreo/~4/1PeUys2Inuw" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/freo-addon-installer/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		<feedburner:origLink>http://philfreo.com/blog/freo-addon-installer/</feedburner:origLink></item>
		<item>
		<title>Book Review: “Magento: Beginner’s Guide”</title>
		<link>http://feedproxy.google.com/~r/philfreo/~3/JPNv_aM9E6A/</link>
		<comments>http://philfreo.com/blog/book-review-magento-beginners-guide/#comments</comments>
		<pubDate>Tue, 06 Oct 2009 05:59:05 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[Books]]></category>
		<category><![CDATA[Magento]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=137</guid>
		<description><![CDATA[I was given a copy of a book called &#8220;Magento: Beginner&#8217;s Guide&#8221; to review, so here goes.  Overall, the book does a good job of giving a high-level walkthrough of all the different aspects of running a store with Magento.

Chapter 1: Introduction
What you can do with Magento. A walk-through of a store using the features we will [...]]]></description>
			<content:encoded><![CDATA[<p>I was given a copy of a book called &#8220;Magento: Beginner&#8217;s Guide&#8221; to review, so here goes.  Overall, the book does a good job of giving a high-level walkthrough of all the different aspects of running a store with Magento.</p>
<p><span id="more-137"></span></p>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Chapter 1: Introduction</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">What you can do with Magento. A walk-through of a store using the features we will cover.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Chapter 2: Installation</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">How to install Magento on a low-cost hosting service.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Chapter 3: Categories and attributes</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Creating categories and attributes, a necessary step before you can build your catalog of products.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Chapter 4: Taxes</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Configure tax rates and rules, to automatically apply the correct sales tax based upon the type of product and the purchaser&#8217;s location.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Chapter 5: Adding simple products</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Add products to your store. Include detailed descriptions, images, and inventory information.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Chapter 6: Minimum customization of your store&#8217;s appearance</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Customize the default storefront to make it your own.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Chapter 7: Beyond simple products</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Present related products to your shoppers. Offer products for sale in sets. Give your customers options such as size, color, manufacturer, and more.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Chapter 8: Customer relationships</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Managing customer accounts. Configuring store contact options.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Chapter 9: Accepting payment</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Configuring Magento&#8217;s default payment options, such as Paypal, credit cards, check/money order, and purchase orders.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Chapter 10: Configuring shipping</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Offer customers a variety of shipping options. Connect to shippers such as UPS, FedEx, and USPS. Create your own, customized shipping rates.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Chapter 11: Fulfilling an Order</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">A walk-through of fulfilling an order. Discover your options for handling order fulfillment by observing the lifecycle of an order in Magento.</div>
<div id="_mcePaste" style="position: absolute; left: -10000px; top: 0px; width: 1px; height: 1px; overflow-x: hidden; overflow-y: hidden;">Appendix: Abbreviated step-by-step directions</div>
<p><strong>Chapter 1: Introduction, Chapter 2: Installation, Chapter 3: Categories and attributes</strong><strong><span style="font-weight: normal;"> &#8211; High level overview of Magento.  These chapters aren&#8217;t very useful if you&#8217;ve already used Magento at all, however for someone starting from scratch this would be a faster way of learning than going through the guides on Magento&#8217;s website. Chapter 3 is available as a <a href="http://www.packtpub.com/files/magento-sample-chapter-3-categories-and-attributes.pdf">free sample</a>.</span></strong></p>
<p><strong></strong><strong>Chapter 4: Taxes</strong> &#8211; Very good chapter &#8211; I actually learned a lot.  It was very helpful as I am finishing up a Magento store right now and am about to configure taxes.  It discusses how tax rates and rules work in detail,  according to the product type and purchaser&#8217;s location.</p>
<p><strong>Chapter 5: Adding simple products </strong>- Same analysis as Chapters 1-3.</p>
<p><strong></strong><strong>Chapter 6: Minimum customization of your store&#8217;s appearance </strong>- Great for pointing beginners at where different files in Magento live and how to customize them.  However many of the tips for customizing the design will break if you try to update your site and default theme.  I&#8217;d recommend reading <a href="/blog/magento-ecommerce-first-thoughts-tips/">my post for Magento beginners</a> before you start customizing anything.</p>
<p><strong></strong><strong>Chapter 7: Beyond simple products</strong> &#8211; Helpful, although doesn&#8217;t provide much more information than is readily available on Magento.com.</p>
<p><strong>Chapter 8: Customer relationships</strong> &#8211; About managing customer accounts. Configuring store contact options.</p>
<p><strong>Chapter 9: Accepting payment, Chapter 10: Configuring shipping<span style="font-weight: normal;"><strong> &#8211; </strong>Pretty thorough job of explaining different methods of accepting payments with the various gateways, and configuring all the different shipping options.  There&#8217;s a lot of details and explanations, so I&#8217;ll be looking back on this chapter again.</span></strong></p>
<p><strong>Chapter 11: Fulfilling an Order</strong> - A walk-through of fulfilling an order. Discover your options for handling order fulfillment by observing the lifecycle of an order in Magento.</p>
<p><strong>Appendix: Abbreviated step-by-step directions</strong> &#8211; A good idea for any book!</p>
<p>To learn more or purchase: <a href="http://www.packtpub.com/magento-beginners-guide/book">&#8220;Magento: Beginner&#8217;s Guide&#8221; by William Rice</a></p>
<img src="http://feeds.feedburner.com/~r/philfreo/~4/JPNv_aM9E6A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/book-review-magento-beginners-guide/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://philfreo.com/blog/book-review-magento-beginners-guide/</feedburner:origLink></item>
		<item>
		<title>Magento eCommerce – First Thoughts &amp; Tips</title>
		<link>http://feedproxy.google.com/~r/philfreo/~3/Jjwqne0DcFE/</link>
		<comments>http://philfreo.com/blog/magento-ecommerce-first-thoughts-tips/#comments</comments>
		<pubDate>Sun, 20 Sep 2009 21:50:38 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[Magento]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=122</guid>
		<description><![CDATA[Magento is an incredible open-source PHP eCommerce platform built around the idea of flexibility, and has been gaining a huge amount of traction over the last 18 months.  Unlike &#8220;old&#8221; open-source solutions such as osCommerce, Magento was architected very carefully using OOP principles and MVC so that the entire system can be customized (both visually [...]]]></description>
			<content:encoded><![CDATA[<p><a title="a open-source PHP eCommerce platform" href="http://www.magentocommerce.com/">Magento</a> is an incredible <strong>open-source PHP eCommerce platform</strong> built around the idea of <strong>flexibility</strong>, and has been gaining a huge amount of traction over the last 18 months.  Unlike &#8220;old&#8221; open-source solutions such as osCommerce, Magento was architected very carefully using <em><abbr title="object-oriented programming">OOP</abbr> principles</em> and <em><abbr title="model view controller">MVC</abbr></em> so that the entire system can be customized (both visually and functionally) without having to modify core application files.  This ensures that future updates aren&#8217;t a pain, and that multiple extensions can live peacefully together.<br />
<span id="more-122"></span></p>
<p>I&#8217;ve been working with Magento for over a year now, and overall I&#8217;m <strong>extremely impressed</strong>.  The architecture of the system is certainly very complex, but once you start to poke around and understand why there are so many different directories and files, and how everything is organized, you&#8217;ll love the flexibility that it creates.</p>
<p>The biggest complaint of Magento is the <strong>lack of documentation. </strong>From the wiki pages, to user guides, to source code comments, the documentation is severely lacking and often out-of-date.  I hope this improves over time (I think it will).  What I&#8217;ve found is that you can eventually figure things out, but the learning curve is just a little steeper than it needs to be.  It is pretty necessary to understand many core concepts of Magento (how XML layout files are used, how data is stored, how template blocks and functionality interact, etc.) in order to correctly make even the simplest of changes.  But once you get it, you can do a lot.  I think the <abbr title="content management system">CMS</abbr> <a href="http://expressionengine.com/">ExpressionEngine</a> does extremely well at this, in comparison, and they are both products aimed at similar audiences.</p>
<p>When I started developing on top of the Magento platform, I kept a log of some of the help things that I learned along the way, that I wish I had known upfront.  Many of these tips seem obvious upon looking back, but I thought I&#8217;d share them for anyone just getting started programming or designing for Magento.</p>
<p><strong>For everybody:</strong></p>
<ul>
<li>Use the <a href="http://www.magentocommerce.com/wiki/">Wiki</a>, <a href="http://www.magentocommerce.com/knowledge-base">Knowledge Base</a>, and <a href="http://www.magentocommerce.com/boards">forums</a></li>
<li><strong>Don&#8217;t ever modify core Magento files!</strong> Seriously.  <a href="http://inchoo.net/ecommerce/magento/top-3-mistakes-by-magento-beginners/">This quick article</a> is a <strong>must read</strong> for all beginners.</li>
<li><strong>To upgrade to a new version of Magento:</strong> just upgrade all of the components by using <em>Magento Connect Manager</em>.  This is found in the admin&#8217;s System menu, or by adding /downloader to the Magento home page URL.</li>
<li><strong>To add Google Analytics:</strong> simply add your Analytics account profile&#8217;s tracking number under Config &gt; Google API</li>
<li><strong>To setup PayPal IPN</strong>: there is no need to change IPN settings in your PayPal account.  Magento automatically passes the IPN path with each checkout.</li>
<li><strong>Refresh the cache! </strong>If you make a change and wonder why it&#8217;s not showing up, use the dropdown on System &gt; Cache Management.  It&#8217;s helpful to disable the cache during development.</li>
<li>Learn how to <a href="http://www.magentocommerce.com/wiki/how-to/customize_part_of_configuration">customize via XML</a></li>
<li>After installing Magento with sample data and SEO URL rewrites, the same data shows up on the index page but many of the links are broken, even with my .htaccess file present.  Solution: Refresh catalog rewrites in Admin &gt; System &gt; Cache &gt; Refresh catalog rewrites</li>
<li><strong>Learn how to optimize and speed up Magento&#8217;s performance.</strong> It&#8217;s very slow by default but can be drastically improved. (I&#8217;ll be writing another blog post on this soon, but for now check out <a href="http://www.magentocommerce.com/boards/viewthread/36225/">this thread</a>.)</li>
</ul>
<p><strong>Design/theming tips:</strong></p>
<ul>
<li><strong>Read the <a href="http://www.magentocommerce.com/design_guide">Design Guide</a></strong></li>
<li><strong>To figure out which template file to edit:</strong> turn on &#8220;Template Path Hints&#8221; through System &gt; Configuration &gt; Advanced &gt; Developer &gt; Debug &gt; Template Path Hints = ON.  This option is <em>only</em> visible if you change the &#8220;Current Configuration Scope&#8221; dropdown to a website (like &#8220;Main Website&#8221;) rather than &#8220;Default Config&#8221;.</li>
<li><strong>To switch to a theme</strong> (such as &#8220;Modern&#8221;), after downloading it in Magento Connect Manager, go to System &gt; Design and then click &#8220;Add Design Change&#8221;.</li>
</ul>
<p><strong>Programming tips:</strong></p>
<ul>
<li><strong>Understand the <a href="http://www.magentocommerce.com/wiki/doc/magento-architecture">architecture</a></strong></li>
<li><strong>To d</strong><strong>ebug and output PHP variables</strong>: set System &gt; Configuration &gt; Advanced &gt; Developer &gt; Log Settings- &gt; Enabled = Yes.  Then, from a <abbr title="command line interface">CLI</abbr> in your web root do &#8220;cd var/log/&#8221; and &#8220;tail -f system.log&#8221;.  In PHP, you can say Mage::log(&#8221;hello world&#8221;); to write to this log.</li>
<li><strong>Locate the PHP error log</strong> when getting a blank/white page, or an error message.  Mine was in public_html/error_log.</li>
</ul>
<p>That&#8217;s all for now.  If you&#8217;re looking for a Magento designer or developer, <a href="/contact/">get in contact</a> with me.</p>
<img src="http://feeds.feedburner.com/~r/philfreo/~4/Jjwqne0DcFE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/magento-ecommerce-first-thoughts-tips/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://philfreo.com/blog/magento-ecommerce-first-thoughts-tips/</feedburner:origLink></item>
		<item>
		<title>Fixing Safari’s 1px background-image centering bug</title>
		<link>http://feedproxy.google.com/~r/philfreo/~3/oRWannAiskM/</link>
		<comments>http://philfreo.com/blog/fixing-safaris-1px-background-image-centering-problem/#comments</comments>
		<pubDate>Sun, 06 Sep 2009 04:58:31 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=110</guid>
		<description><![CDATA[I&#8217;m working on slicing and CSS for a new theming project for Magento Commerce and was plagued with a CSS bug that affects WebKit (Safari and Google Chrome).  After some searching I found that several other people have had the problem, but I didn&#8217;t see a comprehensive writeup of the solution.  Here&#8217;s what I found&#8230;

Bug [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m working on slicing and CSS for a new theming project for Magento Commerce and was plagued with a CSS bug that affects WebKit (Safari and Google Chrome).  After some searching I found that several other people have had the problem, but I didn&#8217;t see a comprehensive writeup of the solution.  Here&#8217;s what I found&#8230;</p>
<p><span id="more-110"></span></p>
<p><strong>Bug description: </strong>When having a centered background image over a centered <code>&lt;div&gt;</code> (like a drop shadow over a main content <code>&lt;div&gt;</code>), the background image&#8217;s position would sometimes be &#8220;off&#8221; by 1px as the viewport in Safari, depending on the width of the viewport.  So half of possible viewport widths would show the incorrect version.  While 1px isn&#8217;t the end of the world, it can really hurt a design, and it&#8217;s nice to get center alignment in Safari/Chrome to work like Firefox/IE.</p>
<p>Example code:</p>
<pre>body {
    background: #f8f8f8 url(../images/dh_bg.jpg) 50% 0 repeat-y;
}
div#everything {
    width: 980px;
    margin: 0 auto;
}</pre>
<p><strong>Partial Solution: </strong>First of all, always use an even-width background image &#8211; this way the rest of the browsers will get it right automatically.</p>
<p>To fix Safari we can apply a CSS hack targeted towards WebKit.  If your background image&#8217;s width is just a little wider than your main <code>&lt;div&gt;</code>, then this will fix it:</p>
<pre>@media screen and (-webkit-min-device-pixel-ratio:0) {
    body {
        background-position: 49.999% 0;
    }
}</pre>
<p>The problem with this is that if the viewport is resized to be a little larger than your div, but not as large as your background image, then the 1px problem comes back.</p>
<p><strong>Real Solution:</strong><br />
So my solution is always use an even-width background image that is wider than the devices you want to support.  I made mine 5000px wide (which is still &lt; 1kb).  Then, the following CSS works great:</p>
<pre>@media screen and (-webkit-min-device-pixel-ratio:0) {
    body {
        background-position: 50.001% 0;
    }
}</pre>
<p>Hope that helps somebody.</p>
<p><em>Thanks to the helpful comments on <a href="http://robgoodlatte.com/2007/02/16/hacking-safari-rounding-bugs/comment-page-1/">Rob Goodlatte&#8217;s post</a> (a JavaScript solution), which helped point me in the right direction.</em></p>
<img src="http://feeds.feedburner.com/~r/philfreo/~4/oRWannAiskM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/fixing-safaris-1px-background-image-centering-problem/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://philfreo.com/blog/fixing-safaris-1px-background-image-centering-problem/</feedburner:origLink></item>
		<item>
		<title>Interesting TED Talk on Motivation</title>
		<link>http://feedproxy.google.com/~r/philfreo/~3/ih8q9lVy8vA/</link>
		<comments>http://philfreo.com/blog/interesting-ted-talk-on-motivation/#comments</comments>
		<pubDate>Mon, 24 Aug 2009 18:07:59 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=107</guid>
		<description><![CDATA[I listened to a very interesting TED Talk today by Dan Pink.  You can watch it below or read my brief notes from it.


Source
Pink discusses several research studies on how typical reward-based motivation works very well for routine, mechanical tasks, but fails &#8212; and actually decreases performance &#8212; for tasks that require any kind [...]]]></description>
			<content:encoded><![CDATA[<p>I listened to a very interesting TED Talk today by Dan Pink.  You can watch it below or read my brief notes from it.</p>
<p><span id="more-107"></span></p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="446" height="326" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowFullScreen" value="true" /><param name="wmode" value="transparent" /><param name="bgColor" value="#ffffff" /><param name="flashvars" value="vu=http://video.ted.com/talks/embed/DanielPink_2009G-embed_high.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/DanielPink-2009G.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=618" /><param name="src" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" /><param name="bgcolor" value="#ffffff" /><param name="allowfullscreen" value="true" /><embed type="application/x-shockwave-flash" width="446" height="326" src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" flashvars="vu=http://video.ted.com/talks/embed/DanielPink_2009G-embed_high.flv&amp;su=http://images.ted.com/images/ted/tedindex/embed-posters/DanielPink-2009G.embed_thumbnail.jpg&amp;vw=432&amp;vh=240&amp;ap=0&amp;ti=618" bgcolor="#ffffff" wmode="transparent" allowfullscreen="true"></embed></object></p>
<p><a href="http://www.ted.com/talks/dan_pink_on_motivation.html">Source</a></p>
<p>Pink discusses several research studies on how typical reward-based motivation works very well for routine, mechanical tasks, but fails &#8212; and actually <em>decreases</em> performance &#8212; for tasks that require any kind of creativity.</p>
<p>The solution is to add intrinsic motivation for cognitive/creative tasks, which comes in three forms.</p>
<ol>
<li><strong>Autonomy</strong> &#8211; an urge to direct our own lives</li>
<li><strong>Mastery</strong> &#8211; a desire to get better and better at something that matters</li>
<li><strong>Purpose</strong> &#8211; a yearning to do what we do in the service of something larger than ourselves</li>
</ol>
<p>Traditional management is good for compliance, but self-direction is good for engagement.  He then goes on to tell a few stories of how autonomy has worked for companies in the real-world.</p>
<p>Summary:</p>
<ol>
<li>Traditional rewards do work, but only in a narrow band of circumstances.</li>
<li>If-then rewords often destory creativity.</li>
<li>The secret to high performance is the unseen intrinsic drive.</li>
</ol>
<p>As I think about what projects I&#8217;ve felt especially motivated on in the past, I can definitely identify how I&#8217;ve been motivated by autonomy, mastery, and purpose.  I hope to seek, with more clarity, projects and work that have these characteristics.</p>
<img src="http://feeds.feedburner.com/~r/philfreo/~4/ih8q9lVy8vA" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/interesting-ted-talk-on-motivation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://philfreo.com/blog/interesting-ted-talk-on-motivation/</feedburner:origLink></item>
		<item>
		<title>Now I’m a PHP5 Zend Certified Engineer</title>
		<link>http://feedproxy.google.com/~r/philfreo/~3/ljoTRoSoRH0/</link>
		<comments>http://philfreo.com/blog/php5-zend-certified-engineer/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 03:15:40 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Personal]]></category>
		<category><![CDATA[Zend]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=96</guid>
		<description><![CDATA[I had a few goals for this summer away from school.  I wanted to go to some tech conferences, check out more startups and web companies in both Silicon Valley and closer to home in Florida, and continue with my freelance development work.  I also decided I wanted to take the Zend PHP 5 Certification [...]]]></description>
			<content:encoded><![CDATA[<p>I had a few goals for this summer away from school.  I wanted to go to some <a href="http://philfreo.com/blog/category/io2009/">tech</a> <a href="http://2009.sf.wordcamp.org/">conferences</a>, check out more startups and web companies in both Silicon Valley and closer to home in Florida, and continue with my freelance development work.  I also decided I wanted to take the <a href="http://www.zend.com/en/services/certification/php-5-certification/">Zend PHP 5 Certification</a> test to learn more, see what I know, and to separate myself from every other kid who thinks they know PHP.</p>
<p><span id="more-96"></span></p>
<p>By the way, the thing I hate about PHP most is that, because it&#8217;s so easy to get started with, you can&#8217;t immediately differentiate between people who really know PHP (with a solid understanding of security issues, scalability, MVC, object-oriented programming, design patterns, etc.) and people who know just enough to be dangerous.  I&#8217;ve seen way too many websites written with PHP and HTML scattered together, SQL injection vulnerabilities, lack of code reusability, etc. This problem isn&#8217;t specific to PHP only, but I find the percentage of novice PHP developers to be <em>far</em> worse than, say, Ruby or Python developers.</p>
<p>So I looked through the &#8220;php|architect&#8217;s Zend PHP 5 Certification&#8221; study guide for the last couple days and took an online practice test.  I actually learned a lot of interesting things about PHP that I didn&#8217;t know – so it was a good experience.</p>
<p>Today I took the exam at a local testing center and am happy to announce that I am officially a PHP 5 Zend Certified Engineer (ZCE).</p>
<p><a href="http://zend.com/zce.php?c=ZEND011307&#038;r=231006815"><img src="http://static.zend.com/topics/php5-zce-logo-new.gif" alt="Zend Certified Engineer, PHP 5" /></a></p>
<p>By the way, if you&#8217;re looking to hire a good PHP developer, let me know (<a href="/resume/">resume is here</a>).  I graduate in December 2009.</p>
<img src="http://feeds.feedburner.com/~r/philfreo/~4/ljoTRoSoRH0" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/php5-zend-certified-engineer/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		<feedburner:origLink>http://philfreo.com/blog/php5-zend-certified-engineer/</feedburner:origLink></item>
		<item>
		<title>Greasemonkey script: Facebook Reorder Sidebar</title>
		<link>http://feedproxy.google.com/~r/philfreo/~3/nt2bOSdqddo/</link>
		<comments>http://philfreo.com/blog/greasemonkey-script-facebook-reorder-sidebar/#comments</comments>
		<pubDate>Fri, 29 May 2009 06:29:34 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[Facebook]]></category>
		<category><![CDATA[Greasemonkey]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=90</guid>
		<description><![CDATA[Hate scrolling down to see birthdays on Facebook? I just wrote a quick user script to reorder the parts in the sidebar on Facebook&#8217;s homepage.
Before: Requests, Suggestions, Sponsored, Highlights, Events/Birthdays, Connect
After: Requests, Events/Birthdays, Suggestions, Highlights, Sponsored, Connect
Step 1: install Greasemonkey (Firefox) or GreaseKit (Safari), and restart your browser
Step 2: install my Facebook Reorder Sidebar userscript
Step [...]]]></description>
			<content:encoded><![CDATA[<p>Hate scrolling down to see birthdays on Facebook? I just wrote a quick user script to reorder the parts in the sidebar on Facebook&#8217;s homepage.</p>
<p><strong>Before:</strong> Requests, Suggestions, Sponsored, Highlights, Events/Birthdays, Connect<br />
<strong>After</strong>: Requests, Events/Birthdays, Suggestions, Highlights, Sponsored, Connect</p>
<p><span id="more-90"></span>Step 1: install <a href="http://www.greasespot.net/">Greasemonkey</a> (Firefox) or <a href="http://8-p.info/greasekit/">GreaseKit</a> (Safari), and restart your browser<br />
Step 2: install my <a href="http://userscripts.org/scripts/show/50396">Facebook Reorder Sidebar</a> userscript<br />
Step 3: visit Facebook and enjoy <img src='http://philfreo.com/blog/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<img src="http://feeds.feedburner.com/~r/philfreo/~4/nt2bOSdqddo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/greasemonkey-script-facebook-reorder-sidebar/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://philfreo.com/blog/greasemonkey-script-facebook-reorder-sidebar/</feedburner:origLink></item>
		<item>
		<title>Google I/O Keynote 2009, day 2</title>
		<link>http://feedproxy.google.com/~r/philfreo/~3/4dM8ZP36CiM/</link>
		<comments>http://philfreo.com/blog/google-io-keynote-2009-day-2/#comments</comments>
		<pubDate>Thu, 28 May 2009 18:26:12 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[Google]]></category>
		<category><![CDATA[Google Wave]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[io2009]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=86</guid>
		<description><![CDATA[Google I/O 2009 Keynote, Day 2
4/28/2009
Google Wave - Product, Platform, and Protocol


Attempt to answer &#8220;what would email look like if it was developed today&#8221;
Combines Gmail, Translation, collaboration via Google Docs, Photos, etc., all in one
Because it is completely open, companies can host their own instances of Wave and Google never has to see the data &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Google I/O 2009 Keynote, Day 2<br />
</strong><em>4/28/2009</em></p>
<p>Google Wave - Product, Platform, and Protocol</p>
<p><span id="more-86"></span></p>
<ul>
<li>Attempt to answer &#8220;what would email look like if it was developed today&#8221;</li>
<li>Combines Gmail, Translation, collaboration via Google Docs, Photos, etc., all in one</li>
<li>Because it is completely open, companies can host their own instances of Wave and Google never has to see the data &#8211; yet the users of separate platforms can still communicate with each other!</li>
</ul>
<p><a href="http://www.techcrunch.com/2009/05/28/exclusive-video-interview-with-the-google-wave-founders/?awesm=tcrn.ch_2ls&amp;utm_campaign=techcrunch&amp;utm_content=techcrunch-autopost&amp;utm_medium=tcrn.ch-twitter&amp;utm_source=twitter.com">TechCrunch coverage</a><br />
<a style="text-decoration: none;" href="http://wave.google.com/">Google Wave</a><br />
<a href="http://code.google.com/apis/wave/">Google Wave APIs</a><br />
<a href="http://www.waveprotocol.org/">Google Wave Protocols</a></p>
<p>I&#8217;m looking forward to WordCamp this weekend.  I&#8217;m curious to see if there will be any WordPress / Google Wave integration already.  Being able to have blog comments automatically pushed to users who aren&#8217;t actually looking at your blog would be a huge win.  If there&#8217;s no WordPress integration project already, I may just start one.</p>
<img src="http://feeds.feedburner.com/~r/philfreo/~4/4dM8ZP36CiM" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/google-io-keynote-2009-day-2/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://philfreo.com/blog/google-io-keynote-2009-day-2/</feedburner:origLink></item>
		<item>
		<title>Notes from Google I/O Keynote 2009, day 1</title>
		<link>http://feedproxy.google.com/~r/philfreo/~3/WONCn4ModNc/</link>
		<comments>http://philfreo.com/blog/notes-from-google-io-keynote-2009-day-1/#comments</comments>
		<pubDate>Thu, 28 May 2009 14:51:19 +0000</pubDate>
		<dc:creator>Phil Freo</dc:creator>
				<category><![CDATA[California]]></category>
		<category><![CDATA[Firefox]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[io2009]]></category>

		<guid isPermaLink="false">http://philfreo.com/blog/?p=81</guid>
		<description><![CDATA[Google I/O Keynote 
Wednesday 5/27/2009
San Francisco, CA #io2009

Better liveblogging here: http://www.techcrunch.com/2009/05/27/live-from-google-io-2009/
100x improvement in JavaScript speed in the last decade
Firefox, Chrome, Safari, &#38; Opera &#8211; all supporting HTML5 with Canvas, Video, Geolocation, App cache / database, Web workers

Canvas tag &#8211; supported in all but IE
Bespin &#8211; web IDE
Chrome profiler is built completely in HTML5
O3D &#8211; OpenSource [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Google I/O Keynote </strong></p>
<p><em>Wednesday 5/27/2009</em></p>
<p>San Francisco, CA #io2009</p>
<p><span id="more-81"></span></p>
<p>Better liveblogging here: <a href="http://www.techcrunch.com/2009/05/27/live-from-google-io-2009/">http://www.techcrunch.com/2009/05/27/live-from-google-io-2009/</a></p>
<p>100x improvement in JavaScript speed in the last decade</p>
<p>Firefox, Chrome, Safari, &amp; Opera &#8211; all supporting HTML5 with Canvas, Video, Geolocation, App cache / database, Web workers</p>
<p><strong></strong></p>
<p><strong>Canvas</strong> tag &#8211; supported in all but IE</p>
<p>Bespin &#8211; web IDE</p>
<p>Chrome profiler is built completely in HTML5</p>
<p>O3D &#8211; OpenSource 3d in JavaScript</p>
<p><strong>Video</strong> tag &#8211; get video out of &#8220;plugin prison&#8221;</p>
<p>YouTube demo with &lt;video&gt; tag</p>
<p><strong>Geolocation</strong> &#8211; supported in all browsers but IE</p>
<p>Mozillia VP &#8211; &#8220;A good API in 4 browsers is better than a perfect API in 0 or 1 browsers&#8221;</p>
<p>Google Maps will soon be adding a geolocation button</p>
<p>Announcement: Google Latitude on the iPhone in the browser using geolocation (WOW)</p>
<p><strong></strong></p>
<p><strong>App cache / database</strong> &#8211; supported in all browsers but IE</p>
<p>Demo: with Safari &#8211; manifest file names cached application/graphics files</p>
<p>Demo: web app on Android with GMail in airplane mode &#8211; extremely fast</p>
<p><strong></strong></p>
<p><strong>Web workers</strong> &#8211; threads in the browser &#8211; so JavaScript doesn&#8217;t completely freeze the browser</p>
<p>Demo: motion detection from the video tag all in JavaScript</p>
<p>===</p>
<p><strong>Google App Engine</strong></p>
<p>200,000+ developers, 80,000 + applications</p>
<p>Whitehouse app had 700 requests/second with no problem</p>
<p>Announcement: Java open on App Engine</p>
<p>Demo: develop an Ajax app in Eclipse (with Google plugin) in Java on both serverside (app engine) and client side (GWT) extremely quickly.  Just hit deploy (no FTP) in Eclipse.</p>
<p><strong>Google Web Toolkit</strong></p>
<p>Upcoming: Debug directly in any browser</p>
<p>Upcoming: runAsync() lets the compiler split up JavaScript files.  Example: 1.4MB to 200KB, compiler handled dependencies itself.</p>
<p>===</p>
<p><strong>Google Web Elements </strong>(announcement)</p>
<p>Copy and paste website content:</p>
<p>Calendar, Conversation, Custom Search, Maps, News, Presentations, etc.</p>
<p>===</p>
<p><strong>Android </strong>- coming soon new features</p>
<p>FREE ANDROID for everyone!</p>
<img src="http://feeds.feedburner.com/~r/philfreo/~4/WONCn4ModNc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://philfreo.com/blog/notes-from-google-io-keynote-2009-day-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://philfreo.com/blog/notes-from-google-io-keynote-2009-day-1/</feedburner:origLink></item>
	</channel>
</rss>
