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

 <title>powdahound</title>
 <link href="https://powdahound.com//atom.xml" rel="self"/>
 <link href="https://powdahound.com//"/>
 <updated>2023-08-16T19:07:25+00:00</updated>
 <id>https://powdahound.com/</id>
 <author>
   <name>Garret Heaton</name>
   <email></email>
 </author>

 
 <entry>
   <title>Vantage acquires ec2instances.info</title>
   <link href="https://powdahound.com//2021/01/ec2instances-sale/"/>
   <updated>2021-01-08T00:00:00+00:00</updated>
   <id>https://powdahound.com//2021/01/ec2instances-sale</id>
   <content type="html">&lt;p&gt;For &lt;a href=&quot;/2011/03/hosting-a-static-site-on-amazon-s3-ec2instances-info/&quot;&gt;almost a decade&lt;/a&gt; I’ve run a site that helps people compare &lt;a href=&quot;https://aws.amazon.com/ec2/&quot;&gt;Amazon EC2&lt;/a&gt; instances called &lt;a href=&quot;https://ec2instances.info&quot;&gt;ec2instances.info&lt;/a&gt;. Yep, that’s a &lt;a href=&quot;https://en.wikipedia.org/wiki/.info&quot;&gt;.info domain&lt;/a&gt;! It’s essentially a giant spreadsheet of data aggregated from numerous Amazon webpages and APIs.&lt;/p&gt;

&lt;p&gt;In recent years I haven’t been able to give the site much attention, so was very excited when &lt;a href=&quot;https://vantage.sh&quot;&gt;Vantage&lt;/a&gt; reached out about acquiring it. They plan to make improvements in addition to building their impressive cost monitoring dashboard. Check them out at &lt;a href=&quot;https://vantage.sh&quot;&gt;Vantage.sh&lt;/a&gt; or read their &lt;a href=&quot;https://news.ycombinator.com/item?id=25750807&quot;&gt;launch post on Hacker News&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Additional coverage on the &lt;a href=&quot;https://www.vantage.sh/blog/vantage-has-acquired-ec2instances-info&quot;&gt;Vantage blog&lt;/a&gt; and &lt;a href=&quot;https://news.ycombinator.com/item?id=26080571&quot;&gt;Hacker News&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>One for 2017</title>
   <link href="https://powdahound.com//2017/12/one-for-2017/"/>
   <updated>2017-12-31T00:00:00+00:00</updated>
   <id>https://powdahound.com//2017/12/one-for-2017</id>
   <content type="html">&lt;p&gt;Haven’t posted here since the start of 2016, so here’s one before 2017 is officially over. Using &lt;a href=&quot;https://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt; as a platform to power this site seemed cool at the time, but it’s a pain to update.&lt;/p&gt;

&lt;p&gt;Here are my yearly ski movies for the past two seasons. Can’t top the 2014-2015 season with Japan and Alaska though. Did try AK one more time in 2016 but had terrible warm conditions.&lt;/p&gt;

&lt;div class=&quot;video&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/8wpGfozaj7U &quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;div class=&quot;video&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/pqAFGUk9AWc &quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;
</content>
 </entry>
 
 <entry>
   <title>2014-2015 Ski season video</title>
   <link href="https://powdahound.com//2016/01/2014-2015-ski-season-video/"/>
   <updated>2016-01-03T00:00:00+00:00</updated>
   <id>https://powdahound.com//2016/01/2014-2015-ski-season-video</id>
   <content type="html">&lt;p&gt;My yearly ski season video took a long time to finish this year but is finally done. The amount of footage I captured was way more than in past years, and I lost interest in the project during the summer months. But in the end I’m happy with how it turned out. This makes 4 years in a row!&lt;/p&gt;

&lt;p&gt;Last season was horrible for snow on the west coast but trips to Japan and Alaska helped make it an amazing winter. I ended up with 30 days on snow which is more than I’ve had since high-school days!&lt;/p&gt;

&lt;div class=&quot;video&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/UZn6TyM22CM &quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;My favorite part about making these videos is being able to watch the ones from previous years and gauge my progress as a skier. With improvement in mind, here are three goals for this upcoming (in-progress) season:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Be able to consistently land a clean 360. At the end of last season I was still having a lot of trouble getting keeping my weight forward.&lt;/li&gt;
  &lt;li&gt;Ski bigger lines (like AK) with more speed and power. The Blizzard Spurs I just picked up should help give me confidence there unlike the jibby and playful &lt;a href=&quot;http://blistergearreview.com/gear-reviews/2012-2013-line-mr-pollards-opus&quot;&gt;Line Mr Pollard’s Opus&lt;/a&gt; that I’ve been using.&lt;/li&gt;
  &lt;li&gt;No injuries. :)&lt;/li&gt;
&lt;/ol&gt;
</content>
 </entry>
 
 <entry>
   <title>HipCal's 10th Birthday</title>
   <link href="https://powdahound.com//2015/09/hipcals-10th-birthday/"/>
   <updated>2015-09-04T00:00:00+00:00</updated>
   <id>https://powdahound.com//2015/09/hipcals-10th-birthday</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;https://powdahound.com/assets/hipcal_logo.jpg&quot; class=&quot;right&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The first real product I ever worked on, &lt;a href=&quot;http://powdahound.com/2007/07/hipcal-history/&quot;&gt;HipCal.com&lt;/a&gt; was “launched” a decade ago today. I use quotes there because it was a pretty uneventful launch. We uploaded a few hand-selected PHP files to our shared webhost via SmartFTP and then posted a barebones &lt;a href=&quot;http://web.archive.org/web/20070221003735/http://www.hipcal.com/blogs/?p=88&quot;&gt;blog post&lt;/a&gt;. I have no memory of what we did after that, but it certainly didn’t involve pitching tech blogs, posting on social media, or sending out an email blast. I don’t think we even had a way to see how many users had signed up besides manually running a SQL query from the ugly cPanel admin interface our host provided.&lt;/p&gt;

&lt;p&gt;It’s fun to look back on this as a way to measure how much we’ve all learned since that point. Members of the team have since gone on to found &lt;a href=&quot;https://hipchat.com&quot;&gt;HipChat&lt;/a&gt;, &lt;a href=&quot;https://toutapp.com&quot;&gt;ToutApp&lt;/a&gt;, and &lt;a href=&quot;https://www.balancedpayments.com&quot;&gt;Balanced&lt;/a&gt;, among other projects.&lt;/p&gt;

&lt;p&gt;Here’s to the next unpredictable 10 years!&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>2013-2014 Ski season video</title>
   <link href="https://powdahound.com//2015/01/2013-2014-ski-season-video/"/>
   <updated>2015-01-31T00:00:00+00:00</updated>
   <id>https://powdahound.com//2015/01/2013-2014-ski-season-video</id>
   <content type="html">&lt;p&gt;I got my first GoPro, the HERO2, in 2011 and have been using it to record all my ski trips since. Not because I do anything that’s really impressive, but because it’s fun and a great way to review my skiing to look for ways to improve. If you haven’t had the experience of recording something you thought was impressive on video yet, what usually happens is that the footage looks &lt;em&gt;incredibly&lt;/em&gt; boring compared to how it felt at the time you recorded it. A 10 foot cliff looks like a 3 footer on the wide angle lens. Keep that in mind next time you see a POV video that really impresses you: it was far crazier for the person who recorded it.&lt;/p&gt;

&lt;p&gt;Usually I make a season recap video in the fall as a way to get excited about the upcoming year, but this year’s took me longer to finish. Mostly due to laziness, but I also wasn’t too excited about the conditions on any of my trips last year. Hopefully this west coast drought will end soon, though 2014-2015 doesn’t look like the season to make that happen so far.&lt;/p&gt;

&lt;p&gt;Anyway, here’s the video:&lt;/p&gt;

&lt;div class=&quot;video&quot;&gt;&lt;iframe src=&quot;https://www.youtube.com/embed/pu36mNOZAJU &quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href=&quot;http://www.baldface.net/&quot;&gt;Baldface lodge&lt;/a&gt; and &lt;a href=&quot;http://www.skiwhitewater.com/&quot;&gt;Whitewater&lt;/a&gt; in Nelson, BC were the season highlights even though a high-elevation rain event happened the week before I arrived. Hoping for more wintry conditions there this year.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Analysis paralysis and the Node.js ecosystem</title>
   <link href="https://powdahound.com//2015/01/analysis-paralysis-and-the-nodejs-ecosystem/"/>
   <updated>2015-01-22T00:00:00+00:00</updated>
   <id>https://powdahound.com//2015/01/analysis-paralysis-and-the-nodejs-ecosystem</id>
   <content type="html">&lt;p&gt;For the past 5 years &lt;a href=&quot;https://twitter.com/squawsnow&quot;&gt;@SquawSnow&lt;/a&gt; has been sending out a tweet whenever it snows at &lt;a href=&quot;http://squawalpine.com/&quot;&gt;Squaw Valley&lt;/a&gt; (which is not often enough these past few years).&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet&quot; lang=&quot;en&quot;&gt;&lt;p&gt;Saturday, December 20, 2014 — New: 8&amp;quot; at 6200&amp;#39;, 10&amp;quot; at 8000&amp;#39; — Totals: 28&amp;quot;/101&amp;quot;&lt;/p&gt;&amp;mdash; Squaw Snow Updates (@SquawSnow) &lt;a href=&quot;https://twitter.com/SquawSnow/status/546334221917503488&quot;&gt;December 20, 2014&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;This was done by a PHP script that scraped Squaw’s &lt;a href=&quot;http://squawalpine.com/skiing-riding/weather-conditions-webcams/squaw-valley-snowfall-tracker&quot;&gt;snowfall tracker&lt;/a&gt; every hour to check for changes. But last month I was looking to build something “real” in Node and decided that rewriting this script would be a good place to start.&lt;/p&gt;

&lt;h3 id=&quot;node-noob&quot;&gt;Node noob&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;https://powdahound.com/assets/Node.js_logo.svg.png&quot; class=&quot;right&quot; style=&quot;width: 10rem&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’d never built anything in Node before. In fact, the last time I did &lt;a href=&quot;/2007/06/plaxo-30-wap-and-pulse/&quot;&gt;serious JavaScript work&lt;/a&gt; was in the days when we still had to consider IE6 (ugh). But I figured it wouldn’t be too hard to get a basic project set up, especially since I didn’t need the power of a full framework. I was quickly slowed by the ~120,000 &lt;a href=&quot;http://npmjs.org&quot;&gt;npm&lt;/a&gt; packages, multiple async styles (classic callbacks, fibers, ES6 generators), and an overwhelming feeling of choice. These are signs of a rich ecosystem and progress, but I was overcome with &lt;a href=&quot;http://en.wikipedia.org/wiki/Analysis_paralysis&quot;&gt;analysis paralysis&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Analysis paralysis is the state of over-analyzing (or over-thinking) a situation so that a decision or action is never taken, in effect paralyzing the outcome. (&lt;a href=&quot;http://en.wikipedia.org/wiki/Analysis_paralysis&quot;&gt;Wikipedia&lt;/a&gt;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s natural to want to do things “the right way”, and I just kept thinking; Is this package already outdated? Is this random person on GitHub actually maintaining this package? Will X play nicely with Y? What would someone experienced use here? Didn’t I just read something about a &lt;a href=&quot;https://iojs.org/&quot;&gt;fork of Node&lt;/a&gt; that was going to progress &lt;em&gt;even faster&lt;/em&gt;?&lt;/p&gt;

&lt;p&gt;Perhaps this is just typical of all newer languages/frameworks and I had false expectations about Node feeling more mature given its popularity. Turns out that the Node ecosystem poses a challenge for some experts as well:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;It’s easy to see all of these new things flying by, combined with changes to JavaScript itself, and feel completely overwhelmed. To be honest, over the past two years, even as a maintainer of Ember, I have experienced very serious hype fatigue.&lt;/p&gt;

  &lt;p&gt;— Yehuda Katz of Ember.js/jQuery/etc on &lt;a href=&quot;https://news.ycombinator.com/item?id=8679624&quot;&gt;HN&lt;/a&gt; discussing &lt;a href=&quot;http://www.breck-mckye.com/blog/2014/12/the-state-of-javascript-in-2015/&quot;&gt;The State of JavaScript in 2015&lt;/a&gt; (worth a read)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So maybe that’s just the way it’s gonna be. Time to make some choices and start coding.&lt;/p&gt;

&lt;h3 id=&quot;making-choices&quot;&gt;Making choices&lt;/h3&gt;

&lt;p&gt;After a reading a few tutorials and opinions I decided a few things:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;I’d use Node 0.11x invoked with the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--harmony&lt;/code&gt; flag for ES6 for generator support (&lt;a href=&quot;https://github.com/joyent/node/wiki/ES6-%28a.k.a.-Harmony%29-Features-Implemented-in-V8-and-Available-in-Node&quot;&gt;details&lt;/a&gt;). After using &lt;a href=&quot;http://twistedmatrix.com/documents/current/api/twisted.internet.defer.inlineCallbacks.html&quot;&gt;Twisted’s deferred.inlineCallbacks&lt;/a&gt; for years I can’t imagine returning to &lt;a href=&quot;http://callbackhell.com/&quot;&gt;callback hell&lt;/a&gt;. And flow control libraries like &lt;a href=&quot;https://github.com/caolan/async&quot;&gt;async&lt;/a&gt; still feel dirty to me. Language-level support is where it’s at.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://koajs.com/&quot;&gt;Koa&lt;/a&gt; looked like a nice basic web framework to start with.&lt;/li&gt;
  &lt;li&gt;Heroku would make a nice host since they &lt;a href=&quot;https://devcenter.heroku.com/articles/getting-started-with-nodejs&quot;&gt;support Node well&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;it-works&quot;&gt;It works!&lt;/h3&gt;

&lt;p&gt;&lt;img src=&quot;https://powdahound.com/assets/squaw_thumbs_up.jpeg&quot; class=&quot;right&quot; style=&quot;width: 10rem&quot; /&gt;&lt;/p&gt;

&lt;p&gt;And here’s the code: &lt;a href=&quot;https://github.com/powdahound/squawsnow&quot;&gt;https://github.com/powdahound/squawsnow&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It really doesn’t do all that much, so didn’t take too long to put together. The hardest part was probably figuring out which external packages were going to play nicely with ES6 generators/Promises for Koa. There are surely things I’ve done wrong but it’s in the wild and I learned a lot along the way. If this project were of more importance, this might even be &lt;a href=&quot;http://stackoverflow.com/questions/78806/refactor-mercilessly-or-build-one-to-throw-away&quot;&gt;one to throw away&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Now I wonder how things will change before my next Node project…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Winter cleaning</title>
   <link href="https://powdahound.com//2015/01/winter-cleaning/"/>
   <updated>2015-01-20T00:00:00+00:00</updated>
   <id>https://powdahound.com//2015/01/winter-cleaning</id>
   <content type="html">&lt;p&gt;Since 2011 this site has been powered by WordPress running on m1.medium Amazon EC2 instance. It became neglected once &lt;a href=&quot;https://www.hipchat.com&quot;&gt;HipChat&lt;/a&gt; took off and the version of Ubuntu it was running, Natty Narwhal (11.04), stopped being supported on October 2012… Oops! Instead of trying to upgrade the host I figured I’d take the opportunity to simplify things and try out some new tools.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://powdahound.com/assets/jekyll-logo-2x.png&quot; class=&quot;right&quot; style=&quot;width: 10rem&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;from-wordpress-to-jekyll&quot;&gt;From WordPress to Jekyll&lt;/h3&gt;

&lt;p&gt;First off, I really don’t need a beefy database-backed CRM powering the site, so WordPress is out. In its place I’ve chosen &lt;a href=&quot;http://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt;, the static website tool that powers GitHub Pages. &lt;a href=&quot;http://gohugo.io/&quot;&gt;Hugo&lt;/a&gt; also looked appealing but lacks the ecosystem of themes and support that Jekyll has. Since I’d like to spend more time writing for the blog instead of tinkering with it, Jekyll wins. (I’m sure Hugo will catch up in time - it seems like a very well run project.)&lt;/p&gt;

&lt;p&gt;Jekyll is also nicely supported by &lt;a href=&quot;https://pages.github.com/&quot;&gt;GitHub Pages&lt;/a&gt; but I saw &lt;a href=&quot;http://discuss.gohugo.io/t/hosting-amazon-s3-vs-github-gh-pages-vs/340&quot;&gt;scattered&lt;/a&gt; &lt;a href=&quot;http://www.jhsheridan.com/2012/06/25/goodbye-github-pages-hello-amazon-s3/&quot;&gt;complaints&lt;/a&gt; about their CDN settings and limitations placed on Jekyll plugins so have decided to host the content on Amazon S3 instead.&lt;/p&gt;

&lt;p&gt;Ideally I wouldn’t have to worry about deploying site updates to S3 at all, and &lt;a href=&quot;https://travis-ci.org&quot;&gt;Travis CI&lt;/a&gt; is the tool to make that happen. It watches the site’s &lt;a href=&quot;https://github.com/powdahound/powdahound.com&quot;&gt;GitHub repo&lt;/a&gt; for changes and pushes them over to S3 with the help of the &lt;a href=&quot;https://github.com/laurilehmijoki/s3_website&quot;&gt;s3_website&lt;/a&gt; gem. &lt;a href=&quot;http://www.paperplanes.de/2013/8/13/deploying-your-jekyll-blog-to-s3-with-travis-ci.html&quot;&gt;This post&lt;/a&gt; from one of the Travis CI employees shows how easy it is to set up.&lt;/p&gt;

&lt;p&gt;Note to self: &lt;a href=&quot;http://ec2instances.info&quot;&gt;ec2instances.info&lt;/a&gt; would benefit from some Travis CI love as well!&lt;/p&gt;

&lt;h3 id=&quot;over-to-heroku&quot;&gt;Over to Heroku&lt;/h3&gt;

&lt;p&gt;The few other non-static services and sites I hosted have been moved to Heroku and run fine on their free tier.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/powdahound/s3browser&quot;&gt;s3browser&lt;/a&gt;, which powers &lt;a href=&quot;http://files.powdahound.com&quot;&gt;files.powdahound.com&lt;/a&gt;, got some minor updates so it will run nicely on Heroku&lt;/li&gt;
  &lt;li&gt;The nasty PHP script powering &lt;a href=&quot;https://twitter.com/squawsnow&quot;&gt;@SquawSnow&lt;/a&gt; was rewritten as a node.js app (will do a followup post on this)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;simple-and-cheap&quot;&gt;Simple and cheap&lt;/h3&gt;

&lt;p&gt;I now have zero servers to worry about maintaining and will save $60/month in hosting costs. Now to kick off some of the other projects on my list and blog about them so this new setup gets some use!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>My switch from iOS to Android</title>
   <link href="https://powdahound.com//2014/05/my-switch-from-ios-to-android/"/>
   <updated>2014-05-24T00:00:00+00:00</updated>
   <id>https://powdahound.com//2014/05/my-switch-from-ios-to-android</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;https://powdahound.com/assets/Android-versus-iOS-200x112.jpg&quot; class=&quot;right&quot; style=&quot;width: 10rem;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;In early April I ordered a &lt;a href=&quot;http://www.google.com/nexus/5/&quot;&gt;Nexus 5&lt;/a&gt; to replace my two year old iPhone 4s. It’s the first Android device I’ve ever owned so I’ve had to learn a lot of new behaviors. While doing so, I’ve kept a list (in &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.google.android.keep&quot;&gt;Google Keep&lt;/a&gt;) of anything that I’ve found to be noticeably better or worse than iOS. Lots of my iOS-only friends have been surprised to hear about many of the differences so I’m including it here with comments added. It should also be fun to read in a few years when all of this is horribly outdated.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better on Android / Nexus 5&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Voice interaction - I hardly used Siri on my iPhone but use the “&lt;a href=&quot;https://support.google.com/websearch/answer/2940021?hl=en&quot;&gt;OK Google&lt;/a&gt;” features all the time on my Nexus. It’s easier to start using (you just say “OK Google”) and it very rarely misinterprets what I say.&lt;/li&gt;
  &lt;li&gt;Notifications list - On Android, the notifications in the top-of-screen pulldown can have action buttons on them, show rich content like images, intelligently group by app (yet stay in chronological order), and are just more useful than on iOS.&lt;/li&gt;
  &lt;li&gt;Home screens / icons - Being able to place app icons wherever you want is great. And being able to entirely remove icons you don’t want is even better. There’s no need to make that “Unused” folder on Android that you stick the Stocks/Video/Compass/etc apps in. Instead, any apps you don’t have represented on your screen can be found in a big Launchpad-like menu.&lt;/li&gt;
  &lt;li&gt;There’s a “+1” button when you have a timer running which just adds 60 seconds. I use this a lot, especially when grilling. :)&lt;/li&gt;
  &lt;li&gt;Permanent buttons at the bottom of the screen for “back” and “switch apps”. It’s great to have a back button in such an easy to hit location (instead of iOS’ top left buttons) and it works the same way in almost all apps so you don’t have to learn specific behavior. And the app switcher button is so much easier to hit than double-tapping the iOS home button. I find myself using it much more often.&lt;/li&gt;
  &lt;li&gt;Google Apps are better. Not too surprising. But since I use them a lot, this makes a big improvement to my daily usage.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Better on iOS / iPhone&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Notifications show up on the lock screen. On Android the phone will make noise or beep but you still have to tap a button to turn it on, then swipe down the top menu to see the contents. It’s a real pain, especially if someone texts you while you’re doing something else (video games, cooking, etc) and you can’t simply glance over at your phone and see what’s up.&lt;/li&gt;
  &lt;li&gt;Home button on the front of the phone. On the Nexus the on/off button is on the side which makes it far harder to hit quickly with one hand. It also has the added benefit of helping you glance at your phone and understand which way its facing. I end up picking up my Nexus upside down all the time.&lt;/li&gt;
  &lt;li&gt;Bottom swipe menu gives quick access to flashlight/camera/etc. On Android you can get access to some stuff from an icon in the top swipe menu, but there’s no flashlight option built in.&lt;/li&gt;
  &lt;li&gt;App quality. Looking for apps in the Play store reminds me of browsing for Windows shareware in the early 2000s. There are lots of crappy options full of ads that make it harder to find the good stuff.&lt;/li&gt;
  &lt;li&gt;Battery percentage in the toolbar. You have to install a special Android app to get this, and even then it ends up showing on the top left, not top right. Feels awkward.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There’s a lot of other random stuff I prefer on one phone or the other, but overall I am much happier being on the new setup. Of course, upgrading from two year old hardware was going to be a big improvement either way.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Five years of HipChat</title>
   <link href="https://powdahound.com//2014/01/five-years-of-hipchat/"/>
   <updated>2014-01-30T00:00:00+00:00</updated>
   <id>https://powdahound.com//2014/01/five-years-of-hipchat</id>
   <content type="html">&lt;p&gt;Last week marked the 4th anniversary of &lt;a href=&quot;https://www.hipchat.com&quot;&gt;HipChat&lt;/a&gt;’s &lt;a href=&quot;http://blog.hipchat.com/2010/01/25/later-beta-hipchat-is-open-to-the-public/&quot;&gt;launch&lt;/a&gt;. We started prototyping it about a year before that which means that I’ve been focused on HipChat for about five years. That’s longer than college or any previous jobs I’ve had, though it certainly doesn’t feel like it. We’ve grown tremendously as a &lt;a href=&quot;http://blog.hipchat.com/category/releases/&quot;&gt;product&lt;/a&gt; and &lt;a href=&quot;https://www.hipchat.com/about&quot;&gt;team&lt;/a&gt; since &lt;a href=&quot;http://blog.hipchat.com/2012/03/07/weve-been-acquired-by-atlassian/&quot;&gt;joining Atlassian&lt;/a&gt; almost two years ago and 2014 is shaping up to be our most exciting yet!&lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/office1.jpg&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;Our tiny office in 2010 (Sunnyvale, CA)&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
