<?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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Hashrocket Articles</title>
    <description>Knowledge &amp; news from us to you.</description>
    <link>http://blog.hashrocket.com/posts</link>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/hashrocket-blog" /><feedburner:info uri="hashrocket-blog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item>
      <title>Dotmatrix: The Hashrocket Dot File Repo</title>
      <description>&lt;p&gt;At Hashrocket we love our tools and pride ourselves on being good at using them. One way we go about getting good with these tools is by customizing them with some great configuration. &lt;a href="http://en.wikipedia.org/wiki/Dot_files"&gt;Dot files&lt;/a&gt; are used by many programs to configure behavior and &lt;a href="http://dotfiles.github.io/"&gt;sharing these dot files on GitHub&lt;/a&gt; is a nice way for developers to have a consistent development environment.&lt;/p&gt;

&lt;p&gt;We share our dot files in a project called &lt;a href="https://github.com/hashrocket/dotmatrix/"&gt;Dotmatrix&lt;/a&gt;. Its been around for &lt;a href="https://github.com/hashrocket/dotmatrix/commit/9b1a5e54f80cf752e4ce696bd20444da07bf2ab7"&gt;quite a while&lt;/a&gt; and been contributed to by &lt;a href="https://github.com/hashrocket/dotmatrix/contributors"&gt;many current and former Rocketeers&lt;/a&gt;. It&amp;#39;s the distillation of the taste of quite a few very picky programmers. It&amp;#39;s easy to install, upgrade and use all or just parts of it and there&amp;#39;s lots of cool stuff in there even if you just want to read through it a little.&lt;/p&gt;

&lt;h2&gt;What is Dotmatrix?&lt;/h2&gt;

&lt;p&gt;Dotmatrix is really two things:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A vehicle for keeping a set of dot files in sync&lt;/li&gt;
&lt;li&gt;Version history of the contents of these dot files&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It&amp;#39;s the thing you use to install and upgrade a set of dot files and it&amp;#39;s also a git repo of those actual dot files. Some of it concerns the installation and upgrading of these files and the rest of it is those actual dot files.&lt;/p&gt;

&lt;h2&gt;Local Versions of A Dot File&lt;/h2&gt;

&lt;p&gt;Every program is different, but for the most part, they have a load order for their configuration. Most support both a config file and a local version. Take your Z shell config--its specified in this file: &lt;code&gt;~/.zshrc&lt;/code&gt;, but if you have a file called &lt;code&gt;~/.zshrc.local&lt;/code&gt;, that local file will get a chance to override the normal version.&lt;/p&gt;

&lt;p&gt;The bottom line is that you can inherit configuration in the &lt;code&gt;~/.zshrc&lt;/code&gt; and then have your local modifications in &lt;code&gt;~/.zshrc.local&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;Before You Install Dotmatrix&lt;/h2&gt;

&lt;p&gt;It&amp;#39;s likely that you already have some configuration in your dot files, so before you install Dotmatrix, pull that configuration into a local version. Better yet, create a repo of those local dot files!&lt;/p&gt;

&lt;p&gt;For example, if you already have some configuration in your &lt;code&gt;~/.zshrc&lt;/code&gt; file, but want to use Dotmatrix, then move your file to a local version:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;$ &lt;span class="n"&gt;mv&lt;/span&gt; &lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;zshrc&lt;/span&gt; &lt;span class="o"&gt;~/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;zshrc&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;local&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Take a look at the &lt;a href="https://github.com/hashrocket/dotmatrix/blob/master/bin/file_list.sh"&gt;list of files&lt;/a&gt; in Dotmatrix and then look at your own configuration to see which files you&amp;#39;d like to maintain a local version of.&lt;/p&gt;

&lt;h2&gt;Installation&lt;/h2&gt;

&lt;p&gt;Installing Dotmatrix on a brand new machine is easy. Start by cloning the repo down, maybe in a ~/Project folder or something like that:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;$ &lt;span class="n"&gt;git&lt;/span&gt; &lt;span class="n"&gt;clone&lt;/span&gt; &lt;span class="n"&gt;git&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="o"&gt;//&lt;/span&gt;&lt;span class="n"&gt;github&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;com&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;hashrocket&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;dotmatrix&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;git&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Then just go into that directory and run &lt;code&gt;bin/install&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;This installer script will respect local versions of dot files and then create symlinks to its set of dot files.&lt;/p&gt;

