You are hereGeek
Geek
I'm a geek... what more can I say!
Fun with anagrams
Anagrams are fun. The Internet Anagram Server proves it. Although the server is overloaded at times, when it is working it's almost spooky the word combinations it comes up with. Take for instance these variations on "Michael G Hiemstra":
him mega rails tech
hitch me a rails gem
rails might ache me
him teach rails gem
rails mace he might
them rails magic eh
me rails mach eight
OK, so I cheated a little and required the word "rails" using the Advanced Anagramming option. You can't blame me for trying!
Yeah... I'm on Twitter!
Some people might say "It's about time."
You might say "Who cares?"
Still others might say "Huh? Twitter?"
According to their "About Us" page, Twitter is:
"... a real-time short messaging service that works over multiple networks and devices."
Twitter is like Facebook, that is, if you take away everything except the "What are you doing right now?" box. Twitter lets you post short messages about what you're doing and people can "follow" your posts. There's also nice Facebook application that actually fetches your updates from Twitter so you don't have to update this twice.
So... if you want to follow me on Twitter, you can find me at:
... although I'm not sure just yet how exciting that will be ;)
Some people refer to Twitter as "micro blogging", since it only allows short posts and some people use it as their personal journal of sorts. Twitter has been growing fast and there's other similar sites too (like Pownce, Jaiku or Identi.ca).
Once nice thing about Twitter, is that you can send your updates via your cell phone (SMS), although with my current plan this sets me back 15 cents each time.
Also very helpful is the TwitterFox Firefox add-on that lets you see updates from people you follow and send an update without having to go to the Twitter site.
2009/01/16 Update: Just over a month and 50 tweets later and I'm still using Twitter. I've learned a bunch about the Twitter community, a bit about one of the execs at work (@noddson), got the scoop on a newspaper story a day early from @mwalcoff, got some strange followers (at least one spam account) and even got a few replies from unexpected (but welcome) followers (like @make aka Phillip Torrone).
Streaming lounge music and writing code
For the most part, background noise from the television or talk radio are bad for my concentration when I'm at the keyboard working on code, writing documentation, tracking down bugs or designing new features. Even radio stations with easy listening or pop music can distract me to the point of uselessness. That's why I was happy to stumble across www.lounge-radio.com a year or so ago.
As their slogan states, this Internet radio station offers a "light summer-plate consisting of downtempo and fresh beats of nujazz - dipped into the warmth of brazil electro and finely served with a breath of ambient." Nice mix.
The great thing about their musical selections is that I can listen to it and still get my work done. In fact, I think it helps me get in a productive groove. It doesn't matter that songs are often in another language (French, German and more), in fact I think that helps in my case.
If you're interested, check out them out at:
I use the great open source (free) music player Songbird to listen. To do this, grab, install and run Songbird, then enter the URL above in the address bar of Songbird, click the "tune in" link (at the top left), click the "128kbit" link under the "Winamp" section and then sit back. If the audio gets choppy, you can try one of the other streams that shows in the Songbird lower panel (the first one that got automatically selected is most likely from Germany).
Easy importing of Flickr photos and blog posts on Facebook
I stumbled on this one day when I was frustrated posting photos to both Flickr and Facebook. You can actually configure Facebook to automatically import your photos onto your wall after they're uploaded to Flickr.
Do this by going to your profile (clicking your name in the top navigation bar will do this), then clicking the unlabeled triangle graphic to reveal the "Import" feature (see image).

