<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Garrett Winder - Erskine Design</title>
    <description>The personal website and content archives of Garrett Winder.</description>
    <link>https://garrettwinder.com/</link>
    <atom:link href="https://garrettwinder.com/feed/erskinedesign.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Fri, 24 Oct 2025 11:47:43 -0500</pubDate>
    <lastBuildDate>Fri, 24 Oct 2025 11:47:43 -0500</lastBuildDate>
    <generator>Jekyll v4.4.1</generator>
    
      <item>
        <title>Questioning the quality of our work</title>
        <description>&lt;p&gt;We took a break from client work last week to hold our second &lt;a href=&quot;http://breakfast.erskinesocials.com/&quot;&gt;Erskine Breakfast&lt;/a&gt; event in our Nottingham office. It was a packed house and the topic of discussion was the creative process. This is a summary of my talk on &lt;a href=&quot;https://speakerdeck.com/gw/erskine-breakfast-november-2013&quot;&gt;improving the quality of our work throughout the project lifecycle&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Our design and development team is constantly improving the way we work together across different “departments” as well as with our clients. Questioning the quality of our work, the communication with our clients and how we can make that better.&lt;/p&gt;

&lt;p&gt;Over the years we’ve naturally transitioned our approach to creating web projects from a siloed waterfall approach to working more collaboratively. Most of the changes we’ve made spawned from the following areas.&lt;/p&gt;

&lt;h2 id=&quot;design-implementation&quot;&gt;Design implementation&lt;/h2&gt;
&lt;p&gt;Design implementation breakdowns are a classic example of working separately on a project rather than together. The designer makes their masterpiece, emails it to the developer and the final implementation isn’t quite as it should be. LOL.&lt;/p&gt;

&lt;p&gt;This is an easy one, and we can avoid it by putting more thought into our design deliverables and, as a designer, thinking more like a front-ender in terms of deliverables.&lt;/p&gt;

&lt;blockquote&gt; &lt;p&gt;&amp;ldquo;Thou shall not leave guesswork to the front-end developer.&amp;rdquo;&lt;/p&gt; &lt;cite&gt;&amp;mdash;Albert Einstein&lt;/cite&gt; &lt;/blockquote&gt;

&lt;p&gt;Here are a few examples of design deliverables we’ve introduced over the last few years. Hint: lives have been changed.&lt;/p&gt;

&lt;figure&gt;
	&lt;img src=&quot;/assets/images/2013-11-20/colour.fw.png&quot; alt=&quot;Living, master color guide&quot; /&gt;
	&lt;figcaption&gt;Living, master color guide&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
	&lt;img src=&quot;/assets/images/2013-11-20/typography.fw.png&quot; alt=&quot;Detailed typographic styleguide and how the elements of the page fit together&quot; /&gt;
	&lt;figcaption&gt;Detailed typographic styleguide and how the elements of the page fit together&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure&gt;
	&lt;img src=&quot;/assets/images/2013-11-20/images.fw.png&quot; alt=&quot;Fully exported, optimized and organized imagery&quot; /&gt;
	&lt;figcaption&gt;Fully exported, optimized and organized imagery&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2 id=&quot;breakdowns-in-communication&quot;&gt;Breakdowns in communication&lt;/h2&gt;
&lt;p&gt;This can be both an internal issue with our teams and an external issue with our clients.&lt;/p&gt;

&lt;p&gt;Clients first. At the start of a web project we shouldn’t assume the client knows what we’re talking about. Don’t roll into a kickoff meeting beatboxing buzz words. Guide and teach your clients in plain, simple language all the way through. They’ll love you for that new found small talk they can bust out at next year’s holiday bash.&lt;/p&gt;

&lt;p&gt;Internally we need to talk more cross department. It should be fair game, and encouraged, for designers to have development feedback and vice versa. Also, daily stand-up meetings. Knowing what everyone on your team worked on yesterday, is working on today and is having trouble with is a life saver for productivity and openness.&lt;/p&gt;

&lt;h2 id=&quot;maintainability&quot;&gt;Maintainability&lt;/h2&gt;
&lt;p&gt;The key to maintainability is realizing early on that a web project is never over and that shortcut you took last week will haunt you next year. It doesn’t matter what your project conventions are as long as your project has conventions and your team is sticking to them. Build for maintainability and build for the future.&lt;/p&gt;
</description>
        <pubDate>Wed, 20 Nov 2013 00:00:00 -0600</pubDate>
        <link>https://garrettwinder.com/erskinedesign/questioning-quality-our-work/</link>
        <guid isPermaLink="true">https://garrettwinder.com/erskinedesign/questioning-quality-our-work/</guid>
        
        <category>erskinedesign</category>
        
      </item>
    
      <item>
        <title>EECI EU 2012 - Illegally good front-end</title>
        <description>&lt;p&gt;The EECI EU 2012 conference is Europe’s largest gathering of ExpressionEngine aficionados, drawing delegates from a wide range of countries and with a great line up of top level speakers.&lt;/p&gt;

&lt;h2 id=&quot;best-practices-for-breaking-websites-down-into-scalable-reusable-components&quot;&gt;Best practices for breaking websites down into scalable, reusable components.&lt;/h2&gt;

&lt;p&gt;Last week I got the chance to go back to &lt;a href=&quot;http://en.wikipedia.org/wiki/Leiden&quot;&gt;Leiden&lt;/a&gt; for &lt;a href=&quot;http://eeciconf.com/&quot;&gt;EECI&lt;/a&gt; and spoke about “Illegally good front-end”. The presentation covered topics such as the anatomy of a website, our front-end workflow and how it can be constantly improved. Below is a link to the presentation as well as a few other relevant links.&lt;/p&gt;