&lt;p&gt;If a given dotfile already exists, then that particular file will NOT be over-ridden. On the one hand, this is nice because you can&amp;#39;t accidentally lose something, but it also means that you wont get some of the goodies in dotmatrix if you unwittingly leave a dot file around, so pay attention to the output to ensure it&amp;#39;s doing what you want.&lt;/p&gt;

&lt;h2&gt;Upgrading&lt;/h2&gt;

&lt;p&gt;To upgrade your dotmatrix install go back to the folder where you cloned it and run &lt;code&gt;bin/upgrade&lt;/code&gt;. It will fetch the latest and greatest from the GitHub repo and then run the installer script all over again.&lt;/p&gt;

&lt;h2&gt;For Vim Users&lt;/h2&gt;

&lt;p&gt;Another big part of Dotmatrix is the Vim setup that&amp;#39;s been built-in. To get this part, after an install or upgrade run this:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;$ &lt;span class="n"&gt;bin&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;vimbundles&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sh&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;We use a LOT of Vim plugins and this will grab those and get you all set.&lt;/p&gt;

&lt;h2&gt;Partial Install&lt;/h2&gt;

&lt;p&gt;Maybe you&amp;#39;d like to just grab some of the files in Dotmatrix, maybe just our Git shortcuts, for example--no prob, just do a &lt;a href="https://github.com/hashrocket/dotmatrix#partial-installation"&gt;partial install&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;This is great for those that are new to Dotmatrix and want to just check out some part of it, here are some partial installs that might work for you:&lt;/p&gt;

&lt;h3&gt;Just Git Config&lt;/h3&gt;

&lt;p&gt;Create a file called &lt;code&gt;FILES&lt;/code&gt; in the Dotmatrix folder with just this line:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="na"&gt;.gitconfig&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This will get you our Git aliases and some other cool configuration.&lt;/p&gt;

&lt;h3&gt;Just Vim Config&lt;/h3&gt;

&lt;p&gt;To grab just the Vim parts of Dotmatrix, create that same &lt;code&gt;FILES&lt;/code&gt; file in the Dotmatrix folder and have this in it:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="na"&gt;.vim&lt;/span&gt;
&lt;span class="na"&gt;.vimrc&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;And then be sure to run the &lt;code&gt;bin/vimbundles.sh&lt;/code&gt; command.&lt;/p&gt;

&lt;h3&gt;Just ZSH Config&lt;/h3&gt;

&lt;p&gt;Maybe you&amp;#39;ve heard great things about Z shell and want to try it out--no prob, grab our ZSH config and you&amp;#39;ll be glad you did. Put this in the &lt;code&gt;FILES&lt;/code&gt; file:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="na"&gt;.hashrc&lt;/span&gt;
&lt;span class="na"&gt;.zsh&lt;/span&gt;
&lt;span class="na"&gt;.zshrc&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Don&amp;#39;t forget to run &lt;code&gt;chsh -s /path/to/zsh&lt;/code&gt; too--that&amp;#39;s what switches your shell.&lt;/p&gt;

&lt;h2&gt;Under Active Development&lt;/h2&gt;

&lt;p&gt;So, that&amp;#39;s Dotmatrix--give it a spin and I think you&amp;#39;ll find some great stuff. One last thing to note is that this project is fairly active, so be sure to upgrade often for the latest goodies!&lt;/p&gt;
</description>
      <pubDate>Tue, 21 May 2013 00:00:00 +0000</pubDate>
      <link>http://blog.hashrocket.com/posts/dotmatrix-the-hashrocket-dot-file-repo</link>
      <guid>http://blog.hashrocket.com/posts/dotmatrix-the-hashrocket-dot-file-repo</guid>
    </item>
    <item>
      <title>Start contributing to open source</title>
      <description>&lt;p&gt;Open source software can be an intimidating and scary world to the up and coming developer. You pop open a gem you’ve been using and try to follow along with the code but to no avail. It’s far too advanced (or poorly written) for your newly developed skill set. No worries, we were all there once and we still need your help. &lt;/p&gt;

