<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns: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/" version="2.0">
    <channel>
        <title>Garrett Winder (@gw)</title>
        <link>http://garrettwinder.com/articles/</link>
        <description>Articles on web design, development and process.</description>
        <dc:language>en</dc:language>
        <dc:creator>gw@garrettwinder.com</dc:creator>
        <dc:rights>Copyright 2012</dc:rights>
        <dc:date>2012-06-08T11:00:14+00:00</dc:date>
        <admin:generatorAgent rdf:resource="http://expressionengine.com/" />
        
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/garrettwinder/journal" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="garrettwinder/journal" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
            <title>EECI EU 2012 - Illegally good front-end</title>
            <link>http://garrettwinder.com/articles/illegally-good-front-end-eeciconf2012-eu/</link>
            <guid>http://garrettwinder.com/articles/illegally-good-front-end-eeciconf2012-eu/#When:11:00:14Z</guid>
            <description>&lt;h2&gt;Best practices for breaking our 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="http://en.wikipedia.org/wiki/Leiden"&gt;Leiden&lt;/a&gt; for &lt;a href="http://eeciconf.com/"&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&gt;Resources&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://speakerdeck.com/u/gw/p/illegally-good-front-end"&gt;Illegally good front-end presentation&lt;/a&gt; &lt;em&gt;&lt;small&gt;(on Speaker Deck)&lt;/small&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/erskinedesign/ed.ultimate_package"&gt;The Ultimate Package&lt;/a&gt; &lt;em&gt;&lt;small&gt;(Erskine's baseline front-end framework)&lt;/small&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/erskinedesign/ed.ultimate_package/wiki"&gt;The Ultimate Package wiki&lt;/a&gt; &lt;em&gt;&lt;small&gt;(Erskine's front-end documentation)&lt;/small&gt;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="/2012/03/03/typographic-styling-scss/"&gt;Typographic styling with SCSS&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://erskinelabs.com/planning-and-documenting-front-end-components/"&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="http://erskinelabs.com/"&gt;Erskine Labs&lt;/a&gt;. As usual, if you'd like the original keynote presentation just shoot me an email at gw [at] garrettwinder [dot] com.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://garrettwinder.com/articles/illegally-good-front-end-eeciconf2012-eu/"&gt;→ Permalink&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/garrettwinder/journal/~4/8S0hc-nQyXM" height="1" width="1"/&gt;</description>
            <dc:date>2012-06-08T11:00:14+00:00</dc:date>
        </item>
        
        <item>
            <title>Calculating EMs with SCSS</title>
            <link>http://garrettwinder.com/articles/calculating-ems-with-scss/</link>
            <guid>http://garrettwinder.com/articles/calculating-ems-with-scss/#When:11:00:24Z</guid>
            <description>&lt;p&gt;I've posted an article over on &lt;a href="http://erskinelabs.com/"&gt;Erskine Labs&lt;/a&gt; titled &lt;a href="http://erskinelabs.com/calculating-ems-scss/"&gt;Calculating EMs with SCSS&lt;/a&gt;. It's an overview of how we are doing EM calculations at Erskine and how it has evolved over the last few months since we started using SCSS.&lt;/p&gt;

&lt;p&gt;&lt;figure&gt;
    &lt;img src="/static/images/posts/calculating-ems-with-scss.large.png" /&gt;
&lt;/figure&gt;&lt;/p&gt;

&lt;p&gt;Here's a short little excerpt:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Earlier this year Erskine made the switch to SCSS and I’ve really loved what its done to our front-end workflow. One thing I’m particularly fond of is how SCSS has improved how we’re calculating EMs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://erskinelabs.com/calculating-ems-scss/"&gt;Calculating EMs with SCSS&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://garrettwinder.com/articles/calculating-ems-with-scss/"&gt;→ Permalink&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/garrettwinder/journal/~4/YbIIc7jPigo" height="1" width="1"/&gt;</description>
            <dc:date>2012-05-08T11:00:24+00:00</dc:date>
        </item>
        
        <item>
            <title>Typographic styling with SCSS</title>
            <link>http://garrettwinder.com/articles/typographic-styling-scss/</link>
            <guid>http://garrettwinder.com/articles/typographic-styling-scss/#When:10:59:29Z</guid>
            <description>&lt;p&gt;Friday, right after Erskine's end-of-week pub rituals, &lt;a href="http://twitter.com/philswan"&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="http://www.sublimetext.com/2"&gt;Sublime&lt;/a&gt;, &lt;a href="http://net.tutsplus.com/articles/news/introducing-nettuts-fetch/"&gt;fetched&lt;/a&gt; the &lt;a href="https://github.com/erskinedesign/ed.ultimate_package"&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="http://3.bp.blogspot.com/-lL_PKWn4miE/ThnwX0N3n7I/AAAAAAAAAIc/X5wfErzHp5Y/s1600/Nathans.jpg"&gt;American style hotdogs&lt;/a&gt;. We got keyboard shortcuts for toggling the baseline plugged in and cranked up &lt;a href="http://en.wikipedia.org/wiki/Lynyrd_Skynyrd"&gt;Lynyrd Skynyrd&lt;/a&gt;. It was time to make &lt;strong&gt;&lt;a href="http://www.instapaper.com/"&gt;Instapaper&lt;/a&gt; for cats&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;Typography + SCSS = love&lt;/h2&gt;

