<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Grenade Sandwich</title>
 <link href="http://grenadesandwich.com/atom.xml" rel="self"/>
 <link href="http://grenadesandwich.com/"/>
 <updated>2012-01-16T14:41:47-05:00</updated>
 <id>http://grenadesandwich.com/</id>
 <author>
   <name>Steven Merrill</name>
   <email>steven.merrill+feed@gmail.com</email>
 </author>

 
 <entry>
   <title>Bonjour, mes amis!</title>
   <link href="http://grenadesandwich.com/blog/steven/2012/01/16/bonjour-mes-amis"/>
   <updated>2012-01-16T00:00:00-05:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2012/01/16/bonjour-mes-amis</id>
   <content type="html">&lt;p&gt;Apple's &lt;a href=&quot;http://developer.apple.com/library/mac/#documentation/Cocoa/Conceptual/NetServices/Introduction.html#//apple_ref/doc/uid/10000119i&quot;&gt;Bonjour&lt;/a&gt; service just saved me a lot of hassle.&lt;/p&gt;

&lt;p&gt;I took a little time this MLK Day to get some old electronics ready for sale. One of the machines I decided to clean up was an old Mac Pro. I've recently replaced it with a &lt;a href=&quot;http://www.apple.com/macmini/server/&quot;&gt;Mac mini&lt;/a&gt; that positively sips power: 10 - 12 watts at idle instead of the consistent 120 watts that my old Mac Pro would draw. (I'll write more on cutting my setup's power consumption in a later blog post.)&lt;/p&gt;

&lt;p&gt;I hooked my Mac Pro up to my router with an Ethernet cable but didn't want to get out a keyboard, mouse, and monitor to do a final set of backups and deauthorize some software. Normally this wouldn't be a problem since the old Mac Pro was set configured to start Apple Remote Desktop at boot.&lt;/p&gt;

&lt;p&gt;I forgot that since switching to the Mac Pro, I had reassigned the Mac Pro's IP address (192.168.0.150) to the Mac mini. The Mac Pro booted, but could not get a proper IP address since the address it was configured to use was in use.&lt;/p&gt;

&lt;p&gt;I was about to break out my keyboard, mouse, and monitor when I thought I'd give Bonjour a try.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Dude, Where's My Bot?</title>
   <link href="http://grenadesandwich.com/blog/steven/2011/10/05/dude-wheres-my-bot"/>
   <updated>2011-10-05T00:00:00-04:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2011/10/05/dude-wheres-my-bot</id>
   <content type="html">&lt;p&gt;Say what you will about node.js, but it is certainly an easy way to build IRC bots with the &lt;a href=&quot;https://github.com/gf3/Jerk&quot;&gt;Jerk library&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The PHP-based bot that runs in the &lt;a href=&quot;http://www.treehouseagency.com&quot;&gt;Treehouse Agency&lt;/a&gt; IRC channels knows to respond to &quot;Sweet!&quot; with &quot;Dude!&quot; and vice versa. &lt;a href=&quot;http://www.brianmcmurray.com&quot;&gt;Brian McMurray&lt;/a&gt; said that he'd like to someday write a quick-and-dirty bot that would put our other bot into an infinite loop.&lt;/p&gt;

&lt;p&gt;I accepted that challenge, and 10 minutes later, the bot was done.&lt;/p&gt;

&lt;p&gt;The code is an example of how to build a bot that accepts environmental variables for configuration and otherwise does a pretty silly task.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>A PSA: Lion and .local Domain Names</title>
   <link href="http://grenadesandwich.com/blog/steven/2011/09/08/psa-lion-and-local-domain-names"/>
   <updated>2011-09-08T00:00:00-04:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2011/09/08/psa-lion-and-local-domain-names</id>
   <content type="html">&lt;p&gt;Do you enjoy your hair? Would you prefer not to pull it out while waiting for your local Apache server on Mac OS X to deliver a page to you?&lt;/p&gt;

&lt;p&gt;If you use Mac OS X Lion and have development sites set up at .local addresses, you should immediately move them to any other fake TLD. The .local address space is resolved for Bonjour and as a result any request to a .local name will not hit /etc/hosts first, but will search for Bonjour hosts first.&lt;/p&gt;

