<?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.midwesternmac.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:og="http://ogp.me/ns#" xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#" xmlns:sioc="http://rdfs.org/sioc/ns#" xmlns:sioct="http://rdfs.org/sioc/types#" xmlns:skos="http://www.w3.org/2004/02/skos/core#" xmlns:xsd="http://www.w3.org/2001/XMLSchema#" version="2.0" xml:base="http://www.midwesternmac.com/">
  <channel>
    <title>Midwestern Mac, LLC</title>
    <link>http://www.midwesternmac.com/</link>
    <description />
    <language>en</language>
          <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.midwesternmac.com/midwesternmac" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="midwesternmac" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
    <title>Stop letting .DS_Store slow you down</title>
    <link>http://www.midwesternmac.com/blogs/jeff-geerling/stop-letting-dsstore-slow-you</link>
    <description>&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even" property="content:encoded"&gt;&lt;p&gt;I have over 100 git repositories on my Mac, and for almost every one, I sometimes browse the directory structure in the Finder. Once I do that, I inevitably end up with a few pesky &lt;a href="http://en.wikipedia.org/wiki/.DS_Store"&gt;&lt;code&gt;.DS_Store&lt;/code&gt;&lt;/a&gt; files that want to be added to my repo:&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img src="http://www.midwesternmac.com/sites/midwesternmac.com/files/ds_store-files.jpg" width="500" height="199" alt="Pesky .DS_Store Files in Terminal during Git Status" /&gt;&lt;/p&gt;
&lt;p&gt;.DS_Store files don't add anything of value to my code (they just tell Mac OS X about folder display and icons), so I always end up adding them to my own projects' &lt;code&gt;.gitignore&lt;/code&gt; files. But when I'm working on other repositories (like Drupal, or a fork from GitHub) I don't want to add a &lt;code&gt;.gitignore&lt;/code&gt; if none exists, or mess with the project's existing &lt;code&gt;.gitignore&lt;/code&gt;. So what's a coder to do?&lt;/p&gt;
&lt;p&gt;There are a couple good solutions:&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/midwesternmac/~4/kyQELyKGYVM" height="1" width="1"/&gt;</description>
     <pubDate>Sun, 02 Jun 2013 17:44:32 +0000</pubDate>
 <dc:creator>Jeff Geerling</dc:creator>
 <guid isPermaLink="false">267 at http://www.midwesternmac.com</guid>
  </item>
  <item>
    <title>Server Check.in Contest - Win a RØDE smartLav!</title>
    <link>http://www.midwesternmac.com/blogs/jeff-geerling/server-checkin-contest-win</link>
    <description>&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even" property="content:encoded"&gt;&lt;p&gt;Server Check.in (one of our services) is holding a contest this week: &lt;a href="https://servercheck.in/blog/contest-win-a-rode-smartlav"&gt;Contest - Win a RØDE smartLav!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;All you have to do is post a comment, and you'll be entered to win!&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/midwesternmac/~4/1QFH2MvjvEM" height="1" width="1"/&gt;</description>
     <pubDate>Wed, 29 May 2013 00:01:25 +0000</pubDate>
 <dc:creator>Jeff Geerling</dc:creator>
 <guid isPermaLink="false">266 at http://www.midwesternmac.com</guid>
  </item>
  <item>
    <title>Moving Server Check.in functionality to Node.js increased per-server capacity by 100x</title>
    <link>http://www.midwesternmac.com/blogs/jeff-geerling/moving-server-checkin</link>
    <description>&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even" property="content:encoded"&gt;&lt;p&gt;Just posted a new blog post to the Server Check.in blog: &lt;a href="https://servercheck.in/blog/moving-functionality-nodejs-increased-server"&gt;Moving functionality to Node.js increased per-server capacity by 100x&lt;/a&gt;. Here's a snippet from the post:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;
One feature that we just finished deploying is a small Node.js application that runs in tandem with Drupal to allow for an incredibly large number of servers and websites to be checked in a fraction of the time that we were checking them using only PHP, cron, and Drupal's Queue API.&lt;/p&gt;
&lt;p&gt;If you need to do some potentially slow tasks very often, and they're either network or IO-bound, consider moving those tasks away from Drupal/PHP to a Node.js app. Your server and your overloaded queue will thank you!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://servercheck.in/blog/moving-functionality-nodejs-increased-server"&gt;Read more&lt;/a&gt;.
&lt;/p&gt;&lt;/blockquote&gt;
&lt;p&gt;tl;dr Node.js is awesome for running through a large number of network or IO-bound tasks that would otherwise become burdensome at scale using Drupal's Queue API.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/midwesternmac/~4/Yd-TcjY9s1E" height="1" width="1"/&gt;</description>
     <pubDate>Tue, 21 May 2013 03:27:39 +0000</pubDate>
 <dc:creator>Jeff Geerling</dc:creator>
 <guid isPermaLink="false">264 at http://www.midwesternmac.com</guid>
  </item>
  <item>
    <title>2013 VPS Benchmarks - Linode, Digital Ocean, Hot Drupal</title>
    <link>http://www.midwesternmac.com/blogs/jeff-geerling/2013-vps-benchmarks-linode</link>
    <description>&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even" property="content:encoded"&gt;&lt;p&gt;Every year or two, I like to get a good overview of different hosting providers' VPS performance, and from time to time, I move certain websites and services to a new host based on my results.&lt;/p&gt;