</content>
 </entry>
 
 <entry>
   <title>Steve Jobs on the bottom line</title>
   <link href="https://powdahound.com//2012/10/steve-jobs-on-the-bottom-line/"/>
   <updated>2012-10-11T00:00:00+00:00</updated>
   <id>https://powdahound.com//2012/10/steve-jobs-on-the-bottom-line</id>
   <content type="html">&lt;blockquote&gt;
  &lt;p&gt;Jobs: We’ve been having record quarter after record quarter, so we’re very pleased with how the company’s doing. And, uh, you know, Wall Street, I’ve never been able to figure out Wall Street. &lt;strong&gt;But someone once told me manage the top line, which is, your strategy, your talented people, and your execution, and the bottom line will take care of itself. And I’ve always found that to be the case.&lt;/strong&gt; So, we’re turning in record quarter after record quarter, and Wall Street eventually comes out in the right place.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;iframe src=&quot;http://www.youtube.com/embed/RSSLbpyhMFg?feature=player_detailpage#t=165s&quot; frameborder=&quot;0&quot; width=&quot;640&quot; height=&quot;360&quot;&gt;&lt;/iframe&gt;
</content>
 </entry>
 
 <entry>
   <title>Formatting JSON on the command line</title>
   <link href="https://powdahound.com//2011/03/formatting-json-on-the-command-line/"/>
   <updated>2011-03-15T00:00:00+00:00</updated>
   <id>https://powdahound.com//2011/03/formatting-json-on-the-command-line</id>
   <content type="html">&lt;p&gt;If you ever work with JSON on the command line, try out the json_reformat tool included in &lt;a href=&quot;http://packages.ubuntu.com/lucid/yajl-tools&quot;&gt;yajl-tools&lt;/a&gt; package (or install from &lt;a href=&quot;http://lloyd.github.com/yajl/&quot;&gt;source&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Without json_reformat&lt;/strong&gt;&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;curl http://github.com/api/v2/json/user/show/powdahound
&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;user&quot;&lt;/span&gt;:&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;&quot;gravatar_id&quot;&lt;/span&gt;:&lt;span class=&quot;s2&quot;&gt;&quot;d5894734b9f67c07b276319fdc2e5d88&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;company&quot;&lt;/span&gt;:&lt;span class=&quot;s2&quot;&gt;&quot;HipChat&quot;&lt;/span&gt;,
&lt;span class=&quot;s2&quot;&gt;&quot;name&quot;&lt;/span&gt;:&lt;span class=&quot;s2&quot;&gt;&quot;Garret Heaton&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;created_at&quot;&lt;/span&gt;:&lt;span class=&quot;s2&quot;&gt;&quot;2009/04/04 08:36:09 -0700&quot;&lt;/span&gt;,
&lt;span class=&quot;s2&quot;&gt;&quot;location&quot;&lt;/span&gt;:&lt;span class=&quot;s2&quot;&gt;&quot;Sunnyvale, CA&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;public_repo_count&quot;&lt;/span&gt;:18,&lt;span class=&quot;s2&quot;&gt;&quot;public_gist_count&quot;&lt;/span&gt;:67,
&lt;span class=&quot;s2&quot;&gt;&quot;blog&quot;&lt;/span&gt;:&lt;span class=&quot;s2&quot;&gt;&quot;http://powdahound.com&quot;&lt;/span&gt;,&lt;span class=&quot;s2&quot;&gt;&quot;following_count&quot;&lt;/span&gt;:8,&lt;span class=&quot;s2&quot;&gt;&quot;id&quot;&lt;/span&gt;:70472,&lt;span class=&quot;s2&quot;&gt;&quot;type&quot;&lt;/span&gt;:&lt;span class=&quot;s2&quot;&gt;&quot;User&quot;&lt;/span&gt;,
&lt;span class=&quot;s2&quot;&gt;&quot;permission&quot;&lt;/span&gt;:null,&lt;span class=&quot;s2&quot;&gt;&quot;followers_count&quot;&lt;/span&gt;:7,&lt;span class=&quot;s2&quot;&gt;&quot;login&quot;&lt;/span&gt;:&lt;span class=&quot;s2&quot;&gt;&quot;powdahound&quot;&lt;/span&gt;,
&lt;span class=&quot;s2&quot;&gt;&quot;email&quot;&lt;/span&gt;:&lt;span class=&quot;s2&quot;&gt;&quot;powdahound@gmail.com&quot;&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;}}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;&lt;strong&gt;With json_reformat&lt;/strong&gt;&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;curl &lt;span class=&quot;nt&quot;&gt;-s&lt;/span&gt; http://github.com/api/v2/json/user/show/powdahound | json_reformat
&lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
  &lt;span class=&quot;s2&quot;&gt;&quot;user&quot;&lt;/span&gt;: &lt;span class=&quot;o&quot;&gt;{&lt;/span&gt;
    &lt;span class=&quot;s2&quot;&gt;&quot;gravatar_id&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;d5894734b9f67c07b276319fdc2e5d88&quot;&lt;/span&gt;,
    &lt;span class=&quot;s2&quot;&gt;&quot;company&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;HipChat&quot;&lt;/span&gt;,
    &lt;span class=&quot;s2&quot;&gt;&quot;name&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;Garret Heaton&quot;&lt;/span&gt;,
    &lt;span class=&quot;s2&quot;&gt;&quot;created_at&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;2009/04/04 08:36:09 -0700&quot;&lt;/span&gt;,
    &lt;span class=&quot;s2&quot;&gt;&quot;location&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;Sunnyvale, CA&quot;&lt;/span&gt;,
    &lt;span class=&quot;s2&quot;&gt;&quot;public_repo_count&quot;&lt;/span&gt;: 18,
    &lt;span class=&quot;s2&quot;&gt;&quot;public_gist_count&quot;&lt;/span&gt;: 67,
    &lt;span class=&quot;s2&quot;&gt;&quot;blog&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;http://powdahound.com&quot;&lt;/span&gt;,
    &lt;span class=&quot;s2&quot;&gt;&quot;following_count&quot;&lt;/span&gt;: 8,
    &lt;span class=&quot;s2&quot;&gt;&quot;id&quot;&lt;/span&gt;: 70472,
    &lt;span class=&quot;s2&quot;&gt;&quot;type&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;User&quot;&lt;/span&gt;,
    &lt;span class=&quot;s2&quot;&gt;&quot;permission&quot;&lt;/span&gt;: null,
    &lt;span class=&quot;s2&quot;&gt;&quot;followers_count&quot;&lt;/span&gt;: 7,
    &lt;span class=&quot;s2&quot;&gt;&quot;login&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;powdahound&quot;&lt;/span&gt;,
    &lt;span class=&quot;s2&quot;&gt;&quot;email&quot;&lt;/span&gt;: &lt;span class=&quot;s2&quot;&gt;&quot;powdahound@gmail.com&quot;&lt;/span&gt;
  &lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;}&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;So much nicer!&lt;/p&gt;

&lt;p&gt;It will even tell you if there are syntax syntax errors (as will json_verify).&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Hosting a static site on Amazon S3: ec2instances.info</title>
   <link href="https://powdahound.com//2011/03/hosting-a-static-site-on-amazon-s3-ec2instances-info/"/>
   <updated>2011-03-10T00:00:00+00:00</updated>
   <id>https://powdahound.com//2011/03/hosting-a-static-site-on-amazon-s3-ec2instances-info</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/awslogo-500x250.png&quot; alt=&quot;&quot; /&gt;Amazon added the ability to &lt;a href=&quot;http://aws.typepad.com/aws/2011/02/host-your-static-website-on-amazon-s3.html&quot;&gt;host static sites on S3&lt;/a&gt; recently so to try it out I made a small site comparing the different types of EC2 instances: &lt;a href=&quot;http://www.ec2instances.info&quot;&gt;www.ec2instances.info&lt;/a&gt;. It’s not much of a site but it was the only thing in my ideas list that didn’t require some sort of database backend.&lt;/p&gt;