&lt;p&gt;What I love about &lt;a href="http://sass-lang.com/"&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&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="http://html5doctor.com/element-index/"&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&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&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;
&lt;p&gt;&lt;a href="http://garrettwinder.com/articles/typographic-styling-scss/"&gt;→ Permalink&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/garrettwinder/journal/~4/bk6hRS1NGyQ" height="1" width="1"/&gt;</description>
            <dc:date>2012-03-03T10:59:29+00:00</dc:date>
        </item>
        
        <item>
            <title>Going mobile with ExpressionEngine</title>
            <link>http://garrettwinder.com/articles/going-mobile-with-expressionengine/</link>
            <guid>http://garrettwinder.com/articles/going-mobile-with-expressionengine/#When:11:00:36Z</guid>
            <description>&lt;p&gt;I've posted an article over on &lt;a href="http://www.netmagazine.com/"&gt;.net magazine&lt;/a&gt; titled &lt;a href="http://www.netmagazine.com/tutorials/going-mobile-expressionengine"&gt;Going mobile with ExpressionEngine&lt;/a&gt;. It's meant to be a beginners walk through for building dedicated mobile sites with EE and is an extension to &lt;a href="http://garrettwinder.com/2011/08/27/eeuk11/"&gt;my talk at EEUK&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;figure&gt;
    &lt;img src="/static/images/posts/going-mobile-with-expressionengine.large.jpg" /&gt;
&lt;/figure&gt;&lt;/p&gt;

&lt;p&gt;Here's a short little excerpt:&lt;/p&gt;

&lt;blockquote&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;/blockquote&gt;

&lt;p&gt;If you'd like to follow along, be sure to download the &lt;a href="http://erskinedesign.github.com/Mobile-website-tutorial/"&gt;source files on Github&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.netmagazine.com/tutorials/going-mobile-expressionengine"&gt;Article&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://erskinedesign.github.com/Mobile-website-tutorial/"&gt;Source files&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://garrettwinder.com/articles/going-mobile-with-expressionengine/"&gt;→ Permalink&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/garrettwinder/journal/~4/g8RIqtKxGwc" height="1" width="1"/&gt;</description>
            <dc:date>2012-01-06T11:00:36+00:00</dc:date>
        </item>
        
        <item>
            <title>Planning and documenting front-end components</title>
            <link>http://garrettwinder.com/articles/planning-and-documenting-front-end-components/</link>
            <guid>http://garrettwinder.com/articles/planning-and-documenting-front-end-components/#When:11:00:48Z</guid>
            <description>&lt;p&gt;I've posted an article over on &lt;a href="http://erskinelabs.com/"&gt;Erskine Labs&lt;/a&gt; titled &lt;a href="http://erskinelabs.com/planning-and-documenting-front-end-components/"&gt;Planning and documenting front-end components&lt;/a&gt;. It's about the pros of breaking websites down into components, which happens to be my favourite subject.&lt;/p&gt;

&lt;p&gt;&lt;figure&gt;
    &lt;img src="/static/images/posts/planning-and-documenting-front-end-components.large.png" /&gt;
&lt;/figure&gt;&lt;/p&gt;

&lt;p&gt;Here's a short little excerpt:&lt;/p&gt;

