<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
        <title>SuperAcidJax</title>
        <description>SuperAcidJax - Brian Dear</description>
        <link>http://superacidjax.github.io</link>
        <link>http://superacidjax.github.io</link>
        <lastBuildDate>2013-11-21T08:20:28-08:00</lastBuildDate>
        <pubDate>2013-11-21T08:20:28-08:00</pubDate>
        <ttl>1800</ttl>


        <item>
                <title>Some Tips for Vim Newbies</title>
                <description>&lt;p&gt;As someone who tended to revert to Sublime when faced with a particularly time-sensitive editing task, learning Vim tended to go more slowly than I would have liked.&lt;/p&gt;

&lt;p&gt;However, over the past two weeks, I&amp;#8217;ve refused to allow myself to open Sublime at all, even when on a tight feature-release deadline for work. So here&amp;#8217;s a suggested strategy if you find yourself not learning as quickly as you would like.&lt;/p&gt;

&lt;p&gt;Each morning, before you start work, your goal should be to pick up one single new thing. For me yesterday it was learning how to quickly open test file/app files in a split. So if I was in a controller, being able to instantly open the functional test in a split was a big boost. The day before, I learned about indenting.. etc. The book &lt;a href=&#39;http://pragprog.com/book/dnvim/practical-vim&#39;&gt;Practical Vim&lt;/a&gt; from Pragmatic is really good (you can work through it in small daily chunks.)&lt;/p&gt;

&lt;p&gt;Then work that day using ONLY vim. Do not open Sublime or TextMate. You will be slower. You will get frustrated. That&amp;#8217;s ok. Throughout the day, use that day&amp;#8217;s technique every possible chance you get. If you get to a point where you absolutely just can&amp;#8217;t accomplish it in Vim, then look up the relevant technique. Yes, that&amp;#8217;ll slow you down for the few minutes it will take you, but you&amp;#8217;ll end up owning that technique afterwards, because you were forced to use it, and it was highly relevant.&lt;/p&gt;

&lt;p&gt;I&amp;#8217;m not a vim expert yet, but I&amp;#8217;ve improved more in the past few weeks than I had after a year of using Vim to &amp;#8220;learn&amp;#8221; and then switching to Sublime to &amp;#8220;work.&amp;#8221; The key is combining learning as you work.&lt;/p&gt;

&lt;p&gt;This is probably common sense, but it&amp;#8217;s very effective. If you want to be even more hardcore, just delete Sublime completely. Then it would take you 5-10 minutes just to download and reinstall it that the effort wouldn&amp;#8217;t be worth it and you&amp;#8217;ll force your way through vim instead. I personally didn&amp;#8217;t do this simply because in my job I occasionally have to pair with people who don&amp;#8217;t use vim.&lt;/p&gt;

&lt;p&gt;I also recommend Tmux and using Vim in the terminal instead of using MacVim. The reason is personal for me &amp;#8211; I prefer to have one screen for everything, meaning running iTerm in full screen with my vim in a vertical split over the top 80% of the screen with my command-line underneath. (Like an upside down T.) The advantage of this is I can switch almost instantly between my console/command line and vim without having to switch apps. That&amp;#8217;s just my way of working, so it might not apply to everyone, but MacVim is, to me, another app to switch into and out of, so the slight delay (and loss of mental &amp;#8220;flow&amp;#8221; in doing that dozens of times and hour) is costly. The very best book on Tmux is also from Pragmatic and can be found &lt;a href=&#39;http://pragprog.com/book/bhtmux/tmux&#39;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This might not help everyone, but it worked for me. Good luck fellow newbies! We will win vim, and subsequently &lt;a href=&#39;http://knowyourmeme.com/memes/you-win-the-internet&#39;&gt;win the internet&lt;/a&gt;.&lt;/p&gt;</description>
                <link>http://superacidjax.github.io/vim/2013/11/21/some-tips-for-vim-newbies</link>
                <guid>http://superacidjax.github.io/vim/2013/11/21/some-tips-for-vim-newbies</guid>
                <pubDate>2013-11-21T00:00:00-08:00</pubDate>
        </item>

        <item>
                <title>The Trouble With Averages For Application Performance Monitoring</title>
                <description>&lt;p&gt;Most web application performance tuning starts with an almost obsession with average response times. The problem with average response times is that we tend to make the assumption that the average would be evenly distributed. Yehuda Katz and Tom Dale from &lt;a href=&#39;http://tilde.io&#39;&gt;Tilde&lt;/a&gt; make an excellent point about how this is wrong. If web application performance were distributed like human heights were distributed, then it wouldn&amp;#8217;t be unusual to see a 12 foot person occassionally on the street or a 2 foot person.&lt;/p&gt;