&lt;p&gt;The setup was very simple:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Buy the domain (&lt;a href=&quot;http://name.com/&quot;&gt;name.com&lt;/a&gt; is so much nicer than GoDaddy by the way).&lt;/li&gt;
  &lt;li&gt;Point domain’s nameservers at my &lt;a href=&quot;http://slicehost.com/&quot;&gt;slicehost&lt;/a&gt; account.&lt;/li&gt;
  &lt;li&gt;Add a new DNS domain in slicehost and add a single CNAME record with a name of ‘www’ and data of ‘s3-website-us-east-1.amazonaws.com.’&lt;/li&gt;
  &lt;li&gt;Install the latest &lt;a href=&quot;http://cyberduck.ch&quot;&gt;Cyberduck&lt;/a&gt; (Mac). Windows users can use one of the tools &lt;a href=&quot;http://aws.typepad.com/aws/2011/02/host-your-static-website-on-amazon-s3.html&quot;&gt;here&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Create a new S3 bucket called ‘www.ec2instances.info’ and &lt;a href=&quot;http://trac.cyberduck.ch/wiki/help/en/howto/s3#WebsiteConfiguration&quot;&gt;configure it for static site hosting&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Upload all my files and &lt;a href=&quot;http://trac.cyberduck.ch/wiki/help/en/howto/s3#AccessControlACL&quot;&gt;change their permissions&lt;/a&gt; to make them readable by everyone.&lt;/li&gt;
  &lt;li&gt;Done!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Updating the site is easy - just select the file in Cyberduck and click the ‘Edit’ icon in the toolbar (or hit ⌘K) and it will automatically upload the file whenever you save. If I needed a real deploy system it’d be pretty easy to whip up something with &lt;a href=&quot;http://docs.fabfile.org/en/1.0.0/index.html&quot;&gt;Fabric&lt;/a&gt; and &lt;a href=&quot;http://code.google.com/p/boto/&quot;&gt;Boto&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Overall it seems like a great way to host a static site on the cheap (~$1.50/year for this). The only real downside is that you can’t have your root domain hit the bucket because a CNAME must be used. This means that &lt;a href=&quot;http://ec2instances.info&quot;&gt;ec2instances.info&lt;/a&gt; does not resolve properly. More details &lt;a href=&quot;https://forums.aws.amazon.com/thread.jspa?messageID=228100&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Note: I tried to use Amazon’s new &lt;a href=&quot;http://aws.amazon.com/route53/&quot;&gt;Route 53&lt;/a&gt; DNS service instead of my slicehost account but &lt;a href=&quot;http://dmz.us/2010/12/amazon-route-53-dns/&quot;&gt;the configuration&lt;/a&gt; is still a bit more involved than I’d like. Hopefully they’ll add it to the AWS web console soon.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>GitHub is Making Me Lazy But I Like It</title>
   <link href="https://powdahound.com//2010/10/github-is-making-me-lazy-but-i-like-it/"/>
   <updated>2010-10-15T00:00:00+00:00</updated>
   <id>https://powdahound.com//2010/10/github-is-making-me-lazy-but-i-like-it</id>
   <content type="html">&lt;p&gt;&lt;em&gt;(This is a repost from the &lt;a href=&quot;https://blog.hipchat.com/2010/10/15/github-is-making-me-lazy-but-i-like-it/&quot;&gt;HipChat Blog&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Open source projects depend on community cooperation. Successful projects have a healthy group of individuals and companies submitting code, writing documentation, and testing new features. Unfortunately it’s not always easy to contribute because different projects will use different bug trackers, version control systems, and approval processes. Package maintainers also have a hard time handling all the incoming patches in a timely manner which frustrates the contributors.&lt;/p&gt;

&lt;p&gt;In 2005 Linus Torvalds created the &lt;a href=&quot;http://git-scm.com/&quot;&gt;Git&lt;/a&gt; version control system in order to solve problems he was having dealing with patches to the Linux kernel. A few years later &lt;a href=&quot;http://github.com/&quot;&gt;GitHub&lt;/a&gt; came along with a nice web interface on top of Git, making it trivially easy to &lt;a href=&quot;http://help.github.com/forking/&quot;&gt;fork&lt;/a&gt;, patch, and &lt;a href=&quot;http://help.github.com/pull-requests/&quot;&gt;contribute&lt;/a&gt; to projects hosted there. The standardized wiki and issue tracker features mean that many projects are setup in the same way. Once you learn how to contribute to one project on GitHub you know how to commit to all of them.&lt;/p&gt;

&lt;p&gt;Unfortunately GitHub makes it so easy that I’ve found myself becoming lazy. It feels a lot harder to contribute to non-GitHub projects because it often requires signing up for their custom bug tracker, learning the patch process, and waiting longer before the patch is accepted. That extra friction is sometimes enough to prevent me from submitting a fix, and that’s not good for the project.&lt;/p&gt;

&lt;p&gt;Ease of contribution is clearly an important factor for open source and other community-driven projects (just look at Wikipedia). As GitHub continues to grow, are more projects going to feel pressure to switch? I think they will, and I’m looking forward to it. Better software is good for everyone.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Hey Smart Guy - Stop Trying To Do It Yourself</title>
   <link href="https://powdahound.com//2010/09/hey-smart-guy-stop-trying-to-do-it-yourself/"/>
   <updated>2010-09-13T00:00:00+00:00</updated>
   <id>https://powdahound.com//2010/09/hey-smart-guy-stop-trying-to-do-it-yourself</id>
   <content type="html">&lt;p&gt;&lt;em&gt;(This is a repost from the &lt;a href=&quot;https://blog.hipchat.com/2010/09/13/hey-smart-guy-stop-trying-to-do-it-yourself/&quot;&gt;HipChat Blog&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When we’re at conferences and meetups there are always a few people who come up to us (probably because of our awesome shirts), hear what HipChat is, and say “Couldn’t I just setup my own Jabber or IRC server for free?”&lt;/p&gt;

&lt;p&gt;“Yeah, but you wouldn’t get the slick UI, drag-and-drop file sharing, searchable history, and all that. Plus, you’d have to manage the system and teach people how to use it.”&lt;/p&gt;

&lt;p&gt;For some reason these points never resonate with this type of person. Solving 10% of a problem by themselves is good enough. What they don’t realize is that people are very willing to pay for the convenience of a hosted service and the things that come with it: a cleaner and more consistent interface, support, frequent updates, and peace of mind. I imagine many startups run into this type of response at some point. Here’s how a DIY mind may have responded to some services which are now very successful:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Cloud computing – “Couldn’t I just buy a cheap machine and stick it in a colo?”&lt;/li&gt;
  &lt;li&gt;Flickr – “But I could build my own photo gallery using PHP in 20 minutes!”&lt;/li&gt;
  &lt;li&gt;GitHub – “But git is open source software. Why would I pay you when I can just run it locally?”&lt;/li&gt;
  &lt;li&gt;Google Apps – “Can’t I just run my own Postfix server and set up Horde?”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d like to challenge all you do-it-yourselfers to think about the problems you’re capable of solving and how many people could benefit from the solution. If it’s a fair number of them you probably have a great idea for a startup. There are a ton of people and companies out there. Sure it’s fun to solve problems yourself, and it’s a great way to learn, but keep your mind open. There’s always room for improvement and that’s a great way to make money.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Use git-hooks to make sure you never check in ugly code again</title>
   <link href="https://powdahound.com//2010/08/use-git-hooks-to-make-sure-you-never-check-in-ugly-code-again/"/>
   <updated>2010-08-08T00:00:00+00:00</updated>
   <id>https://powdahound.com//2010/08/use-git-hooks-to-make-sure-you-never-check-in-ugly-code-again</id>
   <content type="html">&lt;p&gt;The &lt;a href=&quot;http://github.com/icefox/git-hooks&quot;&gt;git-hooks&lt;/a&gt; project provides a way to run git hooks locally before you check in your code. This is especially useful if your code is hosted on &lt;a href=&quot;http://github.com&quot;&gt;GitHub&lt;/a&gt; because you don’t have access to install server side hooks.&lt;/p&gt;

&lt;p&gt;From the README:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Hooks can be very powerful and useful.  Some common hooks include:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;Spell check the commit message.&lt;/li&gt;
    &lt;li&gt;Check that the code builds.&lt;/li&gt;
    &lt;li&gt;Verify that any new files contain a copyright with the current year in it.&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;Hooks can be very project specific such as:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;Verify that the project still builds&lt;/li&gt;
    &lt;li&gt;Verify that autotests matching the modified files still pass with no errors.&lt;/li&gt;
    &lt;li&gt;Pre-populate the commit message with the ‘standard’ format.&lt;/li&gt;
    &lt;li&gt;Verify that any new code follows the ‘standard’ coding style.&lt;/li&gt;
  &lt;/ul&gt;

  &lt;p&gt;or very specific to one person such as:&lt;/p&gt;

  &lt;ul&gt;
    &lt;li&gt;Don’t allow a push to a remote repository after 1am in case I break something and will be asleep.&lt;/li&gt;
    &lt;li&gt;Don’t let me commit between 9-5 for projects in ~/personal/ as I shouldn’t be working on them during work hours.&lt;/li&gt;
  &lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;I wrote some hooks for &lt;a href=&quot;http://github.com/powdahound/git-hooks/blob/master/contrib/pre-commit/php_syntax&quot;&gt;checking PHP syntax&lt;/a&gt; and checking Python files using &lt;a href=&quot;http://github.com/powdahound/git-hooks/blob/master/contrib/pre-commit/python_pep8&quot;&gt;PEP-8&lt;/a&gt; and &lt;a href=&quot;http://github.com/powdahound/git-hooks/blob/master/contrib/pre-commit/python_pyflakes&quot;&gt;PyFlakes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hopefully they’ll integrate this functionality into the git core at some point.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Perform a command serially in Capistrano</title>
   <link href="https://powdahound.com//2010/07/perform-a-command-serially-in-capistrano/"/>
   <updated>2010-07-31T00:00:00+00:00</updated>
   <id>https://powdahound.com//2010/07/perform-a-command-serially-in-capistrano</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.capify.org&quot;&gt;Capistrano&lt;/a&gt; is a great tool for doing software deployments and other system maintenance tasks (although for anything larger, I’d recommend &lt;a href=&quot;http://wiki.opscode.com/display/chef/Home&quot;&gt;Chef&lt;/a&gt;).  One small Capistrano issue I ran into this week is that there’s no way to run a command in serial across multiple machines (commands are always &lt;a href=&quot;http://www.capify.org/index.php/Run&quot;&gt;run&lt;/a&gt; in parallel). You might want to do this if you need to make sure that at least one service in a group is available at all times, or if the service restarting is going to put some load on another resource such as a database.&lt;/p&gt;

&lt;p&gt;Here’s the solution I came up with:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ruby&quot; data-lang=&quot;ruby&quot;&gt;&lt;span class=&quot;n&quot;&gt;desc&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Do a rolling restart of &amp;lt;service&amp;gt;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;deploy&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;task&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:restart&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;hosts&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;self&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;roles&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:server&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;to_ary&lt;/span&gt; &lt;span class=&quot;c1&quot;&gt;# change :server to your role&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;num_hosts&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hosts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;size&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;hosts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;each_with_index&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;host&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;
    &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Restarting &amp;lt;service&amp;gt; on &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;host&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; (&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;i&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;+&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt; of &lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;num_hosts&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;s2&quot;&gt;)&quot;&lt;/span&gt;
    &lt;span class=&quot;n&quot;&gt;sudo&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/etc/init.d/&amp;lt;sevice&amp;gt; restart&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:hosts&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;host&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;i&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;num_hosts&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt;
      &lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;Waiting 3s before next host.&quot;&lt;/span&gt;
      &lt;span class=&quot;nb&quot;&gt;sleep&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

</content>
 </entry>
 
 <entry>
   <title>Email alerts for PHP errors via SEC</title>
   <link href="https://powdahound.com//2010/07/email-alerts-for-php-errors-via-sec/"/>
   <updated>2010-07-23T00:00:00+00:00</updated>
   <id>https://powdahound.com//2010/07/email-alerts-for-php-errors-via-sec</id>
   <content type="html">&lt;p&gt;Production systems should always have PHP’s &lt;a href=&quot;http://www.php.net/manual/en/errorfunc.configuration.php#ini.display-errors&quot;&gt;display_errors&lt;/a&gt; disabled and &lt;a href=&quot;http://www.php.net/manual/en/errorfunc.configuration.php#ini.log-errors&quot;&gt;log_errors&lt;/a&gt; enabled so errors are logged instead of displayed to users. Of course, you’ll want a to be notified when errors happen and that’s where a nifty tool called &lt;a href=&quot;http://simple-evcorr.sourceforge.net/&quot;&gt;SEC&lt;/a&gt; (Simple Event Correlator) comes in. It’s not very sexy, but its incredibly powerful and can be used for all sorts of log watching tasks.&lt;/p&gt;

&lt;p&gt;Here are some helpful guides for getting started:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://sixshooter.v6.thrupoint.net/SEC-examples/article.html&quot;&gt;Working with SEC- the Simple Event Correlator&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://arstechnica.com/open-source/news/2005/05/linux-20050519.ars&quot;&gt;&lt;/a&gt;&lt;a href=&quot;http://arstechnica.com/open-source/news/2005/05/linux-20050519.ars&quot;&gt;Monitoring with Simple Event Correlator&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.estpak.ee/~risto/sec/sec.pl.html&quot;&gt;sec man page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At &lt;a href=&quot;http://www.hipchat.com&quot;&gt;HipChat&lt;/a&gt; we use a config like the following to to monitor Apache’s error_log for PHP errors and send us emails:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-text&quot; data-lang=&quot;text&quot;&gt;# Capture error lines and store them in apache-php-errors
type=Single
ptype=RegExp
pattern=^\[.+\] \[error\] \[client .+\] PHP .+$
desc=PHP error or warning
action=add apache-php-errors $0

# Report errors every minute if apache-php-errors is set
type=Calendar
time=* * * * *
desc=Mail web errors
context=apache-php-errors
action=report apache-php-errors /usr/bin/mail -s &quot;PHP errors&quot; alerts@company.com; delete apache-php-errors;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Assuming you put this config in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/sec/apache.conf&lt;/code&gt; you’d run:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;sec &lt;span class=&quot;nt&quot;&gt;--conf&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;/etc/sec/apache.conf &lt;span class=&quot;nt&quot;&gt;--input&lt;/span&gt; /var/log/apache2/error_log&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Try writing a few of your own rules (the –debug flag is very helpful) or the examples in the tutorials above. SEC is incredibly powerful and can make complex monitoring tasks very simple.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>2010 ski movie trailers</title>
   <link href="https://powdahound.com//2010/07/2010-ski-movie-trailers/"/>
   <updated>2010-07-20T00:00:00+00:00</updated>
   <id>https://powdahound.com//2010/07/2010-ski-movie-trailers</id>
   <content type="html">&lt;p&gt;Trailers for the 2010 ski movies are starting to land! Here’s what I’ve found so far:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://level1productions.com/&quot;&gt;Level 1 Productions&lt;/a&gt; - Eye Trip&lt;/strong&gt;&lt;/p&gt;

&lt;object width=&quot;601&quot; height=&quot;338&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=12966778&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=c9ff23&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=12966778&amp;amp;server=vimeo.com&amp;amp;show_title=0&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=c9ff23&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;601&quot; height=&quot;338&quot; /&gt;&amp;lt;/embed&amp;gt;&lt;/object&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.skimovie.com/ target=&quot;&gt;Matchstick Productions&lt;/a&gt; - The Way I See It&lt;/strong&gt;&lt;/p&gt;

&lt;object classid=&quot;clsid:d27cdb6e-ae6d-11cf-96b8-444553540000&quot; width=&quot;640&quot; height=&quot;385&quot; codebase=&quot;http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0&quot;&gt;&lt;param name=&quot;allowFullScreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;src&quot; value=&quot;http://www.youtube.com/v/KZDbhH8Cw0o&amp;amp;hl=en_US&amp;amp;fs=1&quot; /&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;embed type=&quot;application/x-shockwave-flash&quot; width=&quot;640&quot; height=&quot;385&quot; src=&quot;http://www.youtube.com/v/KZDbhH8Cw0o&amp;amp;hl=en_US&amp;amp;fs=1&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; /&gt;&amp;lt;/embed&amp;gt;&lt;/object&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.poorboyz.com/&quot;&gt;Poor Boyz Productions&lt;/a&gt; - Revolver&lt;/strong&gt;&lt;/p&gt;

&lt;object width=&quot;640&quot; height=&quot;385&quot;&gt;&lt;param name=&quot;allowfullscreen&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;allowscriptaccess&quot; value=&quot;always&quot; /&gt;&lt;param name=&quot;movie&quot; value=&quot;http://vimeo.com/moogaloop.swf?clip_id=13841780&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; /&gt;&lt;embed src=&quot;http://vimeo.com/moogaloop.swf?clip_id=13841780&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1&quot; type=&quot;application/x-shockwave-flash&quot; allowfullscreen=&quot;true&quot; allowscriptaccess=&quot;always&quot; width=&quot;640&quot; height=&quot;385&quot; /&gt;&amp;lt;/embed&amp;gt;&lt;/object&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.tetongravity.com/&quot;&gt;Teton Gravity Research&lt;/a&gt; - Light the Wick&lt;/strong&gt;&lt;/p&gt;

&lt;embed src=&quot;http://www.tetongravity.com/jw/embedplayer.swf&quot; width=&quot;460&quot; height=&quot;279&quot; allowscriptaccess=&quot;always&quot; allowfullscreen=&quot;true&quot; flashvars=&quot;file=http://media2.kickapps.com/videos/1153476.mp4&amp;#038;image=http://media.kickstatic.com/kickapps/images/75233/photos/VIDEO_1153476_75233_4385701_ap.jpg&amp;#038;plugins=embed-1&amp;#038;embed.code=+%3cembed+src%3d%22http%3a%2f%2fwww.tetongravity.com%2fjw%2fembedplayer.swf%22+width%3d%22460%22+height%3d%22279%22+allowscriptaccess%3d%22always%22+allowfullscreen%3d%22true%22+flashvars%3d%22file%3dhttp%3a%2f%2fmedia2.kickapps.com%2fvideos%2f1153476.mp4%26image%3dhttp%3a%2f%2fmedia.kickstatic.com%2fkickapps%2fimages%2f75233%2fphotos%2fVIDEO_1153476_75233_4385701_ap.jpg%26plugins%3dembed-1%22%2f%3e&quot; /&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;http://www.skinet.com/warrenmiller/&quot;&gt;Warren Miller&lt;/a&gt; - Session #61&lt;/strong&gt;&lt;/p&gt;

&lt;script language=&quot;JavaScript&quot; type=&quot;text/javascript&quot; src=&quot;http://admin.brightcove.com/js/BrightcoveExperiences.js&quot;&gt;&lt;/script&gt;
&lt;object id=&quot;myExperience77703970001&quot; class=&quot;BrightcoveExperience&quot;&gt;&lt;param name=&quot;bgcolor&quot; value=&quot;#FFFFFF&quot; /&gt;&lt;param name=&quot;width&quot; value=&quot;640&quot; /&gt;&lt;param name=&quot;height&quot; value=&quot;380&quot; /&gt;&lt;param name=&quot;playerID&quot; value=&quot;37654312001&quot; /&gt;&lt;param name=&quot;publisherID&quot; value=&quot;1276222402&quot; /&gt;&lt;param name=&quot;isVid&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;isUI&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;dynamicStreaming&quot; value=&quot;true&quot; /&gt;&lt;param name=&quot;@videoPlayer&quot; value=&quot;77703970001&quot; /&gt;&lt;param name=&quot;autoStart&quot; value=&quot;false&quot; /&gt;&lt;/object&gt;
&lt;p&gt;&lt;br /&gt;
&lt;script type=&quot;text/javascript&quot;&gt;brightcove.createExperiences();&lt;/script&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Dynamic hosts file using Chef</title>
   <link href="https://powdahound.com//2010/07/dynamic-hosts-file-using-chef/"/>
   <updated>2010-07-18T00:00:00+00:00</updated>
   <id>https://powdahound.com//2010/07/dynamic-hosts-file-using-chef</id>
   <content type="html">&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This post is quite old. There are probably better methods for this now.&lt;/p&gt;

&lt;p&gt;There are a number of ways to setup your infrastructure so that you can refer to machines by hostname. I currently prefer the “dynamically generated &lt;a href=&quot;http://en.wikipedia.org/wiki/Hosts_(file)&quot;&gt;hosts file&lt;/a&gt;” approach because it’s simple to understand and setting up a DNS server is intimidating (as well as a single point of failure).&lt;/p&gt;

&lt;p&gt;Shlomo Swidler has &lt;a href=&quot;http://www.shlomoswidler.com/2010/06/track-changes-to-your-dynamic-cloud-services-automatically.html&quot;&gt;a great article&lt;/a&gt; comparing different DNS configurations as well as some sample code for dynamically updating hosts files. However, if you’re already using &lt;a href=&quot;http://wiki.opscode.com/display/chef/Home&quot;&gt;Chef&lt;/a&gt; you can achieve the same thing with a very simple cookbook.&lt;/p&gt;

&lt;p&gt;First, create a new cookbook:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd &lt;/span&gt;chef-repo/
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;rake new_cookbook &lt;span class=&quot;nv&quot;&gt;COOKBOOK&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;hosts &lt;span class=&quot;nv&quot;&gt;CB_PREFIX&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;site-&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Place the following in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;site-cookbooks/hosts/recipes/default.rb&lt;/code&gt;:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ruby&quot; data-lang=&quot;ruby&quot;&gt;&lt;span class=&quot;c1&quot;&gt;# Find all nodes, sorting by Chef ID so their&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;# order doesn&apos;t change between runs.&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;hosts&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;search&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:node&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;*:*&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;X_CHEF_id_CHEF_X asc&quot;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;

&lt;span class=&quot;n&quot;&gt;template&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;/etc/hosts&quot;&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;do&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;source&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;hosts.erb&quot;&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;owner&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;root&quot;&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;group&lt;/span&gt; &lt;span class=&quot;s2&quot;&gt;&quot;root&quot;&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;mode&lt;/span&gt; &lt;span class=&quot;mo&quot;&gt;0644&lt;/span&gt;
  &lt;span class=&quot;n&quot;&gt;variables&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
    &lt;span class=&quot;ss&quot;&gt;:hosts&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;hosts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
    &lt;span class=&quot;ss&quot;&gt;:fqdn&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;node&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:fqdn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;],&lt;/span&gt;
    &lt;span class=&quot;ss&quot;&gt;:hostname&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;node&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:hostname&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt;
  &lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;end&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Then create the template, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;site-cookbooks/hosts/templates/default/hosts.erb&lt;/code&gt;:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ruby&quot; data-lang=&quot;ruby&quot;&gt;&lt;span class=&quot;mf&quot;&gt;127.0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;mf&quot;&gt;0.1&lt;/span&gt;   &lt;span class=&quot;n&quot;&gt;localhost&lt;/span&gt;

&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;sx&quot;&gt;% @hosts.keys.sort.each &lt;/span&gt;&lt;span class=&quot;k&quot;&gt;do&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;|&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fqdn&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;|&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;%&amp;gt;
&amp;lt;%= @hosts[fqdn][:ipaddress] %&amp;gt;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;sx&quot;&gt;%= fqdn %&amp;gt; &amp;lt;%=&lt;/span&gt; &lt;span class=&quot;vi&quot;&gt;@hosts&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;fqdn&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;][&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:hostname&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;%&amp;gt;&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;sx&quot;&gt;% end &lt;/span&gt;&lt;span class=&quot;o&quot;&gt;%&amp;gt;&lt;/span&gt;

&lt;span class=&quot;c1&quot;&gt;# The following lines are desirable for IPv6 capable hosts&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ip6&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;localhost&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ip6&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;loopback&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;fe00&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ip6&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;localnet&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ff00&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ip6&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;mcastprefix&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ff02&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;1&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ip6&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;allnodes&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ff02&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ip6&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;allrouters&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;ff02&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;::&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;3&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ip6&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;-&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;allhosts&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Add the recipe to your node’s run_list and run chef-client and your /etc/hosts should contain all the Chef nodes on your network. Note that one downside to this approach is that updates will be slow (since chef-client only runs every 30 minutes by default).&lt;/p&gt;

&lt;p&gt;Now what if you wanted to point at a specific service, like having chef.example.com point at your Chef master? Just search for it in your recipe (and add it to the variables list):&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ruby&quot; data-lang=&quot;ruby&quot;&gt;&lt;span class=&quot;n&quot;&gt;chef_server&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;search&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;ss&quot;&gt;:node&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;run_list:recipe\[chef\:\:server\]&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;And add a line to the template:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ruby&quot; data-lang=&quot;ruby&quot;&gt;&lt;span class=&quot;c1&quot;&gt;# Chef master server&lt;/span&gt;
&lt;span class=&quot;o&quot;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&quot;sx&quot;&gt;%= @chef_server[:ipaddress] %&amp;gt; chef.example.com&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;Sure beats &lt;a href=&quot;http://elwoodicious.com/2009/08/12/ec2-bind9-dns-pancakes-and-you/&quot;&gt;setting up a DNS server&lt;/a&gt;!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Redis plugin for collectd</title>
   <link href="https://powdahound.com//2010/06/redis-plugin-for-collectd/"/>
   <updated>2010-06-28T00:00:00+00:00</updated>
   <id>https://powdahound.com//2010/06/redis-plugin-for-collectd</id>
   <content type="html">&lt;p&gt;Last weekend I wrote a small &lt;a href=&quot;http://collectd.org/&quot;&gt;collectd&lt;/a&gt; plugin for monitoring &lt;a href=&quot;http://code.google.com/p/redis/&quot;&gt;Redis&lt;/a&gt; and put it on GitHub: &lt;a href=&quot;http://github.com/powdahound/redis-collectd-plugin&quot;&gt;http://github.com/powdahound/redis-collectd-plugin&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you haven’t heard of Redis before, it’s a key-value store similar to &lt;a href=&quot;http://memcached.org/&quot;&gt;memcached&lt;/a&gt; with support for more complex &lt;a href=&quot;http://code.google.com/p/redis/wiki/IntroductionToRedisDataTypes&quot;&gt;data types&lt;/a&gt; like lists, sets, and hashes. collectd is a stats collection daemon which recently added support for &lt;a href=&quot;http://collectd.org/wiki/index.php/Plugin:Python&quot;&gt;plugins written in Python&lt;/a&gt;. This is great because there’s no way I’d write a plugin in C! Anyway, you can use this plugin to collect data about your Redis server like number of active connections, database size, commands processed per second, and memory usage. You can then use a tool like &lt;a href=&quot;http://web.taranis.org/drraw/&quot;&gt;drraw&lt;/a&gt; to generate nice graphs:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://github.com/powdahound/redis-collectd-plugin/raw/master/screenshots/graph_memory_used.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;http://github.com/powdahound/redis-collectd-plugin/raw/master/screenshots/graph_commands_per_sec.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;More info and installation instructions on the &lt;a href=&quot;http://github.com/powdahound/redis-collectd-plugin&quot;&gt;GitHub page&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Tricky Apache configuration bug</title>
   <link href="https://powdahound.com//2009/11/tricky-apache-configuration-bug/"/>
   <updated>2009-11-11T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/11/tricky-apache-configuration-bug</id>
   <content type="html">&lt;p&gt;When using Apache’s &lt;a href=&quot;http://httpd.apache.org/docs/2.2/mod/mod_dir.html#directoryindex&quot;&gt;DirectoryIndex&lt;/a&gt; directive make sure you don’t separate the values with commas. If you do, Apache will be looking for filenames ending in commas!&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-apache&quot; data-lang=&quot;apache&quot;&gt;&lt;span class=&quot;c&quot;&gt;# Incorrect&lt;/span&gt;
&lt;span class=&quot;nc&quot;&gt;DirectoryIndex&lt;/span&gt; index.html, index.php, index.cgi

&lt;span class=&quot;c&quot;&gt;# Correct&lt;/span&gt;
&lt;span class=&quot;nc&quot;&gt;DirectoryIndex&lt;/span&gt; index.html index.php index.cgi&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

</content>
 </entry>
 
 <entry>
   <title>Colorize log output with ack</title>
   <link href="https://powdahound.com//2009/10/colorize-log-output-with-ack/"/>
   <updated>2009-10-11T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/10/colorize-log-output-with-ack</id>
   <content type="html">&lt;p&gt;Adding color to log files makes them a lot easier to understand, especially when &lt;a href=&quot;http://en.wikipedia.org/wiki/Tail_%28Unix%29&quot;&gt;tailing&lt;/a&gt; them. That’s why tools like &lt;a href=&quot;http://www.vanheusden.com/multitail&quot;&gt;MultiTail&lt;/a&gt; were created, and &lt;a href=&quot;http://log4perl.sourceforge.net/releases/Log-Log4perl/docs/html/Log/Log4perl/Appender/ScreenColoredLevels.html&quot;&gt;some&lt;/a&gt; &lt;a href=&quot;http://wiki.osuosl.org/display/howto/ANSI+Color+logging+with+log4j+for+any+appender&quot;&gt;logging&lt;/a&gt; tools can output in color. Last night I realized color could be added to any log file using &lt;a href=&quot;http://betterthangrep.com&quot;&gt;ack&lt;/a&gt;, an awesome &lt;a href=&quot;http://en.wikipedia.org/wiki/Grep&quot;&gt;grep&lt;/a&gt; replacement that I recently found.&lt;/p&gt;

&lt;p&gt;For example, to make 404s red in a standard Apache access log:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;tail&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-f&lt;/span&gt; /var/log/apache2/access.log &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
  | ack &lt;span class=&quot;nt&quot;&gt;--passthru&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--color-match&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;red &lt;span class=&quot;s2&quot;&gt;&quot;^.* 404 .*$&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--passthru&lt;/code&gt; option makes it so no lines are discarded. You can use multiple colors by piping the output through &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;ack&lt;/code&gt; multiple times. The &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--flush&lt;/code&gt; option is needed to prevent pipe buffering issues and the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--color&lt;/code&gt; option is needed to pass colors through. Here’s an example:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;tail&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-f&lt;/span&gt; /var/log/apache2/access.log &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
  | ack &lt;span class=&quot;nt&quot;&gt;--flush&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--passthru&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--color&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--color-match&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;green &lt;span class=&quot;s2&quot;&gt;&quot;^.* 200 .*&quot;&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
  | ack &lt;span class=&quot;nt&quot;&gt;--flush&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--passthru&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--color&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--color-match&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;yellow &lt;span class=&quot;s2&quot;&gt;&quot;^.* 302 .*&quot;&lt;/span&gt; &lt;span class=&quot;se&quot;&gt;\&lt;/span&gt;
  | ack &lt;span class=&quot;nt&quot;&gt;--flush&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--passthru&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--color&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--color-match&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;=&lt;/span&gt;red &lt;span class=&quot;s2&quot;&gt;&quot;^.* 404 .*&quot;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;&lt;img src=&quot;/assets/colored_logs.png&quot; alt=&quot;Apache access log colored with ack&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You can use more complex colors like &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;--color=&quot;white on_red&quot;&lt;/code&gt; to make errors stand out even more.&lt;/p&gt;

&lt;p&gt;I wonder what other cool things ack can do…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You could also &lt;a href=&quot;http://fixunix.com/unix/83044-tail-color.html&quot;&gt;do this with perl&lt;/a&gt;, but it looks a lot less maintainable.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>mkscript - test script creator</title>
   <link href="https://powdahound.com//2009/09/mkscript-test-script-creator/"/>
   <updated>2009-09-17T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/09/mkscript-test-script-creator</id>
   <content type="html">&lt;p&gt;I usually do something wrong when I create test scripts (typo in shebang, not executable, missing open PHP tag, etc) so I wrote a small tool called mkscript that can create them for me.&lt;/p&gt;

&lt;p&gt;Basically, instead of doing:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;echo&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;#!/usr/bin/python&apos;&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;&amp;gt;&lt;/span&gt; test.py
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;chmod &lt;/span&gt;a+x test.py&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;You just do:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;mkscript test.py&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;It knows how to create scripts for bash, perl, php, python, and ruby based on the extension you provide. You can get it &lt;a href=&quot;http://gist.github.com/188362&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Pair it with &lt;a href=&quot;/2009/05/execute-current-file-in-vim&quot;&gt;this vim function to execute the current file&lt;/a&gt; and you have a really quick way to create and run test scripts!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Douglas Crockford - The JSON Saga</title>
   <link href="https://powdahound.com//2009/08/douglas-crockford-e2-80-94-the-json-saga/"/>
   <updated>2009-08-22T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/08/douglas-crockford-%e2%80%94-the-json-saga</id>
   <content type="html">&lt;p&gt;Learned a lot from &lt;a href=&quot;https://www.youtube.com/watch?v=-C-JoyNuQJs&quot;&gt;this talk&lt;/a&gt;.&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/-C-JoyNuQJs&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
</content>
 </entry>
 
 <entry>
   <title>Mac's DigitalColor Meter.app</title>
   <link href="https://powdahound.com//2009/07/macs-digitalcolor-meter-app/"/>
   <updated>2009-07-10T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/07/macs-digitalcolor-meter-app</id>
   <content type="html">&lt;p&gt;Link: &lt;a href=&quot;http://www.macosxtips.co.uk/index_files/digital-color-meter-tips.html&quot;&gt;Mac’s DigitalColor Meter.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is a great tool to learn if you’re on a Mac. It’s also an easy replacement for the &lt;a href=&quot;https://addons.mozilla.org/en-US/firefox/addon/271&quot;&gt;ColorZilla Firefox addon&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Focus first empty input element using jQuery</title>
   <link href="https://powdahound.com//2009/06/focus-first-empty-input-element-using-jquery/"/>
   <updated>2009-06-30T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/06/focus-first-empty-input-element-using-jquery</id>
   <content type="html">&lt;p&gt;It’s often helpful to auto-focus form elements for users of your site so they don’t have to manually select them with the mouse. I’d been using the following code on a few sites:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/powdahound/153203.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;It will focus the first input element on the page that is visible, enabled, doesn’t contain any text, and doesn’t have the class ‘nofocus’ (so you can avoid search fields or other secondary inputs). One of the cool things about &lt;a href=&quot;http://jquery.com&quot;&gt;jQuery&lt;/a&gt; is that you can write some really short code to do very powerful things. Here’s my jQuery implementation of the above code:&lt;/p&gt;

&lt;script src=&quot;https://gist.github.com/powdahound/153214.js&quot;&gt;&lt;/script&gt;

&lt;p&gt;The only functionality that is lost is focusing of text and password fields only. jQuery’s &lt;a href=&quot;http://docs.jquery.com/Selectors&quot;&gt;selectors&lt;/a&gt; make it easy to select all input elements, just text, or just password, but not “text OR password” as far as I can tell. If you can make it any shorter please let me know!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Using Gmail as Sendmail's relay</title>
   <link href="https://powdahound.com//2009/06/using-gmail-as-sendmails-relay/"/>
   <updated>2009-06-27T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/06/using-gmail-as-sendmails-relay</id>
   <content type="html">&lt;p&gt;Comcast just started &lt;a href=&quot;http://news.zdnet.com/2100-3513_22-136518.html&quot;&gt;blocking port 25&lt;/a&gt; at my house which caused sendmail to be unable to connect to external mail servers to deliver mail. Some people have been able to convince Comcast to open up the port for them but we weren’t so lucky. Instead, I changed sendmail to use Gmail’s SMTP server as its relay server.&lt;/p&gt;

&lt;p&gt;Before making these changes I’d see lots of errors in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/var/log/mail.log&lt;/code&gt; ending in &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;stat=Deferred: Connection timed out with aspmx2.googlemail.com.&lt;/code&gt; or something similar. Trying to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;telnet aspmx2.googlemail.com 25&lt;/code&gt; would result in a timeout.&lt;/p&gt;

&lt;p&gt;I found all the information on how to do this in these two articles; &lt;a href=&quot;http://elliotli.blogspot.com/2007/08/gmail-fetchmail-and-sendmail-on.html&quot;&gt;Yan Li’s Words: Gmail, Fetchmail and Sendmail on UNIX/Linux&lt;/a&gt; and &lt;a href=&quot;http://www.linuxha.com/other/sendmail/gmail.html&quot;&gt;Linux, Sendmail and Gmail.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;All of this was done on a server running Ubuntu 8.04.2 and sendmail 8.14.2.&lt;/p&gt;

&lt;h3 id=&quot;step-1&quot;&gt;Step 1&lt;/h3&gt;

&lt;p&gt;Edit your ``/etc/mail/sendmail.mc&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt; and add the following above the &lt;/code&gt;MAILER_DEFINITIONS` block at the bottom. I tried putting these lines at the very bottom of the file the first time and it didn’t work. I suggest copy/pasting because the quotes are very strange.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;define(`SMART_HOST&apos;,`smtp.gmail.com&apos;)dnl
define(`RELAY_MAILER_ARGS&apos;, `TCP $h 587&apos;)dnl
define(`ESMTP_MAILER_ARGS&apos;, `TCP $h 587&apos;)dnl
define(`confAUTH_MECHANISMS&apos;, `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN&apos;)dnl
FEATURE(`authinfo&apos;,`hash /etc/mail/auth/client-info&apos;)dnl
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;step-2&quot;&gt;Step 2&lt;/h3&gt;

&lt;p&gt;Create the /etc/mail/auth/client-info file by running:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;mkdir&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;-p&lt;/span&gt; /etc/mail/auth
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;chmod &lt;/span&gt;700 /etc/mail/auth
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;touch&lt;/span&gt; /etc/mail/auth/client-info
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;chmod &lt;/span&gt;600 /etc/mail/auth/client-info&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;step-3&quot;&gt;Step 3&lt;/h3&gt;

&lt;p&gt;Edit &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/etc/mail/auth/client-info&lt;/code&gt; and fill it with the lines below. Replace &lt;strong&gt;user_id&lt;/strong&gt; with your Gmail user id (&lt;strong&gt;user_id&lt;/strong&gt;@gmail.com) and &lt;strong&gt;password&lt;/strong&gt; with your password. Make sure there is a blank line at the end of the file.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;AuthInfo:smtp.gmail.com &quot;U:smmsp&quot; &quot;I:user_id&quot; &quot;P:password&quot; &quot;M:PLAIN&quot;
AuthInfo:smtp.gmail.com:587 &quot;U:smmsp&quot; &quot;I:user_id&quot; &quot;P:**password&quot; &quot;M:PLAIN&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h3 id=&quot;step-4&quot;&gt;Step 4&lt;/h3&gt;

&lt;p&gt;Compile the client-info.db file.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; /etc/mail/auth
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;makemap &lt;span class=&quot;nt&quot;&gt;-r&lt;/span&gt; &lt;span class=&quot;nb&quot;&gt;hash &lt;/span&gt;client-info.db &amp;lt; client-info&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;step-5&quot;&gt;Step 5&lt;/h3&gt;

&lt;p&gt;Compile update sendmail.cf with our sendmail.mc changes.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;cd&lt;/span&gt; /etc/mail
&lt;span class=&quot;nv&quot;&gt;$ &lt;/span&gt;make&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;h3 id=&quot;step-6&quot;&gt;Step 6&lt;/h3&gt;

&lt;p&gt;Reload the sendmail configuration.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;/etc/init.d/sendmail reload
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Now if you check your /var/log/mail.log you should see any queued messages being sent properly. You should see &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;relay=smtp.gmail.com&lt;/code&gt; and &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;stat=Sent&lt;/code&gt;. If not, make sure you didn’t miss a step above.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Keeping a website's footer at the bottom of the page</title>
   <link href="https://powdahound.com//2009/06/keeping-a-websites-footer-at-the-bottom-of-the-page/"/>
   <updated>2009-06-25T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/06/keeping-a-websites-footer-at-the-bottom-of-the-page</id>
   <content type="html">&lt;p&gt;I was trying to do this and found these two links very helpful:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://matthewjamestaylor.com/blog/keeping-footers-at-the-bottom-of-the-page&quot;&gt;Get down! How to keep footers at the bottom of the page&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.themaninblue.com/writing/perspective/2005/08/29/&quot;&gt;footerStickAlt: A more robust method of positioning a footer&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>RRD Tools</title>
   <link href="https://powdahound.com//2009/06/rrd-tools/"/>
   <updated>2009-06-24T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/06/rrd-tools</id>
   <content type="html">&lt;p&gt;I made a small site called &lt;a href=&quot;http://rrdtools.appspot.com/&quot;&gt;RRD Tools&lt;/a&gt; to help calculate values needed when creating RRAs for RRD files and put it on &lt;a href=&quot;http://code.google.com/appengine/&quot;&gt;Google App Engine&lt;/a&gt;. Will probably add more utilities later as I find myself wanting them.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Daring Fireball: Markdown</title>
   <link href="https://powdahound.com//2009/06/daring-fireball-markdown/"/>
   <updated>2009-06-17T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/06/daring-fireball-markdown</id>
   <content type="html">&lt;p&gt;I’ve started using &lt;a href=&quot;http://daringfireball.net/projects/markdown/&quot;&gt;Markdown&lt;/a&gt; for README files on &lt;a href=&quot;http://github.com&quot;&gt;GitHub&lt;/a&gt; and descriptions here on Tumblr, and I love it. Such a great alternative to those nasty rich text editors used by most blogs.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Execute current file in Vim</title>
   <link href="https://powdahound.com//2009/05/execute-current-file-in-vim/"/>
   <updated>2009-05-03T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/05/execute-current-file-in-vim</id>
   <content type="html">&lt;p&gt;Here’s a helpful function you can drop in to your .vimrc that binds F5 to execute the current file if it has a &lt;a href=&quot;http://en.wikipedia.org/wiki/Shebang_(Unix)&quot;&gt;shebang&lt;/a&gt;.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-vim&quot; data-lang=&quot;vim&quot;&gt;&lt;span class=&quot;k&quot;&gt;function&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;!&lt;/span&gt; RunShebang&lt;span class=&quot;p&quot;&gt;()&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;match&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;nb&quot;&gt;getline&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;m&quot;&gt;1&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;),&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;^\#!&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;==&lt;/span&gt; &lt;span class=&quot;m&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
    &lt;span class=&quot;p&quot;&gt;:!.&lt;/span&gt;/%
  &lt;span class=&quot;k&quot;&gt;else&lt;/span&gt;
    echo &lt;span class=&quot;s2&quot;&gt;&quot;No shebang in this file.&quot;&lt;/span&gt;
  &lt;span class=&quot;k&quot;&gt;endif&lt;/span&gt;
&lt;span class=&quot;k&quot;&gt;endfunction&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;map&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;&amp;lt;&lt;/span&gt;F5&lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt; &lt;span class=&quot;p&quot;&gt;:&lt;/span&gt;&lt;span class=&quot;k&quot;&gt;call&lt;/span&gt; RunShebang&lt;span class=&quot;p&quot;&gt;()&amp;lt;&lt;/span&gt;CR&lt;span class=&quot;p&quot;&gt;&amp;gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

&lt;p&gt;You’ll need to make sure the file is executable. A &lt;a href=&quot;http://dailyvim.blogspot.com/2009/04/chris-sutter-writes-i-have-script-and.html&quot;&gt;similar tip&lt;/a&gt; was posted the other day on the Daily Vim blog.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Continental's purchase confirmation email</title>
   <link href="https://powdahound.com//2009/02/continentals-purchase-confirmation-email/"/>
   <updated>2009-02-19T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/02/continentals-purchase-confirmation-email</id>
   <content type="html">&lt;p&gt;In late December I bought a ticket to London through &lt;a href=&quot;http://www.continental.com&quot;&gt;Continental&lt;/a&gt; to go visit Brinker (my girlfriend) while she’s there for &lt;a href=&quot;http://www.tate.org.uk&quot;&gt;her internship&lt;/a&gt;. After going through a seemingly normal purchase flow I received the email below and crossed out the “Buy plane ticket” task off my to-do list.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://powdahound.com/wp-content/uploads/2009/02/continental_email.png&quot;&gt;&lt;img src=&quot;/assets/continental_email.png&quot; alt=&quot;Continental confirmation email&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A week before my trip I went to the Continental website with my confirmation number in order to get the detailed flight information. It gave me some error about not being able to find any flights for the # so I figured the site was busted and gave them a call. The woman on the phone informed me that I’d never actually been given tickets. But I had received an email with a “Confirmation Number” and a link to “Manage Reservations”…&lt;/p&gt;

&lt;p&gt;Silly me! I obviously hadn’t noticed the important text at the top of the email – the text in the 8 point font.&lt;/p&gt;

&lt;blockquote&gt;We are still processing your reservation, and this e-mail is not yet a confirmation of your reservation. … If you do not receive your receipt within three hours, please contact us.&lt;/blockquote&gt;

&lt;p&gt;The system had messed up somewhere and it was up to me to realize I hadn’t been ticketed within 3 hours and give them a call. What a great customer experience. The woman on the phone assured me that it wasn’t anybody’s fault that this had happened and that she’d be glad to help me buy a new ticket for $1200. They were $550 when I had made my previous “reservation”. She also mentioned that the flight was operated by Virgin Atlantic and the integration with them may have caused the issue.&lt;/p&gt;

&lt;p&gt;Luckily a friend at work showed me &lt;a href=&quot;http://www.elliott.org/&quot;&gt;elliott.org’s&lt;/a&gt; special &lt;a href=&quot;http://www.elliott.org/help/continental-airlines/&quot;&gt;contact information for Continental&lt;/a&gt; and I gave them a call. The woman at this number said she’d never seen this happen before but that she could get me a new ticket at the same late-December price if I moved my flight back by a day. Awesome! I felt victorious even though I’d been totally screwed by a poorly designed system. Would it really be so hard to send me an email 3 hours later if I &lt;em&gt;wasn’t&lt;/em&gt; ticketed? Hopefully I was just the victim of a very rare bug.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Odd input format example</title>
   <link href="https://powdahound.com//2009/02/odd-input-format-example/"/>
   <updated>2009-02-02T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/02/odd-input-format-example</id>
   <content type="html">&lt;p&gt;&lt;img src=&quot;/assets/corsair-rebate-form.png&quot; alt=&quot;Corsair Rebate Form Example&quot; /&gt;
Why not “mm/dd/yyyy” or “01/20/2009”? Seen on &lt;a href=&quot;http://corsairmemory.rebateaccess.com/&quot;&gt;corsairmemory.rebateaccess.com.&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Nice try, Go Daddy</title>
   <link href="https://powdahound.com//2009/01/nice-try-go-daddy/"/>
   <updated>2009-01-06T00:00:00+00:00</updated>
   <id>https://powdahound.com//2009/01/nice-try-go-daddy</id>
   <content type="html">&lt;p&gt;Today I received an email from Go Daddy with the title “Get www.Heaton.com for 25% off”. Sweet! The domain is finally available!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/godaddy_heaton.png&quot; alt=&quot;GoDaddy Heaton.com&quot; /&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;**This offer does not imply nor assure the availability of this specific .COM domain. Please use the links to search for this or other .COM variations.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;As if they couldn’t have checked to see if the domain was available. I bet almost no one can get their last name as a .com domain these days. Makes me wonder how many other Heatons got this same email.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Incredible Recruiting</title>
   <link href="https://powdahound.com//2008/12/incredible-recruiting/"/>
   <updated>2008-12-02T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/12/incredible-recruiting</id>
   <content type="html">&lt;p&gt;Red 5 Studios, a powerhouse gaming studio in stealth mode tried some highly targeted recruiting that really paid off. Check out the video below.&lt;/p&gt;

&lt;iframe src=&quot;http://www.msnbc.msn.com/id/22425001/vp/24836769#24836769&quot; width=&quot;425&quot; height=&quot;339&quot; frameborder=&quot;0&quot; scrolling=&quot;no&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;They showed some Tribes 1 footage in there too. It’s by far my favorite game, so they have me very curious…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>S3 Directory Browser 0.1 released</title>
   <link href="https://powdahound.com//2008/09/s3-directory-browser-01-released/"/>
   <updated>2008-09-15T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/09/s3-directory-browser-01-released</id>
   <content type="html">&lt;p&gt;A few months ago I created &lt;a href=&quot;http://code.google.com/p/s3-directory-browser/&quot;&gt;a small PHP tool&lt;/a&gt; to generate file listings for Amazon S3 buckets. The concept is the same as Apache’s &lt;a href=&quot;http://httpd.apache.org/docs/2.0/mod/mod_autoindex.html&quot;&gt;mod_autoindex&lt;/a&gt;. Check out &lt;a href=&quot;http://files.powdahound.com/&quot;&gt;my shared files&lt;/a&gt; for an example. This weekend I finished the install instructions, config documentation, and stuck a 0.1 label on it. I guess that means it’s &lt;a href=&quot;http://code.google.com/p/s3-directory-browser/&quot;&gt;officially released&lt;/a&gt;! Hopefully someone else finds it useful and provides some feedback.&lt;/p&gt;

&lt;p&gt;Unfortunately the process of uploading files to an S3 account still sucks – especially from Windows &amp;amp; Mac. I’ve been using &lt;a href=&quot;http://www.bucketexplorer.com/&quot;&gt;Bucket Explorer&lt;/a&gt; but it’s not free AND the UI is nasty. The problem is that all the tools assume you’re using S3 for personal storage or backup and make it difficult or impossible to upload files and mark them as publicly accessible. &lt;a href=&quot;http://www.jungledisk.com/&quot;&gt;JungleDisk&lt;/a&gt; works great for automatic backup but they have intentionally avoided supporting public buckets because they want to be seen as a backup app.&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.getdropbox.com/&quot;&gt;Dropbox&lt;/a&gt; will probably become a better solution for people looking to share files if they ever support truly public folders. They provide 5gb of storage for free and can also sync your files to all your computers.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>90k</title>
   <link href="https://powdahound.com//2008/08/90k/"/>
   <updated>2008-08-20T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/08/90k</id>
   <content type="html">&lt;p&gt;Hit 90k miles on the way to the gym last night in my 2000 Volvo V40. 16 months ago I hit &lt;a href=&quot;http://powdahound.com/2007/05/80k&quot;&gt;80k&lt;/a&gt; - slow progress!&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;http://www.flickr.com/photos/powdahound/2780811091/&quot;&gt;&lt;img src=&quot;http://farm4.static.flickr.com/3085/2780811091_df48d0acf6.jpg?v=0&quot; alt=&quot;90k on Flickr&quot; /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;/assets/mymilemarker_aug08.png&quot;&gt;My stats&lt;/a&gt; from &lt;a href=&quot;http://mymilemarker.com&quot;&gt;My Mile Marker&lt;/a&gt; show where I took longer trips (usually earning above average mpg).&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Feature placeholders</title>
   <link href="https://powdahound.com//2008/06/feature-placeholders/"/>
   <updated>2008-06-28T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/06/feature-placeholders</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.culturedcode.com/things/&quot;&gt;Things&lt;/a&gt;, a task management app that’s still in development, does a great job letting users know about its unimplemented features. If you try to drag a task from a project into the ‘Scheduled’ area, for example, you’ll get this popup:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/thingsapp.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Every action I’ve performed in Things has either worked as I expected or popped up one of these helpful messages. That’s awesome! It feels good to know that they’re moving in the right direction and makes me more confident in their ability to make a great product.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Legions open beta begins!</title>
   <link href="https://powdahound.com//2008/06/legions-open-beta-begins/"/>
   <updated>2008-06-26T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/06/legions-open-beta-begins</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Fallen_Empire:_Legions&quot;&gt;Fallen Empire: Legions&lt;/a&gt; is now in &lt;a href=&quot;http://www.gamespot.com/pages/news/show_blog_entry.php?topic_id=26285381&amp;amp;om_act=convert&amp;amp;om_clk=gsupdates&amp;amp;tag=updates;title;1&quot;&gt;open beta&lt;/a&gt;! Just sign up at &lt;a href=&quot;http://www.instantaction.com/&quot;&gt;InstantAction&lt;/a&gt; to play. The game runs right in your browser but can be made fullscreen if you want.&lt;/p&gt;

&lt;p&gt;Legions is a “spiritual successor” to the &lt;a href=&quot;http://en.wikipedia.org/wiki/Tribes_(video_game)&quot;&gt;Tribes series&lt;/a&gt; which have always been my favorite games. I haven’t had much time to play yet but I’m hoping the game is good enough to capture the interest of the Tribes community if only for a little while.&lt;/p&gt;

&lt;p&gt;Here’s the most recent trailer (More videos on &lt;a href=&quot;http://www.legionsplayers.com/videos/&quot;&gt;Legions Players&lt;/a&gt;):&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;//www.youtube.com/embed/eVsemgxoHxA&quot; frameborder=&quot;0&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;
</content>
 </entry>
 
 <entry>
   <title>New JungleDisk beta is worth the upgrade</title>
   <link href="https://powdahound.com//2008/06/new-jungledisk-beta-is-worth-the-upgrade/"/>
   <updated>2008-06-08T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/06/new-jungledisk-beta-is-worth-the-upgrade</id>
   <content type="html">&lt;p&gt;The new &lt;a href=&quot;http://www.jungledisk.com/betadownload.shtml&quot;&gt;JungleDisk beta&lt;/a&gt; is a big improvement over their current version. The backup features have been greatly improved and now that I’ve &lt;a href=&quot;http://twitter.com/powdahound/statuses/829417546&quot;&gt;fixed&lt;/a&gt; my issue with Explorer locking up I can use it like almost like normal drive.&lt;/p&gt;

&lt;p&gt;I’m still backing up my music and photos to a local &lt;a href=&quot;http://en.wikipedia.org/wiki/Network-attached_storage&quot;&gt;NAS&lt;/a&gt; box, but I’m very impressed with the direction JungleDisk is going and will probably start to use it more (especially once the command line version is more mature and well documented).&lt;/p&gt;

&lt;p&gt;Also, for $1/mo you can get &lt;a href=&quot;http://www.jungledisk.com/plus.shtml&quot;&gt;JungleDisk Plus&lt;/a&gt; which gives you web access, resumable uploads, and partial file uploads. Very cool!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Mac Terminal tip: pbcopy and pbpaste</title>
   <link href="https://powdahound.com//2008/06/mac-terminal-tip-pbcopy-and-pbpaste/"/>
   <updated>2008-06-04T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/06/mac-terminal-tip-pbcopy-and-pbpaste</id>
   <content type="html">&lt;p&gt;Just found two helpful programs in OS X; pbcopy and pbpaste (&lt;a href=&quot;http://developer.apple.com/documentation/Darwin/Reference/ManPages/man1/pbcopy.1.html&quot;&gt;man page&lt;/a&gt;). They let you write and read from the OS X clipboard and allow you do to things like:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ cat file.txt | pbcopy&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That’s a lot faster than opening the file, selecting everything, and copying it!&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ pbpaste &amp;gt; example.css&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Quicker than firing up emacs/TextMate/whatever.&lt;/p&gt;

&lt;p&gt;Of course you can even do fancier things like:&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;$ tail -n 10 /var/log/messages | pbcopy&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;So good!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>How to create an iPhone ringtone without GarageBand</title>
   <link href="https://powdahound.com//2008/05/how-to-create-an-iphone-ringtone-without-garageband/"/>
   <updated>2008-05-31T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/05/how-to-create-an-iphone-ringtone-without-garageband</id>
   <content type="html">&lt;p&gt;There are &lt;a href=&quot;http://support.apple.com/kb/HT1358&quot;&gt;lots&lt;/a&gt; &lt;a href=&quot;http://www.ilounge.com/index.php/articles/comments/ten-step-guide-to-iphone-custom-ringtones-in-garageband-08/&quot;&gt;of&lt;/a&gt; &lt;a href=&quot;http://lifehacker.com/software/how-to/create-custom-iphone-ringtones-the-free-and-apple-way-334073.php&quot;&gt;articles&lt;/a&gt; out there explaining how to make an iPhone ringtone from a song using GarageBand but it’s also possible to create them using only iTunes. Here’s how:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Find the song you want in iTunes.&lt;/li&gt;
  &lt;li&gt;Right click on it and select “Get Info” (Apple+I also works). Go to the ‘Options’ tab.&lt;/li&gt;
  &lt;li&gt;Adjust the “Start Time” and “Stop Time” values to shorten the song down to the part you want to use for the ringtone (45 seconds max). Click “OK”.&lt;/li&gt;
  &lt;li&gt;Play the track and make sure you’re happy with where you’ve set the start and stop times.&lt;/li&gt;
  &lt;li&gt;Right click on the track again and select “Convert Selection to AAC”. This will copy the part of the song between the “Start Time” and “Stop Time” into a new file in AAC format. Once it’s done encoding, the shortened track will appear in your music library.&lt;/li&gt;
  &lt;li&gt;Right click on the original track, select “Get Info” again, and reset the start and stop time values to what they were before we started (probably both unchecked).&lt;/li&gt;
  &lt;li&gt;Right click on the new AAC-formatted track and select “Delete” (Apple+Backspace also works). Select the “Keep File” option when prompted.&lt;/li&gt;
  &lt;li&gt;The AAC file is no longer in your iTunes library but is still on your hard drive. Find it by searching for it in Spotlight or browsing to your iTunes Music folder directly.&lt;/li&gt;
  &lt;li&gt;Select the file and hit ‘Enter’ to rename it. Change the extension from .m4a to .m4r. Hit enter again.&lt;/li&gt;
  &lt;li&gt;Double click on the file and it should open up in iTunes and be placed in your “Ringtones” folder on the side.&lt;/li&gt;
  &lt;li&gt;Make sure you’re syncing ringtones with your phone, perform a sync, and enjoy!&lt;/li&gt;
&lt;/ol&gt;

&lt;h3 id=&quot;update-2008-6-14&quot;&gt;Update (2008-6-14)&lt;/h3&gt;
&lt;p&gt;This also works in iTunes on Windows!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>TextMate tip: Validate PHP syntax when saving</title>
   <link href="https://powdahound.com//2008/05/textmate-tip-validate-your-php-syntax-when-saving/"/>
   <updated>2008-05-10T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/05/textmate-tip-validate-your-php-syntax-when-saving</id>
   <content type="html">&lt;p&gt;The &lt;a href=&quot;http://andrewdupont.net/2006/10/01/javascript-tools-textmate-bundle/&quot;&gt;JavaScript Tools&lt;/a&gt; bundle for &lt;a href=&quot;http://www.textmate.com/&quot;&gt;TextMate&lt;/a&gt; automatically runs &lt;a href=&quot;http://www.javascriptlint.com/&quot;&gt;JavaScript Lint&lt;/a&gt; on your files when saving and shows a little tooltip if there are any errors (like the missing semicolon below).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/js_lint_tooltip.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It’s very easy to enable similar functionality for PHP files. The default TextMate PHP bundle already comes with a ‘Validate Syntax’ command but it’s bound to Ctrl+Shift+V. Here’s what you need to change:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Open up the Bundle Editor by hitting Ctrl+Option+Apple+B or opening the Bundles menu and selecting Bundle Editor &amp;gt; Show Bundle Editor.&lt;/li&gt;
  &lt;li&gt;Find the PHP bundle in the list on the left and open it up.&lt;/li&gt;
  &lt;li&gt;Select the ‘Validate Syntax’ command and then change it’s ‘Save’ option to ‘Current File’ in the dropdown on the right.&lt;/li&gt;
  &lt;li&gt;Change the keyboard shortcut to Apple+S (or whatever you use to save) in the lower right. Your settings should now look like &lt;a href=&quot;http://powdahound.com/wp-content/uploads/2008/05/textmate_php_syntax.png&quot;&gt;this&lt;/a&gt;.&lt;/li&gt;
  &lt;li&gt;Close the Bundle Editor (it saves your changes automatically).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Below is an example of what you’ll see when saving. It will even move your cursor to the line with the error!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/textmate_php_validate.png&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;update-2008-5-23&quot;&gt;Update (2008-5-23)&lt;/h3&gt;

&lt;p&gt;You can prevent the tooltip from displaying when there are no syntax errors by changing the command to:&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-ruby&quot; data-lang=&quot;ruby&quot;&gt;&lt;span class=&quot;c1&quot;&gt;#!/usr/bin/env ruby&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;require&lt;/span&gt; &lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;TM_SUPPORT_PATH&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;+&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;/lib/textmate&apos;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;version&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sx&quot;&gt;%x{&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;TM_PHP&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;php&apos;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sx&quot;&gt; -v}&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;split&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;0&lt;/span&gt;&lt;span class=&quot;o&quot;&gt;..&lt;/span&gt;&lt;span class=&quot;mi&quot;&gt;2&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;].&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;join&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos; &apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt;
&lt;span class=&quot;c1&quot;&gt;#puts &quot;Running syntax check with &quot; + version + &quot;&quot;&lt;/span&gt;
&lt;span class=&quot;n&quot;&gt;result&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&lt;/span&gt; &lt;span class=&quot;sb&quot;&gt;`&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;#{&lt;/span&gt;&lt;span class=&quot;no&quot;&gt;ENV&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;[&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;TM_PHP&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;]&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;||&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;php&apos;&lt;/span&gt;&lt;span class=&quot;si&quot;&gt;}&lt;/span&gt;&lt;span class=&quot;sb&quot;&gt; -d display_errors=on -l`&lt;/span&gt;
&lt;span class=&quot;nb&quot;&gt;puts&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;result&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;gsub&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;s1&quot;&gt;&apos;in -&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;)&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;unless&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;result&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=~&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/No syntax errors/&lt;/span&gt;
&lt;span class=&quot;no&quot;&gt;TextMate&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;.&lt;/span&gt;&lt;span class=&quot;nf&quot;&gt;go_to&lt;/span&gt; &lt;span class=&quot;ss&quot;&gt;:line&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=&amp;gt;&lt;/span&gt; &lt;span class=&quot;vg&quot;&gt;$1&lt;/span&gt; &lt;span class=&quot;k&quot;&gt;if&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;result&lt;/span&gt; &lt;span class=&quot;o&quot;&gt;=~&lt;/span&gt; &lt;span class=&quot;sr&quot;&gt;/line (\d+)/&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

</content>
 </entry>
 
 <entry>
   <title>Do people bookmark ads?</title>
   <link href="https://powdahound.com//2008/05/do-people-bookmark-ads/"/>
   <updated>2008-05-07T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/05/do-people-bookmark-ads</id>
   <content type="html">&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/bookmark_ads_thumb.png&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;Yeah…&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;Seen while on my way to &lt;a href=&quot;http://maxcrysis.com&quot;&gt;MaxCrysis.com&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>What Makes a Great Developer?</title>
   <link href="https://powdahound.com//2008/05/what-makes-a-great-developer/"/>
   <updated>2008-05-05T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/05/what-makes-a-great-developer</id>
   <content type="html">&lt;p&gt;I agree with many of the points made by Dave Child in his article, “&lt;a href=&quot;http://www.ilovejackdaniels.com/blog/what-makes-a-great-developer/&quot;&gt;What Makes a Great Developer?&lt;/a&gt;”. Makes me wonder what other professions benefit from pessimism and laziness.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Crysis intro videos; just let me play!</title>
   <link href="https://powdahound.com//2008/05/crysis-intro-videos-just-let-me-play/"/>
   <updated>2008-05-05T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/05/crysis-intro-videos-just-let-me-play</id>
   <content type="html">&lt;p&gt;One of my main reasons for &lt;a href=&quot;http://powdahound.com/2008/03/a-partial-hardware-upgrade/&quot;&gt;upgrading my computer&lt;/a&gt; recently was so I could play &lt;a href=&quot;http://en.wikipedia.org/wiki/Crysis&quot;&gt;Crysis&lt;/a&gt;, and for the most part I’ve really enjoyed the game.&lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/crysis-cover.jpg&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;But can it run Crysis?&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;But the one thing I just don’t get is why they make you sit through so many damn intro videos each time you load the game. I realize that companies need to advertise, but the time it takes to load Crysis is ridiculous and creates enough friction that I’m sometimes just too lazy to play. Here’s what you have to go through:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://www.ea.com/&quot;&gt;EA&lt;/a&gt; logo&lt;/strong&gt; - Just in case I forgot who published this (and almost every other) game. Luckily Crytek did such a good job with Crysis that even EA couldn’t mess it up.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Crytek “Maximum Game” logo&lt;/strong&gt; - Since Crytek actually made the game, it seems fair to let them use this space. They should let me skip the screen by hitting Esc, however.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;NVIDIA logo&lt;/strong&gt; - I’ve already given you hundreds of dollars by buying your video cards and motherboards. Now you’re just wasting my time.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Intel logo&lt;/strong&gt; - Same as above, although I’m running an AMD in this machine. Maybe this tricks some people into thinking they should be using Intel for playing this game.&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Entertainment_Software_Rating_Board&quot;&gt;ESRB&lt;/a&gt; Notice: Online interactions not rated by the ESRB&lt;/strong&gt; - Great. Isn’t putting this on the box enough? Does anyone care besides parents when they’re in the store buying the game for their kids?&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;“Crysis, by Crytek”&lt;/strong&gt; - In case I had become so bored waiting through the previous screens that I actually forgot what game I was waiting to play. WTF?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Is it really worth it for publishers (not that EA is known for being kind) to jam so much advertising into my gaming experience? Luckily you can just rename a few files in order to bypass the videos (what a great and accessible user experience). Just go to the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Crytek\Crysis\Game\Localized\Video\&lt;/code&gt; directory and rename (or remove) all the .sfd files starting with &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;Trailer_&lt;/code&gt;, including the one in the ‘English’ directory. Next time you start the game you’ll find yourself at the menu within seconds! Sorry NVIDIA, but &lt;em&gt;this&lt;/em&gt; is &lt;a href=&quot;http://en.wikipedia.org/wiki/The_Way_It%27s_Meant_to_be_Played&quot;&gt;the way it’s meant to be played&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Faster booting with Startup Control Panel</title>
   <link href="https://powdahound.com//2008/03/faster-booting-with-startup-control-panel/"/>
   <updated>2008-03-26T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/03/faster-booting-with-startup-control-panel</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://www.mlin.net/StartupCPL.shtml&quot;&gt;Startup Control Panel&lt;/a&gt; (StartupCPL) is an awesome tool that lets you control exactly what programs load when you boot up your computer. Unless you just formatted, you probably have a bunch of crap loading that slows down your computer. Almost all of it can be turned off without breaking anything.&lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/startupcpl.png&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;Looks more intimidating than it is.&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;&lt;a href=&quot;http://www.mlin.net/StartupCPL.shtml&quot;&gt;Try it out&lt;/a&gt; and see how much time you can save.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A partial hardware upgrade</title>
   <link href="https://powdahound.com//2008/03/a-partial-hardware-upgrade/"/>
   <updated>2008-03-26T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/03/a-partial-hardware-upgrade</id>
   <content type="html">&lt;p&gt;I just upgraded my &lt;a href=&quot;http://powdahound.com/2006/11/18/time-for-an-upgrade/&quot;&gt;16-month-old&lt;/a&gt; AMD 5000+ to an AMD 6400+ and my NVIDIA 7950GT-KO to an NVIDIA 8800GT and my 3DMark06 score of 5,704 rose to 11,338 (almost double). More importantly, games will be running more smoothly! :) I’ve been waiting to do this upgrade before playing through HL2:EP2, BioShock, Crysis, and CoD4. Hopefully I can find some time for gaming this summer!&lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/msi_nx8800gt_1.jpg&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;8800 series card released in late 2006&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;One reason I chose the &lt;a href=&quot;http://www.nvnews.net/reviews/msi_geforce_nx8800gt/page_2.shtml&quot;&gt;MSI NX8800GT&lt;/a&gt; video card is that it comes overclocked and runs cooler than most of the regular 8800GTs. It accomplishes this by taking up 2 PCI slots with its giant heatsink. Unfortunately it’s also so long that I had to remove a hard drive from the opposite side of the case just to make it fit! I need to consolidate my drives anyway, so this will give me some motivation.&lt;/p&gt;

&lt;p&gt;Now I just need to get my Steam account working so I can play some games. For some reason I got locked out of it yesterday and their password reset process isn’t working so well.&lt;/p&gt;

&lt;p&gt;If you’re interested in buying my used AMD 5000+ or NVIDIA 7950GT-KO just send me an email.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>I'm now hosted by VPSLink</title>
   <link href="https://powdahound.com//2008/03/im-now-hosted-by-vpslink/"/>
   <updated>2008-03-25T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/03/im-now-hosted-by-vpslink</id>
   <content type="html">&lt;p&gt;My site is now hosted on a VPS provided by &lt;a href=&quot;http://vpslink.com/&quot;&gt;VPSLink.com&lt;/a&gt;. It’s nice having the flexibility to run services like &lt;a href=&quot;http://subversion.tigris.org/&quot;&gt;Subversion&lt;/a&gt; and &lt;a href=&quot;http://www.cacti.net/&quot;&gt;Cacti&lt;/a&gt; as well as manage my own &lt;a href=&quot;http://www.apache.org/&quot;&gt;Apache&lt;/a&gt; configuration.&lt;/p&gt;

&lt;p&gt;Their admin interface is really clean and fast, and they have &lt;a href=&quot;http://vpslink.com/compare/linux-vps-os/&quot;&gt;tons&lt;/a&gt; of OSes to choose from. Check them out if you’re in the market for a host.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>SCHED SXSW</title>
   <link href="https://powdahound.com//2008/03/sched-sxsw/"/>
   <updated>2008-03-08T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/03/sched-sxsw</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://chir.ag/about&quot;&gt;Two&lt;/a&gt; &lt;a href=&quot;http://gtmcknight.org/&quot;&gt;guys&lt;/a&gt; created &lt;a href=&quot;http://sched.org/sxsw2008/&quot;&gt;an awesome scheduling website&lt;/a&gt; for SXSW attendees to store quickly view panels and create a schedule. I wonder if they plan to expand it to support other conferences in the future (probably).&lt;/p&gt;

&lt;p&gt;Here’s my schedule: &lt;a href=&quot;http://sched.org/sxsw2008/garret&quot;&gt;http://sched.org/sxsw2008/garret&lt;/a&gt;&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Setting up Ubuntu</title>
   <link href="https://powdahound.com//2008/03/setting-up-ubuntu/"/>
   <updated>2008-03-04T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/03/setting-up-ubuntu</id>
   <content type="html">&lt;p&gt;I installed Ubuntu on my desktop again since I felt like desktop Linux was getting much closer to a state where I’d be willing to make the switch. My experience has been so much better than previous Gentoo and Ubuntu installs (even my wireless worked out of the box!) but there were still a few critical things I had to fix myself.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Fonts&lt;/strong&gt;
Fonts in Linux look like crap by default. The &lt;a href=&quot;http://www.sharpfonts.com/&quot;&gt;Sharp Fonts&lt;/a&gt; tutorial solved all my ugly font problems in about 5 minutes. This is a problem I never actually solved the other times I tried Linux on the desktop. Now pages in Firefox look just like they would in Windows Firefox (crical for web development!). I realize that Microsoft won’t let anyone repackage and redistribute their fonts, but someone could still automate the Sharp Fonts tutorial and distribute the script with the default installation.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Mouse buttons&lt;/strong&gt;
I have a Microsoft Habu mouse with buttons on the side that I like to use as forward/back buttons while browsing. Of course these didn’t work with the default xorg config but &lt;a href=&quot;http://gentoo-wiki.com/HOWTO_Advanced_Mouse/Individual_Configurations#Microsoft_Habu&quot;&gt;this tutorial&lt;/a&gt; on the Gentoo Wiki had the exact config I needed! Debugging this yourself can take a long, long time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Sound&lt;/strong&gt;
It turns out that Linux or Ubuntu aren’t really to blame for my sound issues. The Sound Blaster X-Fi card I have just has really bad Linux support. Is Creative good at making drivers for &lt;em&gt;any&lt;/em&gt; OS? Luckily the onboard sound on my motherboard (Asus M2N32-SLI) works just fine and is supported by ALSA and OSS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Firefox’s backspace action&lt;/strong&gt;
I hadn’t realized this before, but I hit backspace all the time in Firefox to navigate back. I’m not sure why this is disabled in the default install, but it’s easily switched in &lt;a href=&quot;http://kb.mozillazine.org/About:config&quot;&gt;about:config&lt;/a&gt; by setting the &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;browser.backspace_action&lt;/code&gt; preference to 0.&lt;/p&gt;

&lt;p&gt;Some other thoughts about the switch…&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.tatanka.com.br/ies4linux/&quot;&gt;IEs 4 Linux&lt;/a&gt; - testing stuff in IE6 is now really easy! I’m not able to test IE7 without booting a VM, but luckily it behaves well most of the time.&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.mozilla.com/en-US/thunderbird/&quot;&gt;Thunderbird&lt;/a&gt; works much better with IMAP than I expected it to.&lt;/li&gt;
  &lt;li&gt;I was hoping &lt;a href=&quot;http://www.gnome.org/projects/gedit/&quot;&gt;gedit&lt;/a&gt; would be more like &lt;a href=&quot;http://macromates.com/&quot;&gt;Textmate&lt;/a&gt; than it is. &lt;a href=&quot;http://grigio.org/textmate_gedit_few_steps&quot;&gt;This tutorial&lt;/a&gt; helps a lot, but I can’t find a way to get the keybinds to be the same. At the very least, I’d like emacs-style keybinds in gedit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’ve also been using Ubuntu as the OS on my new VPS from &lt;a href=&quot;http://vpslink.com/&quot;&gt;VPSLink.com&lt;/a&gt; which is hosting this site. More on them in the future…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Backups with JungleDisk</title>
   <link href="https://powdahound.com//2008/01/backups-with-jungledisk/"/>
   <updated>2008-01-16T00:00:00+00:00</updated>
   <id>https://powdahound.com//2008/01/backups-with-jungledisk</id>
   <content type="html">&lt;p&gt;For the past 6 months I’ve been using &lt;a href=&quot;http://www.jungledisk.com/&quot;&gt;JungleDisk&lt;/a&gt; to back up most of my important files on &lt;a href=&quot;http://www.amazon.com/gp/browse.html?node=16427261&quot;&gt;Amazon S3&lt;/a&gt;. It has a great auto-backup feature which keeps me from worrying about data loss. Like many people, I never thought about data loss until after I lost an entire drive (which I’m still keeping in case I become rich enough to blow $2k to have it restored).&lt;/p&gt;

&lt;p&gt;Amazon S3 is also &lt;a href=&quot;http://www.jungledisk.com/pricing.shtml&quot;&gt;incredibly cheap&lt;/a&gt;:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Pay only for what you use. There is no minimum fee and no start-up cost.&lt;/li&gt;
  &lt;li&gt;$0.15 per gigabyte-month of storage used.&lt;/li&gt;
  &lt;li&gt;$0.10/0.18 per gigabyte of data uploaded/downloaded.&lt;/li&gt;
  &lt;li&gt;$0.01 per 1,000 upload or 10,000 download requests.&lt;/li&gt;
  &lt;li&gt;Remember that you only pay for what you use! If you have 1.2 GB of data stored, you only pay 18 cents! If you only have 100MB that’s only 2 cents!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It gives me some strange satisfaction to receive my monthly 10¢ bill from Amazon. :)&lt;/p&gt;