&lt;p&gt;Before you dive into your first open source project you should be familiar with Git. You probably had a brief introduction to Git while working through the &lt;a href="http://ruby.railstutorial.org/ruby-on-rails-tutorial-book"&gt;Ruby on Rails Tutorial&lt;/a&gt;. As a refresher, CodeSchool has some excellent &lt;a href="http://www.codeschool.com/paths/electives"&gt;git intro courses&lt;/a&gt;. You should  also checkout Hashrocket&amp;#39;s video &lt;a href="http://www.youtube.com/watch?v=ImhZj6tpXLE"&gt;‘Feature Development with Git Branching’&lt;/a&gt;. Once you have the basics down you&amp;#39;re ready to jump in. &lt;/p&gt;

&lt;p&gt;So where do you start? Browse Github. Look for something that you’re interested in. A gem that you used? A project you heard of? Something you’ve been wanting to try? Once on a projects Github page, click the ‘issues’ tab. Do you see any problems that you would like to tackle? &lt;/p&gt;

&lt;p&gt;A couple great ways you can contribute are through documentation and tests. &lt;/p&gt;

&lt;h1&gt;Documentation&lt;/h1&gt;

&lt;p&gt;Did you run into any problems using a gem in your passion project?  Was it because you didn’t understand how to configure something? Maybe the outdated documentation needs an update. Documentation is something that is always needed, appreciated and It’s a great foot in the door to the world of open source. Open the README (or similar file) and start adding the steps you had to complete to get the project working correctly.&lt;/p&gt;

&lt;h1&gt;Tests&lt;/h1&gt;

&lt;p&gt;Open source projects often start as toy’s with broken or insufficient testing. As the project’s grow in size from the addition of other user’s requirements, the need for better tests becomes more and more apparent. Testing other’s work is also a great way to understand bizarre looking code. The spec your writing will help you develop your programming skills and add value to the project. Now that you understand what the code is doing and have tests around it, are there places you could improve the code?&lt;/p&gt;

&lt;p&gt;A few general things to remember as you are writing your code:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Make small, explicit git commits. &lt;em&gt;Some projects will have contribution guidelines.Please read them and stick to them. If the project doesn’t have any contribution guidelines, look at older commits and try to follow the general pattern.&lt;/em&gt; &lt;/li&gt;
&lt;li&gt;If you are writing code, please test it. &lt;em&gt;No one likes to accept an untested pull request. It’s scary.&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When you have completed your contributions on an appropriately named feature branch, push them up to Github and put in a pull request. Be ready to answer questions about your code from the original repositories maintainer. Explain the issue you ran into and how you went about fixing them. Don’t worry if your pull request isn’t accepted. Ask the maintainer if they have an idea for a better solution to fix the problem or what they didn’t find acceptable about the code you wrote. This is a learning process and because you have been using version control, going back and refactoring is a stress free process. &lt;/p&gt;

&lt;p&gt;If you&amp;#39;re looking for some projects to get started on then Hashrocket has numerous open source projects for you to look into. &lt;a href="http://www.decentexposure.info/"&gt;Decent Exposure&lt;/a&gt;, &lt;a href="http://www.fabricationgem.org/"&gt;Fabrication&lt;/a&gt;, &lt;a href="https://github.com/paulelliott/authem"&gt;Authem&lt;/a&gt; and &lt;a href="http://blog.hashrocket.com/posts/when-pushing-just-isn-t-getting-the-job-done"&gt;Paratrooper&lt;/a&gt; are a few of the currently maintained open source projects. If you are unable to find anything there then checkout &lt;a href="https://github.com/RailsApps"&gt;RailsApps&lt;/a&gt; by Daniel Kehoe. He&amp;#39;s put together quite a few example rails apps for people to use as they see fit. The repositories there are wonderfully well documented and most of the apps could be built upon or better tested. It’s the first place I got my hands dirty writing open source. Last but certainly not least is &lt;a href="http://www.codetriage.com/#ruby-687610333200244750"&gt;Code Triage&lt;/a&gt;. Code Triage has collected a large amount of open source projects looking for contributions.&lt;/p&gt;

&lt;p&gt;Would you like some help on your own open source project? Please leave your Github url in a comment below. &lt;/p&gt;
</description>
      <pubDate>Tue, 07 May 2013 00:00:00 +0000</pubDate>
      <link>http://blog.hashrocket.com/posts/start-contributing-to-open-source</link>
      <guid>http://blog.hashrocket.com/posts/start-contributing-to-open-source</guid>
    </item>
    <item>
      <title>Book Club with Sandi Metz</title>
      <description>&lt;p&gt;&lt;img src="http://f.cl.ly/items/0s351t150d0k1K2t383N/book_club.gif" alt="Book Club"&gt;&lt;/p&gt;