&lt;p&gt;Using average response times is a bad idea because your responses aren&amp;#8217;t ever distributed as a bell curve.&lt;/p&gt;

&lt;p&gt;The reason the averages become useless is because the programming language you&amp;#8217;re using is Turing Complete and has branches. As an example, the performance characteristics of a cache hit versus a cache miss are completely different. So in an If statement you have a cache hit, then it&amp;#8217;s going to be very fast, but a cache miss would then result in the program doing some expensive computation, however those two response times are averaged which gives you a completely worthless number.&lt;/p&gt;

&lt;p&gt;Instead, it&amp;#8217;s better to look at the average worst response time (at the 95th percentile.) This would be the average worst response your users would get.&lt;/p&gt;

&lt;p&gt;For example, good performance is worthless if it&amp;#8217;s not consistent. So having 200ms, 200ms, 200ms is much better than having 50ms, 50ms, 1 second. The 95th percentile measurement simply means that 1 out of 20 requests made by a user will hit this worst response time. The 95th percentile isn&amp;#8217;t an outlier, it&amp;#8217;s a slow request that your users will routinely hit. Which ultimately translates into a degraded user experience that isn&amp;#8217;t reflected by using average response time as a measurement.&lt;/p&gt;

&lt;h2 id=&#39;the_point&#39;&gt;The Point&lt;/h2&gt;

&lt;p&gt;Chasing average response times can be helpful as a vanity metric, however it doesn&amp;#8217;t actually measure how well your application is performing for each user. If every 20th request is taking 5 seconds, those 200ms requests aren&amp;#8217;t very appealing anymore, even though your average request time might only be 300ms.&lt;/p&gt;

&lt;p&gt;You can hear more about this with &lt;a href=&#39;http://thoughtbot.com&#39;&gt;Thoughtbot&amp;#8217;s&lt;/a&gt; Ben Orenstein and &lt;a href=&#39;https://tilde.io&#39;&gt;Tilde&amp;#8217;s&lt;/a&gt; Yehuda Katz and Tom Dale in &lt;a href=&#39;http://podcasts.thoughtbot.com/giantrobots/53&#39;&gt;Episode 53 of the Giant Robots Smashing into Other Giant Robots Podcast&lt;/a&gt;.&lt;/p&gt;</description>
                <link>http://superacidjax.github.io/performance/2013/11/19/the-trouble-with-averages-for-application-performance-monitoring</link>
                <guid>http://superacidjax.github.io/performance/2013/11/19/the-trouble-with-averages-for-application-performance-monitoring</guid>
                <pubDate>2013-11-19T00:00:00-08:00</pubDate>
        </item>

        <item>
                <title>Bundler Parallel Installs</title>
                <description>&lt;p&gt;The new Bundler version &lt;a href=&#39;http://bundler.io/v1.5/whats_new.html&#39;&gt;1.5.0.rc.1&lt;/a&gt; is awesome. One of the cool new features is the ability to bundle install in parallel. Which means you can speed up your bundling by up to 60% over the previous version of bundler.&lt;/p&gt;

&lt;h2 id=&#39;parallel_installs&#39;&gt;Parallel Installs&lt;/h2&gt;

&lt;p&gt;First you need to install the new version of bundler. Since it&amp;#8217;s a pre-release, you&amp;#8217;ll need to install it like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gem install bundler --pre&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Next you&amp;#8217;ll need to use the &amp;#8211;jobs option like this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;bundle install -j4&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This specifies that 4 workers will be used to complete the bundle process.&lt;/p&gt;

&lt;p&gt;To always use it this way you can run this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;bundle config --global jobs 4&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;And that&amp;#8217;s it! Happy bundling.&lt;/p&gt;</description>
                <link>http://superacidjax.github.io/rails/2013/11/18/bundler-parallel-installs</link>
                <guid>http://superacidjax.github.io/rails/2013/11/18/bundler-parallel-installs</guid>
                <pubDate>2013-11-18T00:00:00-08:00</pubDate>
        </item>


</channel>
</rss>