&lt;p&gt;The only problem I have with the setup is that Windows Explorer ALWAYS locks up when browsing my JungleDisk drive. I’m assuming it’s not a problem with JungleDisk since it works fine on my Mac.&lt;/p&gt;

&lt;p&gt;Anyway, the Amazon S3 &amp;amp; JungleDisk combo is certainly worth checking out. It’s so ridiculously cheap for the amount of pain and trouble it can prevent!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Logging my car's mileage online</title>
   <link href="https://powdahound.com//2007/09/logging-my-cars-mileage-online/"/>
   <updated>2007-09-30T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/09/logging-my-cars-mileage-online</id>
   <content type="html">&lt;p&gt;For the past two months I’ve been logging my mileage on &lt;a href=&quot;http://www.mymilemarker.com&quot;&gt;MyMileMarker.com&lt;/a&gt; and am happy with the results it provides (given the amount of effort on my part). Every time I fill up I just take out my phone (they have a mobile version) and log the current odometer mileage, gallons required to fill up the tank, and price per gallon. I’d always calculated my MPG in my head after filling up but I find it a lot more interesting to have the data recorded and displayed in pretty graphs (see below).&lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/mymilemarker.jpg&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;MyMileMarker gives you nice graphs.&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;Although &lt;a href=&quot;http://en.wikipedia.org/wiki/Volvo_V40&quot;&gt;my car&lt;/a&gt;’s mileage still sucks, it was nice to see it go up by about 2mpg after changing my air filter – a $12 part that took me about five minutes to replace.&lt;/p&gt;