&lt;blockquote&gt;
  &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;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://erskinelabs.com/planning-and-documenting-front-end-components/"&gt;Planning and documenting front-end components&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://garrettwinder.com/articles/planning-and-documenting-front-end-components/"&gt;→ Permalink&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/garrettwinder/journal/~4/aAc3rptUhfY" height="1" width="1"/&gt;</description>
            <dc:date>2011-09-09T11:00:48+00:00</dc:date>
        </item>
        
        <item>
            <title>EEUK 2011 - Going mobile</title>
            <link>http://garrettwinder.com/articles/eeuk-2011/</link>
            <guid>http://garrettwinder.com/articles/eeuk-2011/#When:11:00:53Z</guid>
            <description>&lt;h2&gt;Tips, techniques and tactics for going mobile with ExpressionEngine.&lt;/h2&gt;

	&lt;p&gt;&lt;figure&gt;
    &lt;img src="/static/images/posts/eeuk11.jpg" alt="Garrett speaking at EEUK11"&gt;
    &lt;figcaption&gt;Photo by &lt;a href="http://www.flickr.com/photos/joelbradbury/"&gt;Joel Bradbury&lt;/a&gt;&lt;/figcaption&gt;&lt;br /&gt;
&lt;/figure&gt;&lt;/p&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;h3&gt;Resources&lt;/h3&gt;

	&lt;ul&gt;
		&lt;li&gt;&lt;a href="http://dl.dropbox.com/u/19272573/eeuk11-going-mobile-pdf.pdf"&gt;EEUK11 presentation &amp;#8211; Going mobile&lt;/a&gt; &lt;em style="text-align:left;"&gt;small&amp;gt;(pdf)&lt;/small&gt;&lt;/em&gt;&lt;/li&gt;
		&lt;li&gt;&lt;a href="http://www.netmagazine.com/tutorials/going-mobile-expressionengine"&gt;Going mobile with ExpressionEngine&lt;/a&gt; &lt;em style="text-align:left;"&gt;small&amp;gt;(Tutorial in &lt;a href="http://www.netmagazine.com/"&gt;.net magazine&lt;/a&gt;)&lt;/small&gt;&lt;/em&gt;&lt;/li&gt;
	&lt;/ul&gt;

	&lt;p&gt;I&amp;#8217;ve condensed them down quite a bit so if you&amp;#8217;d like the originals, shoot me an email at gw [at] garrettwinder [dot] com.&lt;/p&gt;&lt;p&gt;&lt;a href="http://garrettwinder.com/articles/eeuk-2011/"&gt;→ Permalink&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/garrettwinder/journal/~4/g3LlPlKjY3A" height="1" width="1"/&gt;</description>
            <dc:date>2011-08-27T11:00:53+00:00</dc:date>
        </item>
        
        <item>
            <title>Personal task management with Things.app</title>
            <link>http://garrettwinder.com/articles/personal-task-management-with-things/</link>
            <guid>http://garrettwinder.com/articles/personal-task-management-with-things/#When:11:00:04Z</guid>
            <description>&lt;p&gt;I've posted an article over on &lt;a href="http://erskinelabs.com/"&gt;Erskine Labs&lt;/a&gt; titled &lt;a href="http://erskinelabs.com/personal-task-management-thingsapp/"&gt;Personal task management with Things.app&lt;/a&gt;. It's a short write-up of my obsessive approach to organization and how I apply it to &lt;a href="http://culturedcode.com/"&gt;Things.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here's a short little excerpt:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;At Erskine we use all the usual suspects to keep the day in order: The 37signals Suite (mostly Basecamp and Campfire), Beanstalk, Harvest, Redmine, 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;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://erskinelabs.com/personal-task-management-thingsapp/"&gt;Personal task management with Things.app&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://garrettwinder.com/articles/personal-task-management-with-things/"&gt;→ Permalink&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/garrettwinder/journal/~4/uVJX5JmTIrs" height="1" width="1"/&gt;</description>
            <dc:date>2011-08-04T11:00:04+00:00</dc:date>
        </item>
        
        <item>
            <title>Responsive Web Design: Review</title>
            <link>http://garrettwinder.com/articles/responsive-web-design-review/</link>
            <guid>http://garrettwinder.com/articles/responsive-web-design-review/#When:11:00:09Z</guid>
            <description>&lt;p&gt;&lt;figure&gt;
    &lt;img src="/static/images/posts/responsive-web-design-review.large.png" /&gt;
&lt;/figure&gt;&lt;/p&gt;