&lt;h3 id=&quot;resources&quot;&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://speakerdeck.com/u/gw/p/illegally-good-front-end&quot;&gt;Illegally good front-end presentation&lt;/a&gt; on Speaker Deck&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/simplygoodwork/gw.ultimate_package&quot;&gt;The Ultimate Package&lt;/a&gt; (Erskine’s baseline front-end framework)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/simplygoodwork/gw.ultimate_package/wiki&quot;&gt;The Ultimate Package wiki&lt;/a&gt; (Erskine’s front-end documentation)&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/erskinedesign/typographic-styling-scss/&quot;&gt;Typographic styling with SCSS&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;/erskinedesign/planning-and-documenting-front-end-components/&quot;&gt;Planning and documenting front-end components&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can find other articles on this topic around my site as well as on &lt;a href=&quot;http://erskinelabs.com/&quot;&gt;Erskine Labs&lt;/a&gt;. As usual, if you’d like the original keynote presentation just shoot me an email.&lt;/p&gt;
</description>
        <pubDate>Fri, 08 Jun 2012 00:00:00 -0500</pubDate>
        <link>https://garrettwinder.com/erskinedesign/illegally-good-frontend-eeciconf2012-eu/</link>
        <guid isPermaLink="true">https://garrettwinder.com/erskinedesign/illegally-good-frontend-eeciconf2012-eu/</guid>
        
        <category>erskinedesign</category>
        
      </item>
    
      <item>
        <title>Calculating EMs with SCSS</title>
        <description>&lt;p&gt;Earlier this year &lt;a href=&quot;http://web.archive.org/web/20120614205908/http://erskinedesign.com/&quot;&gt;Erskine&lt;/a&gt; made the switch to &lt;a href=&quot;http://sass-lang.com/&quot;&gt;SCSS&lt;/a&gt; and I’ve really loved what its done to our front-end workflow. One thing I’m particularly fond of is how &lt;span class=&quot;caps&quot;&gt;SCSS&lt;/span&gt; has improved how we’re calculating EMs.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&quot;/assets/images/2012-05-08/01.png&quot; alt=&quot;A screenshot of a website with markup showing CSS font sizes and line-height&quot;&gt;
    &lt;figcaption&gt;A screenshot of a website with markup showing CSS font sizes and line-height&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;h2&gt;The olden days&lt;/h2&gt;

&lt;p&gt;Before &lt;span class=&quot;caps&quot;&gt;SCSS&lt;/span&gt; we’d simply make our EM calculation and leave a comment explaining where that number came from off to the side. This worked fine, but could be time consuming and was a nightmare when adjusting things like, say, our base-font.&lt;/p&gt;

