<?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>Ecommerce trends, online retail news and opinion, user experience design : Our Blog : Alexander Interactive &#187; Tim Broder</title>
	<atom:link href="http://www.alexanderinteractive.com/blog/author/tbroder/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.alexanderinteractive.com/blog</link>
	<description>The pulse of Alexander Interactive</description>
	<lastBuildDate>Tue, 07 Feb 2012 23:39:57 +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>What do you listen to? (podcast edition)</title>
		<link>http://www.alexanderinteractive.com/blog/2011/10/what-do-you-listen-to-podcast-edition/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=what-do-you-listen-to-podcast-edition</link>
		<comments>http://www.alexanderinteractive.com/blog/2011/10/what-do-you-listen-to-podcast-edition/#comments</comments>
		<pubDate>Fri, 21 Oct 2011 13:05:32 +0000</pubDate>
		<dc:creator>Tim Broder</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[podcasts]]></category>

		<guid isPermaLink="false">http://www.alexanderinteractive.com/blog/?p=5973</guid>
		<description><![CDATA[I tend to listen to a decent number of podcasts. Usually while doing the dishes, running, or something or other in the park.  Some are book/comic related and help me keep up to date with what&#8217;s coming out and how some books were that I didn&#8217;t have time to read.  Others are tech and help [...]]]></description>
			<content:encoded><![CDATA[<p>I tend to listen to a decent number of podcasts. Usually while doing the dishes, running, or something or other in the park.  Some are book/comic related and help me keep up to date with what&#8217;s coming out and how some books were that I didn&#8217;t have time to read.  Others are tech and help me get other opinions on the new libraries or trends.  I&#8217;ve found a number of fun libraries/how-tos from listening. Check them out below, what do you listen to?</p>
<p>Tech</p>
<ul>
<li>Sitepoint &#8211; Web Dev news, tutorials, interviews <a href="http://www.sitepoint.com/" target="_blank">
<p>http://www.sitepoint.com/</a></li>
<li>Official jQuery podcast* &#8211; Javascript library<br />
<a href="http://podcast.jquery.com/" target="_blank">http://podcast.jquery.com/</a></li>
<li>yayQuery* &#8211; Front End Dev podcast <a href="http://yayquery.com/" target="_blank">
<p>http://yayquery.com/</a></li>
<li>djangodose* &#8211; Had great news about jquery, but I think its dead<br />
<a href="http://djangodose.com/" target="_blank">http://djangodose.com/</a></li>
<li>techzinglive &#8211; Random tech/hacker news<br />
<a href="http://techzinglive.com/" target="_blank">http://techzinglive.com/</a></li>
<li>The Dev Show &#8211; Ruby,Php, Java, Javascript<br />
<a href="http://5by5.tv/devshow" target="_blank">http://5by5.tv/devshow</a></li>
<li>The changelog &#8211; Open source news <a href="http://thechangelog.com/" target="_blank">
<p>http://thechangelog.com/</a></li>
<li>ATX Web Show &#8211; web stuff<br />
<a href="http://atxwebshow.com/" target="_blank">http://atxwebshow.com/</a></li>
<li>The javascript show* &#8211; great js news and library coverage<br />
<a href="http://javascriptshow.com/" target="_blank">http://javascriptshow.com/</a></li>
</ul>
<p>Non Tech</p>
<ul>
<li>iFanboy* &#8211; Comic book news and reviews<br />
<a href="http://javascriptshow.com/" target="_blank">http://ifanboy.com/</a></li>
<li>Sword and Laser* &#8211; Science Fiction and Fantasy book club<br />
<a href="http://www.swordandlaser.com/" target="_blank">http://www.swordandlaser.com/</a></li>
<li>11 O&#8217;Clock Comics &#8211; Comic news and culture<br />
<a href="http://bullpenbulletinspodcast.com/" target="_blank">http://bullpenbulletinspodcast.com/</a></li>
<li>Word Balloon &#8211; Comic creator interviews <a href="http://wordballoon.com/" target="_blank">
<p>http://wordballoon.com/</a></li>
<li>Fuzzy Typewriter &#8211; Random media / culture <a href="http://fuzzytypewriter.wordpress.com/" target="_blank">
<p>http://fuzzytypewriter.wordpress.com/</a></li>
</ul>
<p>* I listen to every episode, others I cherry-pick</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexanderinteractive.com/blog/2011/10/what-do-you-listen-to-podcast-edition/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating a Stateless Request in Magento</title>
		<link>http://www.alexanderinteractive.com/blog/2011/10/creating-a-stateless-request-in-magento/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=creating-a-stateless-request-in-magento</link>
		<comments>http://www.alexanderinteractive.com/blog/2011/10/creating-a-stateless-request-in-magento/#comments</comments>
		<pubDate>Mon, 17 Oct 2011 20:16:17 +0000</pubDate>
		<dc:creator>Tim Broder</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sessions]]></category>

		<guid isPermaLink="false">http://www.alexanderinteractive.com/blog/?p=5969</guid>
		<description><![CDATA[Have you ever wanted to create a stateless request in Magento? Something that doesn&#8217;t touch any of Magento&#8217;s sessions?  We were having issues with some of the ajax calls on our cart and checkout pages mucking with the user&#8217;s cart and had get stateless on these calls.  The issue we were having was our checkout [...]]]></description>
			<content:encoded><![CDATA[<p>Have you ever wanted to create a stateless request in Magento? Something that doesn&#8217;t touch any of Magento&#8217;s sessions?  We were having issues with some of the ajax calls on our cart and checkout pages mucking with the user&#8217;s cart and had get stateless on these calls.  The issue we were having was our checkout page was loading, then a javascript include was going out and bringing code from a 3rd party relevance engine into our dom, which was in turn calling back an ajax request to our servers.  This issue with this being that at the start of the page load, the checkout session was being set to a certain state.  This state was then being sent through the rest of the page load, and the ajax calls. Unfortunately, by the time the ajax call got back to our server, the session was different in both locations, creating a race condition.  The ajax request usually won, removing the work the full page load had done with trying to process checkout.  The good news was there was nothing in the ajax call that needed to touch the session, it was just some data lookup. So, nix the session part of that call, and our troubles should be over&#8230; Magento&#8217;s api controller is the only place that implements a stateless request this but its fairly easy to do (after a bit of digging).</p>
<p>As long as Mage_Core_Controller_Varien_Action is a parent in your controller&#8217;s hierchy, you are good to go (it probably is).  This class has a const FLAG_NO_START_SESSION which looks promising. Digging into the code a little we see that it controls whether cookies are processed or the session is started:</p>
<div class="gistem"><div id="gist-1293475" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="cp">&lt;?php</span></div><div class='line' id='LC2'><span class="o">...</span></div><div class='line' id='LC3'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="o">!</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">getFlag</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="nx">self</span><span class="o">::</span><span class="na">FLAG_NO_START_SESSION</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC4'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$checkCookie</span> <span class="o">=</span> <span class="nb">in_array</span><span class="p">(</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">getRequest</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">getActionName</span><span class="p">(),</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_cookieCheckActions</span><span class="p">);</span></div><div class='line' id='LC5'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$checkCookie</span> <span class="o">=</span> <span class="nv">$checkCookie</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nv">$this</span><span class="o">-&gt;</span><span class="na">getRequest</span><span class="p">()</span><span class="o">-&gt;</span><span class="na">getParam</span><span class="p">(</span><span class="s1">&#39;nocookie&#39;</span><span class="p">,</span> <span class="k">false</span><span class="p">);</span></div><div class='line' id='LC6'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$cookies</span> <span class="o">=</span> <span class="nx">Mage</span><span class="o">::</span><span class="na">getSingleton</span><span class="p">(</span><span class="s1">&#39;core/cookie&#39;</span><span class="p">)</span><span class="o">-&gt;</span><span class="na">get</span><span class="p">();</span></div><div class='line' id='LC7'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="k">if</span> <span class="p">(</span><span class="nv">$checkCookie</span> <span class="o">&amp;&amp;</span> <span class="k">empty</span><span class="p">(</span><span class="nv">$cookies</span><span class="p">))</span> <span class="p">{</span></div><div class='line' id='LC8'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">setFlag</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="nx">self</span><span class="o">::</span><span class="na">FLAG_NO_COOKIES_REDIRECT</span><span class="p">,</span> <span class="k">true</span><span class="p">);</span></div><div class='line' id='LC9'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div><div class='line' id='LC10'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="nx">Mage</span><span class="o">::</span><span class="na">getSingleton</span><span class="p">(</span><span class="s1">&#39;core/session&#39;</span><span class="p">,</span> <span class="k">array</span><span class="p">(</span><span class="s1">&#39;name&#39;</span> <span class="o">=&gt;</span> <span class="nv">$this</span><span class="o">-&gt;</span><span class="na">_sessionNamespace</span><span class="p">))</span><span class="o">-&gt;</span><span class="na">start</span><span class="p">();</span></div><div class='line' id='LC11'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<span class="p">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1293475/d016712e1c8379fbc93ed08d9decc3725ba6def5/gistfile1.aw" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1293475#file_gistfile1.aw" style="float:right;margin-right:10px;color:#666">gistfile1.aw</a>
            <a href="https://gist.github.com/1293475">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</div><style type="text/css">@import "http://gist.github.com/stylesheets/gist/embed.css"; .gistem .highlight {background: inherit; !important;}</style>
<p>By adding to the preDispatch() method of our Action or Controller we can toggle this:</p>
<div class="gistem"><div id="gist-1293491" class="gist">

        <div class="gist-file">
          <div class="gist-data gist-syntax">
              <div class="highlight"><pre><div class='line' id='LC1'><span class="cp">&lt;?php</span></div><div class='line' id='LC2'><span class="k">class</span> <span class="nc">Ai_AjaxCatalog_Controller_Action</span> <span class="k">extends</span> <span class="nx">Mage_Core_Controller_Front_Action</span></div><div class='line' id='LC3'><span class="p">{</span></div><div class='line' id='LC4'>	<span class="k">public</span> <span class="k">function</span> <span class="nf">preDispatch</span><span class="p">()</span></div><div class='line' id='LC5'>	<span class="p">{</span></div><div class='line' id='LC6'>		<span class="nv">$this</span><span class="o">-&gt;</span><span class="na">setFlag</span><span class="p">(</span><span class="s1">&#39;&#39;</span><span class="p">,</span> <span class="nx">self</span><span class="o">::</span><span class="na">FLAG_NO_START_SESSION</span><span class="p">,</span> <span class="mi">1</span><span class="p">);</span> <span class="c1">// Do not start standard session</span></div><div class='line' id='LC7'>		<span class="k">parent</span><span class="o">::</span><span class="na">preDispatch</span><span class="p">();</span></div><div class='line' id='LC8'>		<span class="k">return</span> <span class="nv">$this</span><span class="p">;</span></div><div class='line' id='LC9'>	<span class="p">}</span></div><div class='line' id='LC10'><span class="p">}</span></div></pre></div>
          </div>

          <div class="gist-meta">
            <a href="https://gist.github.com/raw/1293491/bea919dbc2f3098b1dc6f0e48a7a161cb0ffc506/gistfile1.aw" style="float:right;">view raw</a>
            <a href="https://gist.github.com/1293491#file_gistfile1.aw" style="float:right;margin-right:10px;color:#666">gistfile1.aw</a>
            <a href="https://gist.github.com/1293491">This Gist</a> brought to you by <a href="http://github.com">GitHub</a>.
          </div>
        </div>
</div>
</div>
<p>Now, any action in this controller will be stateless and not effect any sessions.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexanderinteractive.com/blog/2011/10/creating-a-stateless-request-in-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Jira Tabs: Open all those Jira&#8217;s at once!</title>
		<link>http://www.alexanderinteractive.com/blog/2011/04/jira-tabs-open-all-those-jiras-at-once/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=jira-tabs-open-all-those-jiras-at-once</link>
		<comments>http://www.alexanderinteractive.com/blog/2011/04/jira-tabs-open-all-those-jiras-at-once/#comments</comments>
		<pubDate>Mon, 25 Apr 2011 12:59:02 +0000</pubDate>
		<dc:creator>Tim Broder</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[Jira]]></category>

		<guid isPermaLink="false">http://www.alexanderinteractive.com/blog/?p=5528</guid>
		<description><![CDATA[Ever want to open all the Jira’s on the screen (search and filter views) in new tabs? Jess does, I do, and you should too! For firefox and chrome we now have the JiraTabs bookmark button. Drag this link up to your bookmarks bar: JiraTabs. Then, whenever you are on a filter or search view [...]]]></description>
			<content:encoded><![CDATA[<p>Ever want to open all the Jira’s on the screen (search and filter views) in new tabs? Jess does, I do, and you should too!</p>
<p>For firefox and chrome we now have the JiraTabs bookmark button.</p>
<p>Drag this link up to your bookmarks bar: <a href="function tab(where){ var elms = document.getElementById(where).getElementsByTagName('tr'); var conf=confirm('Do you want to open '+(elms.length-1)+' Jiras?'); if(conf){ for(var i=1; i&lt;elms.length; i++){ var url = elms[i].getElementsByClassName('summary')[0].getElementsByTagName('a')[0]; window.open(url.href);}  } } tab('issuetable');">JiraTabs</a>. Then, whenever you are on a filter or search view of Jira&#8217;s, click the button and all the jira&#8217;s on your screen will open up in new tabs</p>
<p>Demo:</p>
<p><object width="450" height="363"><param name="movie" value="http://www.youtube.com/v/PltTkfuhKfM?version=3"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/PltTkfuhKfM?version=3" type="application/x-shockwave-flash" width="450" height="363" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>Any updates will be made <a href="https://bitbucket.org/broderboy/jira-tabs/src" target="_blank">here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexanderinteractive.com/blog/2011/04/jira-tabs-open-all-those-jiras-at-once/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Extending a Magento Controller</title>
		<link>http://www.alexanderinteractive.com/blog/2011/04/extending-a-magento-controller/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=extending-a-magento-controller</link>
		<comments>http://www.alexanderinteractive.com/blog/2011/04/extending-a-magento-controller/#comments</comments>
		<pubDate>Wed, 20 Apr 2011 02:17:13 +0000</pubDate>
		<dc:creator>Tim Broder</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.alexanderinteractive.com/blog/?p=5511</guid>
		<description><![CDATA[We&#8217;re ajaxing part of the Magento shopping cart so we need to modify/extend some of the cart controller functionality. Sometimes when modifying controller&#8217;s you have to worry about updating the routes. For this, we don&#8217;t need to, we still want all the urls to be used the same way. app/code/local/Ai/Checkout/etc/config.xml: app/code/local/Ai/Checkout/controllers/CartController.php:]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re ajaxing part of the Magento shopping cart so we need to modify/extend some of the cart controller functionality.  Sometimes when modifying controller&#8217;s you have to worry about updating the routes. For this, we don&#8217;t need to, we still want all the urls to be used the same way.</p>
<p>app/code/local/Ai/Checkout/etc/config.xml:</p>
<pre class="brush: xml; title: ; notranslate">
&lt;config&gt;
    &lt;modules&gt;
        &lt;Ai_Checkout&gt;
             &lt;version&gt;0.0.1&lt;/version&gt;
        &lt;/Ai_Checkout&gt;
    &lt;/modules&gt;
...
    &lt;frontend&gt;
        &lt;routers&gt;
            &lt;checkout&gt;
                &lt;use&gt;standard&lt;/use&gt;
                &lt;args&gt;
                    &lt;module&gt;Ai_Checkout&lt;/module&gt;
                    &lt;frontName&gt;checkout&lt;/frontName&gt;
                &lt;/args&gt;
            &lt;/checkout&gt;
        &lt;/routers&gt;
    &lt;/frontend&gt;
&lt;/config&gt;
</pre>
<p>app/code/local/Ai/Checkout/controllers/CartController.php:</p>
<pre class="brush: php; title: ; notranslate">
require_once Mage::getModuleDir('controllers', 'Mage_Checkout') . DS . 'CartController.php';

class Ai_Checkout_CartController extends Mage_Checkout_CartController
{
   public function updatePostAction()
    {
    	Mage::log(&quot;NEW CONTROLLER&quot;, null, 'tim.log');
        try {
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.alexanderinteractive.com/blog/2011/04/extending-a-magento-controller/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Skynet Becomes Self Aware Tonight</title>
		<link>http://www.alexanderinteractive.com/blog/2011/04/skynet-becomes-self-aware-tonight/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=skynet-becomes-self-aware-tonight</link>
		<comments>http://www.alexanderinteractive.com/blog/2011/04/skynet-becomes-self-aware-tonight/#comments</comments>
		<pubDate>Tue, 19 Apr 2011 21:23:46 +0000</pubDate>
		<dc:creator>Tim Broder</dc:creator>
				<category><![CDATA[Funny Stuff]]></category>
		<category><![CDATA[skynet]]></category>
		<category><![CDATA[terminator]]></category>

		<guid isPermaLink="false">http://www.alexanderinteractive.com/blog/?p=5515</guid>
		<description><![CDATA[Terminator: The Sarah Connor Chronicles April 21, 2011. Judgment Day. Kyle Reese and Derek Reese witness the launch of U.S. missiles while playing ball in their yard.[1] As a result of temporal interference by Sarah Connor, her son John, Miles Dyson, and the T-800[2] destroyingCyberdyne headquarters and all backups of the research in 1995, the date for Judgment day is moved back to here.[3] [...]]]></description>
			<content:encoded><![CDATA[<p>Terminator: The Sarah Connor Chronicles<a href="http://terminator.wikia.com/index.php?title=2011/04/21&amp;action=edit&amp;section=1"><img src="http://images1.wikia.nocookie.net/__cb35594/common/skins/common/blank.gif" alt="Edit Terminator: The Sarah Connor Chronicles section" /></a></p>
<ul>
<li><strong>April 21, <a title="2011" href="http://terminator.wikia.com/wiki/2011">2011</a></strong>. <a title="Judgment Day" href="http://terminator.wikia.com/wiki/Judgment_Day">Judgment Day</a>. <a title="Kyle Reese" href="http://terminator.wikia.com/wiki/Kyle_Reese">Kyle Reese</a> and <a title="Derek Reese" href="http://terminator.wikia.com/wiki/Derek_Reese">Derek Reese</a> witness the launch of U.S. missiles while playing ball in their yard.<sup><a href="http://terminator.wikia.com/wiki/2011/04/21#cite_note-0">[1]</a></sup></li>
</ul>
<p>As a result of temporal interference by <a title="Sarah Connor" href="http://terminator.wikia.com/wiki/Sarah_Connor">Sarah Connor</a>, her son <a title="John Connor" href="http://terminator.wikia.com/wiki/John_Connor">John</a>, <a title="Miles Dyson" href="http://terminator.wikia.com/wiki/Miles_Dyson">Miles Dyson</a>, and the <a title="T-800 (Terminator 2)" href="http://terminator.wikia.com/wiki/T-800_%28Terminator_2%29">T-800</a><sup><a href="http://terminator.wikia.com/wiki/2011/04/21#cite_note-1">[2]</a></sup> destroying<a title="Cyberdyne" href="http://terminator.wikia.com/wiki/Cyberdyne">Cyberdyne</a> headquarters and all backups of the research in <a title="1995" href="http://terminator.wikia.com/wiki/1995">1995</a>, the date for Judgment day is moved back to here.<sup><a href="http://terminator.wikia.com/wiki/2011/04/21#cite_note-2">[3]</a></sup> Skynet is destined to go online a few days earlier on <strong><a title="2011/04/19" href="http://terminator.wikia.com/wiki/2011/04/19">April 19</a>, <a title="2011" href="http://terminator.wikia.com/wiki/2011">2011</a></strong> at <strong>20:11</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexanderinteractive.com/blog/2011/04/skynet-becomes-self-aware-tonight/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moving Gmail Gadgets to the Right Side</title>
		<link>http://www.alexanderinteractive.com/blog/2011/04/moving-gmail-gadgets-to-the-right-side/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=moving-gmail-gadgets-to-the-right-side</link>
		<comments>http://www.alexanderinteractive.com/blog/2011/04/moving-gmail-gadgets-to-the-right-side/#comments</comments>
		<pubDate>Thu, 07 Apr 2011 15:03:18 +0000</pubDate>
		<dc:creator>Tim Broder</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Remember the Milk]]></category>

		<guid isPermaLink="false">http://www.alexanderinteractive.com/blog/?p=5418</guid>
		<description><![CDATA[I started using Remember the Milk recently but didn&#8217;t want the gmail gadget to be so far down on the left hand side of my screen. There is no built in way to move gadgets to the right hand side with the exception of chat (labels used to do this but was removed in favor [...]]]></description>
			<content:encoded><![CDATA[<p>I started using Remember the Milk recently but didn&#8217;t want the <a href="http://www.rememberthemilk.com/services/gmail/gadget/" target="_blank">gmail gadget</a> to be so far down on the left hand side of my screen.  There is no built in way to move gadgets to the right hand side with the exception of chat (labels used to do this but was removed in favor of drag in drop back in late 2009).</p>
<p><a href="http://timbroder.com/wp-content/uploads/2011/04/gmail_right_widgets.png"><img class="size-full wp-image-901 alignleft" src="http://timbroder.com/wp-content/uploads/2011/04/gmail_right_widgets.png" alt="" width="513" height="455" /></a></p>
<p>If you don&#8217;t have anything in the right hand column, <em>enable Right-Side Chat</em> from Gmail Labs.  We are going to add in some custom css to gmail so install either <a href="https://chrome.google.com/extensions/detail/pabfempgigicdjjlccdgnbmeggkbjdhd" target="_blank">Stylist </a>for Chrome or <a href="https://addons.mozilla.org/en-US/firefox/addon/stylish/" target="_blank">Stylish</a> for Firefox.</p>
<p>Add the following style:</p>
<pre class="brush: css; title: ; notranslate">div.TZ:nth-child(8) {
    position:absolute !important;
    right:0px;
    top:165px;
    width:164px;
}</pre>
<p>In chrome you can also restrict the domain to mail.google.com.  For me, the Remember the Milk gadget was the 8th child.  Play with this until it looks right for you. You may also have to play with the &#8220;top&#8221; element depending on how much room your chat gadget takes up</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexanderinteractive.com/blog/2011/04/moving-gmail-gadgets-to-the-right-side/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Getting it onto the Kindle</title>
		<link>http://www.alexanderinteractive.com/blog/2011/01/getting-it-onto-the-kindle/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=getting-it-onto-the-kindle</link>
		<comments>http://www.alexanderinteractive.com/blog/2011/01/getting-it-onto-the-kindle/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 15:00:58 +0000</pubDate>
		<dc:creator>Tim Broder</dc:creator>
				<category><![CDATA[Gadgets]]></category>
		<category><![CDATA[calibre]]></category>
		<category><![CDATA[chrome]]></category>
		<category><![CDATA[google reader]]></category>
		<category><![CDATA[kindle]]></category>
		<category><![CDATA[rss]]></category>

		<guid isPermaLink="false">http://www.alexanderinteractive.com/blog/?p=5284</guid>
		<description><![CDATA[I&#8217;ve been loving my Kindle 3 since I upgraded from my sony reader. There are so many options for getting various reading materials onto it. Here are a few of the ones I like the best: Want to get some RSS feeds onto the Kindle? (12 feeds for free) KindleFeeder is the way to go. [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been loving my Kindle 3 since I upgraded from my sony reader. There are so many options for getting various reading materials onto it.  Here are a few of the ones I like the best:</p>
<ul>
<li>Want to get some RSS feeds onto the Kindle? (12 feeds for free) <a href="http://kindlefeeder.com/" target="_blank">KindleFeeder</a> is the way to go.  It also has a bookmarklet for capturing and sending whole pages from your browser.
<p>I use this to send articles in Google Reader that I want to read later to my Kindle.  I use my starred items to do this.  Starred items have their own RSS feed which you can put into kindlefeeder.  For information on how to get the link to the RSS of your starred items, <a href="http://www.freewaregenius.com/2008/01/16/how-to-broadcast-your-google-reader-starred-items-to-an-rss-feed-or-widget-on-your-blog/" target="_blank">click here</a>.</li>
<li>&#8220;<a href="https://chrome.google.com/webstore/detail/ipkfnchcgalnafehpglfbommidgmalan#" target="_blank">Send to Kindle</a>&#8221; for chrome is a button that will send the content of the page your are currently viewing.</li>
<li>The third method is the built in free Kindle email address that isn&#8217;t broadly advertised:  <a href="your.name@free.kindle.com" target="_blank">your.name@free.kindle.com</a> will beam most docs that you mail it to your Kindle over wifi (does not work with 3G)</li>
<li><a title="calibre" href="http://calibre-ebook.com/" target="_blank">Calibre</a> is great for managing what is on your Kindle and converting just about any file format to .mobi (a format the Kindle can read)</li>
</ul>
<p><object width="450" height="363"><param name="movie" value="http://www.youtube.com/e/Xu_FgtM_Oqs"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/e/Xu_FgtM_Oqs" type="application/x-shockwave-flash" width="450" height="363" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexanderinteractive.com/blog/2011/01/getting-it-onto-the-kindle/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Want to trace the call stack in Magento?</title>
		<link>http://www.alexanderinteractive.com/blog/2011/01/want-to-trace-the-call-stack-in-magento/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=want-to-trace-the-call-stack-in-magento</link>
		<comments>http://www.alexanderinteractive.com/blog/2011/01/want-to-trace-the-call-stack-in-magento/#comments</comments>
		<pubDate>Tue, 04 Jan 2011 21:40:24 +0000</pubDate>
		<dc:creator>Tim Broder</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.alexanderinteractive.com/blog/?p=5276</guid>
		<description><![CDATA[This has helped me immensely in situations like &#8220;Where is this getting called from??!?&#8221; Create a helper like so: That can be called from anywhere: I&#8217;ve also wrapped this into a module that you can drop right into your project. Details here Example output: Thanks to nextide for some of the code]]></description>
			<content:encoded><![CDATA[<p>This has helped me immensely in situations like &#8220;Where is this getting called from??!?&#8221;</p>
<p>Create a helper like so:</p>
<pre class="brush: php; title: ; notranslate">
class Timbroder_Stack_Helper_Callstack extends Mage_Core_Helper_Abstract
{
	private function get_callstack($delim=&quot;\n&quot;) {
	  $dt = debug_backtrace();
	  $cs = '';
	  foreach ($dt as $t) {
	    $cs .= $t['file'] . ' line ' . $t['line'] . ' calls ' . $t['function'] . &quot;()&quot; . $delim;
	  }

	  return $cs;
	}

	public function toLog() {
		Mage::log($this-&gt;get_callstack());
	}

	public function toFirePhp() {
		$stack = $this-&gt;get_callstack();
		foreach (explode(&quot;\n&quot;, $stack) as $line) {
			Mage::helper('firephp')-&gt;send($line);
		}
	}
}
</pre>
<p>That can be called from anywhere:</p>
<pre class="brush: php; title: ; notranslate">
Mage::helper('stack/callstack')-&gt;toFirePhp();
Mage::helper('stack/callstack')-&gt;toLog();
</pre>
<p>I&#8217;ve also wrapped this into a module that you can drop right into your project.  Details <a href="https://bitbucket.org/broderboy/magento_callstack/src" target="_blank">here</a></p>
<p>Example output:</p>
<pre class="brush: php; title: ; notranslate">
.../app/code/community/Timbroder/Stack/Helper/Callstack.php line 16 calls get_callstack()
.../app/design/frontend/mongoose/default/template/catalog/cms/bikes_bmx.phtml line 12 calls toLog()
.../app/design/frontend/mongoose/default/template/catalog/cms/bikes.phtml line 21 calls require_once()
.../app/code/core/Mage/Core/Block/Template.php line 212 calls include()
.../app/code/core/Mage/Core/Block/Template.php line 239 calls fetchView()
.../app/code/core/Mage/Core/Block/Template.php line 253 calls renderView()
.../app/code/core/Mage/Core/Block/Abstract.php line 668 calls _toHtml()
.../app/code/core/Mage/Core/Model/Email/Template/Filter.php line 190 calls toHtml()
.../lib/Varien/Filter/Template.php line 134 calls call_user_func()
.../app/code/core/Mage/Core/Model/Email/Template/Filter.php line 501 calls filter()
.../app/code/core/Mage/Cms/Block/Page.php line 100 calls filter()
.../app/code/core/Mage/Core/Block/Abstract.php line 668 calls _toHtml()
.../app/code/core/Mage/Core/Block/Abstract.php line 513 calls toHtml()
.../app/code/core/Mage/Core/Block/Abstract.php line 460 calls _getChildHtml()
.../app/code/local/Mage/Page/Block/Html/Wrapper.php line 52 calls getChildHtml()
.../app/code/core/Mage/Core/Block/Abstract.php line 668 calls _toHtml()
.../app/code/core/Mage/Core/Block/Text/List.php line 43 calls toHtml()
.../app/code/core/Mage/Core/Block/Abstract.php line 668 calls _toHtml()
.../app/code/core/Mage/Core/Block/Abstract.php line 513 calls toHtml()
.../app/code/core/Mage/Core/Block/Abstract.php line 464 calls _getChildHtml()
.../app/design/frontend/mongoose/default/template/page/1column.phtml line 55 calls getChildHtml()
.../app/code/core/Mage/Core/Block/Template.php line 212 calls include()
.../app/code/core/Mage/Core/Block/Template.php line 239 calls fetchView()
.../app/code/core/Mage/Core/Block/Template.php line 253 calls renderView()
.../app/code/core/Mage/Core/Block/Abstract.php line 668 calls _toHtml()
.../app/code/core/Mage/Core/Model/Layout.php line 529 calls toHtml()
.../app/code/local/Mage/Core/Controller/Varien/Action.php line 389 calls getOutput()
.../app/code/core/Mage/Cms/Helper/Page.php line 130 calls renderLayout()
.../app/code/core/Mage/Cms/Helper/Page.php line 52 calls _renderPage()
.../app/code/core/Mage/Cms/controllers/PageController.php line 45 calls renderPage()
.../app/code/local/Mage/Core/Controller/Varien/Action.php line 418 calls viewAction()
.../app/code/core/Mage/Core/Controller/Varien/Router/Standard.php line 254 calls dispatch()
.../app/code/core/Mage/Core/Controller/Varien/Front.php line 177 calls match()
.../app/code/core/Mage/Core/Model/App.php line 304 calls dispatch()
.../app/Mage.php line 598 calls run()
.../index.php line 155 calls run()
</pre>
<p>Thanks to <a href="http://www.nextide.ca/node/518" target="_blank">nextide</a> for some of the code</p>
]]></content:encoded>
			<wfw:commentRss>http://www.alexanderinteractive.com/blog/2011/01/want-to-trace-the-call-stack-in-magento/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Using widgets outside of the CMS in Magento</title>
		<link>http://www.alexanderinteractive.com/blog/2010/09/using-widgets-outside-of-the-cms-in-magento/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=using-widgets-outside-of-the-cms-in-magento</link>
		<comments>http://www.alexanderinteractive.com/blog/2010/09/using-widgets-outside-of-the-cms-in-magento/#comments</comments>
		<pubDate>Tue, 07 Sep 2010 20:01:21 +0000</pubDate>
		<dc:creator>Tim Broder</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.alexanderinteractive.com/blog/?p=5101</guid>
		<description><![CDATA[Magento ships with widget functionality that lets you build out data models and then reuse them on product and CMS pages. If you want to use these in a custom template however, you are out of luck. This can be done by extending the Widget Collection class. Create the following directory structure: app/code/local/Mage/Widget/Model/Myswql4/Widget/Instance Copy app/code/core/Mage/Widget/Model/Myswql4/Widget/Instance/Collection.php [...]]]></description>
			<content:encoded><![CDATA[<p>Magento ships with widget functionality that lets you build out data models and then reuse them on product and CMS pages. If you want to use these in a custom template however, you are out of luck.  This can be done by extending the Widget Collection class.</p>
<p>Create the following directory structure: app/code/local/Mage/Widget/Model/Myswql4/Widget/Instance</p>
<p>Copy app/code/core/Mage/Widget/Model/Myswql4/Widget/Instance/Collection.php into your new directory</p>
<p>The Mage_Widget_Model_Mysql4_Widget_Instance_Collection comes with a store filter but thats about it.  To be more usefull we are going to add a type filter, a title filter, and a sorter.</p>
<pre class="brush: php; title: ; notranslate">
class Mage_Widget_Model_Mysql4_Widget_Instance_Collection extends Mage_Core_Model_Mysql4_Collection_Abstract
{
    /**
     * Constructor
     */
    protected function _construct()
    {
        parent::_construct();
        $this-&gt;_init('widget/widget_instance');
    }

    /**
     * Filter by store ids
     *
     * @param array|integer $storeIds
     * @param boolean $withDefaultStore if TRUE also filter by store id '0'
     * @return Mage_Widget_Model_Mysql4_Widget_Instance_Collection
     */
    public function addStoreFilter($storeIds = array(), $withDefaultStore = true)
    {
        if (!is_array($storeIds)) {
            $storeIds = array($storeIds);
        }
        if ($withDefaultStore &amp;&amp; !in_array(0, $storeIds)) {
            array_unshift($storeIds, 0);
        }
        $select = $this-&gt;getSelect();
        foreach ($storeIds as $storeId) {
            $select-&gt;orWhere('FIND_IN_SET(?, `store_ids`)', $storeId);
        }
        return $this;
    }

    public function addTypeFilter($type) {
    	$this-&gt;getSelect()-&gt;where('type=?', $type);
    	return $this;
    }

    public function addTitleFilter($type) {
    	$this-&gt;getSelect()-&gt;where('title=?', $type);
    	return $this;
    }

    public function addAttributeToSort($attribute, $dir='asc') {
    	$this-&gt;getSelect()-&gt;order(&quot;{$attribute} {$dir}&quot;);
    	return $this;
    }
}
</pre>
<p>Now we should be able to query any widgets from any template in our system:</p>
<pre class="brush: php; title: ; notranslate">
&lt; ?php
$wids = Mage::getModel('widget/widget_instance')
	-&gt;getCollection()
	-&gt;addTypeFilter('masswidget/list')
	-&gt;addAttributeToSort('title', 'asc')
	-&gt;load();

foreach ($wids as $wid):
	$params = $wid-&gt;getWidgetParameters();
	echo $params['custom_param'];
	echo $wid-&gt;gettitle();
endforeach;
?&gt;
</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.alexanderinteractive.com/blog/2010/09/using-widgets-outside-of-the-cms-in-magento/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Improving the Performance of a Local Magento Install</title>
		<link>http://www.alexanderinteractive.com/blog/2010/06/improving-the-performance-of-a-local-magento-install/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=improving-the-performance-of-a-local-magento-install</link>
		<comments>http://www.alexanderinteractive.com/blog/2010/06/improving-the-performance-of-a-local-magento-install/#comments</comments>
		<pubDate>Thu, 17 Jun 2010 13:55:50 +0000</pubDate>
		<dc:creator>Tim Broder</dc:creator>
				<category><![CDATA[Technology]]></category>
		<category><![CDATA[apache]]></category>
		<category><![CDATA[APC]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[eAccelerator]]></category>
		<category><![CDATA[innodb]]></category>
		<category><![CDATA[magento]]></category>
		<category><![CDATA[memcached]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[php]]></category>

		<guid isPermaLink="false">http://www.alexanderinteractive.com/blog/?p=4972</guid>
		<description><![CDATA[Magento is great, but it needs a good amount of hardware behind it.  Developing locally can get slow and cumbersome unless your environment is tweaked properly.  Here are a few tips for boosting Magento performance without impacting the rest of your development environment.  Please keep in mind that the memory allocations work well for my [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.magentocommerce.com/" target="_blank">Magento</a> is great, but it needs a good amount of hardware behind it.  Developing locally can get slow and cumbersome unless your environment is tweaked properly.  Here are a few tips for boosting Magento performance without impacting the rest of your development environment.  Please keep in mind that the memory allocations work well for my machine (dual core, 4 gigs of ram).</p>
<p><strong>Database</strong><br />
Install <a href="http://www.innodb.com/" target="_blank">innoDB</a>.  Magento can use the in-memory buffer pool to cache table indexes and data.</p>
<p>Configure my.ini:<br />
<code>innodb_buffer_pool_size  = 64M<br />
innodb_thread_concurrency = 4 (or 8 if you have dual core)<br />
query_cache_size = 64M<br />
query_cache_limit  = 2M</code></p>
<p><strong>apache</strong><br />
enable mod_expires in httpd.conf</p>
<p><strong>php<br />
</strong>in php.ini enable:<br />
<code>realpath_cache_size = 16k<br />
realpath_cache_ttl = 120</code></p>
<p>Install the <a href="http://eaccelerator.net/" target="_blank">eAccelerator </a>binaries for php.  APC is a better solution but is less compatible with windows.  If you need to compile these, click <a href="http://www.denniskehrig.de/php/eaccelerator/" target="_blank">here </a>for instructions. Then configure it:<br />
<code>extension=eaccelerator.dll<br />
eaccelerator.shm_size=64<br />
eaccelerator.cache_dir=C:\PHP\tmp<br />
eaccelerator.enable=1<br />
eaccelerator.optimizer=1<br />
eaccelerator.check_mtime=1<br />
eaccelerator.shm_max=0</code></p>
<p>Install <a href="http://memcached.org/" target="_blank">memcached</a>.<br />
add the following lines inside the config of epp/etc/local.xml<br />
<code>&lt;cache&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;backend&gt;memcached&lt;/backend&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;memcached&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servers&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;server&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;host&gt;&lt;![CDATA[localhost]]&gt;&lt;/host&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;port&gt;&lt;![CDATA[11211]]&gt;&lt;/port&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;persistent&gt;&lt;![CDATA[1]]&gt;&lt;/persistent&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/server&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servers&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;compression&gt;&lt;![CDATA[0]]&gt;&lt;/compression&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;cache_dir&gt;&lt;![CDATA[]]&gt;&lt;/cache_dir&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;hashed_directory_level&gt;&lt;![CDATA[]]&gt;&lt;/hashed_directory_level&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;hashed_directory_umask&gt;&lt;![CDATA[]]&gt;&lt;/hashed_directory_umask&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;file_name_prefix&gt;&lt;![CDATA[]]&gt;&lt;/file_name_prefix&gt;<br />
&nbsp;&nbsp;&nbsp;&nbsp;&lt;/memcached&gt;<br />
&lt;/cache&gt;<br />
</code></p>
<p><strong>Admin Backend<br />
</strong></p>
<ul>
<li>Keep the indexes up to date (System &gt; index management)</li>
<li>Compile Mage classes (System &gt; tools &gt; Complilation)</li>
<li>Enable all cachine (System &gt; Cache Management)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.alexanderinteractive.com/blog/2010/06/improving-the-performance-of-a-local-magento-install/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
	</channel>
</rss>

<!-- Performance optimized by W3 Total Cache. Learn more: http://www.w3-edge.com/wordpress-plugins/

Page Caching using apc
Database Caching using apc
Object Caching 674/798 objects using apc
Content Delivery Network via cdn.at.ai

Served from: www.alexanderinteractive.com @ 2012-02-08 09:51:17 -->