Ditch iTunes, adopt a songbird
Tired of iTunes and other Apples software taking over your Windows system? Looking for some music software that's a little less proprietary and a little more open?
Give Songbird a try. It's an open source, cross-platform and customizable music player.
I've been using the pre-release versions for what must be over a year now. I like it!
Jason Fried on teaching to get more business
The 37signals blog pointed me to a video talk by Jason Fried (founder and CEO of 37signals) where he talks about how businesses can use teaching as a way attract and retain customers. To paraphrase the 14 minute talk, telling your customers how and why you do what you do can actually make you money. He talks about how 37signals repurposed a collection of their "lessons" (describing the strengths of their own application development "philosophy") from their blog into a book and a conference... both of which made them money.
Remote power switch project
The MAKE: Blog has an interesting post that points to a project for building a remote power switch controlled by a Linux system. A switch like this (available for server rooms but costing quite a bit) can be used to power things up only when necessary, thus saving money on your electricity bill from the power drain when a device is idle.
This seems like a nice little building block for home automation. You could have several of them to control lights, your entertainment systems or any other vampire device that draws power when idle.
Idea: Collaborative spam recognizing service for Drupal
If you administer a Drupal site (or any other site that allows anonymous posts or comments) you will have to find ways to contend with spam posts. The auto-generated, link-filled kind of comment spam messages are especially annoying when you're trying to open up your site to comments from he community, since they can discourage people from reading and commenting.
If someone was skilled and creative enough, they could build a Drupal module that would allow administrators to flag comment spam like this and have it sent directly to a central web site. This collaborative "dead comment pool" service would parse the spam for foul links, then keep a list of spam websites. It could tally how many Drupal admins considered each site a problem.
After some time submitting spam, the Drupal Admin could turn on automatic comment filtering for their site. The filter could then consult the central site and start blocking spam comments. Filters could be adjustable. For instance, you might not want to automatically delete a comment unless there were 20 other administrators who had marked the site as spam, or you may want to just flag comments as spam and not have them deleted.
I know there are several useful spam-killing modules available for Drupal already, but something like this might be helpful too.
Problems with protected controller methods
I struggled with this for awhile, maybe this post will save someone else the trouble?
By default, methods in your Rails controller can be accessed from the URL of your application. If you have a controller method named "car" and a method named "start", then using the URL car/start will execute the "start" method.
But, there are some cases where you might want a method in the controller, but not have it accessible. In this case, you can make the method "protected", and only methods within the same controller will have access to it.
I was happy and successful understanding these details until I tried to use a protected method inside an AJAX-style page update block. In this case, the protected method couldn't be found. I couldn't understand why the method worked in most cases, but not this one. I would get an error like:
NameError (undefined local variable or method `top_level_nodes' for #<#:0x46e7ec8>):
Then I realized that putting the call to my protected method inside a block like this:
render :update do |page|
protected_method
end
... is actually calling the method from a different class, and that's why the method is not found.
Once I realized this, I was able to move the call outside of the render block and I was good. I'm not sure if there is any other way to handle cases like this. I also noticed that the call would fail similarly inside a "for x in y" block.
Idea: Autonomous, submersible metal detecting robot
I was lucky enough to have my parents buy me a metal detector when I was kid. The handle was bright orange plastic and it was made for kids (I think it was from Radio Shack), but it did the trick and I always had fun using it until it gave out (after which I took it apart of course). I never found any real treasures with the device, but I was never short on bottle caps or rusty old nails :)
That metal detector was one of those formative toys in a growing geek's childhood. It sparked my interest in electronics, not to mention treasure hunting. I've thought about getting back into using a metal detector as a hobby again, but it would just have to compete with the kids and other side projects and it's just not really feasible at this time.
I've been mulling over an idea of combining a couple of my interests. I'm interested in robotics and electronics projects in general. It would be interesting to create a robot that could roam a field, narrowing down interesting places to dig. While the treasure hunter is investigating a marked spot, the robot could be locating the next place to dig. Covering the entire area programmatically would ensure that you didn't miss a spot as well (especially with an accurate GPS system installed). You could likely write the code for the robot to cover a potential find with several passes and several detector settings to qualify the find (e.g. using different frequencies for metal type detection and different depth settings). It might even be able to narrow down the size and shape of an item and show it graphically on a screen or send it wirelessly to a base station.
Then I got to thinking... where are some untapped locations for treasure hunting? Most people wouldn't have a lot of luck metal detecting in beach areas, especially along the shore and in the water where people might be unlucky enough to lose jewelery of one type or another. A submersible robot could be programmed to scour the shore for potential finds, and the treasure hunter wouldn't even have to get wet until a suitable location was found by the robot. With some attachments and a lot of skill, you could add a bucket to bring a scoop of sand to the shore for investigating.
Update 2009/09/15: Stumbled on an interesting RC car that can detect metal.