&lt;p&gt;May is here and it&amp;#39;s time for book club! Read &lt;em&gt;&lt;a href="http://www.poodr.info/" title="Practical Object-Oriented Design in Ruby"&gt;Practical Object-Oriented Design in Ruby&lt;/a&gt;&lt;/em&gt; this month with the Rocketeers and submit your questions for a community-driven interview with author and Ruby Hero &lt;a href="http://sandimetz.com/"&gt;Sandi Metz&lt;/a&gt;! We&amp;#39;re very excited to spend the month with Sandi&amp;#39;s buzzworthy book and hope you are too.&lt;/p&gt;

&lt;h2&gt;What&amp;#39;s this book all about?&lt;/h2&gt;

&lt;p&gt;From the &lt;a href="http://www.poodr.info/" title="Practical Object-Oriented Design in Ruby"&gt;POODR website:&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Practical Object-Oriented Design in Ruby&lt;/em&gt; is about how to write object-oriented code. It was written by an everyday programmer and it explains object-oriented design (OOD) using realistic Ruby examples.  &lt;/p&gt;

&lt;p&gt;OOD is not a mysterious black art that’s impossible to understand, it’s just stuff you don’t yet know.   POODR is a practical, readable, and understandable introduction to how OOD can lower your costs and improve your applications.&lt;/p&gt;

&lt;p&gt;If your code is killing you and the joy is gone, POODR has the cure.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;How do I submit my questions for the interview?&lt;/h2&gt;

&lt;p&gt;Write your questions in a &lt;a href="https://gist.github.com"&gt;Github gist&lt;/a&gt;. Tweet the gist URL to &lt;a href="https://twitter.com/hashrocket"&gt;@hashrocket&lt;/a&gt; with the hash tag &lt;em&gt;#hrbookclub&lt;/em&gt;. We&amp;#39;ll publish the interview at the beginning of next month. &lt;strong&gt;Submit your questions now through Friday, May 24th 2013 for inclusion in the interview&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;We look forward to your questions and happy reading!&lt;/p&gt;
</description>
      <pubDate>Fri, 03 May 2013 14:21:00 +0000</pubDate>
      <link>http://blog.hashrocket.com/posts/book-club-with-sandi-metz</link>
      <guid>http://blog.hashrocket.com/posts/book-club-with-sandi-metz</guid>
    </item>
    <item>
      <title>Using SASS To Be Responsive and Retina-Ready</title>
      <description>&lt;p&gt;Responsive design is much more than just a buzzword and a loosely-organized set of principles – it&amp;#39;s a design technique that requires you to approach almost every problem differently than a traditional website. It&amp;#39;s also a pain to code. We&amp;#39;re neck-deep in a new Hashrocket site design that&amp;#39;s fully responsive and uses retina assets – and from that project (and others like it) we&amp;#39;ve ended up with a pretty solid starting point for tackling those requirements:&lt;/p&gt;

&lt;h2&gt;Get iOS to Behave Responsively&lt;/h2&gt;

&lt;p&gt;There are two crucial lines of code you&amp;#39;ll need to make pretty much anything responsive work properly: a &lt;code&gt;meta&lt;/code&gt; tag and a &lt;code&gt;webkit&lt;/code&gt; tag.&lt;/p&gt;

