<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:admin="http://webns.net/mvcb/"
  xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
  xmlns:content="http://purl.org/rss/1.0/modules/content/">

  <channel>
  
  <title>Blog | Caffeine Creations</title>
  <link>http://caffeinecreations.ca/blog/</link>
  <description></description>
  <dc:language>en</dc:language>
  <dc:creator>sean@caffeinecreations.ca</dc:creator>
  <dc:rights>Copyright 2013</dc:rights>
  <dc:date>2013-05-13T20:29:22+00:00</dc:date>
  <admin:generatorAgent rdf:resource="http://expressionengine.com/" />
  

  <item>
    <title>Nine Years Ago Today</title>
    <link>/blog/nine-years-ago-today</link>
    <guid>/blog/nine-years-ago-today#When:20:29:22Z</guid>
    <description><![CDATA[<p>
	Nine Years ago I joined the ExpressionEngine community. I got in on a free license giveaway for the first 1000 people to send an email to EllisLab. At that time I was a web enthuasiast and full time Universty Instructor.</p>
<p>
	In the last nine years I have switched careers to full time web developer, attended an EE conference in New York and for a 5 month period was part of the technical support team at EllisLab. &nbsp;I&#39;ve built dozens of ExpressionEngine sites from 10 site MSM installs to small mom &amp; pop businesses. It&#39;s really great to be part of such a great community that is very supportive of both professional developers and hobbyists.&nbsp;</p>
<p>
	Am looking forward to continuing being a part of this community and meeting more of my peers at the next Conference in Portland this year in October.</p>
]]></description> 
    <dc:subject>Other stuff,</dc:subject>
    <dc:date>2013-05-13T20:29:22+00:00</dc:date>
  </item>

  <item>
    <title>Standard Add&#45;ons For ExpressionEngine Development</title>
    <link>/blog/standard-add-ons-for-expressionengine-development</link>
    <guid>/blog/standard-add-ons-for-expressionengine-development#When:19:14:37Z</guid>
    <description><![CDATA[<p>
	I&#39;ve been thinking about writing a blog post on this topic for a while now, but <a href="http://bluefishdesignstudio.com/blog/article/expressionengine-add-ons-we-use-on-every-install">Marcus Neto just posted his list</a>&nbsp;which prompted me to finally do this. Many of the addons on my list are the same but there are a few differences.</p>
<ul>
	<li>
		<a href="http://devot-ee.com/add-ons/ce-image">CE Image</a>&nbsp;$22 - On the fly image manipulation with nice features including being able to set where to crop from, set background colors/transparencies and more. Plus it&#39;s from Causing Effect the EE addon developer with <a href="http://www.causingeffect.com/software/expressionengine/ce-image/user-guide">the best documentation</a>.</li>
	<li>
		<a href="http://devot-ee.com/add-ons/deeploy-helper">Deeploy Helper</a>&nbsp;$15 - No easier way to change paths/urls when moving from dev to live server.</li>
	<li>
		<a href="http://devot-ee.com/add-ons/freeform">Freeform</a> Free or $100 pro - If you need a form on your site, you need FreeForm. This is probably the most used free module in the ExpressionEngine community. The Pro version gives even more functionality which is well worth the purchase price.</li>
	<li>
		<a href="http://devot-ee.com/add-ons/hacksaw">Hacksaw</a>&nbsp;Free - Used for truncating text and allows you to allow certain html items such as &lt;a&gt;&lt;b&gt;&lt;ul&gt;&lt;li&gt; as a parameter setting. You can also append text to the cut off string which I often add an ellipsis followed by &nbsp;a read more link.</li>
	<li>
		<a href="http://devot-ee.com/add-ons/ifelse">IfElse</a>&nbsp;Free - very useful for reducing database load by reducing the queries used as code inside conditionals is no longer rendered compared to standard EE behaviour where all code is rendered but not displayed if it doesn&#39;t meet the condtional.</li>
	<li>
		<a href="http://devot-ee.com/add-ons/low-variables">Low Variables</a>&nbsp;$49 - In my opinion this is the best, most powerful and most flexible addon available to ExpressionEngine. You can take many other addons and use them inside of Low Variables providing an excellent interface for content that doesn&#39;t need a full channel such as home page slideshows and variables that clients will want to edit. You can also set early or late parsing for variables. It is truly the swiss army knife of addons.</li>
	<li>
		<a href="http://devot-ee.com/add-ons/matrix">Matrix</a>&nbsp;$49 - Very flexilbe way to provide clients with expanding fields. I use this for photo galleries, slide shows, address listings and many other web site features.</li>
	<li>
		<a href="http://devot-ee.com/add-ons/seolite">SEO Lite</a>&nbsp;Free - Very very useful for SEO with ExpressionEngine. Wrote up my approach using this<a href="http://caffeinecreations.ca/blog/seo-and-expressionengine"> addon here</a>. A new addon which I&#39;m going to try out on my next build <a href="http://devot-ee.com/add-ons/surgeeo">SurgeEO</a>&nbsp;($20) does the same, but addresses some of the weaknesses of SEO lite that I discussed in the linked blob post.</li>
	<li>
		<a href="http://devot-ee.com/add-ons/sitemap-module">Sitemap</a>&nbsp;$40 - Create and manage your XML sitemap for google. Will also notify google of updates.</li>
	<li>
		<a href="http://devot-ee.com/add-ons/switchee">Switchee</a>&nbsp;Free - Case logic makes it super easy to use a single template for both listing pages and individual entries resulting in cleaner urls.</li>
	<li>
		<a href="http://devot-ee.com/add-ons/wygwam">Wygwam</a>&nbsp;$29 - Super flexible and configurable Rich Text Editor. Control what clients have access to. Be sure to add the<a href="http://devot-ee.com/add-ons/wygwam-super-admin-source"> Wygwam Super Admin Source extension</a> so that you can easily edit the source code your clients enter. Especially useful if the client forgets to use the paste from word button.</li>
	<li>
		<a href="http://devot-ee.com/add-ons/updater">Updater</a>&nbsp;$15 - Easiest way to update EE itself or install/update addons.</li>
	<li>
		<a href="http://devot-ee.com/add-ons/zoo-flexible-admin">Zoo Flexible Admin</a>&nbsp;$22 - Easily configure what the client sees when they login. Create sepate login menus for each member group.</li>
</ul>
<p>
	Used on many but not all sites</p>
<ul>
	<li>
		<a href="http://devot-ee.com/add-ons/low-reorder">Low Reorder</a>&nbsp;$29 - Does the client need to be able to easily reorder entries? You need Low Reorder.</li>
</ul>
]]></description> 
    <dc:subject>ExpressionEngine, Add&#45;on Reviews,</dc:subject>
    <dc:date>2013-05-01T19:14:37+00:00</dc:date>
  </item>

  <item>
    <title>ExpressionEngine Conference 2013</title>
    <link>/blog/expressionengine-conference-2013</link>
    <guid>/blog/expressionengine-conference-2013#When:18:00:49Z</guid>
    <description><![CDATA[<p>
	Last week I bought my tickets to the <a href="https://www.expressionengineconference.com/">October 2013 ExpressionEngine conference</a> in Portland Oregon. This will be the first year under the new ownership of <a href="http://www.turnerparscale.com/">Turner Parscale</a>&nbsp;and it looks like they&#39;ve done a great job of expanding the scope of the conference.</p>
<p>
	There are now more speakers including simultaneous sessions, workshops, lunch, conference reception and recordings of all workshops so you can attend one and then watch the one you missed at the same time. The last two options are only available for those how buy the All-Access Admission, which I have.</p>
<p>
	I missed last years conference so it&#39;s been two years since the last one I attended in New York. Am really looking forward to this as it looks to be bigger and better than ever. Can&#39;t wait to see everyone.</p>
]]></description> 
    <dc:subject>Business, Other stuff,</dc:subject>
    <dc:date>2013-04-23T18:00:49+00:00</dc:date>
  </item>

  <item>
    <title>Foundation &amp;amp; Structure Navigation</title>
    <link>/blog/foundation-structure-navigation</link>
    <guid>/blog/foundation-structure-navigation#When:17:26:48Z</guid>
    <description><![CDATA[<p>
	I&#39;m building my first site using&nbsp;<a href="http://buildwithstructure.com/">Structure</a> as an agency that I&#39;ve partnered with uses Structure on every site they build. The site that I&#39;m building out is also responsive and I&#39;m using Foundation 3 as the responsive framework.</p>
<p>
	The issue that I&#39;ve run into is that Foundation expects your navigation to follow a specific structure to work responsively with drop down menus, but that the Structure tag&nbsp;<strong>&#123;exp:structure:nav&#125;</strong>&nbsp;has some limitations in the customization of what you can do with adding your own markup, ids and classes. I was able to get it to work fine without dropdowns, but once I added the second level of navigation the structure:nav tag didn&#39;t let me use the code I needed.</p>
<p>
	Here is the code I was using, but couldn&#39;t get to work correctly with Foundation dropdowns.</p>
<pre class="brush:ee;">
      &lt;ul class="nav-bar right"&gt;&#10;        &lt;li&gt;&lt;a href="&#123;site_url&#125;" &#123;if segment_1 ==""&#125;class="current"&#123;/if&#125;&gt;Home&lt;/a&gt;&lt;/li&gt;   &#10;&#10;        &#123;exp:structure:nav start_from="/" max_depth="2" include_ul="no" current_class="current"&#125;&#10;&#10;      &lt;/ul&gt;</pre>
<p>
	The solution for me was to use a plugin for structure called <a href="http://devot-ee.com/add-ons/structure-entries">Structure Entries</a>. On the devot:ee page be sure to look for the beta version in the description and download that as it resolved some other issues I ran into. Here is my working code using this plugin:</p>
<pre class="brush:ee;">
      &lt;ul class="nav-bar right"&gt;&#10;        &lt;li&gt;&lt;a href="&#123;site_url&#125;" &#123;if segment_1 ==""&#125;class="current"&#123;/if&#125;&gt;Home&lt;/a&gt;&lt;/li&gt;   &#10;&#10;        &#123;exp:structure_entries depth="2"&#125;&#10;        &#123;if &#123;depth&#125; == 1&#125;&#123;!-- Top Level --&#125;&#10;            &lt;li class="&#123;if &#123;current_parent&#125;&#125;current&#123;/if&#125;&#123;if &#123;current_page&#125;&#125;active&#123;/if&#125; &#123;if &#123;total_children&#125; &gt; 0&#125;has-flyout&#123;/if&#125;"&gt;&#10;                &lt;a href="&#123;page_uri&#125;"&gt;&#123;title&#125;&lt;/a&gt;&#10;                &#123;if &#123;total_children&#125; &gt; 0&#125;&lt;a href="#" class="flyout-toggle"&gt;&lt;span&gt; &lt;/span&gt;&lt;/a&gt;&#123;/if&#125;&#10;          &#123;if &#123;children_total&#125; == 0&#125;&#123;!-- No Children - so close markup --&#125;&#10;            &lt;/li&gt;&#10;          &#123;/if&#125;&#10;        &#123;/if&#125;&#10;&#10;        &#123;if &#123;depth&#125; == 2&#125;&#123;!-- Children (not top level) --&#125;&#10;          &#123;if &#123;sibling_count&#125; == 1&#125;&#123;!-- First child - so open markup --&#125;&#10;                &lt;ul class="flyout"&gt;&#10;          &#123;/if&#125;&#10;                    &lt;li &#123;if &#123;current_parent&#125;&#125;class="current"&#123;/if&#125;&#123;if &#123;current_page&#125;&#125;class="active"&#123;/if&#125;&gt;&#10;                        &lt;a href="&#123;page_uri&#125;"&gt;&#123;title&#125;&lt;/a&gt;&#10;          &#10;            &#123;close_markup&#125;&#10;            &#123;if &#123;total_children&#125; == 0 || &#123;depth&#125; == &#123;restricted_depth&#125;&#125;&#10;                    &lt;/li&gt;&#10;            &#123;/if&#125;&#10;&#10;            &#123;if &#123;last_sibling&#125; &amp;&amp; &#123;sibling_count&#125; == &#123;sibling_total&#125;&#125;&#10;                &lt;/ul&gt;&#10;            &lt;/li&gt;&#10;            &#123;/if&#125;&#10;            &#123;/close_markup&#125;&#10;          &#10;        &#123;/if&#125;&#10;        &#123;/exp:structure_entries&#125;&#10;      &lt;/ul&gt;</pre>
<p>
	If there is a better way to do this, please let me know. If you have code to share, please use a <a href="http://pastie.org/" target="_blank">Pastie</a>&nbsp;and link to it as code does not work in the comments.</p>
]]></description> 
    <dc:subject>ExpressionEngine, EE tutorials,</dc:subject>
    <dc:date>2013-03-31T17:26:48+00:00</dc:date>
  </item>

  <item>
    <title>SEO and ExpressionEngine</title>
    <link>/blog/seo-and-expressionengine</link>
    <guid>/blog/seo-and-expressionengine#When:18:26:27Z</guid>
    <description><![CDATA[<p>
	I&#39;ve used a number of different methods in the past to get SEO meta tags in ExpressionEngine easily editable for clients. Recently however I feel that I&#39;ve found what I feel is the best way for me and is also very flexible going forward. This method does require using 4 addons, three of which I use on almost every build and only one of which is commercial.</p>
<ul>
	<li>
		<a href="http://devot-ee.com/add-ons/seolite">SEO Lite</a></li>
	<li>
		<a href="http://devot-ee.com/add-ons/low-variables">Low Variables</a> ($47)</li>
	<li>
		<a href="http://devot-ee.com/add-ons/switchee">Switchee</a></li>
	<li>
		<a href="http://devot-ee.com/add-ons/ifelse">IfElse</a>&nbsp;(optional)</li>
</ul>
<p>
	The key to the magic is SEO Lite and Low Variables. SEO Lite does 90% of the work and Low Variables fills in a couple of holes especially on listing pages or pages that are not comprised of a single entry and may need their own specific keywords or description.</p>
<h3>
	SEO Lite</h3>
<p>
	SEO Lite is a lightweight addon that allows you to implement the basic SEO tags, title, description, and keywords, into your templates easily. The <a href="http://www.addonbakery.com/docs/expressionengine/SEO_Lite_-_Installation_Usage.html">documentation for SEO Lite</a> is very easy to follow and really it&#39;s as simple as adding a single tag to your templates and almost everything is finished. Once installed you go to the SEO Lite module page where you can input the default keywords and description as well as edit the template. I usually leave the template alone and fill in the defaults. Defaults will be overwritten on any page with an entry url_title in the last segment.</p>
<p>
	Adding in the</p>
<pre class="brush:ee;">
&#123;exp:seo_lite use_last_segment="yes"&#125;</pre>
<p>
	into your document head will get things working correctly almost strait away. The issue that now crops up is what do you do when you have pages that do not have a url_title in the last segment? You can use embeds to pass through overrides on these specific pages as per the SEO Lite documentation:</p>
<pre class="brush:ee;">
&#123;exp:seo_lite use_last_segment=&#39;yes&#39;&#10;        title_postfix=&#39;&#123;embed:title_postfix&#125;&#39;&#10;        default_title=&#39;&#123;embed:default_title&#125;&#39;&#10;        default_keywords=&#39;&#123;embed:default_keywords&#125;&#39;&#10;        default_description=&#39;&#123;embed:default_description&#125;&#39;&#10;&#125;</pre>
<p>
	This works great. However like many ExpressionEngine developers I now do my best to avoid embeds. The key to avoid using embeds is <a href="http://devot-ee.com/add-ons/low-variables">Low Variables</a>&nbsp;which I already use on 95% of my sites.&nbsp;I am also running my listing pages and single entry pages through the same template. This means I need to have overrides available for the listing pages and ensure that individual entries still get to use the keywords and description entered from within the entries.</p>
<h3>
	Low Variables</h3>
<p>
	Step one replace embeds with low variables. Create a low variables for each page where you need an override. I first create a group called SEO and then call each variable <strong>lv-blog-meta-description</strong>, <strong>lv-blog-meta-keywords</strong> where <strong>blog</strong>&nbsp;will change depending on which page the override is needed on.</p>
<p>
	Next instead of overriding with embeds in our SEO Lite tag we&#39;ll use Low Variables and pass the overrides through via the preparse paramenter since our SEO Lite tag is residing in it&#39;s own Low Variable called &nbsp;<strong>lv-doctype-header</strong>. The key for this to work is that the&nbsp;<strong>lv-doctype-header</strong> variable needs to be further down the &nbsp;list of variables in the Low Variables CP. I do this by creating a different group called Developer Variables, hiding it from non-managers and placing that group below the SEO group.</p>
<h3>
	Switchee and Ifelse</h3>
<p>
	In order to use a single template for both listing pages and single entry pages, which results in nicer urls, I use the excellent plugin by Mark Croxton - <a href="http://devot-ee.com/add-ons/switchee">Switchee</a>. So for example on a blog page my url would be domain.com/blog or domain.com/blog/url_title. To allow overrides to work on the listing page, pagination, and categories, but have the individual entries have their own unique meta tags we need switchee. The code below is what I am using:</p>
<pre class="brush:ee;">
&#123;exp:switchee variable = "&#123;segment_2&#125;" parse="inward"&#125;&#10;  &#123;case value="#^P(\d+)$#|&#39;&#39;|category|archives"&#125; &#123;!--landing pages--&#125;&#10;    &#123;exp:low_variables:single &#10;        var="lv-doctype-header"&#10;        preparse:pre_url_title="&#123;last_segment&#125;"&#10;        preparse:pre_entry_id="&#123;entry_id&#125;"&#10;        preparse:pre_default_title=""&#10;        preparse:pre_default_keywords="&#123;lv-blog-meta-keywords&#125;"&#10;        preparse:pre_default_description="&#123;lv-blog-meta-description&#125;"&#10;    &#125;&#10;  &#123;/case&#125;&#10;&#10;  &#123;case default="yes"&#125;&#123;!--Single Entry--&#125;&#10;        &#123;exp:low_variables:single &#10;            var="lv-doctype-header"&#10;            preparse:pre_url_title="&#123;last_segment&#125;"&#10;            preparse:pre_entry_id="&#123;entry_id&#125;"&#10;        &#125;&#10;  &#123;/case&#125;&#10;&#123;/exp:switchee&#125;</pre>
<p>
	Then in the&nbsp;<strong>lv-doctype-header</strong> variable I have the following which uses <a href="http://devot-ee.com/add-ons/ifelse">IfElse</a>, also by Mark Croxton. If else allows you to parse advanced conditionals without the overhead that comes when using just the baked in conditional EE tags.</p>
<pre class="brush:ee;">
&#123;!-- SEO Lite Here --&#125;&#10;&#123;exp:ifelse parse="inward"&#125;&#10;    &#123;!-- listing pages need overides here--&#125;&#10;    &#123;if (segment_2 =="" AND segment_1 !="") OR segment_2 =="map"&#125;&#10;        &#123;exp:seo_lite &#10;            entry_id="&#123;pre_entry_id&#125;"&#10;            url_title="&#123;pre_url_title&#125;"&#10;            default_title=&#39;&#123;pre_default_title&#125;&#39;&#10;            default_keywords=&#39;&#123;pre_default_keywords&#125;&#39;&#10;            default_description=&#39;&#123;pre_default_description&#125;&#39;&#10;        &#125;&#10;    &#123;/if&#125;&#10;    &#10;    &#123;if segment_2 !="" OR segment_1==""&#125;&#10;&#10;        &#123;exp:seo_lite &#10;            entry_id="&#123;pre_entry_id&#125;"&#10;            url_title="&#123;pre_url_title&#125;"&#10;        &#125;&#10;    &#123;/if&#125;&#10;&#123;/exp:ifelse&#125;&#10;&#123;!--end SEO LITE--&#125;</pre>
<p>
	What the above code is doing is in the first conditional checking if the page needs overrides. On my sites generally if segment 2 is empty then that is a listing or unique page. ON this site there is one additional page with segment two filled in that needs unique meta tags and that is the page located at /contact/map hence the advanced conditional there.</p>
<p>
	The second half checks to see if segment 2 is not empty in which case it looks for a url_title. It also checks if segment_1 is empty (the homepage) and if it is uses that code. Since there is no entry_id or url_title passed on the homepage it loads the default meta keywords and description.</p>
<h3>
	Bonus for Low Variables</h3>
<p>
	If you don&#39;t wan&#39;t to give your client access to the SEO lite page to adjust the default keywords and description all you need to do is create new variables in Low Variables and then put those into the template code. You now have a site where the meta description and keywords are easily edited on all pages by your client.</p>
<h3>
	Update</h3>
<p>
	Both on twitter and in the comments I have been reminded of <a href="http://ee-garage.com/nsm-better-meta">NSM Better Meta</a>. NSM Better meta is a more robust option than SEO LIte with many more tags that are easily updatable by the client. The purpose of this article was to outline my approach with the sites that I build where most clients only need to adjust keywords and description. If you need more options than you should definitely check out NSM Better Meta.</p>
]]></description> 
    <dc:subject>ExpressionEngine, EE tutorials, Web development, Code,</dc:subject>
    <dc:date>2013-02-22T18:26:27+00:00</dc:date>
  </item>

  <item>
    <title>Top 7 Most In&#45;Demand Tech Skills For 2013</title>
    <link>/blog/top-7-most-in-demand-tech-skills-for-2013</link>
    <guid>/blog/top-7-most-in-demand-tech-skills-for-2013#When:16:26:09Z</guid>
    <description><![CDATA[<img src="/uploads/blog/html-css.jpg" height="234" width="680" /><p>
	Just found an article on ReadWrite titled: <a href="http://readwrite.com/2013/01/30/top-7-in-demand-tech-skills-for-2013">Top 7 Most In-Demand Tech Skills For 2013</a>&nbsp;that I wanted to share. Here&#39;s the list of 7, but go to the article to read info on each of the items.</p>
<ol>
	<li>
		HTML/CSS</li>
	<li>
		iOs Development</li>
	<li>
		PHP / MySQL</li>
	<li>
		Java / J2EE</li>
	<li>
		JavaScript (And Related Technologies)</li>
	<li>
		IT Project Management</li>
	<li>
		All Things "Cloud"</li>
</ol>
]]></description> 
    <dc:subject>News, Web development,</dc:subject>
    <dc:date>2013-01-31T16:26:09+00:00</dc:date>
  </item>

  <item>
    <title>ExpressionEngine V1.7.3 docs</title>
    <link>/blog/expressionengine-v1.7.3-docs</link>
    <guid>/blog/expressionengine-v1.7.3-docs#When:19:48:05Z</guid>
    <description><![CDATA[<p>
	EllisLab recently redesigned their web site. However during the redesign the legacy docs for ExpressionEngine one were removed. They are still available as a <a href="http://ellislab.com/expressionengine/user-guide/">download (top right)</a>. However if you don&#39;t know exactly where to find what you need there is no search in the download as it relies on google to search. <a href="http://www.twitter.com/metadaptive">Tom Davies</a>&nbsp;is now hosting the docs at&nbsp;<a href="http://ee1docs.com/">http://ee1docs.com/</a>&nbsp;which will be a great resource for anyone maintaining or working on legacy ExpressionEngine sites.</p>
]]></description> 
    <dc:subject>ExpressionEngine, EE tips,</dc:subject>
    <dc:date>2012-12-20T19:48:05+00:00</dc:date>
  </item>

  <item>
    <title>Multi Language Sites &#45; Advice</title>
    <link>/blog/multi-language-sites-advice</link>
    <guid>/blog/multi-language-sites-advice#When:20:01:01Z</guid>
    <description><![CDATA[<p>
	I&#39;m just beginning a multi language web site build and thought I&#39;d share a few bits of advice as I proceed through the build. This is my second multi langauge site, the first was English and Korean. The current one will be English and French. For the latest build I&#39;m taking a new approach using a different multilanguage module that did not exist at the time I built the last site, <a href="http://devot-ee.com/add-ons/transcribe">Transcribe</a>&nbsp;(documentation <a href="http://eeharbor.com/transcribe/documentation">here</a>).</p>
<ol>
	<li>
		If you need to put dummy text in two different languages what do you do? Well for English everyone has their favorite lorem ipsum web site or browser plugin. But for secondary or tertiary languages you need a different option. I&#39;m using <a href="http://randomtextgenerator.com/">Random Text Generator</a> which will output either plain text (great for copy and paste into wygwam fields) or html.</li>
	<li>
		On the site I&#39;m currently working on the navigation li&#39;s have padding to force it to go full width. However the English and French translations are not the same number of letter causing the nav to break in French. Solution add a body id for the language being viewed and then style that. Problem solved. Transcribe lets you do this very easily by using this:&nbsp;
		<pre class="brush:ee;">
id="&#123;exp:transcribe:language_abbreviation&#125;"</pre>
	</li>
	<li>
		Also for sections where I don&#39;t have translations from the client yet, I&#39;m using Google Translate, which works great for short phrases. The client can then alter the translation later via the Transcribe Module CP.</li>
</ol>
<p>
	More advice coming as I work through the site.</p>
]]></description> 
    <dc:subject></dc:subject>
    <dc:date>2012-12-12T20:01:01+00:00</dc:date>
  </item>

  <item>
    <title>Migrating EE1 to Statamic</title>
    <link>/blog/migrating-ee1-to-statamic</link>
    <guid>/blog/migrating-ee1-to-statamic#When:20:59:19Z</guid>
    <description><![CDATA[<p>
	I have just migrated Repatriate Me! from ExpressionEngine 1.6.8 to a new CMS called <a href="http://statamic.com/">Statamic</a>. The reason this was migrated to Statamic is that it was built on an older free version of ExpressionEngine which no longer exists. All available versions are commercial and it was not worth upgrading the software and paying licensing costs. The site did need to be upgraded due to it&#39;s age and the site need a completely new look so Statamic was chosen as it&#39;s perfect for small sites and blogs.</p>
<p>
	Additionally the licensing cost for a personal license is only $20 and it comes with baked in image resizing on the fly within your templates, a matrix style field and tagging all of which ExpressionEngine requires paid addons to cover.&nbsp;</p>
<p>
	Migrating all my entries to statamic required a little bit of preparation which <a href="http://workingconcept.com/blog/into-the-woods-with-statamic">this blog post</a> helped out immensely. The issue I had is that the key to making the move smooth was an add-on that is only available for ExpressionEngine 2, <a href="https://github.com/EllisLab/download-content">Download Content</a>. My workaround to this required a fair amount more work, but for a one off migration it worked fine.</p>
<p>
	I created a test template group and in the template put the following code which output a list of all entries.</p>
<pre class="brush:ee;">
&#123;exp:weblog:entries weblog="blog" limit="500"&#125;&#10;  &lt;a href="/site/test/single/&#123;entry_id&#125;/&#123;entry_date format=&#39;%Y-%m-%d&#39;&#125;-&#123;url_title&#125;"&gt;&#123;title&#125;&lt;/a&gt;&lt;br/&gt;&#10;&#123;/exp:weblog:entries&#125;&#10;&#10;&#10;&#123;entry_date format=&#39;%Y-%m-%d&#39;&#125;-&#123;url_title&#125;.md&lt;br /&gt;&lt;br /&gt;</pre>
<p>
	Then I created a second template called single with the following code to migrate my fields to markdown. The key to getting a downloadable file without weird formatting was to set the template type to CSS.</p>
<pre class="brush:ee;">
&#123;exp:weblog:entries weblog="blog" limit="&#123;segment_3&#125;" &#125;&#10;---&#10;title: "&#123;title&#125;"&#10;tags: &#123;tags&#125;&#10;summary: &#39;&#123;entry&#125;&#39;&#10;bcontent: &#39;&#123;extended&#125;&#39;&#10;vimeoyoutube:&#10;&#123;vimeo&#125;&#10;  -&#10;    video_service:&#10;    video: &#123;video&#125;&#10;    video_title: &#123;vid-title&#125;&#10;    video_description: &#123;description&#125;&#10;&#123;/vimeo&#125;&#10;---&#10;&#123;/exp:weblog:entries&#125;</pre>
<p>
	After this was done, I needed an easy way to get all the files to my computer. I used FireFox and an extension called <a href="https://addons.mozilla.org/en-US/firefox/addon/downthemall/?src=search">Download Them All</a>. I then visited the first template above and ran the Download Them All extension. On the bottom right of the screen that pops up there is a renaming Mask option. I used this setting&nbsp;<strong>*name*.md</strong> and everything was named correctly.</p>
<p>
	This still wasn&#39;t perfect as Statamic choked on the raw output for thee reasons. At the top of the file there was a line break which I couldn&#39;t for the life of me figure out how to remove. Additionally all of the HTML was beautifully formatted and tabbed with line breaks, but Statamic required the markdown file to have no line breaks within fields. Also since I was using a tagging field in ExpressionEngine that was comma separated tags, but Statamic required line breaks and dashes I had to manually rework all tags.</p>
<p>
	You can see that in EE the vimeo field is a matrix which only had three cells. In Statamic I migrated that to a grid field with a fourth cell called service. In my templates I&#39;ve used a conditional to display either YouTube embed code or Vimeo embed code depending on which video service is selected.</p>
<p>
	Bad (extra line break at the beginning is being lost here):</p>
<pre class="brush:css;">
---&#10;title: "Flight Confirmed"&#10;tags: ottawa, travel, canada, planning, &#10;summary: &#39;&lt;p&gt;Last night my wife and I went out for dinner without the kids (it&amp;#8217;s been a long time since we last did that) and we were talking about &lt;a href="http://repatriate.me/site/blog/single/ottawa_july_4_to_july_13/"&gt;my trip to Ottawa&lt;/a&gt; this summer. As I mentioned in an earlier post the flight is booked but for the return portion I was on a waiting list. The thing is I could get off the list by spending more airmiles to fly business class. Well over dinner we decided to use the airmiles to do that.&lt;/p&gt;&#10;&#10;&#9;&lt;p&gt;Around 10pm last night we received a text message that the flight was confirmed. I&amp;#8217;ll now be flying economy and not using the extra 20,000 miles needed to upgrade. I&amp;#8217;m happy about saving the miles, but after having decided to use them am also a little disappointed to not be flying business class &amp;#8211; Seoul to Toronto is about 15 hours and that&amp;#8217;s a really long time to be cramped like a sardine.&lt;/p&gt;&#10;&#10;&#9;&lt;p&gt;Oh well, I&amp;#8217;m happy everything is confirmed. Now I need to book a room and arrange a car rental.&lt;/p&gt;&#39;&#10;bcontent: &#39;&#39;&#10;vimeoyoutube:&#10;&#10;---</pre>
<p>
	&nbsp;</p>
<p>
	Good - I had to manually remove all extra spaces and linebreaks within all fields</p>
<pre class="brush:css;">
---&#10;title: "Flight Confirmed"&#10;tags: &#10;&#9;- ottawa&#10;&#9;- travel&#10;&#9;- canada&#10;&#9;- planning&#10;summary: &#39;&lt;p&gt;Last night my wife and I went out for dinner without the kids (it&amp;#8217;s been a long time since we last did that) and we were talking about &lt;a href="http://repatriate.me/site/blog/single/ottawa_july_4_to_july_13/"&gt;my trip to Ottawa&lt;/a&gt; this summer. As I mentioned in an earlier post the flight is booked but for the return portion I was on a waiting list. The thing is I could get off the list by spending more airmiles to fly business class. Well over dinner we decided to use the airmiles to do that.&lt;/p&gt;&lt;p&gt;Around 10pm last night we received a text message that the flight was confirmed. I&amp;#8217;ll now be flying economy and not using the extra 20,000 miles needed to upgrade. I&amp;#8217;m happy about saving the miles, but after having decided to use them am also a little disappointed to not be flying business class &amp;#8211; Seoul to Toronto is about 15 hours and that&amp;#8217;s a really long time to be cramped like a sardine.&lt;/p&gt;&lt;p&gt;Oh well, I&amp;#8217;m happy everything is confirmed. Now I need to book a room and arrange a car rental.&lt;/p&gt;&#39;&#10;bcontent: &#39;&#39;&#10;vimeoyoutube:&#10;---</pre>
<p>
	What this meant in the end is that I had to manually open each markdown file and edit it. While time consuming it wasn&#39;t difficult and the templates above did most of the work of getting the my content into the correct format.</p>
<p>
	In any case go check out the new site which is now also fully responsive - <a href="http://repatriate.me" target="_blank">Repatriate Me!</a></p>
]]></description> 
    <dc:subject>ExpressionEngine, EE tutorials, Other CMS&apos;s,</dc:subject>
    <dc:date>2012-11-13T20:59:19+00:00</dc:date>
  </item>

  <item>
    <title>Help Support The Stack Overflow ExpressionEngine Proposal</title>
    <link>/blog/help-support-the-stack-overflow-expressionengine-proposal</link>
    <guid>/blog/help-support-the-stack-overflow-expressionengine-proposal#When:18:31:31Z</guid>
    <description><![CDATA[<img src="/images/made/uploads/blog/area51-infographic_680_406_c1.png" height="406" width="680" /><p>
	The ExpressionEngine community is halfway through a site proposal with <a href="http://stackoverflow.com/">Stack Overflow</a> to have a dedicated ExpressionEngine section. In case you didn&#39;t know Stack Overflow and the various dedicated sub sites are excellent places to get questions asked and help out others with your expertise.</p>
<p>
	This move by the community is happening because ExpressionEngine has outgrown the support forums that it is currently using and the turn around time on answers is overly long. The features provided by a stack exchange site including upvoting and downvoting of both questions and answers will greatly aid in getting the best info out there.</p>
<p>
	The <a href="http://area51.stackexchange.com/proposals/46387/expressionengine?referrer=dYEkSoa7gDylETXKp3ZQQw2">ExpressionEngine proposal</a> has already passed the define stage and is in the middle of the commit stage. To move to beta we need more active users with reps over 200. This is easy to do, register using the same email with both the <a href="http://area51.stackexchange.com/proposals/46387/expressionengine?referrer=dYEkSoa7gDylETXKp3ZQQw2">Area 51 site</a> and another site on the stack exchange network - <a href="http://stackoverflow.com">stack overflow</a> is a good one and where the ExpressionEngine questions currently reside. Once you&#39;ve register commit to the EE proposal and then go ask and answer some questions in whichever sub site you&#39;ve joined.</p>
<p>
	The key to success is active users who will be committed to asking and answering questions. In <a href="http://meta.stackoverflow.com/questions/53650/area-51-commit-percent/53733#53733">this meta overflow post</a> we see the formula for getting commit percent up to 100. Our current percentage is 27 with 252 users. More rep for these users will bring the proposal to beta.</p>
<p>
	I&#39;ve also become active in <a href="http://photo.stackexchange.com">http://photo.stackexchange.com</a> as photography is my hobby so don&#39;t feel limited to only using stack overflow, go to where you interest and/or expertise lies.</p>
<p>
	On Twitter <a href="https://twitter.com/natetronn">Nateronn</a> posted a very useful infographic - <a href="https://twitter.com/natetronn/status/261911833802309633/photo/1/large">go check it out</a>. Or click the image at the top of this post.</p>
]]></description> 
    <dc:subject>ExpressionEngine, News, Other stuff,</dc:subject>
    <dc:date>2012-10-26T18:31:31+00:00</dc:date>
  </item>

  <item>
    <title>Kill the Captcha!</title>
    <link>/blog/kill-the-captcha</link>
    <guid>/blog/kill-the-captcha#When:13:18:20Z</guid>
    <description><![CDATA[<img src="/uploads/blog/captchas.jpg" height="234" width="680" /><p>
	Today <a href="https://twitter.com/tonychester/status/234199517153595392">@TonyChester linked</a> to an article titled <a href="http://designshack.net/articles/accessibility/should-we-kill-the-captcha/">Should We Kill the Captcha?</a>&nbsp;Of course we should. Captchas are a nuisance, generally difficult to decipher and there are other ways to avoid spam comments on your blog. This is especially true with ExpressionEngine.</p>
<p>
	The article linked above provides several screenshots of bad captchas that are impossible to make it. I too whent to a site that I know using recaptcha and immediately came across this:</p>
<p>
	<img alt="" src="http://caffeinecreations.ca/uploads/blog/captcha1.JPG" style="width: 342px; height: 155px; " /></p>
<p>
	Clearly this is impossible to get right. Once could click the reload button, but some people may not even know it is posisble to reload the captcha. Besides that is also completely user unfriendly and in my case usually results in me leaving the page in question, never to return.</p>
<h3>
	Alternative Ideas</h3>
<p>
	The article then goes on to suggest alternative ideas including the trivia question, random image question and simple image question. Searching <a href="http://devot-ee.com/search/results/search&amp;keywords=captcha&amp;channel=addons&amp;addon_version_support=ee2">Devot:ee for Captcha</a>&nbsp;brings up 21 results. Only one of those provides one of the alternative ideas proposed, which is the trivia question, <a href="http://devot-ee.com/add-ons/accessible-captcha">Accessible Captcha</a>. I&#39;ve used Accessible Captcha on many ExpressionEngine sites including one of my blogs <a href="http://repatriate.me/">Repatriate Me</a>.</p>
<p>
	However, since that blog was implemented there are new and better resources for avoiding captcha&#39;s available for ExpressionEngine powered sites. Two of the best, both of which I&#39;ve used on client sites, are <a href="http://devot-ee.com/add-ons/hon-ee-pot-captcha">Hon-ee Pot Captcha</a> and <a href="http://devot-ee.com/add-ons/snaptcha">Snaptcha</a>. Both of these addons use invisible captchas which mean that us humans have no extra steps to register, leave a comment, or submit a form of any kind. The result is a much more user friendly experience for your site visitors.</p>
<p>
	Since implementing Hon-ee Pot and Snaptcha I have recieved very few spam comments on any web site that I administer. I would highly recommend that any ExpressionEngine developer use these to avoid spam and help their users have an enjoyable experience on your site.</p>
]]></description> 
    <dc:subject>ExpressionEngine, EE tips, Web development,</dc:subject>
    <dc:date>2012-08-11T13:18:20+00:00</dc:date>
  </item>

  <item>
    <title>Zoo Flexible Admin &#45; Addon Review</title>
    <link>/blog/zoo-flexible-admin-addon-review</link>
    <guid>/blog/zoo-flexible-admin-addon-review#When:19:29:11Z</guid>
    <description><![CDATA[<p>
	<a href="http://ee-zoo.com/">Zoo Flexible Admin</a>&nbsp;is a commercial add-on that will make client hand-off a breeze. It&#39;s available for purchase on <a href="http://devot-ee.com/add-ons/zoo-flexible-admin">Devot:ee for $22</a>&nbsp;where it also recieves official support.</p>
<p>
	Why you need to be using this add-on for your sites is that it allows you to set up custom navigation in the control panel on a per user group basis.Without the use of Zoo Flexible Admin (ZFA), you will have to create navigations for each individual member of the site. With more than 2-3 users this is going to quickly become a rather onerous chore. With ZFA you create the menu once and then move new members into that group and once they log in they will that menu.</p>
<p>
	Another time saver is the ability to copy an existing menu to a new group and then modify it from there.</p>
<p>
	Without using Zoo flexible admin, this is what one might see. Much of this is not necessary for the client, including design, addons, admin, tools, and the extra items that have been added for the developer (me).</p>
<p>
	<img alt="" src="http://caffeinecreations.ca/uploads/blog/ZFA1.jpg" style="width: 680px; height: 439px; " /></p>
<p>
	&nbsp;</p>
<p>
	After setting up the menu for a member group you also have the option to set the page they see on logging in. Which is great since many clients will not find the default sceen useful or helpful at all. In the site below I&#39;ve set the default landing page to be the edit screen for the blog channel. In this menu, publish is a dropdown with the list of channels</p>
<p>
	<img alt="" src="http://caffeinecreations.ca/uploads/blog/ZFA2.jpg" style="width: 680px; height: 357px; " /></p>
<p>
	&nbsp;</p>
<p>
	Creating a menu is very simple. Go to the ZFA module and select a member group from the drop down on the right side. Then all you need to do is drag and drop from the left to the right to add your menu items. When dragging folders over the publish/edit folders will be auto populated if you check the option at the bottom of the page. If you do not want all channels to be viewable for that member group, then deselect that option. You also have the option to reorder within folders and edit the names of menue items. In the screenshot below "Blurbs" is actually Low Variables, but blurbs is a much more end user friendly name. Finally if there is a page on your site that you want a user group to access but it doesn&#39;t show up on the left, you can add it by clicking "Custom Link" on the top right and inserting the url.</p>
<p>
	<img alt="" src="http://caffeinecreations.ca/uploads/blog/ZFA3.jpg" style="width: 680px; height: 614px; " /></p>
<p>
	This module has been part of my stock install since the first time I discovered it. There really is no reason why this should not be included for all projects, the price is a very affordable $22, it adds much needed functionality to ExpressionEngine and is very intuitive to use. Go on, head over to <a href="http://devot-ee.com/add-ons/zoo-flexible-admin">Devot:ee and buy it now</a> for your next project.</p>
]]></description> 
    <dc:subject>ExpressionEngine, Add&#45;on Reviews,</dc:subject>
    <dc:date>2012-07-24T19:29:11+00:00</dc:date>
  </item>

  <item>
    <title>Low Title &#45; Addon Review</title>
    <link>/blog/low-title-addon-review</link>
    <guid>/blog/low-title-addon-review#When:15:43:03Z</guid>
    <description><![CDATA[<p>
	<a href="http://gotolow.com/addons/low-title">Low Title</a> is a free add-on by <a href="http://twitter.com/low">@low</a> who also makes the very popular<a href="http://gotolow.com/addons/low-variables"> Low Variables</a>&nbsp;and <a href="http://gotolow.com/addons/low-seg2cat">Low Seg2Cat</a> addons. Low Title has been around for some time, but I only learned about it a couple of months ago and it has revolutionized how I code &lt;title&gt; tags in the document head.</p>
<p>
	Previoiusly to using low title I would typically pass a channel:entries tag through an embed. Something like this:</p>
<pre class="brush:ee;">
&#123;embed="embeds/_head" title="&#123;exp:channel:entries channel=&#39;blog&#39; limit=&#39;1&#39; disable=&#39;pagination|custom_fields|categories|member_data&#39;&#125;&#123;title&#125;&#123;/exp:channel:entries&#125; "&#125;</pre>
<p>
	This would require that on each template I customize the embeded channel entries tag and is more difficult if you are using switch:ee to have a single template for your index page and individual entires. To learn more about switch:ee see this <a href="http://eeinsider.com/articles/simpler-expressionengine-urls-with-a-simple-template/">excellent article on how to use switch:ee</a>.&nbsp;</p>
<p>
	Low Title makes this much easier and the documentation is super easy to understand. Basically you take your template and pop a variation of the following inside your title tag and Low Title takes care of everyting for you. Be sure to check out the <a href="http://gotolow.com/addons/low-title/docs">documentation</a> for the different parameters available.</p>
<pre class="brush:ee;">
&#123;exp:low_title:category url_title="&#123;segment_3&#125;"&#125;</pre>
<p>
	In my last project I created a snippet that I now place in each template that then creates the title tag for me. It looks like this&nbsp;</p>
<pre class="brush:ee;">
&lt;title&gt;&#123;snip-title&#125; &#123;site_name&#125;&lt;/title&gt;</pre>
<p>
	inside the snippet I have the following code which uses switch:ee to help identify which type of page it is.</p>
<pre class="brush:ee;">
&#123;exp:switchee variable = "&#123;segment_2&#125;" parse="inward"&#125;&#10;&#9;&#123;!--Listing page no extra title--&#125;&#10;&#9;&#123;case value="#^P(\d+)$#|&#39;&#39;"&#125;&#123;/case&#125;&#10;&#9;&#10;&#9;&#123;!--Category name added here--&#125;&#10;&#9;&#123;case value="category"&#125;&#10;&#9;&#9;&#123;exp:low_title:category url_title="&#123;segment_3&#125;"&#125; |&#10;&#9;&#123;/case&#125;&#10;&#9;&#10;&#9;&#123;!--convert archive 2012/03 to March, 2012 for monthly archives--&#125;&#10;&#9;&#123;case value="archives"&#125;&#10;&#9;&#9;&#123;exp:monthlee month="&#123;segment_4&#125;"&#125;, &#123;segment_3&#125; |&#10;&#9;&#123;/case&#125;&#10;&#9;&#10;&#9;&#123;!--single entry title added here--&#125;&#10;&#9;&#123;case default="yes"&#125;&#10;&#9;&#9;&#123;exp:low_title:entry url_title="&#123;segment_2&#125;"&#125; |&#10;&#9;&#123;/case&#125;&#10;&#123;/exp:switchee&#125;</pre>
<p>
	Now I have the title tag in one location for all templates and it pulls the correct title without having to use a full on channel:entries tag. Super easy, super clean - if you&#39;re not already using <a href="http://gotolow.com/addons/low-title/">Low Title</a>, you should be. It won&#39;t cost you anything, and it will make your title tags smile.</p>
]]></description> 
    <dc:subject>ExpressionEngine, Add&#45;on Reviews,</dc:subject>
    <dc:date>2012-07-18T15:43:03+00:00</dc:date>
  </item>

  <item>
    <title>Backup Pro &#45; Addon Review</title>
    <link>/blog/backup-pro-addon-review</link>
    <guid>/blog/backup-pro-addon-review#When:19:14:55Z</guid>
    <description><![CDATA[<img src="/uploads/blog/caffiene_backuppro.jpg" height="234" width="680" /><p>
	<a href="http://devot-ee.com/add-ons/backup-pro">Backup Pro</a> is an addon that will make keeping backups of your site and database an automated process. Backup Pro is a commercial addon ($30) by Eric Lamb that once installed will give you peice of mind. There is also a free version, called <a href="http://devot-ee.com/add-ons/backup-proish">Backup Pro(ish)</a>, which you may want to try out before purchasing the full version. I haven&#39;t used the free version and am thus unaware of any of the differences.</p>
<p>
	Be sure to read the documentation, especially the&nbsp;<a href="http://mithra62.com/docs/detail/backup-pro-installation">installation docs</a> (don&#39;t worry it&#39;s easy) and add the encryption key to config.php</p>
<p>
	I&#39;ve been using Backup Pro on a personal MSM site of mine that has 4 sites in it and it runs flawlessly. After installing there are a few settings to input and then it will just work. You need to set your file backup location, i.e. what you want backed up and Backup Pro auto fills that in for you, but you can change it if needed. I did not need to change this setting. Then you will need to set your storage location which is also filled in, I changed mine to store backups above root.The next two settings set the maximum number of backup files and databases you want. There is also a prune option and an ability to set exclude paths so that not everything in your site is backed up.</p>
<p>
	The next setting section is for Cron where you are given option to send backup notification emails. And the best part is that the cron commands are right there for you to copy and paste into your web host control panel. It really couldn&#39;t get any easier.</p>
<p>
	The next three settings are to configure FTP sync, Amazon S3 sync and RAckspace Cloud File. I haven&#39;t used eithe of these services, but if it&#39;s like the rest of the add-on it should just work.</p>
<p>
	At the top of the page there are buttons to and view existing backups, manually run a backup of your files and database which I did the first time I set up. Ever since then though I&#39;ve been letting cron do it&#39;s job once a month and it never fails. I get a back up of the database and the files. Backup Pro can easily handle large sites as my personal MSM site has been running for a long time with many media files and Backup Pro has done a good job of backing up the files - the current size of the latest zip file is 886mb.</p>
<p>
	I would highly recommend this add-on as it can and will save you from a disaster especially if you were to use the amazon/rackspace cloud backup options.</p>
<p>
	Additionally I foolishing once attempated an upgrade of my site to the latest version of EE without making a backup because it&#39;s never failed before. Of course the one time I don&#39;t make a backup I had issues and needed to roll back. Fortunately for me I had <a href="http://mithra62.com/projects/view/backup-pro">Backup Pro</a> installed and the backup saved my bacon.</p>
<p>
	&nbsp;</p>
]]></description> 
    <dc:subject>ExpressionEngine, Add&#45;on Reviews,</dc:subject>
    <dc:date>2012-07-03T19:14:55+00:00</dc:date>
  </item>

  <item>
    <title>&amp;lt;head&amp;gt; Tags in EE sites</title>
    <link>/blog/head-tags-in-ee-sites</link>
    <guid>/blog/head-tags-in-ee-sites#When:18:03:01Z</guid>
    <description><![CDATA[<p>
	There are many approaches to setting up the head and doctype of a template in ExpressionEngine. Up until EECI 2011 I had been using embeds for the head of my document and passing through any additional javascript or css files as variable. For example from an older site I had this:</p>
<pre class="brush:ee;">
&lt;!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"&#10;"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"&gt;&#10;&#10;&lt;html xmlns="http://www.w3.org/1999/xhtml"&gt;&#10;&lt;head&gt;&#10;&#10;&#123;embed="includes/meta" my_title="Photo Gallery" my_css="&lt;link href=&#39;/interface/css/calendar.css&#39; rel=&#39;stylesheet&#39; type=&#39;text/css&#39;&gt;" my_js="&lt;script src=&#39;/js/scripts.js&#39;&gt;&lt;/script&gt;" &#125;&#10;&#10;&lt;/head&gt;</pre>
<p>
	And in the embed template the following code:</p>
<pre class="brush:ee;">
&lt;meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8" /&gt;&#10;&#10;&lt;title&gt;&#123;embed:my_title&#125; | &#123;site_name&#125;&lt;/title&gt;&#10;&#10;&lt;!-- Favicon --&gt;&#10;&lt;link rel="shortcut icon" href="/favicon.ico" /&gt;&#10;&#10;&lt;!-- CSS --&gt;&#10;&lt;link rel="stylesheet" type="text/css" media="screen,projection" href="/interface/css/reset.css" /&gt;&#10;&lt;link rel="stylesheet" type="text/css" media="screen,projection" href="/interface/css/text.css" /&gt;&#10;&lt;link rel="stylesheet" type="text/css" media="screen,projection" href="&#123;path="includes/main_CSS"&#125;" /&gt;&#10;&#123;embed:my_css&#125;&#10;&#10;&lt;!--[if lt IE 8]&gt;&lt;style type="text/css" media="screen,projection"&gt;@import "&#123;path=includes/ie&#125;";&lt;/style&gt;&lt;![endif]--&gt;&#10;&lt;!--[if lte IE 6]&gt;&lt;style type="text/css" media="screen,projection"&gt;@import "&#123;path=includes/ie6&#125;";&lt;/style&gt;&lt;![endif]--&gt;&#10;&#10;&lt;!-- RSS --&gt;&#10;&lt;!--&lt;link rel="alternate" href="" title="RSS Feed" type="application/rss+xml" /&gt;--&gt;&#10;&#10;&lt;!-- Jquery --&gt;&#10;&lt;script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"&gt;&lt;/script&gt;&#10;&#123;embed:my_js&#125;</pre>
<p>
	The above works fine, but the embed can get difficult to read if you have a lot of information to pass through it. It&#39;s also important to remember that anything inside the variable quotes <strong>my_js=""&nbsp;</strong>cannot also use double quotes - must use single quotes there. This is a great way to organize your head and pass through additional scripts/css files. However your template will take a hit since using embeds increases the overhead necessary to load your page.</p>
<h4>
	Using Snippets</h4>
<p>
	After attending EECI 2011 I was convinced that embeds should be avoided where possible to help improve site performance. At that point I started looking at using snippets instead of embeds.</p>
<p>
	Now my typical template will look like this:</p>
<pre class="brush:ee;">
&#123;lv-snip-doctype-header-cc&#125;&#10;&#10;&lt;title&gt;Home | Caffeine Creations&lt;/title&gt;&#10;&lt;meta name=&#39;description&#39; content=&#39;&#123;lv-gv-description-default-cc&#125;&#39; /&gt; &#10;&lt;meta name=&#39;keywords&#39; content=&#39;&#123;lv-gv-keywords-default-cc&#125;&#39; /&gt;&#10;&#10;&#123;lv-gv-mint-cc&#125;&#10;&#10;&lt;/head&gt;</pre>
<p>
	Here we see two snippets, well actually these are early parsed low variables, which are effectively snippets. The first snippet contains everything that will be on all pages as you can see below and the second is the code I need to run Mint Analytics.</p>
<pre class="brush:ee;">
&lt;!DOCTYPE html&gt;&#10;&#10;&lt;!--[if IE 7]&gt;                  &lt;html class="ie7 no-js" lang="en"&gt;     &lt;![endif]--&gt;&#10;&lt;!--[if lte IE 8]&gt;              &lt;html class="ie8 no-js" lang="en"&gt;     &lt;![endif]--&gt;&#10;&lt;!--[if (gte IE 9)|!(IE)]&gt;&lt;!--&gt; &lt;html class="not-ie no-js" lang="en"&gt;  &lt;!--&lt;![endif]--&gt;&#10;&lt;head&gt;&#10;&#9;&lt;meta charset="utf-8"&gt;&#10;&#9;&lt;meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"&gt;&#10;&#9;&lt;meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1"&gt;&#10;&#9;&lt;meta name="author" content="Sean Smith"&gt;&#10;&#9;&lt;link rel="alternate" type="application/rss+xml" title="RSS"&#10;      href="/blog/rss"&gt;&#10;&#9;&lt;link rel="stylesheet" href="/css/style.css" media="screen" /&gt;&#10;&#9;&lt;link rel="stylesheet" href="//fonts.googleapis.com/css?family=Open+Sans:400,600,300,800,700,400italic|PT+Serif:400,400italic" /&gt;&#10;&#9;&lt;link rel="stylesheet" href="/css/fancybox.min.css" media="screen" /&gt;&#10;&#9;&lt;link rel="stylesheet" href="/css/mediaelementplayer.min.css" media="screen" /&gt;&#10;&#10;&#9;&lt;!-- HTML5 Shiv + detect touch events --&gt;&#10;&#9;&lt;script src="/js/modernizr.custom.js"&gt;&lt;/script&gt;</pre>
<p>
	Following the doctype header snippet there is then the meta description and keywords and title tags so that these can be set on a per page or per template setting. Finally, before the closing head tag, there is room to add page specific css or javascript files which using the previous method would be passed through as a variable.</p>
<p>
	The method I have chosen to use is by no means the only one available, but it&#39;s what I&#39;m using now. Should I find another method that is easier or in someway better than I would be willing to give it a shot. Thoughts and comments are appreciated on this part of building sites with ExpressionEngine.</p>
]]></description> 
    <dc:subject>ExpressionEngine, EE tips, EE tutorials, Web development, Code,</dc:subject>
    <dc:date>2012-06-19T18:03:01+00:00</dc:date>
  </item>

  
  </channel>
</rss>