&lt;p&gt;Of course there’s no way for them to verify that the numbers people enter are accurate, but I’d really like to see how my car performs compared to other Volvo V40s out there. Maybe they’re already working on this, but I haven’t seen them push any updates to the site in quite a while now.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Safeway Weekly Specials RSS</title>
   <link href="https://powdahound.com//2007/07/safeway-weekly-specials-rss/"/>
   <updated>2007-07-23T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/07/safeway-weekly-specials-rss</id>
   <content type="html">&lt;p&gt;In order to learn a bit more about &lt;a href=&quot;http://en.wikipedia.org/wiki/Screen_scraping&quot;&gt;screen scraping&lt;/a&gt; with &lt;a href=&quot;http://curl.haxx.se/&quot;&gt;cURL&lt;/a&gt;, I coded up a script to generate an RSS feed of &lt;a href=&quot;http://safeway.com&quot;&gt;Safeway&lt;/a&gt;’s weekly specials. The number of frames and strange redirects on &lt;a href=&quot;http://www.safeway.com&quot;&gt;Safeway.com&lt;/a&gt; shows that they probably paid some lifeless company a ton of money to develop it for them (&lt;a href=&quot;http://www.vertisinc.com/&quot;&gt;Vertis&lt;/a&gt;, in this case). I can only imagine the frustration their engineers must have while trying to debug this stuff.&lt;/p&gt;

