Blog Posts
-
Bonjour, mes amis!
Apple's Bonjour service just saved me a lot of hassle.
I took a little time this MLK Day to get some old electronics ready for sale. One of the machines I decided to clean up was an old Mac Pro. I've recently replaced it with a Mac mini that positively sips power: 10 - 12 watts at idle instead of the consistent 120 watts that my old Mac Pro would draw. (I'll write more on cutting my setup's power consumption in a later blog post.)
I hooked my Mac Pro up to my router with an Ethernet cable but didn't want to get out a keyboard, mouse, and monitor to do a final set of backups and deauthorize some software. Normally this wouldn't be a problem since the old Mac Pro was set configured to start Apple Remote Desktop at boot.
I forgot that since switching to the Mac Pro, I had reassigned the Mac Pro's IP address (192.168.0.150) to the Mac mini. The Mac Pro booted, but could not get a proper IP address since the address it was configured to use was in use.
I was about to break out my keyboard, mouse, and monitor when I thought I'd give Bonjour a try.
» Continue reading this article.
-
Dude, Where's My Bot?
Say what you will about node.js, but it is certainly an easy way to build IRC bots with the Jerk library.
The PHP-based bot that runs in the Treehouse Agency IRC channels knows to respond to "Sweet!" with "Dude!" and vice versa. Brian McMurray said that he'd like to someday write a quick-and-dirty bot that would put our other bot into an infinite loop.
I accepted that challenge, and 10 minutes later, the bot was done.
The code is an example of how to build a bot that accepts environmental variables for configuration and otherwise does a pretty silly task.
» Continue reading this article.
-
A PSA: Lion and .local Domain Names
Do you enjoy your hair? Would you prefer not to pull it out while waiting for your local Apache server on Mac OS X to deliver a page to you?
If you use Mac OS X Lion and have development sites set up at .local addresses, you should immediately move them to any other fake TLD. The .local address space is resolved for Bonjour and as a result any request to a .local name will not hit /etc/hosts first, but will search for Bonjour hosts first.
I found this Stack Exchange question on the subject tonight after getting frustrated with curl seemingly hanging for several seconds on each request.
Instead, I switched all of my local dev sites from $DOMAIN.local to $DOMAIN.dev. The results are staggering.
» Continue reading this article.
-
CentOS 6 and VirtualBox (VBoxHeadless CPU Usage Fix)
TL;DR: Add "noapic" to your kernel line if your VBoxHeadless process uses far too much CPU.
I've been working on making space-efficient CentOS 5.6 and 6 images for VirtualBox recently. I'm building the images as part of a pilot program to start using the Vagrant gem to allow our developers to test the Drupal code they write on the real production OS before pushing it to the dev server. (I'm also learning Puppet, both for this project and as a way to more easily re-use tested configurations as we launch new sites.)
The CentOS 5.6 images I made worked like a charm, but ran into a problem wherein the VBoxHeadless process that hosted my CentOS 6 image would always use 25% CPU on my MacBook Air (one full core) despite the guest OS showing between 98% and 100% idle.
» Continue reading this article.
-
What Are You Eating?
Biking to the George Washington Bridge was just not going to work on the day before Memorial Day. The crowds were too packed in the park on the way up to the GW Bridge, and so I turned around and decided to do a nice brisk ride along the Hudson River Greenway and through Central Park.
I'm a big guy. I'm currently around 280 pounds, and yet when I ride I tend to be faster than most cyclists on the path by quite a bit. On this particular evening, I pedaled hard up the uphill entry ramp to the Greenway and saw in my rear-view mirror that I had another cyclist who was following pretty closely behind me.
I shot down the Greenway, passing cyclists and genuinely enjoying the cool breeze and the fresh smell of the Hudson River. My unknown cycling companion was generally only one or two bike lengths behind me. As much as I love to bike, I do not take it to the level that some folks in New York City do. I don't have a set of "real" biking shorts or a real biking jersey, nor do I have a super-expensive road bike. My anonymous companion, however, did appear to have all these trappings: a bike that looked like it could have been made of carbon fiber and a set of biking shorts and a jersey from some race or event.
» Continue reading this article.
-
Be More Awesome (Please!) : A Tale of Two Browsers
When Firefox 4 came out, I switched to it. I was mainly impressed by its speed (relative to the stable version of Chrome at the time) and the efficacy of Firefox Sync.
Several weeks later, I abandoned it for the stable build of Chrome. There were several things that contributed to its downfall in my eyes. Chief among them was its effect on my battery life on my MacBook Pro. Despite being nearly as fast as Chrome in user-perceived speed, Firefox generally used more CPU. There was also a very annoying bug that resulted in a ton of modal popups.
About a month back, I switched from the Chrome stable released to the Chrome dev channel and I've been in general very pleased. There's one feature that has been slowly gnawing away at my sanity, however, and it's gotten serious enough that I'm switching back to Firefox 5 to see if my complaints about Firefox 4 have been addressed.
» Continue reading this article.
-
Fuddled API, Verbose Workaround
I've started writing some Scala applications (including one atop the Lift web framework) to access Unfuddle's API recently. I've mainly been building daily burndown reports for my team at Treehouse Agency. I've run into a few issues with API methods not working as advertised, and Unfuddle's been pretty good about fixing most of them.
The problem I've been experiencing as of January 5th is that Unfuddle has subtly broken authentication for client libraries that (wisely) wait for a 401 error with an accompanying WWW-Authenticate: Basic header before sending credentials. (Namely, Unfuddle's API stopped sending a WWW-Authenticate header altogether.) If need be, you can force most HTTP client libraries to send authentication on every request in one way or another, and that's what I had to do tonight with the excellent Databinder Dispatch library.
» Continue reading this article.
-
Python to Scala 2.7: Check Your Spelling
Last time out, I talked about the benefits of Scala, and why I'm looking at Scala and Lift.
In that spirit, I spent some time last weekend converting Peter Norvig's simple Python spell-checker to Scala. I didn't do this conversion alone; I got some great answers from Daniel Sobral, Daniel Spiewak and finally David Winslow on Stack Overflow. David provided the answer I needed for the best way to implement the matching function in Scala 2.7.
» Continue reading this article.
-
Scala, Lift, and the Future
I've been spending a decent amount of my after-hours time investigating a combination that I think will be part of the future of web programming: the Scala programming language, and the Lift web framework on top of it.
» Continue reading this article.
-
Everything Old is New Again
It's time for my quarterly blogging drive, and to start, here's some information on my ever-increasing need to try out cool web technologies.
» Continue reading this article.
-
Need for Speed
I've been doing some pretty exciting things recently with website performance. I always disliked doing IT work in the past, but the challenge of setting a server up to be able to withstand crushing traffic is now quite intriguing to me.
» Continue reading this article.
-
Fritz Wunderlich - O Wie Angstlich
Sorry, it looks as though Fritz Wunderlich - O Wie Angstlich was too pithy for a preview.
Won't you please read the whole thing?
-
Why I Hate Drupal: Friday the 13th Edition
Now that I'm back from my month-long blog hiatus and from DrupalCon DC 2009, I thought I'd throw up a little post in the same vein as walkah's brilliant Why I Hate Drupal talk.
» Continue reading this article.
-
An MTA Train at 96th
Sorry, it looks as though An MTA Train at 96th was too pithy for a preview.
Won't you please read the whole thing?
-
Tree House Flips Out
Sorry, it looks as though Tree House Flips Out was too pithy for a preview.
Won't you please read the whole thing?
-
Back to Blogging
Welcome to the new (and completely empty) Grenade Sandwich. My name is Steven Merrill, a classical singer and technologist, and I'll be your host.
» Continue reading this article.