&lt;p&gt;Here’s an example:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;h1 {
font-size:1.875em; /* 30 / 14 */
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h2&gt;Using &lt;span class=&quot;caps&quot;&gt;SCSS&lt;/span&gt; for calculations&lt;/h2&gt;

&lt;p&gt;To calculate EMs with &lt;span class=&quot;caps&quot;&gt;SCSS&lt;/span&gt; we have a few options; using the basic number operations or definining our own function, to name a few.&lt;/p&gt;

&lt;h3&gt;Basic number operations&lt;/h3&gt;

&lt;p&gt;Using basic number operations we can drop the commenting that is needed with standard &lt;code&gt;CSS&lt;/code&gt; and used the code as documentation. This is the technique we originally used when we switched to &lt;span class=&quot;caps&quot;&gt;SCSS&lt;/span&gt;. This works, but we can do much better:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;h1 {
font-size:(30 / 14) * 1em;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Defining our own EM calculation function&lt;/h3&gt;

&lt;p&gt;&lt;span class=&quot;caps&quot;&gt;SCSS&lt;/span&gt; has tons of built in functions for common calculations, and we can even make our own. Here’s a function we’re using to calculate EMs, which is a modification of one we found in &lt;a href=&quot;http://web.archive.org/web/20120614205908/http://thesassway.com/&quot;&gt;The &lt;span class=&quot;caps&quot;&gt;SASS&lt;/span&gt; Way&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;@function em($target, $context: 14) {
@return ($target / $context) * 1em;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This function takes 2 variables, &lt;code&gt;$target&lt;/code&gt; and &lt;code&gt;$context&lt;/code&gt;. &lt;code&gt;$context&lt;/code&gt; is optional, as it defaults to &lt;code&gt;14&lt;/code&gt;, our base-font. Now lets rewite our example using our new function:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;h1 {
font-size:em(30);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This is the same as saying &lt;code&gt;(30 / 14) * 1em&lt;/code&gt; but now we don’t have to repeat ourselves all over the stylesheet.&lt;/p&gt;

&lt;p&gt;But wait, this can be taken a step further.&lt;/p&gt;

&lt;h3&gt;Adding variables to our EM calculation. Vuala!&lt;/h3&gt;

&lt;p&gt;We can modularise this process more by defining default variables for our base-font size, heading sizes, etc. With these in place, tasks like “adjusting the base-font” can be done in a matter of seconds.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$basefont:14;
$baseh1:30;
&lt;/code&gt;
&lt;code&gt;@function em($target, $context: $basefont) {
@return ($target / $context) * 1em;
}
&lt;/code&gt;
&lt;code&gt;h1 {
font-size:em($baseh1);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Beautiful. Checkout the &lt;a href=&quot;http://web.archive.org/web/20120614205908/https://github.com/erskinedesign/ed.ultimate_package/blob/master/web/static/scss/_config.scss&quot;&gt;&lt;span class=&quot;caps&quot;&gt;SCSS&lt;/span&gt; config file in Erskine’s Ultimate Package&lt;/a&gt; for more examples of how you can take advantage of default variables in &lt;span class=&quot;caps&quot;&gt;SCSS&lt;/span&gt;.&lt;/p&gt;
</description>
        <pubDate>Tue, 08 May 2012 00:00:00 -0500</pubDate>
        <link>https://garrettwinder.com/erskinedesign/calculating-ems-with-scss/</link>
        <guid isPermaLink="true">https://garrettwinder.com/erskinedesign/calculating-ems-with-scss/</guid>
        
        <category>erskinedesign</category>
        
      </item>
    
      <item>
        <title>Typographic styling with SCSS</title>
        <description>&lt;p&gt;Friday, right after Erskine’s end-of-week pub rituals, &lt;a href=&quot;https://philswan.co&quot;&gt;Phil&lt;/a&gt; and I went back to the office with hopes of building a website. At the beginning of last week we got fairly obsessed with typographic styling, so this would be a good time to experiment with that process a bit more.&lt;/p&gt;

&lt;p&gt;We fired up &lt;a href=&quot;http://www.sublimetext.com/2&quot;&gt;Sublime&lt;/a&gt;, &lt;a href=&quot;http://net.tutsplus.com/articles/news/introducing-nettuts-fetch/&quot;&gt;fetched&lt;/a&gt; the &lt;a href=&quot;https://github.com/simplygoodwork/gw.ultimate_package&quot;&gt;Ultimate Package&lt;/a&gt; and jumped in. We started with a simple page including kitchen sink-ish &lt;code&gt;html&lt;/code&gt; for headings, paragraphs, links and all the other elements that get me going.&lt;/p&gt;

&lt;p&gt;We chose a base &lt;code&gt;font-size&lt;/code&gt;, Phil created a baseline.png file and I ate two &lt;a href=&quot;http://3.bp.blogspot.com/-lL_PKWn4miE/ThnwX0N3n7I/AAAAAAAAAIc/X5wfErzHp5Y/s1600/Nathans.jpg&quot;&gt;American style hotdogs&lt;/a&gt;. We got keyboard shortcuts for toggling the baseline plugged in and cranked up &lt;a href=&quot;http://en.wikipedia.org/wiki/Lynyrd_Skynyrd&quot;&gt;Lynyrd Skynyrd&lt;/a&gt;. It was time to make &lt;strong&gt;&lt;a href=&quot;http://www.instapaper.com/&quot;&gt;Instapaper&lt;/a&gt; for cats&lt;/strong&gt;.&lt;/p&gt;

&lt;h2 id=&quot;typography__scss__love&quot;&gt;Typography + SCSS = love&lt;/h2&gt;

&lt;p&gt;What I love about &lt;a href=&quot;http://sass-lang.com/&quot;&gt;SCSS&lt;/a&gt;, besides variables, is its most dangerous feature: nesting. When used smartly, nesting can make your stylesheets much more modulular, reusable and maintanable. Lets take a look at the standard workflow of styling typography and how it can be applied with SCSS.&lt;/p&gt;

&lt;h3 id=&quot;standard_workflow&quot;&gt;Standard workflow&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Setup default &lt;code&gt;font-size&lt;/code&gt;, &lt;code&gt;line-height&lt;/code&gt; and &lt;code&gt;margin&lt;/code&gt; to be inherited by generic elements and ensure they’re inline with the baseline.&lt;/li&gt;

&lt;li&gt;Put an &lt;code&gt;h1&lt;/code&gt; at the top of the page, give it some &lt;code&gt;line-height&lt;/code&gt; and &lt;code&gt;margin&lt;/code&gt; so everything is still inline with the baseline.&lt;/li&gt;

&lt;li&gt;Do the same with &lt;code&gt;h2&lt;/code&gt; through &lt;code&gt;h6&lt;/code&gt;, but also ensure &lt;code&gt;p + h(n)&lt;/code&gt; has proper &lt;code&gt;margin&lt;/code&gt; and doesn’t break the baseline.&lt;/li&gt;

&lt;li&gt;Ensure &lt;code&gt;h2 + h3&lt;/code&gt;, etc., has proper &lt;code&gt;margin&lt;/code&gt; and doesn’t break the baseline.&lt;/li&gt;

&lt;li&gt;Lastly, do the same for &lt;code&gt;blockquote&lt;/code&gt;, &lt;code&gt;table&lt;/code&gt; and &lt;a href=&quot;http://html5doctor.com/element-index/&quot;&gt;ALL THE OTHER THINGS&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That list isn’t too daunting, but it takes about 2 hours of pair brogramming to get right, &lt;em&gt;4-6 if you’re me and Phil&lt;/em&gt;. With SCSS, we can modularise this process by creating a little typographic skeleton. This doesn’t exactly speed up the process, but it’s a good example of how we can use SCSS to clean up our development.&lt;/p&gt;

&lt;h3 id=&quot;typographic_skeleton_with_scss&quot;&gt;Typographic skeleton with SCSS&lt;/h3&gt;

&lt;p&gt;First, we setup the defaults to be inherited by all of our generic elements. I know this is standard practise but for the sake of the case study I’ll include it:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;body {
font:$normal percentage($basefont / 16) sans-serif;
line-height:(24 / $basefont);
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now that that’s done, we need to ensure &lt;code&gt;p + h(n)&lt;/code&gt; has proper styling and doesn’t break the baseline. Not only &lt;code&gt;p&lt;/code&gt;, but the other generic elements as well. This can be done beautifully with SCSS.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;p, ul, dl, ol, address, figure, hr, pre, table {
margin-bottom:;

&amp;amp; + h2 {
padding-top:;
}
&amp;amp; + h3 {
padding-top:;
}
&amp;amp; + h4 {
padding-top:;
}
&amp;amp; + h5 {
padding-top:;
}
&amp;amp; + h6 {
padding-top:;
}
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;We need to ensure that &lt;code&gt;h1 + h2&lt;/code&gt;, etc. have proper styling too.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;h1 {
font-size:($baseh1 / $basefont) * 1em;
line-height:;
margin:;

&amp;amp; + h2 {
padding-top:;
}
}

h2 {
font-size:($baseh2 / $basefont) * 1em;
line-height:;
margin:;

&amp;amp; + h3 {
padding-top:;
}
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You get the point, same for &lt;code&gt;h3&lt;/code&gt; through &lt;code&gt;h6&lt;/code&gt;. Tada!&lt;/p&gt;

&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;

&lt;p&gt;This exersise helped me learn a lot about the importance of extreme readability. It’s something I don’t think I’ve paid enough attention to in the past so effective immediately I’m adding it to my list of &lt;em&gt;Things to take over-the-top on every single project&lt;/em&gt;.&lt;/p&gt;
</description>
        <pubDate>Sat, 03 Mar 2012 00:00:00 -0600</pubDate>
        <link>https://garrettwinder.com/erskinedesign/typographic-styling-scss/</link>
        <guid isPermaLink="true">https://garrettwinder.com/erskinedesign/typographic-styling-scss/</guid>
        
        <category>erskinedesign</category>
        
      </item>
    
      <item>
        <title>Going mobile with ExpressionEngine</title>
        <description>&lt;p class=&quot;original-source&quot; style=&quot;background-color:#FFC;&quot;&gt;This article was originally posted on &lt;a href=&quot;https://www.creativebloq.com/mobile/going-mobile-expressionengine-1126550&quot; target=&quot;_BLANK&quot;&gt;net magazine&lt;/a&gt;.&lt;/p&gt;

&lt;ul class=&quot;sermon-meta&quot;&gt;
    &lt;li&gt;&lt;strong&gt;Knowledge needed&lt;/strong&gt;: Experience in building websites with HTML and&amp;nbsp;CSS.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Requires&lt;/strong&gt;: A licensed copy of ExpressionEngine 2&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Project time&lt;/strong&gt;: 30 minutes - 1 hour&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Source files&lt;/strong&gt;: &lt;a href=&quot;https://github.com/erskinedesign/Mobile-website-tutorial/archive/refs/heads/master.zip&quot;&gt;Download source files&lt;/a&gt;&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;Demo&lt;/strong&gt;: &lt;a href=&quot;https://erskinedesign.github.io/Mobile-website-tutorial/&quot;&gt;View demo&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;follow-along-as-garrett-winder-of-erskine-design-talks-us-through-the-process-of-going-mobile-with-expressionengine-using-a-dedicated-approach&quot;&gt;Follow along as Garrett Winder of Erskine Design talks us through the process of going mobile with ExpressionEngine using a dedicated approach.&lt;/h2&gt;

&lt;p&gt;In the last few years mobile has absolutely exploded. It’s the way people shop, browse the web and check email and the numbers are increasing exponentially. Because of this, we need to shift our focus on building websites explicitly for the desktop and really start thinking about the context that our work is being seen in and interacted with. We need to rethink the way we’re building websites.&lt;/p&gt;

&lt;p&gt;In this tutorial we’re going to run through some ways to integrate mobile into our ExpressionEngine workflow.&lt;/p&gt;

&lt;h2 id=&quot;getting-started&quot;&gt;Getting started&lt;/h2&gt;

&lt;p&gt;To follow along you’ll need a licensed copy of ExpressionEngine 2. You can download it as well as find &lt;a href=&quot;https://docs.expressionengine.com/v2/installation/index.html&quot;&gt;step by step installation instructions&lt;/a&gt; from the &lt;a href=&quot;http://expressionengine.com/&quot;&gt;ExpressionEngine website&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;You’ll also need to download the core files for our example site, &lt;a href=&quot;https://github.com/erskinedesign/Mobile-website-tutorial&quot;&gt;Know your viral enemies&lt;/a&gt;, a fictitious educational website about common viruses and why we need to wash our hands!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2012-01-06/tutorial-screenshot.png&quot; alt=&quot;Tutorial website screenshot&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;dedicated-vs-responsive-in-a-nutshell&quot;&gt;Dedicated vs responsive, in a nutshell&lt;/h2&gt;

&lt;p&gt;When it comes to a mobile web experience we’ve got two options: dedicated and responsive.&lt;/p&gt;

&lt;p&gt;A dedicated mobile website is a mobile optimized version of our website that usually resides on its own domain or subdomain. With a dedicated approach we can easily give our users the option to view desktop or mobile. We’ve also got more control over resource optimization and load time.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2012-01-06/example-dedicated.gif&quot; alt=&quot;Mobile screenshots of the Erskine website&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A responsive website is created with a mix of fluid layouts, flexible images and media queries. It gives us a tailored experience based on the width of the browser window using the same HTML and CSS. This approach also forces us to think about website structure and create cleaner, more focused design and front-end code. Since this is all done in the CSS, we won’t go through that in this tutorial (though I have included a responsive version of the example site for your rummaging).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2012-01-06/example-responsive.gif&quot; alt=&quot;Screenshots of the responsive Frieze magazine blog&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So, without further ado, let’s get started.&lt;/p&gt;

&lt;h2 id=&quot;the-dedicated-approach&quot;&gt;The dedicated approach&lt;/h2&gt;

&lt;p&gt;With a dedicated approach, we can have two versions of a website using the same installation of ExpressionEngine.&lt;/p&gt;

&lt;h3 id=&quot;create-a-global-variable-in-indexphp&quot;&gt;Create a global variable in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;index.php&lt;/code&gt;&lt;/h3&gt;

&lt;p&gt;First off, we need to create a &lt;a href=&quot;https://docs.expressionengine.com/v2/templates/globals/user_defined.html&quot;&gt;global variable&lt;/a&gt; that we can use to tell our templates to load the full or mobile version of our website. Open up your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;index.php&lt;/code&gt; file and find the following line:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$assign_to_config[&apos;global_vars&apos;] = array(); // This array must be associative&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Right below that line, we need to add the following:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
/* Setup our global variable array */
$global_vars = array();

/* gv_site_version: set to &apos;full&apos; or &apos;mobile&apos;; */
$global_vars[&apos;gv_site_version&apos;] = &apos;full&apos;;

/* Assign to global vars in EE 2 */
$assign_to_config[&apos;global_vars&apos;] = $global_vars;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;What we’ve done here is created a new global variable, just like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;site_url&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;site_name&lt;/code&gt;, that we can use anywhere in our ExpressionEngine templates.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;{gv_site_version}&lt;/code&gt;&lt;/p&gt;

&lt;h3 id=&quot;set-up-a-subdomain&quot;&gt;Set up a subdomain&lt;/h3&gt;

&lt;p&gt;The next step is to create a subdomain to house the mobile version of your website. This step is highly based on where you host your site, so I’ll let you and your host’s support team take care of this one.&lt;/p&gt;

&lt;p&gt;Once you’ve got your shiny new subdomain setup, you need to copy &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;index.php&lt;/code&gt; (the one we just edited) into the subdomain’s root directory. Open up your new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;index.php&lt;/code&gt; file and change the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gv_site_version&lt;/code&gt; variable value from ‘full’ to ‘mobile’. You’ll also need to edit the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$system_path&lt;/code&gt; to point to your main website’s system folder.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
$system_path = &apos;../domain.com/system&apos;;

/* gv_site_version: set to &apos;full&apos; or &apos;mobile&apos; */
$global_vars[&apos;gv_site_version&apos;] = &apos;mobile&apos;;
&lt;/code&gt;&lt;/pre&gt;

&lt;h2 id=&quot;set-up-your-templates&quot;&gt;Set up your templates&lt;/h2&gt;

&lt;p&gt;Finally, we can set up our ExpressionEngine templates. Log in to your ExpressionEngine control panel and click the &lt;strong&gt;Design&lt;/strong&gt; button at the top and then choose &lt;strong&gt;Template Manager&lt;/strong&gt; under &lt;strong&gt;Templates&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Before we create any templates we’re going to need a template group to house them. From the Template Manager screen click &lt;strong&gt;New group&lt;/strong&gt; to create a new template group. For the &lt;strong&gt;&amp;gt;Template Group Name&lt;/strong&gt;, type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_home&lt;/code&gt;. Leave &lt;strong&gt;Duplicate an Existing Template Group&lt;/strong&gt; as is, and tick the box next to &lt;strong&gt;Make the index template in this group your site’s home page&lt;/strong&gt;. Click &lt;strong&gt;Submit&lt;/strong&gt;. You should now be taken back to the Template Manager screen, with your new &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_home&lt;/code&gt; group selected.&lt;/p&gt;

&lt;p&gt;Now we need to make two new templates to live inside of our new template group, one for our full site and one for our mobile site.&lt;/p&gt;

&lt;p&gt;Be sure that your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_home&lt;/code&gt; template group is still selected, and then click the &lt;strong&gt;New Template&lt;/strong&gt; button at the top right. For the &lt;strong&gt;Template Name&lt;/strong&gt; type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_index_full&lt;/code&gt;. Leave the rest of the options as is and click &lt;strong&gt;Create&lt;/strong&gt;. You should now be taken back to the Template Manager screen. Repeat the last step to create our last and final template, and name it &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_index_mobile&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/images/2012-01-06/cp-template.png&quot; alt=&quot;ExpressionEngine 2 control panel&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;bringing-our-new-templates-to-life&quot;&gt;Bringing our new templates to life&lt;/h3&gt;

&lt;p&gt;Now it’s time for us to integrate the &lt;a href=&quot;https://github.com/erskinedesign/Mobile-website-tutorial&quot;&gt;Know your viral enemies&lt;/a&gt; files into our ExpressionEngine website.&lt;/p&gt;

&lt;p&gt;The first thing you need to do is open up the index template in your &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_home&lt;/code&gt; template group, and copy the following snippet of code into it:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;{embed=&quot;home/_index_{gv_site_version}&quot;}&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is where the magic happens. When a user hits our homepage (the index template), it’s going to load either our &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_index_full&lt;/code&gt; or &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_index_mobile&lt;/code&gt; template, depending on where they’re coming from. Remember: &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;gv_site_version&lt;/code&gt; will either be equal to ‘full’ or ‘mobile’.&lt;/p&gt;

&lt;p&gt;Now we need to copy the &lt;strong&gt;static&lt;/strong&gt; folder into the root of our main ExpressionEngine website so that it lives along side &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;admin.php&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;images&lt;/code&gt;, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;index.php&lt;/code&gt;, etc. The &lt;strong&gt;static&lt;/strong&gt; folder is where all the CSS and images are.&lt;/p&gt;

&lt;p&gt;Lastly, copy the contents of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;desktop.html&lt;/code&gt; into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_index_full&lt;/code&gt; and copy &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;mobile.html&lt;/code&gt; into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_index_mobile&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Now you should have a working &lt;a href=&quot;https://erskinedesign.github.io/Mobile-website-tutorial/desktop.html&quot;&gt;desktop&lt;/a&gt; and &lt;a href=&quot;https://erskinedesign.github.io/Mobile-website-tutorial/mobile.html&quot;&gt;mobile&lt;/a&gt; version of our website using the same ExpressionEngine installation. Yeehaw!&lt;/p&gt;

&lt;h3 id=&quot;giving-the-user-the-option&quot;&gt;Giving the user the option&lt;/h3&gt;

&lt;p&gt;The dedicated approach doesn’t have to stop here, we can easily add in some functionality to give the user the option to view desktop or mobile with &lt;a href=&quot;https://expressionengine.com/add-ons/mx-mobile-detect&quot;&gt;MX Mobile Device Detect&lt;/a&gt;. Download and install the add-on, then uncomment &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;div.notification&lt;/code&gt; in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;_index_full&lt;/code&gt;. In order to make this work, all we have to do is change this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
&amp;lt;div class=&quot;notification&quot;&amp;gt;
    &amp;lt;p&amp;gt;&amp;lt;a href=&quot;&quot;&amp;gt;Hey, there’s also a mobile site!&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
&amp;lt;/div&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;to this:&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;
{exp:mobile_detect}
    {if mobile}
        &amp;lt;div class=&quot;notification&quot;&amp;gt;
            &amp;lt;p&amp;gt;&amp;lt;a href=&quot;&quot;&amp;gt;Hey, there’s also a mobile site!&amp;lt;/a&amp;gt;&amp;lt;/p&amp;gt;
        &amp;lt;/div&amp;gt;
    {/if}
{/exp:mobile_detect}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;This notification will only be exposed to the frontend if the user is on a mobile device. With this in place, the user will get notified that we have a mobile version of our website if they’re browsing from a mobile device. Don’t forget to add the link to your subdomain in the anchor.&lt;/p&gt;

&lt;p&gt;There it is. That’s all it takes to integrate a mobile experience into our ExpressionEngine workflow.&lt;/p&gt;
</description>
        <pubDate>Fri, 06 Jan 2012 00:00:00 -0600</pubDate>
        <link>https://garrettwinder.com/erskinedesign/going-mobile-with-expressionengine/</link>
        <guid isPermaLink="true">https://garrettwinder.com/erskinedesign/going-mobile-with-expressionengine/</guid>
        
        <category>erskinedesign</category>
        
      </item>
    
      <item>
        <title>Planning and documenting front-end components</title>
        <description>&lt;p&gt;At Erskine it’s more than just accepted, but it’s encouraged to question the way things are done. If something isn’t working, figure out another way and test it out with the team. We’re always experimenting and our processes are constantly questioned. The way we’re working now is ten times better than it was six months ago, and the same thing will happen in another six months. It’s inevitable.&lt;/p&gt;

&lt;figure&gt;
    &lt;img src=&quot;/assets/images/2011-09-09/illustration.png&quot; alt=&quot;A 3D illustration of a website with the components popping out of it.&quot; /&gt;
&lt;/figure&gt;

&lt;p&gt;We recently finished a project where the deliverables were a bunch of flexible components that together built up 20+ very distinct front-end templates. We had to make this in a way that we weren’t repeating ourselves, that was easy to manage and could easily be implemented by an external team. It was a daunting task.&lt;/p&gt;

&lt;p&gt;When we got about halfway into the project it became clear that we needed a better way to document the components, naming conventions, and front-end implementation that made up the website. Another problem that comes up with projects like this is when you get further into the project, you’ve got to refine previously made components more and more to work in harmony together. Houston, we have a problem.&lt;/p&gt;

&lt;p&gt;After putting way too much thought into all of this, I broke the issues down into a few simple rules:&lt;/p&gt;

&lt;ul&gt;
    &lt;li&gt;We need to build more reusable website components.&lt;/li&gt;
    &lt;li&gt;We need centralized front-end documentation from the start.&lt;/li&gt;
    &lt;li&gt;We need up-to-date access to a high level overview of the system as a whole.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;Introducing the components table&lt;/h2&gt;

&lt;figure&gt;
    &lt;img src=&quot;/assets/images/2011-09-09/table.png&quot; alt=&quot;A screenshot of the Erskine components table&quot; /&gt;
&lt;/figure&gt;

&lt;p&gt;The components table is a new way of developing websites that I’m currently experimenting with. You name, define and markup your components within the [fluid] table instead of inside the constraints of a website. Thus, answering all the rules above in one fell swoop.&lt;/p&gt;

&lt;h3&gt;We need to build more reusable website components&lt;/h3&gt;

&lt;p&gt;A website is a skeleton made up of an assortment of individual components that can work individually, side-by-side, and sometimes integrated together. Components should be plug-and-play, and they should be location and dimension independent. They don’t need to rely on an external source to be usable. Also, quality control should be built in at the component level. By breaking our websites down, and focusing on small elements at a time we can really dig into the details.&lt;/p&gt;

&lt;h3&gt;We need centralized front-end documentation from the start&lt;/h3&gt;

&lt;p&gt;When someone new jumps into a project, they need to be able to get up and running as quickly and efficiently as possible. They need an easy way to see how the pieces of the puzzle fit together. By it’s very nature, the components table is centralized documentation.&lt;/p&gt;

&lt;p&gt;Sometimes we hand over front-end templates to an external web team for integration with their own systems. Developing with the components table means little to no extra documentation on project hand over.&lt;/p&gt;

&lt;h3&gt;We need up-to-date access to a high level overview of the system as a whole&lt;/h3&gt;

&lt;p&gt;We need a way to easily spot components that can be refined and integrated with each other. Flaws in the system need to be spotted sooner rather than later. Nothing is worse, or more &lt;code&gt;!important&lt;/code&gt;, than an out of hand stylesheet. Also, when starting on a new phase of a project do we build feature X on top of existing code, or do we start fresh? What’s the naming convention for the shopping basket? This can all be found in the components table.&lt;/p&gt;

&lt;p&gt;Though it’s just an experiment, the components table fixes a lot of the problems I’ve had with front-end development. Anyone else out there trying to solve these problems? I’d love to see what you’ve come up with.&lt;/p&gt;
</description>
        <pubDate>Fri, 09 Sep 2011 00:00:00 -0500</pubDate>
        <link>https://garrettwinder.com/erskinedesign/planning-and-documenting-front-end-components/</link>
        <guid isPermaLink="true">https://garrettwinder.com/erskinedesign/planning-and-documenting-front-end-components/</guid>
        
        <category>erskinedesign</category>
        
      </item>
    
      <item>
        <title>EEUK 2011 - Going mobile</title>
        <description>&lt;h2 id=&quot;tips-techniques-and-tactics-for-going-mobile-with-expressionengine&quot;&gt;Tips, techniques and tactics for going mobile with ExpressionEngine.&lt;/h2&gt;

&lt;figure&gt;
	&lt;img src=&quot;/assets/images/2011-08-27/eeuk11-garrett-winder.jpg&quot; alt=&quot;Garrett speaking at EEUK11&quot; /&gt;
	&lt;figcaption&gt;Photo by &lt;a href=&quot;http://www.flickr.com/photos/joelbradbury/&quot;&gt;Joel Bradbury&lt;/a&gt;&lt;/figcaption&gt;
&lt;/figure&gt;

&lt;ul&gt;
  &lt;li&gt;Current status of mobile&lt;/li&gt;
  &lt;li&gt;Native v.s. web&lt;/li&gt;
  &lt;li&gt;Dedicated or responsive?&lt;/li&gt;
  &lt;li&gt;And how ExpressionEngine can help ease the pain&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href=&quot;http://dl.dropbox.com/u/19272573/eeuk11-going-mobile-pdf.pdf&quot;&gt;EEUK11 presentation – Going mobile&lt;/a&gt; (pdf)&lt;/p&gt;

&lt;p&gt;I’ve condensed them down quite a bit so if you’d like the originals, shoot me an email.&lt;/p&gt;
</description>
        <pubDate>Sat, 27 Aug 2011 00:00:00 -0500</pubDate>
        <link>https://garrettwinder.com/erskinedesign/eeuk11/</link>
        <guid isPermaLink="true">https://garrettwinder.com/erskinedesign/eeuk11/</guid>
        
        <category>erskinedesign</category>
        
      </item>
    
      <item>
        <title>Personal task management with Things.app</title>
        <description>&lt;p&gt;Here at Erskine we use all the usual suspects to keep the day in order: The &lt;a href=&quot;http://37signals.com/suite&quot;&gt;37signals Suite&lt;/a&gt; (mostly Basecamp and Campfire), &lt;a href=&quot;http://beanstalkapp.com/&quot;&gt;Beanstalk&lt;/a&gt;, &lt;a href=&quot;http://www.getharvest.com/&quot;&gt;Harvest&lt;/a&gt;, &lt;a href=&quot;http://www.redmine.org/&quot;&gt;Redmine&lt;/a&gt;, the list goes on. All of these are great for a team or client overviews, but in my opinion are not enough to personally stay truly organized.&lt;/p&gt;

&lt;p&gt;I’ve always had a pretty obsessive approach to organization and go quite overboard with it, actually. Constantly testing, tuning and refining my personal processes until I feel like I’ve got the perfect way of doing something.&lt;/p&gt;

&lt;p&gt;My work falls into a few different categories, and depending on the month, and phase of the moon, I’m always doing more or less of one or the other. Right now my work ranges from front-end development to internal project cheerleading and client handling. My day can get very confusing, especially when we’re busy.&lt;/p&gt;

&lt;h2&gt;Bring on the Things&lt;/h2&gt;

&lt;p&gt;For the past few years I’ve been using &lt;a href=&quot;http://culturedcode.com/things/&quot;&gt;Things.app&lt;/a&gt; for task management. I’ve traded out for different applications here and there, but in the end I always come back to Things. This article is about why I use it, and how it fits into my work.&lt;/p&gt;

&lt;h3&gt;Out of the box&lt;/h3&gt;

&lt;figure&gt;
	&lt;img src=&quot;/assets/images/2011-08-04/things-before.jpg&quot; alt=&quot;A screenshot of a fresh installation of Things.app for Mac&quot; /&gt;
&lt;/figure&gt;


&lt;p&gt;This is a screenshot of Things the first time you open it. The software is extremely simple: To-dos organized by projects, people, time and tags. Exactly how I think.&lt;/p&gt;

&lt;h3&gt;Tailored to your thought process&lt;/h3&gt;

&lt;figure&gt;
	&lt;img src=&quot;/assets/images/2011-08-04/things-after.jpg&quot; alt=&quot;A screenshot of Things.app showing how I use it&quot; /&gt;
&lt;/figure&gt;

&lt;p&gt;This is a screenshot of how I actually use Things. I use the &apos;Inbox’ randomly throughout the day to dump everything that comes into my mind so I can get back to work. I usually sift through my inbox once every morning – organizing, tagging and giving due dates to items.&lt;/p&gt;

&lt;p&gt;For Projects, I usually use the naming convention &lt;em&gt;Client name – Project name&lt;/em&gt;. All to-do items for that particular project are filed away in there. I use &apos;Areas’ for an extra layer of organization and for those to-do items that don’t exactly belong to a project, but they do belong to a client. Every client gets a &apos;General’ area, plus areas for major pieces of their business that Erskine work with on a regular basis.&lt;/p&gt;

&lt;p&gt;If a task is out of my hands, but needs to be done in order for me to keep on keeping’ on, I use the &apos;People’ feature as you can see in the screenshot above. Lastly, tagging. For tagging I use a little of my own conventions plus most of the goodies found in &lt;a href=&quot;http://www.omnigroup.com/blog/entry/slay_the_leviathan_context/&quot;&gt;this article from the Omni Focus blog&lt;/a&gt;.&lt;/p&gt;

&lt;figure&gt;
	&lt;img src=&quot;/assets/images/2011-08-04/things-tags.jpg&quot; alt=&quot;A screenshot of the Things.app &apos;tags&apos; module with the tags that I use.&quot; /&gt;
&lt;/figure&gt;

&lt;p&gt;So, that’s how I use Things. Hopefully you can take some of this and apply it to the way you work. This is something that I’m really interested in and would love to see your thoughts, conventions, etc below.&lt;/p&gt;</description>
        <pubDate>Thu, 04 Aug 2011 00:00:00 -0500</pubDate>
        <link>https://garrettwinder.com/erskinedesign/personal-task-management-with-Things.app/</link>
        <guid isPermaLink="true">https://garrettwinder.com/erskinedesign/personal-task-management-with-Things.app/</guid>
        
        <category>erskinedesign</category>
        
      </item>
    
      <item>
        <title>Taking our work to the extreme</title>
        <description>&lt;p&gt;
    95% of my everyday involves implementing and working w/ front-end languages like HTML/CSS and integrating them w/ the &lt;a href=&quot;http://expressionengine.com/&quot;&gt;ExpressionEngine&lt;/a&gt; content management system. Not many people (outside of my twitter followers) have a clue what this means, nor will they ever see my work directly, but I still try and execute every little detail to the extreme. What?&lt;/p&gt;
&lt;p&gt;
    How many of you view source on that new cool website everyone is talking about on Twitter? What about look at the CSS? No? I don&amp;rsquo;t either. But when that 1 person does look, I want it to be perfect. I want them to get knocked out of their seat like they&amp;rsquo;ve seen a ghost. Lights shine down, music starts playing. The whole 9 yards. #BOOM&lt;/p&gt;
&lt;p&gt;
    For the CSS that means: Perfect tabbing, alphabetical ordered properties, thought into details like where the comments go and styling them beautifully, how specific my declarations are and making sure that every little piece of the cascade comes together flawlessly.&lt;/p&gt;
&lt;p&gt;
    For the HTML that means: Tabbing, spacing, comments, simplicity, using the right elements in every single situation and not shortcutting anything with a generic span or div. I want my grandma to be able to view source on my HTML and go &amp;ldquo;Oh yeah, that&amp;rsquo;s what I&amp;rsquo;m talking about.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;
    As far as bringing it all together into a content management system like ExpressionEngine: How is the code outputted? Is it still perfectly tabbed and spaced? If not, make it that way (without hurting the readability of the actual template files). Does the control panel make sense to the end user editing the site and are there things you can do to fix that? Field instructions, Channel names, everything. What about the possibility of a new guy coming along and taking over your project? Does the back-end stuff look perfect for him/her as well? Make it that way.&lt;/p&gt;
&lt;p&gt;
    There&amp;rsquo;s a lot more to this obviously, but you get the point. I&amp;rsquo;m not just talking about making a site look good. I&amp;rsquo;m talking about making every little aspect of the whole ordeal executed to the extreme.&lt;/p&gt;</description>
        <pubDate>Sun, 13 Feb 2011 00:00:00 -0600</pubDate>
        <link>https://garrettwinder.com/erskinedesign/taking-our-work-to-the-extreme/</link>
        <guid isPermaLink="true">https://garrettwinder.com/erskinedesign/taking-our-work-to-the-extreme/</guid>
        
        <category>erskinedesign</category>
        
      </item>
    
  </channel>
</rss>