&lt;p&gt;Put this in your &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nt"&gt;%meta&lt;/span&gt;(&lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;viewport&amp;quot;&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;&amp;quot;width=device-width, initial-scale=1&amp;quot;&lt;/span&gt;)
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;This just tells the viewport to conform to your device width (so you don&amp;#39;t have landscape mode appear larger than portrait mode, for instance) and scale properly. Some Googlings of this technique also might result in code recommendations to add in a &lt;code&gt;maximum-scale&lt;/code&gt; value; this disables pinch-zooming and usually isn&amp;#39;t necessary.&lt;/p&gt;

&lt;p&gt;Put this in your Sass (or SCSS, whatever):&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nt"&gt;body&lt;/span&gt;
    &lt;span class="na"&gt;-webkit-text-size-adjust&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="no"&gt;none&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;You probably know this one - it prevents iOS from sizing up your text for readability. If your site&amp;#39;s properly responsive, you&amp;#39;re taking care of font size with @media queries.&lt;/p&gt;

&lt;h2&gt;The Viewport Width Mixin&lt;/h2&gt;

&lt;p&gt;Here&amp;#39;s our mixin for keeping ourselves sane in the world of media queries. (This one and others require a newer version of Sass that supports passing content blocks to mixins; you should be using that anyway.)&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$width&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;640&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="nt"&gt;screen&lt;/span&gt; &lt;span class="nt"&gt;and&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;max-width&lt;/span&gt;&lt;span class="nd"&gt;:&lt;/span&gt; &lt;span class="nn"&gt;#&lt;/span&gt;&lt;span class="err"&gt;{$&lt;/span&gt;&lt;span class="nt"&gt;width&lt;/span&gt;&lt;span class="err"&gt;}&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;@content&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Easy as pie. Just set the &lt;code&gt;$width&lt;/code&gt; value to whatever you decide is your primary site breakpoint, and add others as necessary. This lets us write rules quickly and read them easily:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nc"&gt;.foo&lt;/span&gt;
    margin: 60px
    +max-width
        margin: 40px
    +max-width(480)
        margin: 20px
&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;The Retina Mixin&lt;/h2&gt;

&lt;p&gt;Retina backgrounds are their own set of &lt;code&gt;@media&lt;/code&gt;-based pain. Here are a pair of mixins that made our lives easier:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nt"&gt;retina&lt;/span&gt;
    &lt;span class="k"&gt;@media&lt;/span&gt; &lt;span class="nt"&gt;screen&lt;/span&gt; &lt;span class="nt"&gt;and&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;-webkit-min-device-pixel-ratio&lt;/span&gt;&lt;span class="nd"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;2&lt;/span&gt;&lt;span class="o"&gt;),&lt;/span&gt; &lt;span class="nt"&gt;screen&lt;/span&gt; &lt;span class="nt"&gt;and&lt;/span&gt; &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nt"&gt;min-device-pixel-ratio&lt;/span&gt;&lt;span class="nd"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;2&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
        &lt;span class="k"&gt;@content&lt;/span&gt;
&lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;retina_bg&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$dimensions&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n-Pseudo"&gt;false&lt;/span&gt;&lt;span class="o"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;$ext&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;png&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="na"&gt;background-image&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;image-url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$ext&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="nd"&gt;+retina&lt;/span&gt;
    &lt;span class="na"&gt;background-image&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;image-url&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$filename&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;@2x.&lt;/span&gt;&lt;span class="si"&gt;#{&lt;/span&gt;&lt;span class="nv"&gt;$ext&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;&amp;quot;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;@if&lt;/span&gt; &lt;span class="nv"&gt;$dimensions&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="n-Pseudo"&gt;false&lt;/span&gt;
        &lt;span class="na"&gt;background-size&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nv"&gt;$dimensions&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The &lt;code&gt;retina&lt;/code&gt; mixin is just generally helpful; the &lt;code&gt;retina_bg&lt;/code&gt; mixin is absolutely essential. With &lt;code&gt;retina_bg&lt;/code&gt;, we can write our retina background image styles in one line:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span class="nc"&gt;.bar&lt;/span&gt;
    +retina_bg(&amp;quot;logo&amp;quot;, 100px)
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Now non-retina devices use &lt;code&gt;logo.png&lt;/code&gt;, while retina uses &lt;code&gt;logo@2x.png&lt;/code&gt;, like the iOS filename convention. It&amp;#39;s worth noting that &lt;code&gt;background-size&lt;/code&gt; isn&amp;#39;t always necessary, so it&amp;#39;s behind a conditional and just doesn&amp;#39;t assign if it&amp;#39;s not specified.&lt;/p&gt;

&lt;h2&gt;Take Care Of Yourself Out There&lt;/h2&gt;

&lt;p&gt;I sincerely hope this post is useful to you and isn&amp;#39;t just adding to the noise of &lt;code&gt;@media&lt;/code&gt; tips that are out there these days. If you start with these pieces, you&amp;#39;ll be well on your way to writing responsive styles that don&amp;#39;t muck up the rest of your CSS and help you keep all those widths &amp;amp; ratios sorted. &lt;/p&gt;
</description>
      <pubDate>Fri, 26 Apr 2013 15:00:00 +0000</pubDate>
      <link>http://blog.hashrocket.com/posts/using-sass-to-be-responsive-and-retina-ready</link>
      <guid>http://blog.hashrocket.com/posts/using-sass-to-be-responsive-and-retina-ready</guid>
    </item>
    <item>
      <title>Where In the World are the Rocketeers?</title>
      <description>&lt;p&gt;This year&amp;#39;s conference schedule is in full swing and there are many opportunities to get engaged in the Ruby community both in the States as well as abroad. Whether you are looking to attend a regional conference, or want to venture a little further, you will most likely run into a Rocketeer or two. So get out, get engaged, we&amp;#39;d love to meet you!&lt;/p&gt;