&lt;p&gt;I found &lt;a href=&quot;http://stackoverflow.com/questions/6841421/mac-osx-lion-dns-lookup-order&quot;&gt;this Stack Exchange question&lt;/a&gt; on the subject tonight after getting frustrated with &lt;strong&gt;curl&lt;/strong&gt; seemingly hanging for several seconds on each request.&lt;/p&gt;

&lt;p&gt;Instead, I switched all of my local dev sites from $DOMAIN.local to $DOMAIN.dev. The results are staggering.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>CentOS 6 and VirtualBox (VBoxHeadless CPU Usage Fix)</title>
   <link href="http://grenadesandwich.com/blog/steven/2011/08/29/centos-6-and-virtualbox"/>
   <updated>2011-08-29T00:00:00-04:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2011/08/29/centos-6-and-virtualbox</id>
   <content type="html">&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; Add &quot;noapic&quot; to your kernel line if your VBoxHeadless process uses far too much CPU.&lt;/p&gt;

&lt;p&gt;I've been working on making &lt;a href=&quot;https://github.com/smerrill/veewee-fun/&quot;&gt;space-efficient CentOS 5.6 and 6 images&lt;/a&gt; for &lt;a href=&quot;http://www.virtualbox.org&quot;&gt;VirtualBox&lt;/a&gt; recently. I'm building the images as part of a pilot program to start using &lt;a href=&quot;http://vagrantup.com&quot;&gt;the Vagrant gem&lt;/a&gt; to allow our developers to test the Drupal code they write on the real production OS before pushing it to the dev server. (I'm also learning Puppet, both for this project and as a way to more easily re-use tested configurations as we launch new sites.)&lt;/p&gt;

&lt;p&gt;The CentOS 5.6 images I made worked like a charm, but ran into a problem wherein the &lt;em&gt;VBoxHeadless&lt;/em&gt; process that hosted my CentOS 6 image would always use 25% CPU on my MacBook Air (one full core) despite the guest OS showing between 98% and 100% idle.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>What Are You Eating?</title>
   <link href="http://grenadesandwich.com/blog/steven/2011/08/17/what-are-you-eating"/>
   <updated>2011-08-17T00:00:00-04:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2011/08/17/what-are-you-eating</id>
   <content type="html">&lt;p&gt;Biking to the George Washington Bridge was just not going to work on the day before Memorial Day. The crowds were too packed in the park on the way up to the GW Bridge, and so I turned around and decided to do a nice brisk ride along the Hudson River Greenway and through Central Park.&lt;/p&gt;

&lt;p&gt;I'm a big guy. I'm currently around 280 pounds, and yet when I ride I tend to be faster than most cyclists on the path by quite a bit. On this particular evening, I pedaled hard up the uphill entry ramp to the Greenway and saw in my rear-view mirror that I had another cyclist who was following pretty closely behind me.&lt;/p&gt;

&lt;p&gt;I shot down the Greenway, passing cyclists and genuinely enjoying the cool breeze and the fresh smell of the Hudson River.  My unknown cycling companion was generally only one or two bike lengths behind me. As much as I love to bike, I do not take it to the level that some folks in New York City do. I don't have a set of &quot;real&quot; biking shorts or a real biking jersey, nor do I have a super-expensive road bike. My anonymous companion, however, did appear to have all these trappings: a bike that looked like it could have been made of carbon fiber and a set of biking shorts and a jersey from some race or event.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Be More Awesome (Please!) : A Tale of Two Browsers</title>
   <link href="http://grenadesandwich.com/blog/steven/2011/06/22/be-more-awesome-please-tale-of-two-browsers"/>
   <updated>2011-06-22T00:00:00-04:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2011/06/22/be-more-awesome-please-tale-of-two-browsers</id>
   <content type="html">&lt;p&gt;When Firefox 4 came out, I switched to it. I was mainly impressed by its speed (relative to the stable version of Chrome at the time) and the efficacy of Firefox Sync.&lt;/p&gt;

&lt;p&gt;Several weeks later, I abandoned it for the stable build of Chrome. There were several things that contributed to its downfall in my eyes. Chief among them was its effect on my battery life on my MacBook Pro. Despite being nearly as fast as Chrome in user-perceived speed, Firefox generally used more CPU. There was also a &lt;a href=&quot;https://bugzilla.mozilla.org/show_bug.cgi?id=567552&quot;&gt;very annoying bug&lt;/a&gt; that resulted in a ton of modal popups.&lt;/p&gt;