&lt;p&gt;Try it out, and let me know how it works for you: &lt;a href=&quot;http://www.powdahound.com/safeway-specials/&quot;&gt;Safeway Weekly Specials RSS&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Btw the code is on GitHub: &lt;a href=&quot;http://github.com/powdahound/safewayspecials&quot;&gt;http://github.com/powdahound/safewayspecials&lt;/a&gt;&lt;/p&gt;

&lt;h3 id=&quot;update-january-2015&quot;&gt;Update (January 2015)&lt;/h3&gt;
&lt;p&gt;I’ve stopped hosting this service as it was receiving very little use and am shutting down my old web host. Feel free to grab the code and run it yourself if needed, though it seems likely that it’ll stop working soon anyway. It’s surprising that Safeway hasn’t changed their site enough to break the parsing logic yet, which is very brittle.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Starsiege: Tribes, a truly unique FPS</title>
   <link href="https://powdahound.com//2007/07/starsiege-tribes-a-truly-unique-fps/"/>
   <updated>2007-07-22T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/07/starsiege-tribes-a-truly-unique-fps</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://en.wikipedia.org/wiki/Starsiege:_Tribes&quot;&gt;Starsiege: Tribes&lt;/a&gt; is the best FPS game I’ve ever played. This view is shared by many other gamers (and forum trolls) over at &lt;a href=&quot;http://www.tribalwar.com/forums/&quot;&gt;TribalWar.com&lt;/a&gt;. Tribes is different from other games in many ways, and has a unique combination of features that may may it impossible to recreate (&lt;a href=&quot;http://en.wikipedia.org/wiki/Tribes_2&quot;&gt;Tribes 2&lt;/a&gt; and &lt;a href=&quot;http://en.wikipedia.org/wiki/Tribes:_Vengeance&quot;&gt;3&lt;/a&gt; were considered failures by the community).&lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/starsiege_tribes_box.jpg&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;Stariege: Tribes box art.&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;Wikipedia describes the game as follows.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Tribes was one of the first online-only games of its kind and sported several multiplayer features that other games have only recently included (32+ player support, 128 players max, troop transport vehicles, several different player classes). Most of the standard maps were outdoors in a variety of climates, from sunshine to snow and hail. In general, bases were scattered throughout the map depending on the gametype. The outdoor environments were and still are relatively huge, extending for several kilometers in any direction, but “jetting” and “skiing” gave Tribes a fast-paced feel.&amp;lt;/blockquote&amp;gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The feeling most players get when they think about the game can not easily be described. The same is true for me, but I think I can list a number of the reasons why no other game can entertain me in the way that Tribes did (in no particular order).&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Excellent community&lt;/strong&gt; - Perhaps back in 1998 when fewer people were playing online games, their communities seemed more tight-knit. The Tribes community was full of interesting people who created just the right amount of drama, and teams that created great competition. The majority of the community was active on the &lt;a href=&quot;http://www.tribalwar.com/forums/&quot;&gt;TribalWar.com forums&lt;/a&gt;, where they would discuss upcoming ranked matches, strategies, and player demos. Almost every player was familiar with the majority of the other teams and their members, something which does not seem to be true in the communities of newer games (are they too big?)&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Player demos&lt;/strong&gt; - Tribes provided players with the ability to record their gaming sessions as a ‘demo’. These demo files could be uploaded and played back inside the game by other players. When a top player or team released a demo, everyone wanted to watch it so they could learn (you could also watch your own demos and learn from your mistakes). The key players on top teams wouldn’t always release their demos for fear of the other teams gaining inside information (flag capture routes, turret placement, etc). Demos were fun! I’m not aware of other games that have implemented demos as well as Tribes, or at all. &lt;a href=&quot;http://www.fraps.com&quot;&gt;Fraps&lt;/a&gt; &amp;amp; &lt;a href=&quot;http://www.youtube.com/&quot;&gt;YouTube&lt;/a&gt; doesn’t cut it.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Learning curve&lt;/strong&gt; - A player’s learning of the game reminds me of the phrase used by Mattel when advertising Othello (Reversi); “A minute to learn, a lifetime to master”. When I first started playing, it was a trivial (but fun) task to run around in heavy armor and deploy &lt;a href=&quot;http://en.wikipedia.org/wiki/Starsiege_Tribes#Turrets&quot;&gt;turrets&lt;/a&gt; to help protect my team’s base. I didn’t have to know the layout of the map, the weapons, or what my teammates were doing. I could stick to this one easy task and make a good contribution to my team without needing any skill. Of course I’d often get my ass kicked when an enemy entered the base, but this helped me learn the weapons and how to fight.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Instant respawn&lt;/strong&gt; - No waiting for a new ‘wave’ of teammates to join you when respawning. This leads to more play time and entertainment. When playing many newer games, I am very frustrated having delayed respawns and long distances to run in order to get back into the action.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Physics&lt;/strong&gt; - Tribes has jetpacks which allow the player to jet a short distance using a small energy reserve which is always slowly recharging. Being able to fly creates an infinite number of ways to move about each map. It also allows for more interesting escape routes and duels compared to games where you’re stuck on the ground. Perhaps more important to Tribes’ unique physics was the ability to ski. A bug in the game allowed players to glide across the terrain without friction by jumping repeatedly. By skiing down a hill players could move at incredible speeds. With practice, you could learn the terrain well enough to sustain a high speed for entire circuits around the map – very useful for the Capture the Flag game type!&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;strong&gt;Visible projectiles&lt;/strong&gt; - Most of the weapons had slower-moving projectiles (well, slower than bullets) which an aware player could sometimes dodge. This made duels take much longer since it was more a matter of planning and movement than a race to see which player could keep their crosshairs on the target for the longest.&lt;/p&gt;
  &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you’d rather see what I’m so excited about, watch &lt;a href=&quot;http://video.google.com/videoplay?docid=2209926384955970402&quot;&gt;this fan-created video&lt;/a&gt; titled Legacy. It shows the skill, speed, and team synergy necessary to play the game at a competitive level. Or, if you don’t mind playing a 9 year old PC game, you can download a fully patched version of Tribes at &lt;a href=&quot;http://tribesftw.com/&quot;&gt;TribesFTW.com&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Tribes will turn 10 years old next year, and I’m sure there will still be &lt;a href=&quot;http://tribesquery.toocrooked.com/sort.php?n=Players&quot;&gt;full servers to play on&lt;/a&gt; every night. It probably won’t last much longer than that, however. Every month more players move on to newer games, and just last week Sierra announced that they were &lt;a href=&quot;http://www.tribalwar.com/forums/showthread.php?t=497388&quot;&gt;shutting down the master server&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Hopefully a fan created mod for &lt;a href=&quot;http://en.wikipedia.org/wiki/Enemy_Territory:_Quake_Wars&quot;&gt;Quake Wars&lt;/a&gt; or any of the other new games can recapture some of the perfection of Tribes. Maybe if we’re really lucky, the guys over at Garage Games will come through with &lt;a href=&quot;http://www.legionsgame.com/&quot;&gt;Legions&lt;/a&gt;. I predict that some day in the future people will tire of WWII clones and futuristic urban warfare weapons and an innovative, sport-like game will have its time in the spotlight once again.&lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/vabdynamix.jpg&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;V-A-B (the in-game menu command for the “Bye” animation)&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