&lt;p&gt;In the past, I've stuck with &lt;a href="https://www.linode.com/"&gt;Linode&lt;/a&gt; for many services (their end-to-end UX, and raw server performance is great!) that weren't intense on disk operations, and &lt;a href="http://www.hotdrupal.com/"&gt;Hot Drupal&lt;/a&gt; for some sites that required high-performance IO (since Hot Drupal's VPSes use SSDs and are very fast). This year, though, after &lt;a href="https://www.digitalocean.com/"&gt;Digital Ocean&lt;/a&gt; jumped into the VPS hosting scene, I decided to give them a look.&lt;/p&gt;
&lt;p&gt;Before going further, I thought I'd give a few quick benchmarks from each of the providers; these are all on middle-range plans (1 or 2GB RAM), and with the exception of Linode, the disks are all SSD, so should be super fast:&lt;/p&gt;
&lt;h2&gt;Disk Performance&lt;/h2&gt;
&lt;p style="text-align: center;"&gt;&lt;img src="/sites/midwesternmac.com/files/2013-vps-disk-io.png" width="275" height="235" alt="Disk Performance Chart" /&gt;&lt;/p&gt;
&lt;p&gt;(I used the command &lt;code&gt;dd bs=1M count=512 if=/dev/zero of=test conv=fdatasync&lt;/code&gt; for a simple benchmark, which writes and reads a 512MB file to disk. These results were averaged over three test runs).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Linode&lt;/strong&gt;: 60.9 MB/s&lt;br /&gt;&lt;strong&gt;Digital Ocean&lt;/strong&gt;: 230 MB/s&lt;br /&gt;&lt;strong&gt;Hot Drupal&lt;/strong&gt;: 244 MB/s&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/midwesternmac/~4/VeOH_VJ0dRs" height="1" width="1"/&gt;</description>
     <pubDate>Sun, 19 May 2013 20:30:31 +0000</pubDate>
 <dc:creator>Jeff Geerling</dc:creator>
 <guid isPermaLink="false">263 at http://www.midwesternmac.com</guid>
  </item>
  <item>
    <title>Push your Git repositories to a master server, in a bare repository</title>
    <link>http://www.midwesternmac.com/blogs/jeff-geerling/push-your-git-repositories</link>
    <description>&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even" property="content:encoded"&gt;&lt;p&gt;&lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt; is a great central repository silo for open source projects, and for private Git repositories for companies and organizations with enough cash to afford the features GitHub offers.&lt;/p&gt;
&lt;p&gt;However, for many projects and developers, GitHub can be overkill. For my needs, I have many smaller private projects that I'd like to have hosted centrally, and backed up, but don't warrant BitBucket or GitHub accounts. Therefore, I've taken to creating bare repositories on one of my Linode servers, and pushing all my local branches and tags to these repos. That server is backed up nightly, so I know if I lose my local environment, as well as my Time Machine backup (a very unlikely occurrence, but still possible), I will have backed up and fully intact Git repos for all my projects.&lt;/p&gt;
&lt;p&gt;I recommend you do something like the following (presuming you already have a Git repo on your local computer that you've been working with):&lt;/p&gt;
&lt;h2&gt;Step 1 - on your remote server (accessible via ssh)&lt;/h2&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class="codeblock"&gt;&lt;code&gt;# Create a 'repositories' directory in your user home directory.&lt;br /&gt;$ mkdir ~/repositories &amp;amp;&amp;amp; cd ~/repositories&lt;br /&gt;&lt;br /&gt;# For each of your local repositories, make a directory ending in '.git'.&lt;br /&gt;$ mkdir My-Project.git &amp;amp;&amp;amp; cd My-Project.git&lt;br /&gt;&lt;br /&gt;# Create a bare git repository inside this new directory.&lt;br /&gt;$ git --bare init&lt;/code&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/midwesternmac/~4/NifVzTFbRbU" height="1" width="1"/&gt;</description>
     <pubDate>Thu, 25 Apr 2013 16:24:24 +0000</pubDate>
 <dc:creator>Jeff Geerling</dc:creator>
 <guid isPermaLink="false">261 at http://www.midwesternmac.com</guid>
  </item>
  <item>
    <title>Make sure your Linux servers' date and time are correct and synchronized</title>
    <link>http://www.midwesternmac.com/blogs/jeff-geerling/make-sure-your-linux-servers</link>
    <description>&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even" property="content:encoded"&gt;&lt;p&gt;Nowadays, most people assume that all modern computers and operating systems have network time synchronization set up properly and switched on by default. However, this is not the case with many Linux servers—especially if you didn't install Linux and configure it yourself (as would be the case with most cloud-based OS images like those used to generate new servers on Linode).&lt;/p&gt;
&lt;p&gt;After setting up a new server on Linode or some other Linux VPS or dedicated server provider, you should always do the following to make sure the server's timezone and date and time synchronization are configured and working correctly:&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/midwesternmac/~4/clAgAbSpogU" height="1" width="1"/&gt;</description>
     <pubDate>Wed, 24 Apr 2013 17:29:16 +0000</pubDate>
 <dc:creator>Jeff Geerling</dc:creator>
 <guid isPermaLink="false">260 at http://www.midwesternmac.com</guid>
  </item>
  <item>
    <title>Giving Back - Helping with Drupal's Issue Queues</title>
    <link>http://www.midwesternmac.com/blogs/jeff-geerling/giving-back-helping-drupals</link>
    <description>&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even" property="content:encoded"&gt;&lt;p&gt;Below is a video and some notes from my presentation "Giving Back - Helping with Drupal's Issue Queues", which I gave to the St. Louis Drupal group at the &lt;a href="http://groups.drupal.org/node/293683"&gt;April 17 meetup&lt;/a&gt;. Please post any feedback or additional resources/suggestions in the comments below or on YouTube.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;
&lt;iframe width="640" height="360" src="http://www.youtube.com/embed/8VKp7RBPOOY" frameborder="0" allowfullscreen=""&gt;&lt;/iframe&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;
&lt;p&gt;Note: This presentation roughly coincides with the Drupal Ladder lesson, &lt;a href="http://drupalladder.org/lesson/1d498fa2-d3e4-5754-9160-757d219e8032"&gt;Getting started in the issue queue&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;We’ll look at three different ways you can help contribute to Drupal’s success in the issue queues.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;Cleaning up an issue queue, testing and reviewing a patch, and writing your own patch.&lt;/li&gt;
&lt;/ul&gt;&lt;h2&gt;Clean up an issue queue&lt;/h2&gt;
&lt;p&gt;Reference: &lt;a href="http://drupal.org/node/383956"&gt;Helping maintainers in the issue queue&lt;/a&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/midwesternmac/~4/jDQ5W51-TZo" height="1" width="1"/&gt;</description>
     <pubDate>Mon, 22 Apr 2013 18:54:44 +0000</pubDate>
 <dc:creator>Jeff Geerling</dc:creator>
 <guid isPermaLink="false">259 at http://www.midwesternmac.com</guid>
  </item>
  <item>
    <title>Fixing Munin's [FATAL ERROR] Lock already exists: /var/run/munin/munin-update.lock. Dying.</title>
    <link>http://www.midwesternmac.com/blogs/jeff-geerling/fixing-munins-fatal-error-lock</link>
    <description>&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even" property="content:encoded"&gt;&lt;p&gt;Recently, I upgraded one of my CentOS and Ubuntu servers to a new version of Munin 2.0.x, and started getting an error stating that munin-update.lock already exists:&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class="codeblock"&gt;&lt;code&gt;2013/03/25 23:11:02 Setting log level to DEBUG&lt;br /&gt;2013/03/25 23:11:02 [DEBUG] Lock /var/run/munin/munin-update.lock already exists, checking process&lt;br /&gt;2013/03/25 23:11:02 [DEBUG] Lock contained pid '10160'&lt;br /&gt;2013/03/25 23:11:02 [DEBUG] kill -0 10160 worked - it is still alive. Locking failed.&lt;br /&gt;2013/03/25 23:11:02 [FATAL ERROR] Lock already exists: /var/run/munin/munin-update.lock. Dying.&lt;br /&gt;2013/03/25 23:11:02  at /usr/lib/perl5/vendor_perl/5.8.8/Munin/Master/Update.pm line 128&lt;/code&gt;&lt;/div&gt;
&lt;p&gt;Munin hadn't been updating for a couple weeks, so I finally deleted the existing munin-update.lock file, and munin started running again. If this doesn't help solve your problem, have a look inside the various munin log files in &lt;code&gt;/var/log/munin/&lt;/code&gt; to see if one of them contains more details as to why munin isn't working for you.&lt;/p&gt;
&lt;p&gt;Also, for some reason, munin 2.x isn't working for me on CentOS 5.x, at least on servers where IPv6 is enabled, unless I manually edit one of the main munin config files. I've opened &lt;a href="http://munin-monitoring.org/ticket/1285#ticket"&gt;this bug&lt;/a&gt; in the munin issue tracker to see if it will be resolved. The errors I get look like the following, inside &lt;code&gt;/var/log/munin/munin-update.log&lt;/code&gt;:&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/midwesternmac/~4/f0etsegyd3w" height="1" width="1"/&gt;</description>
     <pubDate>Fri, 12 Apr 2013 16:17:19 +0000</pubDate>
 <dc:creator>Jeff Geerling</dc:creator>
 <guid isPermaLink="false">254 at http://www.midwesternmac.com</guid>
  </item>
  <item>
    <title>Real User Monitoring (RUM) with Pingdom and Drupal</title>
    <link>http://www.midwesternmac.com/blogs/jeff-geerling/real-user-monitoring-rum</link>
    <description>&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even" property="content:encoded"&gt;&lt;p&gt;&lt;strong&gt;Edit:&lt;/strong&gt; There's a module for that™ now: &lt;a href="http://drupal.org/project/pingdom_rum"&gt;Pingdom RUM&lt;/a&gt;. The information below is for historical context only. Use the module instead, since it makes this a heck of a lot simpler.&lt;/p&gt;
&lt;hr /&gt;&lt;p&gt;&lt;a href="http://royal.pingdom.com/2013/04/11/pingdom-announces-real-user-monitoring-press-release/"&gt;Pingdom&lt;/a&gt; just announced that their Real User Monitoring service is now available for all Pingdom accounts—including monitoring on one site for free accounts!&lt;/p&gt;
&lt;p&gt;This is a great opportunity for you to start making page-specific measurements of page load performance on your Drupal site.&lt;/p&gt;
&lt;p&gt;To get started, log into your Pingdom account (or create one, if you don't have one already), then click on the "RUM" tab. Add a site for Real User Monitoring, and then Pingdom will give you a &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag, which you then need to insert into the markup on your Drupal site's pages.&lt;/p&gt;
&lt;p&gt;The easiest way to do this is to use &lt;code&gt;drupal_add_html_head()&lt;/code&gt; within the &lt;a href="http://api.drupal.org/api/drupal/modules!system!system.api.php/function/hook_page_alter/7"&gt;page_alter hook&lt;/a&gt; (in your theme's template.php, or in a custom module):&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/midwesternmac/~4/izwWSjBMqCo" height="1" width="1"/&gt;</description>
     <pubDate>Thu, 11 Apr 2013 14:33:48 +0000</pubDate>
 <dc:creator>Jeff Geerling</dc:creator>
 <guid isPermaLink="false">258 at http://www.midwesternmac.com</guid>
  </item>
  <item>
    <title>Shuttering isthereamoduleforthat.com</title>
    <link>http://www.midwesternmac.com/blogs/jeff-geerling/shuttering</link>
    <description>&lt;div class="field field-name-body field-type-text-with-summary field-label-hidden"&gt;&lt;div class="field-items"&gt;&lt;div class="field-item even" property="content:encoded"&gt;&lt;p&gt;I registered &lt;a href="http://isthereamoduleforthat.com/"&gt;isthereamoduleforthat.com&lt;/a&gt; on 2010-08-19 for fun—but after three years, and little traffic (besides bots and the occasional Drupal user popping over from an old link), I'm shutting down the site, and will let my domain registration expire.&lt;/p&gt;
&lt;p style="text-align: center;"&gt;&lt;img src="/sites/midwesternmac.com/files/isthereamoduleforthat-dot-com.png" width="425" height="356" alt="Is there a module for that dot com screenshot" /&gt;&lt;/p&gt;
&lt;p&gt;If someone is interested in the domain, let me know how you'd use it in the comments below, and I'll consider transferring it to you instead of letting it expire and a squatter taking over.&lt;/p&gt;
&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/midwesternmac/~4/uZowLNb2dDM" height="1" width="1"/&gt;</description>
     <pubDate>Wed, 10 Apr 2013 16:28:53 +0000</pubDate>
 <dc:creator>Jeff Geerling</dc:creator>
 <guid isPermaLink="false">257 at http://www.midwesternmac.com</guid>
  </item>
  </channel>
</rss>