&lt;p&gt;About a month back, I switched from the Chrome stable released to the Chrome dev channel and I've been in general very pleased. There's one feature that has been slowly gnawing away at my sanity, however, and it's gotten serious enough that I'm switching back to Firefox 5 to see if my complaints about Firefox 4 have been addressed.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Fuddled API, Verbose Workaround</title>
   <link href="http://grenadesandwich.com/blog/steven/2010/01/09/fuddled-api-verbose-workaround/"/>
   <updated>2010-01-09T00:00:00-05:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2010/01/09/fuddled-api-verbose-workaround</id>
   <content type="html">&lt;p&gt;I've started writing some &lt;a href=&quot;http://scala-lang.org/&quot;&gt;Scala&lt;/a&gt; applications (including one atop the &lt;a href=&quot;http://liftweb.net/&quot;&gt;Lift web framework&lt;/a&gt;) to access &lt;a href=&quot;http://unfuddle.com/docs/api/&quot;&gt;Unfuddle's API&lt;/a&gt; recently. I've mainly been building daily burndown reports for my team at &lt;a href=&quot;http://treehouseagency.com/&quot;&gt;Treehouse Agency&lt;/a&gt;.  I've run into a few issues with API methods not working as advertised, and Unfuddle's been pretty good about fixing most of them.&lt;/p&gt;




&lt;p&gt;The problem &lt;a href=&quot;http://unfuddle.com/community/forums/3/topics/816?page=1#posts-2306&quot;&gt;I've been experiencing as of January 5th&lt;/a&gt; is that Unfuddle has subtly broken authentication for client libraries that (wisely) wait for a 401 error with an accompanying WWW-Authenticate: Basic header before sending credentials.  (Namely, Unfuddle's API stopped sending a WWW-Authenticate header altogether.)  If need be, you can force most HTTP client libraries to send authentication on every request in one way or another, and that's what I had to do tonight with the excellent &lt;a href=&quot;http://databinder.net/dispatch/About&quot;&gt;Databinder Dispatch library&lt;/a&gt;.&lt;/p&gt;


</content>
 </entry>
 
 <entry>
   <title>Python to Scala 2.7: Check Your Spelling</title>
   <link href="http://grenadesandwich.com/blog/steven/2009/11/28/python-scala-27-check-your-spelling/"/>
   <updated>2009-11-27T00:00:00-05:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2009/11/28/python-to-scala-2-7-check-your-spelling</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;/node/10&quot;&gt;Last time out&lt;/a&gt;, I talked about the benefits of &lt;a href=&quot;http://www.scala-lang.org/&quot;&gt;Scala&lt;/a&gt;, and why I'm looking at Scala and &lt;a href=&quot;http://www.liftweb.net/&quot;&gt;Lift&lt;/a&gt;.&lt;/p&gt;




&lt;p&gt;In that spirit, I spent some time last weekend converting Peter Norvig's &lt;a href=&quot;http://norvig.com/spell-correct.html&quot;&gt;simple Python spell-checker&lt;/a&gt; to Scala.  I didn't do this conversion alone; I got some great answers from &lt;a href=&quot;http://dcsobral.blogspot.com/&quot;&gt;Daniel Sobral&lt;/a&gt;, &lt;a href=&quot;http://www.codecommit.com/blog/&quot;&gt;Daniel Spiewak&lt;/a&gt; and finally &lt;A href=&quot;http://dwins.wordpress.com/&quot;&gt;David Winslow&lt;/a&gt; on &lt;a href=&quot;http://stackoverflow.com/questions/1780459/how-can-i-approximate-pythons-or-operator-for-set-comparison-in-scala&quot;&gt;Stack Overflow&lt;/a&gt;. David provided the answer I needed for the best way to implement the matching function in Scala 2.7.&lt;/p&gt;