</content>
 </entry>
 
 <entry>
   <title>PHP 4's end</title>
   <link href="https://powdahound.com//2007/07/php-4s-end/"/>
   <updated>2007-07-16T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/07/php-4s-end</id>
   <content type="html">&lt;p&gt;Glad to see that there’s an end in sight for PHP 4. From the &lt;a href=&quot;http://php.net&quot;&gt;php.net&lt;/a&gt; news:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Today it is exactly three years ago since PHP 5 has been released. In those three years it has seen many improvements over PHP 4. PHP 5 is fast, stable &amp;amp; production-ready and as PHP 6 is on the way, PHP 4 will be discontinued.The PHP development team hereby announces that support for PHP 4 will continue until the end of this year only. After 2007-12-31 there will be no more releases of PHP 4.4. We will continue to make critical security fixes available on a case-by-case basis until 2008-08-08. Please use the rest of this year to make your application suitable to run on PHP 5.For documentation on migration for PHP 4 to PHP 5, we would like to point you to our migration guide. There is additional information available in the PHP 5.0 to PHP 5.1 and PHP 5.1 to PHP 5.2 migration guides as well.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Hopefully this forces some people to upgrade their apps and allow the devs to focus on PHP5 more. Aside from the better OOP in PHP5 which I find to improve my development a lot, I have to &lt;a href=&quot;http://photomatt.net/2007/07/13/on-php/&quot;&gt;agree with Matt&lt;/a&gt; in that we should all be spending our time on “design, copywriting, information, performance — the things that truly matter.” Does that make me a hypocrite for posting this?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>HipCal History</title>
   <link href="https://powdahound.com//2007/07/hipcal-history/"/>
   <updated>2007-07-15T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/07/hipcal-history</id>
   <content type="html">&lt;p&gt;While giving an interview recently I realized that some of the important dates in HipCal history were getting a little fuzzy. Here’s an official time line;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fall semester, 2004&lt;/strong&gt; - I make the first version of MyPIMP in my &lt;a href=&quot;http://www.cs.rpi.edu/~hollingd/eiw-2004/&quot;&gt;EIW&lt;/a&gt; class at &lt;a href=&quot;http://www.rpi.edu/&quot;&gt;RPI&lt;/a&gt;. ~30 fraternity brothers and friends were using it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Winter break, 2004&lt;/strong&gt; -  Pete &amp;amp; I were talking on AIM and decided that we wanted to make a website. We chose MyPIMP since it had already been started.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Spring semester, 2005&lt;/strong&gt; - Pete, Chris, Tawheed, Glenn, and I start planning features, prototyping, and working on the PHP framework.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Summer, 2005&lt;/strong&gt; - Pete, Glenn, and I stay at &lt;a href=&quot;http://rpicrows.com/&quot;&gt;AXP&lt;/a&gt; in Troy and work on the site daily. Chris and Tawheed work from the east coast while not at their real jobs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;September 4th, 2005&lt;/strong&gt; - &lt;a href=&quot;http://www.hipcal.com/blogs/?p=88&quot;&gt;Launch!&lt;/a&gt; MyPIMP goes live and we start spreading the word around campus. Most new users are our friends and classmates.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fall semester, 2005&lt;/strong&gt; -  We continue adding features including an interface upgrade, &lt;a href=&quot;http://www.hipcal.com/blogs/?p=97&quot;&gt;Groups&lt;/a&gt;, iCal support, and &lt;a href=&quot;http://www.hipcal.com/blogs/?p=96&quot;&gt;DST support&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;November 17th, 2005&lt;/strong&gt; - We &lt;a href=&quot;http://www.hipcal.com/blogs/?p=98&quot;&gt;change the name&lt;/a&gt; of the site to HipCal, enabling more users to feel comfortable using the site. We did not take church calendar users into consideration before this point!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Winter break, 2005&lt;/strong&gt; - HipCal is having some serious server issues. We weren’t really sure what to do since none of us had run a website before…&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;January 19th, 2006&lt;/strong&gt; - We get an email from &lt;a href=&quot;http://rikkcarey.wordpress.com/&quot;&gt;Rikk Carey&lt;/a&gt; over at Plaxo asking if we’d like to chat. We give him a call and are soon booked on a flight out there to meet the team.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;February 5-7th, 2006&lt;/strong&gt; - We fly out to Mountain View to meet everyone at Plaxo. Product visions are shared and both sides seem very excited about moving forward.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Late February, 2006&lt;/strong&gt; - Legal documents are passed back and forth while we try to figure out what each of us would be doing at Plaxo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;April 10th, 2006&lt;/strong&gt; - &lt;a href=&quot;http://blog.plaxoed.com/&quot;&gt;Mark Jen&lt;/a&gt; visits us in Troy while on the east coast for a blogging conference. We get our office set up as a Plaxo satellite office so we can start working.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Late April, 2006&lt;/strong&gt; - Pete and I are doing tons of press interviews (under embargo) while getting slammed with homework. It’s fun.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;May 1st, 2006&lt;/strong&gt; - &lt;a href=&quot;http://blog.plaxo.com/archives/2006/04/question_what_d_1.html&quot;&gt;News of the acquisition&lt;/a&gt; finally goes public! &lt;a href=&quot;http://blog.plaxo.com/archives/2006/05/were_listening_2.html&quot;&gt;Here&lt;/a&gt;’s some more press.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;May 16th, 2006&lt;/strong&gt; - A small Plaxo + HipCal &lt;a href=&quot;http://blog.plaxo.com/archives/2006/05/hipcal_plaxo_pa_1.html&quot;&gt;party&lt;/a&gt; is thrown at the Plaxo offices while we’re out there on a 4 day visit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;May 20th, 2006&lt;/strong&gt; - Glenn, Pete, and Tawheed graduate from RPI.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;June 5th, 2006&lt;/strong&gt; - We &lt;a href=&quot;http://blog.plaxo.com/archives/2006/06/on_the_road_to.html&quot;&gt;begin our road trip&lt;/a&gt; across the country.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;June 10th, 2006&lt;/strong&gt; - We arrive at &lt;a href=&quot;http://blog.plaxo.com/archives/2006/06/day_7_homeward_1.html&quot;&gt;our new place&lt;/a&gt; in Los Altos.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;June 12th, 2006&lt;/strong&gt; - First day of work at Plaxo!&lt;/p&gt;