&lt;p&gt;I've posted an article over on &lt;a href="http://erskinelabs.com/"&gt;Erskine Labs&lt;/a&gt; titled &lt;a href="http://erskinelabs.com/responsive-web-design-review/"&gt;Responsive Web Design: Review&lt;/a&gt;. It's my take on &lt;a href="https://twitter.com/#!/beep"&gt;Ethan Marcotte&lt;/a&gt;'s new book, &lt;a href="http://www.abookapart.com/products/responsive-web-design"&gt;Responsive Web Design&lt;/a&gt;. If you haven't read it yet, I suggest you hop on it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://erskinelabs.com/responsive-web-design-review/"&gt;Responsive Web Design: Review&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href="http://garrettwinder.com/articles/responsive-web-design-review/"&gt;→ Permalink&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/garrettwinder/journal/~4/XrnQ-5caJQU" height="1" width="1"/&gt;</description>
            <dc:date>2011-06-09T11:00:09+00:00</dc:date>
        </item>
        
        <item>
            <title>Generating share links in your ExpressionEngine templates</title>
            <link>http://garrettwinder.com/articles/generating-share-links-expressionengine/</link>
            <guid>http://garrettwinder.com/articles/generating-share-links-expressionengine/#When:11:00:57Z</guid>
            <description>&lt;p&gt;Making custom links for sharing content is always an annoying process. Go to each service you need, try and figure out how to pass information to it via a &lt;span class="caps"&gt;URL&lt;/span&gt;. Rinse, lather, repeat.&lt;/p&gt;

	&lt;p&gt;Below I&amp;#8217;ll document some of the most common share links and their basic &lt;span class="caps"&gt;URL&lt;/span&gt; structures, and then I&amp;#8217;ll show you how we can easily implement this into an ExpressionEngine channel entry page.&lt;/p&gt;

	&lt;p&gt;&lt;script src="https://gist.github.com/1101867.js?file=common-share-links-1"&gt;&lt;/script&gt;&lt;/p&gt;

	&lt;p&gt;Now that we&amp;#8217;ve got the basics out of the way, let&amp;#8217;s convert this into an ExpressionEngine gangster rap. I&amp;#8217;ll assumes you understand the basic ExpressionEngine variables. I&amp;#8217;m also going to assumes your channel entries are located at domain.com/segment_1/url_title/ (you can easily change this to fit your needs). Here&amp;#8217;s the code that would go in your individual channel entry pages:&lt;/p&gt;

	&lt;p&gt;&lt;script src="https://gist.github.com/1101872.js?file=common-share-links-2"&gt;&lt;/script&gt;&lt;/p&gt;

	&lt;p&gt;Very straight forward &amp;#8211; we&amp;#8217;ve got a channel loop that&amp;#8217;s based off of our current channel entry (pulling the url title from segment_2). We&amp;#8217;re using ExpressionEngine variables to generate the &lt;span class="caps"&gt;URL&lt;/span&gt;s and titles in the share links. For Twitter, I&amp;#8217;m using the categories variable pair for hash tags. For Posterous and Instapaper I&amp;#8217;ve added a fictional excerpt field to the optional selection and description params.&lt;/p&gt;

	&lt;p&gt;Obviously, you don&amp;#8217;t need to use all of these, just plug-and-play the links you want to put on your own site. One final not, for the twitter link, I&amp;#8217;d recommend using a shorter url. You can either use some sort of url shortening plugin or &lt;a href="/2010/12/05/expressionengine-short-urls/"&gt;easily role your own short urls like this&lt;/a&gt;. Enjoy!&lt;/p&gt;&lt;p&gt;&lt;a href="http://garrettwinder.com/articles/generating-share-links-expressionengine/"&gt;→ Permalink&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/garrettwinder/journal/~4/P8gezfZf8bM" height="1" width="1"/&gt;</description>
            <dc:date>2010-12-06T11:00:57+00:00</dc:date>
        </item>
        
        <item>
            <title>ExpressionEngine short URLs</title>
            <link>http://garrettwinder.com/articles/expressionengine-short-urls/</link>
            <guid>http://garrettwinder.com/articles/expressionengine-short-urls/#When:11:00:26Z</guid>
            <description>&lt;p&gt;When I was making my site I wanted to be able to have short urls to post to Twitter, etc. without having to deal with the hassle of buying another domain name. There are quite a few ways of doing this but I ended up taking the /template_group/entry_id approach because it&amp;#8217;s easy and sexy.&lt;/p&gt;

	&lt;p&gt;The first thing I did was setup a new template group. For example sake, I&amp;#8217;m going to name this template group &amp;#8216;b&amp;#8217; (short for blog). I&amp;#8217;m also going to pretend our actual blog posts are located at /blog&lt;/p&gt;

	&lt;p&gt;Once you&amp;#8217;ve made the new template group, &amp;#8216;b&amp;#8217;, open up the index file and paste the following code in there:&lt;/p&gt;

	&lt;p&gt;&lt;script src="https://gist.github.com/1101861.js?file=eecms-short-url-template"&gt;&lt;/script&gt;&lt;/p&gt;

	&lt;p&gt;This is pretty simple stuff. First we make a variable called &amp;#8216;my_channel&amp;#8217; that points to our blog channel (it&amp;#8217;s all about the reusable code people, use preload_replace like it&amp;#8217;s your job). Then, we make sure we have a segment_2, if not, we redirect to the main blog page. Lastly, we use an ExpressionEngine Channel loop based off of the entry_id (which is pulled from segment_2) and redirect to its &amp;#8220;long url&amp;#8221;, /blog/url_title&lt;/p&gt;

	&lt;p&gt;To show your short url on your actual entry pages, just throw something like the following in the blog entries template (inside the channel loop):&lt;/p&gt;

	&lt;p&gt;Short &lt;span class="caps"&gt;URL&lt;/span&gt;: &amp;#123;site_url&amp;#125;/b/&amp;#123;entry_id&amp;#125;/&lt;/p&gt;

	&lt;p&gt;Tada &amp;#8211; now you&amp;#8217;ve got yourself a really simple branded short url, none of that bit.ly crap!&lt;/p&gt;&lt;p&gt;&lt;a href="http://garrettwinder.com/articles/expressionengine-short-urls/"&gt;→ Permalink&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/garrettwinder/journal/~4/kJ-d9kNisM0" height="1" width="1"/&gt;</description>
            <dc:date>2010-12-05T11:00:26+00:00</dc:date>
        </item>
        
        <item>
            <title>EE info template</title>
            <link>http://garrettwinder.com/articles/ee-info-template/</link>
            <guid>http://garrettwinder.com/articles/ee-info-template/#When:11:00:47Z</guid>
            <description>&lt;p&gt;I wanted a simple way to access site information like template names, channel names, custom fields, etc without accessing the control panel so I threw together these templates w/ the ExpressionEngine Query Module to show all of that data (I&amp;#8217;m no &lt;span class="caps"&gt;SQL&lt;/span&gt; expert, so the queries may not be up to par&amp;#8230; but they work). There is a template for EE 1&amp;amp;2 and you can download them on GitHub.&lt;/p&gt;

	&lt;p&gt;&lt;a href="http://github.com/garrettwinder/ee-info.ee_template"&gt;Download ExpressionEngine EE-Info Templates on github&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href="http://garrettwinder.com/articles/ee-info-template/"&gt;→ Permalink&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/garrettwinder/journal/~4/UWLGCj1ol2k" height="1" width="1"/&gt;</description>
            <dc:date>2010-11-15T11:00:47+00:00</dc:date>
        </item>
        
        <item>
            <title>ExpressioneEngine 2 TextMate bundle</title>
            <link>http://garrettwinder.com/articles/expressionengine-2-textmate-bundle/</link>
            <guid>http://garrettwinder.com/articles/expressionengine-2-textmate-bundle/#When:11:00:17Z</guid>
            <description>&lt;p&gt;I went ahead and took the liberty of updating &lt;a href="http://www.chrisruzin.net/entry/textmate_expressionengine_bundle/"&gt;Chris Ruzin&amp;#8217;s wonderful ExpressionEngine TextMate bundle&lt;/a&gt; to ExpressionEngine 2. Really all that needed to be done was update the documentation links in the &amp;#8220;Documentation for Tag&amp;#8221; file, change every weblog reference to channel, delete a few oldies and add a few newies. So, here it is:&lt;/p&gt;

	&lt;p&gt;&lt;a href="http://dl.dropbox.com/u/19272573/ExpressionEngine2.tmbundle.zip"&gt;Download ExpressionEngine 2 Textmate Bundle&lt;/a&gt;&lt;/p&gt;

	&lt;p&gt;If you find any errors or anything just let me know and I&amp;#8217;ll try and get them updated as soon as I can. Again, I wouldn&amp;#8217;t have known how to do this without Chris-who-has-no-contact-info-on-the-internet&amp;#8217;s bundle for ExpressionEngine 1.x so 99.9% of the credit goes to him.&lt;/p&gt;

	&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt; : This bundle is based off of ExpressionEngine&amp;#8217;s core functionality and does not include any 3rd party add-on integration. If you want a bundle with all the bells and whistles, &lt;a href="https://github.com/wesbaker/ExpressionEngine2.tmbundle"&gt;checkout this one&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href="http://garrettwinder.com/articles/expressionengine-2-textmate-bundle/"&gt;→ Permalink&lt;/a&gt;&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/garrettwinder/journal/~4/DNGDNci4mxc" height="1" width="1"/&gt;</description>
            <dc:date>2010-11-12T11:00:17+00:00</dc:date>
        </item>
        
    </channel>
</rss>