</content>
 </entry>
 
 <entry>
   <title>Scala, Lift, and the Future</title>
   <link href="http://grenadesandwich.com/blog/steven/2009/11/27/scala-lift-and-future/"/>
   <updated>2009-11-26T00:00:00-05:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2009/11/27/scala-lift-and-the-future</id>
   <content type="html">&lt;p&gt;I've been spending a decent amount of my after-hours time investigating a combination that I think will be part of the future of web programming: the &lt;a href=&quot;http://www.scala-lang.org&quot;&gt;Scala programming language&lt;/a&gt;, and &lt;a href=&quot;http://www.liftweb.net/&quot;&gt;the Lift web framework&lt;/a&gt; on top of it.&lt;/p&gt;


</content>
 </entry>
 
 <entry>
   <title>Everything Old is New Again</title>
   <link href="http://grenadesandwich.com/blog/steven/2009/10/12/everything-old-new-again/"/>
   <updated>2009-10-12T00:00:00-04:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2009/10/12/everything-old-is-new-again</id>
   <content type="html">&lt;p&gt;It's time for my quarterly blogging drive, and to start, here's some information on my ever-increasing need to try out cool web technologies.&lt;/p&gt;


</content>
 </entry>
 
 <entry>
   <title>Need for Speed</title>
   <link href="http://grenadesandwich.com/blog/steven/2009/06/27/need-speed/"/>
   <updated>2009-06-27T00:00:00-04:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2009/06/27/need-for-speed</id>
   <content type="html">&lt;p&gt;I've been doing some pretty exciting things recently with website performance. I always disliked doing IT work in the past, but the challenge of setting a server up to be able to withstand crushing traffic is now quite intriguing to me.&lt;/p&gt;


</content>
 </entry>
 
 <entry>
   <title>Fritz Wunderlich - O Wie Angstlich</title>
   <link href="http://grenadesandwich.com/blog/steven/2009/03/30/fritz-wunderlich-o-wie-angstlich/"/>
   <updated>2009-03-30T00:00:00-04:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2009/03/30/fritz-wunderlich-o-wie-angstlich</id>
   <content type="html">Liquid error: undefined method `gsub' for nil:NilClass</content>
 </entry>
 
 <entry>
   <title>Why I Hate Drupal: Friday the 13th Edition</title>
   <link href="http://grenadesandwich.com/blog/steven/2009/03/13/why-i-hate-drupal-friday-13th-edition/"/>
   <updated>2009-03-13T00:00:00-04:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2009/03/13/why-i-hate-drupal-friday-the-13th-edition</id>
   <content type="html">&lt;p&gt;Now that I'm back from my month-long blog hiatus and from &lt;a href=&quot;http://dc2009.drupalcon.org&quot;&gt;DrupalCon DC 2009&lt;/a&gt;, I&amp;nbsp;thought I'd throw up a little post in the same vein as &lt;a href=&quot;http://walkah.net&quot;&gt;walkah&lt;/a&gt;'s brilliant &lt;a href=&quot;http://walkah.net/blog/walkah/why-i-hate-drupal&quot;&gt;Why I Hate Drupal&lt;/a&gt; talk.&lt;/p&gt;


</content>
 </entry>
 
 <entry>
   <title>An MTA Train at 96th</title>
   <link href="http://grenadesandwich.com/blog/steven/2009/01/31/mta-train-96th/"/>
   <updated>2009-01-31T00:00:00-05:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2009/01/31/an-mta-train-at-96th</id>
   <content type="html">Liquid error: undefined method `gsub' for nil:NilClass</content>
 </entry>
 
 <entry>
   <title>Tree House Flips Out</title>
   <link href="http://grenadesandwich.com/blog/steven/2009/01/24/tree-house-flips-out/"/>
   <updated>2009-01-24T00:00:00-05:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2009/01/24/tree-house-flips-out</id>
   <content type="html">Liquid error: undefined method `gsub' for nil:NilClass</content>
 </entry>
 
 <entry>
   <title>Back to Blogging</title>
   <link href="http://grenadesandwich.com/blog/steven/2009/01/24/back-blogging/"/>
   <updated>2009-01-24T00:00:00-05:00</updated>
   <id>http://grenadesandwich.com/blog/steven/2009/01/24/back-to-blogging</id>
   <content type="html">&lt;p&gt;Welcome to the new (and completely empty) Grenade Sandwich. My name is Steven Merrill, a classical singer and technologist, and I'll be your host.&lt;/p&gt;


</content>
 </entry>
 

</feed>