&lt;p&gt;— Year of work —&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;June 24th, 2007&lt;/strong&gt; - The new Plaxo 3.0 is &lt;a href=&quot;http://blog.plaxo.com/archives/2007/06/introducing_an.html&quot;&gt;released&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The next few items added to this list will be very exciting. I wish I could add them now, but you’ll just have to wait!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Converting videos for the iPhone</title>
   <link href="https://powdahound.com//2007/07/converting-videos-for-the-iphone/"/>
   <updated>2007-07-15T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/07/converting-videos-for-the-iphone</id>
   <content type="html">&lt;p&gt;I’ve been very happy with my iPhone (writeup to come later) but had some trouble figuring out how to convert movies to its native format in an easy way. Here’s what I’ve found out;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The iPhone’s resolution is 320x480 at 160ppi.&lt;/li&gt;
  &lt;li&gt;The video formats are MP4 and H.264 (&lt;a href=&quot;http://en.wikipedia.org/wiki/H.264/MPEG-4_AVC&quot;&gt;MPEG-4 Part 10&lt;/a&gt;).&lt;/li&gt;
  &lt;li&gt;On the Mac and PC, &lt;a href=&quot;http://handbrake.m0k.org/&quot;&gt;HandBrake&lt;/a&gt; can rip DVDs to mp4 format.&lt;/li&gt;
  &lt;li&gt;On the PC, &lt;a href=&quot;http://www.winnydows.com/xvid4psp.html&quot;&gt;XviD4PSP&lt;/a&gt; can convert DivX and XviD files to mp4 format (I just used the “iPod Video 640” option) as well as join files together.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I don’t know much about video formats, aspect ratios, or encoding, but all the videos I’ve converted so far play on the iPhone and look great!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Finally, a worthy mouse!</title>
   <link href="https://powdahound.com//2007/07/finally-a-worthy-mouse/"/>
   <updated>2007-07-09T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/07/finally-a-worthy-mouse</id>
   <content type="html">&lt;p&gt;After using the old &lt;a href=&quot;http://www.powdahound.com/wp-content/uploads/2007/07/intellimouse.jpg&quot;&gt;Microsoft Intellimouse&lt;/a&gt; mice for years no other mouse ever seemed as good. I tried a number of Logitech and other Microsoft mice but they always had small side buttons, a crappy scrollwheel, or were pathetically small. Unfortunately, the &lt;a href=&quot;http://www.amazon.com/Microsoft-Intellimouse-Explorer-with-Tilt-Wheel/dp/B00013VHAS&quot;&gt;newer versions&lt;/a&gt; of the Intellimouse have poor reviews and strange ergonomics.&lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/microsoft-mouse.jpg&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;Microsoft Habu mouse&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;Last weekend I picked up the new(ish) Microsoft &lt;a href=&quot;http://www.microsoft.com/hardware/gaming/ProductDetails.aspx?pid=092&quot;&gt;Habu mouse&lt;/a&gt; at Fry’s and was back again today buying a second one for my desktop at home. The design is very similar to the Intellimouse v2 and it looks great. It costs $60, but even if it lasts for half the 7 years that my old Intellimouse did I’ll consider it money well spent.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Plaxo 3.0, WAP, and Pulse</title>
   <link href="https://powdahound.com//2007/06/plaxo-30-wap-and-pulse/"/>
   <updated>2007-06-26T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/06/plaxo-30-wap-and-pulse</id>
   <content type="html">&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/plaxo_pulse.jpg&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;Plaxo 3.0&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;Last night we released &lt;a href=&quot;http://blog.plaxo.com/archives/2007/06/introducing_an.html&quot;&gt;Plaxo 3.0&lt;/a&gt;, the product &lt;a href=&quot;http://blog.plaxo.com/archives/2006/04/question_what_d_1.html&quot;&gt;us HipCal guys&lt;/a&gt; have been working on at Plaxo for the past year. It feels great to have finally shipped a product and is nice to &lt;a href=&quot;http://news.yahoo.com/s/nm/20070625/tc_nm/internet_plaxo_dc;_ylt=AnqaohbVWMj.YZidAY6xkWdT.3QA&quot;&gt;see&lt;/a&gt; &lt;a href=&quot;http://gigaom.com/2007/06/24/plaxo-3-0/&quot;&gt;all&lt;/a&gt; &lt;a href=&quot;http://www.techcrunch.com/2007/06/24/new-version-of-plaxo-launched-more-sync-more-often/&quot;&gt;the&lt;/a&gt; &lt;a href=&quot;http://mashable.com/2007/06/24/plaxo-2/&quot;&gt;positive &lt;/a&gt;&lt;a href=&quot;http://www.stoweboyd.com/message/2007/06/linkedin-and-pl.html&quot;&gt;press&lt;/a&gt; &lt;a href=&quot;http://blog.wired.com/monkeybites/2007/06/plaxo-one-pim-a.html&quot;&gt;coverage&lt;/a&gt;. There’s nothing more motivating than positive feedback!&lt;/p&gt;

&lt;p&gt;Plaxo 3.0’s front end is written primarily in JavaScript, a technology which very few others are using to create applications of this size. All of us have learned more than we ever thought we’d know about this little scripting language! Although JavaScript is fun to use, I’m really enjoying the switch back to PHP which we’re using for some of our future products.&lt;/p&gt;

&lt;p&gt;My main contributions to Plaxo 3.0 were the calendar views, &lt;a href=&quot;http://m.plaxo.com/&quot;&gt;new WAP&lt;/a&gt;, and Pulse. Features like countdowns and a more interactive upcoming view were ideas we had for &lt;a href=&quot;http://www.hipcal.com/&quot;&gt;HipCal&lt;/a&gt;, and it’s great to see them make an appearance in 3.0. It’s also nice to see the new WAP, which I originally started as a small side project, make it to a shippable state within a few weeks, bringing us all one step closer to the “poor man PDA” (now we just need SMS alerts!). Pulse is just plain cool, and I’m very excited to watch it grow over the next few months.&lt;/p&gt;

&lt;p&gt;Anyway, back to work!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>My car in Street View</title>
   <link href="https://powdahound.com//2007/06/my-car-in-street-view/"/>
   <updated>2007-06-01T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/06/my-car-in-street-view</id>
   <content type="html">&lt;p&gt;While ‘driving’ by the &lt;a href=&quot;http://www.plaxo.com/&quot;&gt;Plaxo&lt;/a&gt; office using the new &lt;a href=&quot;http://maps.google.com/help/maps/streetview/index.html&quot;&gt;Street View&lt;/a&gt; in &lt;a href=&quot;http://maps.google.com/&quot;&gt;Google Maps&lt;/a&gt; I noticed that &lt;a href=&quot;http://maps.google.com/?ie=UTF8&amp;amp;om=0&amp;amp;layer=c&amp;amp;cbll=37.424835,-122.071445&amp;amp;cbp=1,20.9102935653636,0.499440689475263,2&amp;amp;ll=37.426914,-122.071388&amp;amp;spn=0.004925,0.008594&amp;amp;z=17&quot;&gt;my car is visible&lt;/a&gt; in the parking lot (it’s the red wagon behind the lamp post in the center). Pretty cool! I don’t have any privacy concerns about this feature like &lt;a href=&quot;http://yro.slashdot.org/article.pl?sid=07/06/01/1219256&quot;&gt;some other people&lt;/a&gt; do. Assuming the images are kept up to date it’ll be very helpful when getting directions in confusing areas. It’s also fun to look at all the funny images &lt;a href=&quot;http://blog.wired.com/27bstroke6/2007/05/request_for_urb.html&quot;&gt;people have found&lt;/a&gt;.&lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/google_streetview_car.png&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;Barely visible.&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
</content>
 </entry>
 
 <entry>
   <title>80k</title>
   <link href="https://powdahound.com//2007/05/80k/"/>
   <updated>2007-05-31T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/05/80k</id>
   <content type="html">&lt;p&gt;I just hit 80,000 miles in my &lt;a href=&quot;http://www.edmunds.com/volvo/v40/2000/index.html&quot;&gt;2000 Volvo V40&lt;/a&gt; while driving to work! It’s &lt;a href=&quot;http://j-walkblog.com/index.php?/weblog/posts/248_million_miles_on_a_volvo/&quot;&gt;not much&lt;/a&gt; for a Volvo so I’m sure it’ll last for another few years - especially with the mild CA weather.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>In the past few weeks...</title>
   <link href="https://powdahound.com//2007/05/in-the-past-few-weeks/"/>
   <updated>2007-05-14T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/05/in-the-past-few-weeks</id>
   <content type="html">&lt;p&gt;…a lot has happened!&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Went to &lt;a href=&quot;http://jumpskyhigh.com/&quot;&gt;Jump Sky High&lt;/a&gt; with a bunch of people from &lt;a href=&quot;http://www.plaxo.com/&quot;&gt;Plaxo&lt;/a&gt;. It’s basically 3 huge trampoline rooms and a foam pit that you get to play around on for $9/hr. We found it odd that you can only do flips on the trampolines and off the walls, but not into the foam pit. It only took a little practice before I could do decent back flips as well as flips off the trampoline walls. Maybe this summer I’ll learn to do them &lt;a href=&quot;http://www.wikihow.com/Run-up-a-Wall-and-Flip&quot;&gt;off any wall&lt;/a&gt;…&lt;/li&gt;
  &lt;li&gt;Finished school this past Thursday and it feels great! In a few days I’m flying home for graduation which is on Sunday. Still waiting for the final grades to roll in.&lt;/li&gt;
  &lt;li&gt;Started using &lt;a href=&quot;http://en.wikipedia.org/wiki/Amazon_S3&quot;&gt;Amazon S3&lt;/a&gt; along with &lt;a href=&quot;http://www.jungledisk.com/&quot;&gt;JungleDisk&lt;/a&gt; and am enjoying it so far. Had Explorer lock up a few times when accessing the mounted drive in Windows but other than that it has been stable. Even though I have 2 300gb drives in mirrored raid in my desktop it feels good to have a remote backup of certain things. Losing data really sucks.&lt;/li&gt;
  &lt;li&gt;Got a new &lt;a href=&quot;http://www.amazon.com/Pentax-50-200mm-4-5-6-Samsung-Cameras/dp/B0009OAFI4&quot;&gt;50-200mm lens&lt;/a&gt; for my camera and have been able to take some cool macro shots. Since 50mm still feels zoomed in I’m sure I’ll be switching to the 18-55mm lens that came with &lt;a href=&quot;http://www.amazon.com/Pentax-Digital-Reduction-18-55mm-3-5-5-6/dp/B000FTLSR0&quot;&gt;the camera&lt;/a&gt; for larger shots.&lt;/li&gt;
  &lt;li&gt;Finally signed up for &lt;a href=&quot;http://twitter.com/&quot;&gt;Twitter&lt;/a&gt; and am enjoying &lt;a href=&quot;http://iconfactory.com/software/twitterrific&quot;&gt;Twitterific&lt;/a&gt; on my mac. Hopefully I can remember to update it reasonably often (I’m terrible with AIM away messages).&lt;/li&gt;
  &lt;li&gt;Been working on the new WAP for Plaxo (now at &lt;a href=&quot;http://m.plaxo.com&quot;&gt;m.plaxo.com&lt;/a&gt;!) and using it almost daily. If &lt;a href=&quot;http://reviews.cnet.com/LG_VX8300/4505-6454_7-31812933.html&quot;&gt;my phone&lt;/a&gt; had a button to jump to a specific WAP site I’m sure I’d use it even more.&lt;/li&gt;
  &lt;li&gt;Pre-ordered &lt;a href=&quot;http://www.gamespot.com/pc/action/enemyterritoryquakewars/&quot;&gt;Enemy Territory: Quake Wars&lt;/a&gt; and am remaining optimistic about its release date and ability to deliver good gameplay. I hope I’m not let down!&lt;/li&gt;
&lt;/ul&gt;
</content>
 </entry>
 
 <entry>
   <title>New Plaxo Mobile Access</title>
   <link href="https://powdahound.com//2007/04/new-plaxo-mobile-access/"/>
   <updated>2007-04-25T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/04/new-plaxo-mobile-access</id>
   <content type="html">&lt;p&gt;For the past few weeks I’ve spent my spare time working working on a &lt;a href=&quot;http://blog.plaxo.com/archives/2007/04/alright_folks_t_1.html&quot;&gt;new version&lt;/a&gt; of Plaxo’s mobile access (WAP). It uses PHP, Smarty, and the new &lt;a href=&quot;http://blog.plaxo.com/archives/2007/03/calling_all_beta_testers.html&quot;&gt;Plaxo 3.0&lt;/a&gt; APIs so I’ve had to do very little work myself. The hardest part by far has been getting the layout to look good on all sorts of phones.&lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/plaxo-wap.png&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;Plaxo Mobile 3.0&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;Some of the cool features:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Data is always in sync with Outlook, Mac, Gmail, etc using thanks to 3.0’s sync setup.&lt;/li&gt;
  &lt;li&gt;Main page shows my weather and calendar events for today and tomorrow – usually that’s all I want to see!&lt;/li&gt;
  &lt;li&gt;Add and edit tasks and notes. The only reason for me to use a paper todo list or grocery list was that I could take it with me. Now I can just keep my tasks/notes in Outlook and access them from anywhere.
(Outlook tasks and notes aren’t implemented in the most user-friendly way, so I often just use the mobile access through my browser. We’re hoping to get these features added to &lt;a href=&quot;http://blog.plaxo.com/archives/2007/03/calling_all_beta_testers.html&quot;&gt;3.0&lt;/a&gt; soon!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you want to check it out just hit up &lt;a href=&quot;http://labs.plaxo.com/mobile/&quot;&gt;http://labs.plaxo.com/mobile/&lt;/a&gt; from your phone (should also work from your browser if you don’t have a data plan or want to play with it first.
Feedback welcome in our &lt;a href=&quot;http://groups.google.com/group/plaxo-mobile&quot;&gt;Google Group&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Why aren't video game matches on TV yet?</title>
   <link href="https://powdahound.com//2007/03/why-arent-video-game-matches-on-tv-yet/"/>
   <updated>2007-03-20T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/03/why-arent-video-game-matches-on-tv-yet</id>
   <content type="html">&lt;blockquote&gt;
  &lt;p&gt;One of the top 5v5 teams has become one of the first groups of WoW players to become professional gamers– Curse reports that CheckSix Gaming, an e-sports agency (or should that be promoter? sponsor?), has picked up ZERG IT DOWN as the first professional 5v5 arena team (one of the first actually, see Update below). CheckSix also sponsors Counterstrike, Call of Duty, and BF1942 teams, and while they say they were skeptical Blizzard would be able to make WoW a part of “eSports,” the arena system is what put it over the top– it provides a quantifiable way to determine which team has the better players.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Was just reading over on &lt;a href=&quot;http://www.wowinsider.com/2007/03/19/5v5-arena-team-is-first-to-go-professional/&quot;&gt;WoW Insider&lt;/a&gt; that a few 5-man arena teams &lt;a href=&quot;http://www.wowinsider.com/2007/03/19/5v5-arena-team-is-first-to-go-professional/&quot;&gt;are now sponsored&lt;/a&gt; and it made me wonder why we aren’t seeing competitive video games on TV yet. It’s obviously coming, but when? Are there not enough people interested in watching? Does that mean that there &lt;em&gt;are&lt;/em&gt; enough people interested in watching half the other crap that’s on TV currently? There are a number of professional gamers and gaming teams that make a living off tournament winnings so clearly there’s some serious money being put into it. There must be dozens of games out there with communities large enough to have an active, competitive community.
I give it 2 years before there’s a channel dedicated to it or ESPN has some sort of coverage. Lucky headshots clearly deserve a place in the SportsCenter Top 10.&lt;/p&gt;

&lt;p&gt;Also, I just noticed that the &lt;a href=&quot;http://www.worldogl.com/&quot;&gt;OGL&lt;/a&gt; is still around and is sporting the exact same website design they were when I was a member back in 1999.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>A gym-free workout</title>
   <link href="https://powdahound.com//2007/03/a-gym-free-workout/"/>
   <updated>2007-03-20T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/03/a-gym-free-workout</id>
   <content type="html">&lt;p&gt;&lt;a href=&quot;http://petercurley.com/&quot;&gt;Pete&lt;/a&gt; showed us &lt;a href=&quot;http://www.simplefit.org/workouts.html&quot;&gt;a workout&lt;/a&gt; today that he said was inspired by the workout the guys did for the movie &lt;a href=&quot;http://www.imdb.com/title/tt0416449/&quot;&gt;300&lt;/a&gt;. Although I didn’t see that mentioned anywhere, the workout still looks good. I’ve never liked going to the gym (and haven’t even used my Plaxo employee pass at Gold’s), but I do love that post-workout feeling of relaxation and sore muscles. I’ve been biking 30 miles almost every weekend but I find myself getting a little restless  due to lack of physical activity when Wednesday rolls around. Hopefully this will help keep me relaxed as well as get me in shape.&lt;/p&gt;

&lt;p&gt;The simplefit workout has a few benefits as I see it:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;It’s simple - just 3 different exercises 3 times a week; and I don’t have to go anywhere to do it!&lt;/li&gt;
  &lt;li&gt;It’s not always the same - although each of the 3 workouts use the same exercises they’re presented in such a way that each day will (hopefully) feel like a different challenge&lt;/li&gt;
  &lt;li&gt;It’s rewarding - the way its set up into different levels gives you something to focus on besides just getting more fit and helps you realize the progress you’ve made so far&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m sure other workouts have similar structure and simplicity but I didn’t really care to do any research. :) So today I did a ‘Day 1’ workout and completed 56 sets in the 20 minutes. The pull-ups are definitely my bottleneck at this point.
Hopefully in a few weeks it’ll get a little warmer out and I can bike to work every day (it’s just under 7 miles). It will be really nice to bike home after a long day instead of sitting in traffic. Exercise is such great stress relief, and it’d be stupid of me not to take advantage of the great CA weather.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Aquarium rescape</title>
   <link href="https://powdahound.com//2007/03/aquarium-rescape/"/>
   <updated>2007-03-04T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/03/aquarium-rescape</id>
   <content type="html">&lt;p&gt;Took a few hours yesterday to do a major rescape (re-landscape) of my tank to make more room for plants and give them better lighting.&lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/rescape1.jpg&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;Old layout.&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/rescape2.jpg&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;New layout.&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;It should be much easier to clean the back of the tank now (I think it was getting so full of fish poop that the water always looked dirty). I’m planning on picking up a few new plants in the next few days so hopefully in a few weeks they’ll fill in and I’ll be able to take an awesome ‘after’ shot to post.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Uploading a Picasa album to Flickr</title>
   <link href="https://powdahound.com//2007/02/easily-upload-a-picasa-album-to-flickr/"/>
   <updated>2007-02-25T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/02/easily-upload-a-picasa-album-to-flickr</id>
   <content type="html">&lt;p&gt;Google’s &lt;a href=&quot;http://picasa.google.com/&quot;&gt;Picasa&lt;/a&gt; is by far my favorite photo application and I’ve chosen flickr to share my photos due to its popularity and &lt;a href=&quot;http://www.flickr.com/upgrade/&quot;&gt;cheap pro plan&lt;/a&gt;. Unfortunately there’s no flickr plugin for Picasa since it doesn’t even support plugins. When I want to upload photos I have to manually drag them from Windows Explorer into the &lt;a href=&quot;http://flickr.com/tools/&quot;&gt;flickr uploadr&lt;/a&gt;. This works acceptably well for a small number of photos (hitting ctrl+enter on a photo in Picasa will reveal it in Explorer so you don’t have to track it down by filename) but for a large set, like &lt;a href=&quot;http://flickr.com/photos/powdahound/sets/72157594544816554/&quot;&gt;my recent trip to Italy&lt;/a&gt;, it would take hours! I took about 1000 photos in Italy and had selected about 130 that I wanted to put on flickr. The fastest way I found to get this group of photos onto flickr was;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Add all the photos to an album (I called mine UPLOAD)&lt;/li&gt;
  &lt;li&gt;Select the album in the album list on the left&lt;/li&gt;
  &lt;li&gt;Click the ‘Export’ button in the bottom right of the Picasa window&lt;/li&gt;
  &lt;li&gt;Export the images to a folder on my desktop&lt;/li&gt;
  &lt;li&gt;Drag this folder into the flickr uploadr (and then wait a few minutes while it adds the images…)&lt;/li&gt;
  &lt;li&gt;Upload!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Since Google has &lt;a href=&quot;http://picasaweb.google.com/home&quot;&gt;Picasa Web Albums&lt;/a&gt; I doubt they’d make an effort to improve Picasa -&amp;gt; flickr integration but maybe someone will be able to hack some flickr options into Picasa at some point. I’m just glad I don’t take too many pictures or this process would drive me nuts.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>I suck at blogging</title>
   <link href="https://powdahound.com//2007/02/i-suck-at-blogging/"/>
   <updated>2007-02-20T00:00:00+00:00</updated>
   <id>https://powdahound.com//2007/02/i-suck-at-blogging</id>
   <content type="html">&lt;p&gt;Maybe once school is done I’ll find time to post something here that’s worth reading/looking at. I realize that by blogging about blogging I’m being as lame as those podcasters who only talk about podcasting (old &lt;a href=&quot;http://www.dailysourcecode.com/&quot;&gt;Adam Curry&lt;/a&gt; podcasts come to mind). Therefore I’ll direct you to &lt;a href=&quot;http://flickr.com/photos/powdahound/sets/72157594544816554/&quot;&gt;photos from my recent trip to Italy&lt;/a&gt;!&lt;/p&gt;

&lt;p&gt;Be back in another 3 months…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Time for an upgrade</title>
   <link href="https://powdahound.com//2006/11/time-for-an-upgrade/"/>
   <updated>2006-11-19T00:00:00+00:00</updated>
   <id>https://powdahound.com//2006/11/time-for-an-upgrade</id>
   <content type="html">&lt;p&gt;Last week the desktop computer I had been using since my junior year in high school began breaking down in ways strange enough to warrant its retirement. I’m sure I could have fixed it by replacing a few parts but it’s obviously much more exciting to build a brand new rig! Thanks to &lt;a href=&quot;http://www.newegg.com&quot;&gt;Newegg&lt;/a&gt; I’m now running:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;eVGA GeForce 7950GT 512MB KO  (&lt;a href=&quot;http://www.newegg.com/Product/Product.asp?Item=N82E16814130066&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;AMD Athlon 64 X2 5000+ (&lt;a href=&quot;http://www.newegg.com/Product/Product.asp?Item=N82E16819103030&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;ASUS M2N-SLI (&lt;a href=&quot;http://www.newegg.com/Product/Product.asp?Item=N82E16813131013&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;2BG of Corsair XMS2 DDR2 (&lt;a href=&quot;http://www.newegg.com/Product/Product.asp?Item=N82E16820145034&quot;&gt;link&lt;/a&gt;)&lt;/li&gt;
  &lt;li&gt;2x250g WD SATA2 drives in RAID 1 (losing drives is painful!)&lt;/li&gt;
  &lt;li&gt;Other power-hungry parts&lt;/li&gt;
  &lt;li&gt;700w OCZ power supply (no I don’t need 700w, but it was only $10 more than the 520w!)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s nice being able to revisit the games that ran poorly on my old machine such as Splinter Cell: Chaos Theory, Hitman: Blood Money, etc. I haven’t found a game that this rig can’t handle, but I’m sure I &lt;a href=&quot;http://www.gamespot.com/pc/action/crysis/index.html&quot;&gt;won’t be saying that for too much longer&lt;/a&gt;. Better enjoy it while I can. :)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Serverside CSS Preprocessor</title>
   <link href="https://powdahound.com//2006/10/serverside-css-preprocessor/"/>
   <updated>2006-10-28T00:00:00+00:00</updated>
   <id>https://powdahound.com//2006/10/serverside-css-preprocessor</id>
   <content type="html">&lt;p&gt;Had an idea to make a CSS preprocessor that would help solve many of the issues I have with CSS currently. Ideally it would:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Allow nesting of styles&lt;/strong&gt;
Being able to nest styles ‘inside’ other styles would solve the problem of writing out tons of selector chains.&lt;/p&gt;

&lt;p&gt;Automatically insert necessary attributes
For IE and other browsers. IE: automatically add ‘cursor:hand’ whenever ‘cursor:pointer’ is seen. Could also add the IE-specific opacity property&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Allow use of variables&lt;/strong&gt;
It’d be great to be able to reference a color by variable in multiple styles instead of having to update multiple styles when the color changes.&lt;/p&gt;

&lt;p&gt;Looks like someone &lt;a href=&quot;http://www.shauninman.com/post/heap/2005/08/20/css_ssc_quickie&quot;&gt;had a similar idea&lt;/a&gt; (but currently only does variables).&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Fishes!</title>
   <link href="https://powdahound.com//2006/10/fishes/"/>
   <updated>2006-10-28T00:00:00+00:00</updated>
   <id>https://powdahound.com//2006/10/fishes</id>
   <content type="html">&lt;p&gt;I started my first aquarium in early August but hadn’t taken any pictures of it until now (I need to get a camera of my own!). There are currently 19 fish and 5 different types of plants in here.&lt;/p&gt;

&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/tank1.jpg&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;Full tank.&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;
&lt;figure&gt;&lt;img src=&quot;https://powdahound.com/assets/tank2.jpg&quot; alt=&quot;&quot; /&gt;&lt;figcaption&gt;&lt;p&gt;Closeup of &lt;a href=&quot;http://en.wikipedia.org/wiki/Hypostomus_plecostomus&quot;&gt;plecostomus&lt;/a&gt; &amp;amp; moss.&lt;/p&gt;
&lt;/figcaption&gt;&lt;/figure&gt;

&lt;p&gt;My goal is to take pictures regularly so that I can track the tank’s progress. I’ll put them in &lt;a href=&quot;https://www.flickr.com/photos/powdahound/sets/72157594513404036&quot;&gt;this Flickr album&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>phound.com</title>
   <link href="https://powdahound.com//2004/05/phound-com/"/>
   <updated>2004-05-02T00:00:00+00:00</updated>
   <id>https://powdahound.com//2004/05/phound-com</id>
   <content type="html">&lt;p&gt;Snagged &lt;a href=&quot;http://phound.com&quot;&gt;phound.com&lt;/a&gt; the other day. (p for powda, not a lame spelling of found.com) It just redirects to powdahound.com, nothing special. THought it would have been taken but apparently not.&lt;/p&gt;

&lt;p&gt;On another note, classes ended this wednesday and I go home next friday the 7th! So far grades are looking good. :)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Another New Design</title>
   <link href="https://powdahound.com//2004/04/another-new-design/"/>
   <updated>2004-04-03T00:00:00+00:00</updated>
   <id>https://powdahound.com//2004/04/another-new-design</id>
   <content type="html">&lt;p&gt;After taking a little break from work this weekend and learning the wonders of CSS I’ve decided to redesign the site from the evil, iframe-using, image-based junk that it previously was. The power and cleanliness of CSS is perfect; I don’t know how I had been designing without it!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Fall 2004!</title>
   <link href="https://powdahound.com//2004/04/fall-2004/"/>
   <updated>2004-04-01T00:00:00+00:00</updated>
   <id>https://powdahound.com//2004/04/fall-2004</id>
   <content type="html">&lt;p&gt;Secured my class schedule for next fall today, check it out:&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/assets/3.Fall_.04.gif&quot; alt=&quot;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I’ll also be adding Omega Worlds as an independent study for 4 credits (hopefully) come signups next fall. Hope I’m not overworked with DSA and Database Systems. :)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Time to Relax</title>
   <link href="https://powdahound.com//2004/01/time-to-relax/"/>
   <updated>2004-01-19T00:00:00+00:00</updated>
   <id>https://powdahound.com//2004/01/time-to-relax</id>
   <content type="html">&lt;p&gt;Spent the past three days skiing at Stratton Mountain in Vermont. Good to get out on the slopes again after all this terrible warm weather and rain. Also got my new Coolermaster Jet 7 heatsink/fan and installed a window on my case. Now I just need some color in there!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Woah... News!</title>
   <link href="https://powdahound.com//2003/12/woah-news/"/>
   <updated>2003-12-31T00:00:00+00:00</updated>
   <id>https://powdahound.com//2003/12/woah-news</id>
   <content type="html">&lt;p&gt;After much work, and laziness, the basic site layout has been completed. The rest of the features here will be completed at one point or another. And oh ya… Happy New Year!!!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Welcome!</title>
   <link href="https://powdahound.com//2002/12/welcome/"/>
   <updated>2002-12-07T00:00:00+00:00</updated>
   <id>https://powdahound.com//2002/12/welcome</id>
   <content type="html">&lt;p&gt;Welcome to my new location! &lt;a href=&quot;http://tribalwar.com&quot;&gt;Tribalwar&lt;/a&gt; was nice enough to offer me hosting just because, well, they’re such good hosts! I hope to improve upon the site as I get time, and for now you can find all of my files in the TW RDB (and links on this site).&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Testing new news script!</title>
   <link href="https://powdahound.com//2002/09/testing-new-news-script/"/>
   <updated>2002-09-28T00:00:00+00:00</updated>
   <id>https://powdahound.com//2002/09/testing-new-news-script</id>
   <content type="html">&lt;p&gt;Decided to go with a real news script instead of the ghetto one I was using just because it’s more fun this way. :) Didn’t bother to port over all of the old news, not like anybody read it anyway!&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Added my mIRC script!</title>
   <link href="https://powdahound.com//2002/08/added-my-mirc-script/"/>
   <updated>2002-08-03T00:00:00+00:00</updated>
   <id>https://powdahound.com//2002/08/added-my-mirc-script</id>
   <content type="html">&lt;p&gt;Finally got around to putting this thing online. Check it out &lt;a href=&quot;http://web.archive.org/web/20020809142746/http://united.dnsprotect.com/~lightin/powdahound/powdaserv.php&quot;&gt;here&lt;/a&gt;. It’s a script that puts all the chanserv commands in a menu for dynamix irc.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Gone for a Week</title>
   <link href="https://powdahound.com//2002/07/gone-for-a-week/"/>
   <updated>2002-07-18T00:00:00+00:00</updated>
   <id>https://powdahound.com//2002/07/gone-for-a-week</id>
   <content type="html">&lt;p&gt;Going to Rhode Island for a week (7/19 to 7/26) Not much going on here anyway…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Added a Photo Gallery</title>
   <link href="https://powdahound.com//2002/07/added-a-photo-gallery/"/>
   <updated>2002-07-14T00:00:00+00:00</updated>
   <id>https://powdahound.com//2002/07/added-a-photo-gallery</id>
   <content type="html">&lt;p&gt;Put up a photo gallery. Check it out: &lt;a href=&quot;http://web.archive.org/web/20020806190022/http://united.dnsprotect.com/~lightin/powdahound/gallery/&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Redesign In Progress!</title>
   <link href="https://powdahound.com//2002/07/redesign-in-progress/"/>
   <updated>2002-07-10T00:00:00+00:00</updated>
   <id>https://powdahound.com//2002/07/redesign-in-progress</id>
   <content type="html">&lt;p&gt;rawr rawr …MEKLAR THE SITE IS &lt;strong&gt;NOT FINISHED&lt;/strong&gt; YET SO THAT”S WHY IT DOES NOT WORK, K? sigh… ;)&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Merry Christmas!!!</title>
   <link href="https://powdahound.com//2001/12/merry-christmas/"/>
   <updated>2001-12-23T00:00:00+00:00</updated>
   <id>https://powdahound.com//2001/12/merry-christmas</id>
   <content type="html">&lt;p&gt;And on a site note…&lt;/p&gt;

&lt;p&gt;&lt;em&gt;* powdahound is 16.998694 years old!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;17th birthday is xmas eve, yes. :) I got that from an IRC alias for mirc I have. If you want it throw this in your ‘alt+a’, configure it (duh), and type &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/age&lt;/code&gt; in a chan.&lt;/p&gt;

&lt;p&gt;&lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;/age /me is $calc(($ctime - $ctime(december 24 6:12:00 1984)) / 31556952) years old&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Enjoy and happy holidays etc…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>RepKit Update</title>
   <link href="https://powdahound.com//2001/12/repkit-update/"/>
   <updated>2001-12-20T00:00:00+00:00</updated>
   <id>https://powdahound.com//2001/12/repkit-update</id>
   <content type="html">&lt;p&gt;Fixed the annoying and retarded (on my part) bug that made the script default to 0 repair kits when you first joined a server. Now it defaults to 4 and you dont have to set it in-game unless you want to change from 4. Download new version &lt;a href=&quot;http://web.archive.org/web/20020505200302/http://hosted.tribes-universe.com/powda/tribes/scripts/repkit.php&quot;&gt;here&lt;/a&gt;.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Poll time!</title>
   <link href="https://powdahound.com//2001/12/poll-time/"/>
   <updated>2001-12-15T00:00:00+00:00</updated>
   <id>https://powdahound.com//2001/12/poll-time</id>
   <content type="html">&lt;p&gt;Decided to try to learn a little php so I added the poll you see on the right. If you find any problems with it please contact me. Once I come up with a better poll question I’ll change that too. :p&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Tribes Updates</title>
   <link href="https://powdahound.com//2001/12/tribes-updates/"/>
   <updated>2001-12-14T00:00:00+00:00</updated>
   <id>https://powdahound.com//2001/12/tribes-updates</id>
   <content type="html">&lt;p&gt;Added the IFFs &amp;amp; Reticles and Skins sections to the Tribes side of things. IFFs are Friend/Foe indicators for those of you that don’t know (the little red/green over people’s heads). I’ll be adding more reticles and weapon skins later.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>It's snowing!</title>
   <link href="https://powdahound.com//2001/12/its-snowing/"/>
   <updated>2001-12-05T00:00:00+00:00</updated>
   <id>https://powdahound.com//2001/12/its-snowing</id>
   <content type="html">&lt;p&gt;Added this snow thing. Hey, it is December after all… Is it cool or annoying?&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Now Hosted by Tribes-Universe!</title>
   <link href="https://powdahound.com//2001/11/now-hosted-by-tribes-universe/"/>
   <updated>2001-11-13T00:00:00+00:00</updated>
   <id>https://powdahound.com//2001/11/now-hosted-by-tribes-universe</id>
   <content type="html">&lt;p&gt;Just received the word. All I can say is that these guys provide what I needed and they were nice enough to host me, as long as I update often. :) Shouldn’t be a problem. Great things to come, check back often.&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>Tribes 1 Section Done</title>
   <link href="https://powdahound.com//2001/11/tribes-1-section-done/"/>
   <updated>2001-11-12T00:00:00+00:00</updated>
   <id>https://powdahound.com//2001/11/tribes-1-section-done</id>
   <content type="html">&lt;p&gt;Finished getting all the sections up, but Tribes is the only one with full content. More t1 maps will be up shortly…&lt;/p&gt;
</content>
 </entry>
 
 <entry>
   <title>New site online!</title>
   <link href="https://powdahound.com//2001/11/new-site-online/"/>
   <updated>2001-11-10T00:00:00+00:00</updated>
   <id>https://powdahound.com//2001/11/new-site-online</id>
   <content type="html">&lt;p&gt;Just testing the layout for the new site. I’m slowly getting the tribes section up and will then move on to tribes 2.&lt;/p&gt;
</content>
 </entry>
 

</feed>