&lt;h2&gt;&lt;a href="http://www.ancientcityruby.com/"&gt;Ancient City Ruby&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;April 4-5 | St. Augustine, FL&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Hashrocket is organizing its first Ruby conference in sunny Florida, and we invite everyone to attend. The historic city of St. Augustine provides a unique setting to discover knowledge in the Ancient City. Attendees will be treated to a variety of perspectives on topics ranging from the philosophy behind software to Test Driven Development. The lineup includes notable speakers including Jim Weirich, Sandi Metz, Avdi Grimm and Russ Olsen. You don&amp;#39;t want to miss this one so make sure to &lt;a href="http://www.ancientcityruby.com/"&gt;register&lt;/a&gt; before it&amp;#39;s too late!&lt;/p&gt;

&lt;h2&gt;&lt;a href="http://www.railsconf.com/"&gt;RailsConf&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;April 29 - May 2 | Portland, OR&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In 2013, the largest gathering of Ruby on Rails developers in the world returns to Portland. &lt;a href="http://www.railsconf.com/"&gt;RailsConf&lt;/a&gt; promises to be one of the highlights of the year as it spotlights the latest in innovations within the Rails community. The conference draws developers and companies from around the world to connect and learn about new products as well as the tools of the trade.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rocketeers Attending&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://hashrocket.com/people/travis-anderson"&gt;Travis Anderson&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hashrocket.com/people/andy-borsz"&gt;Andy Borsz&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://hashrocket.com/people/taylor-mock"&gt;Taylor Mock&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hashrocket.com/people/thais-camilo"&gt;Thais Camilo&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="http://hashrocket.com/people/gabriel-reis"&gt;Gabriel Reis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hashrocket.com/people/paul-elliott"&gt;Paul Elliott&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;&lt;a href="http://2013.scottishrubyconference.com/"&gt;Scottish Ruby Conf&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;May 12-13 | Perthshire, Scotland&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://2013.scottishrubyconference.com/"&gt;Scottish Ruby&lt;/a&gt; is a premier Ruby conference in the UK and provides a unique perspective on the techniques of the software craftsman. The venue has changed this year but the conference is guaranteed to deliver.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rocketeers Attending&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://hashrocket.com/people/cameron-daigle"&gt;Cameron Daigle&lt;/a&gt; (speaking)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;&lt;a href="http://magmaconf.com/"&gt;MagmaConf&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;June 5-7 | Manzanillo, Mexico&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;MagmaRails is now &lt;a href="http://magmaconf.com/"&gt;MagmaConf&lt;/a&gt;! MagmaConf is a web development conference that covers cutting-edge topics in Ruby, Ruby on Rails, frontend, and other web technologies. This is one of the most important web development conferences in Central America and it&amp;#39;s a chance for engineers from around the world to meet and experience Mexico.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rocketeers Attending&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://hashrocket.com/people/johnny-winn"&gt;Johnny Winn&lt;/a&gt; (speaking)&lt;/li&gt;
&lt;li&gt;Vic Ramon&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;&lt;a href="http://madisonruby.org/"&gt;Madison Ruby&lt;/a&gt;&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;August 23-24 | Madison, WI&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Want to discover a hidden gem in the Ruby community? Madison Ruby is a showcase to the locals and a chance for visitors to experience a true gem of the community. On the 22nd attendees have a chance to partake in pre-conference workshops.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Rocketeers Attending&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="http://hashrocket.com/people/josh-davey"&gt;Josh Davey&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hashrocket.com/people/jon-allured"&gt;Jon Allured&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hashrocket.com/people/brian-dunn"&gt;Brian Dunn&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Check back later this summer to see where you&amp;#39;ll find the Rocketeers in Fall 2013!&lt;/p&gt;
</description>
      <pubDate>Mon, 25 Mar 2013 10:30:00 +0000</pubDate>
      <link>http://blog.hashrocket.com/posts/summer_conference_2013</link>
      <guid>http://blog.hashrocket.com/posts/summer_conference_2013</guid>
    </item>
  </channel>
</rss>
