Claire Mae Baker
My wife and I are the proud parents of Claire Mae Baker. She was born a few weeks early, but everyone is healthy.
5lbs. 12oz.
19 inches
June 27, 2008 8:32pm

My wife and I are the proud parents of Claire Mae Baker. She was born a few weeks early, but everyone is healthy.
5lbs. 12oz.
19 inches
June 27, 2008 8:32pm

In its fifth year in the Michigan climate, my frangipani, a tropical plant, has finally bloomed. Today the first flower of the season unfurled, with many more on their way. Some pictures:
I recently went on a 3000 mile road trip, and as I was preparing for the trip, I wanted to know the answer to questions like “Where are all the Speedway gas stations that are within a mile of my route?”. I couldn’t find anything that would allow me to search for businesses near a given driving route, instead I could only search for things near a given point or city. I decided to build a mashup using Yahoo! Pipes and Google Maps that would allow me to do just what I wanted.
How to use it:
If you don’t want to bother installing the bookmarklet and want to try out the searching, you can test a local driving route or a long distance driving route.
How it Works:
After the user creates the route on Google Maps, clicking the bookmarklet sends the URL of their Google Maps page to a script on my site. This script will download the URL from Google Maps and parse out the encoded route in that page. Once we have this, we can give the user a search page with their route and map using Google Maps’ API. When the user searches, we call a Yahoo! Pipe which is passed the search parameters and a special id referencing this user’s route. The Yahoo! Pipe will download a specially crafted Atom feed for this route from my server. This Atom feed contains a list of some of the latitude and longitude points of the route. The Yahoo! Pipe then does a Yahoo! Local search on each point using the search parameters the user specified. Searches on particularly long routes can take several seconds to complete.
Lots of people like to complain about support from various large companies, particularly if the support is comcastic. I certainly have enjoyed complaining about them from time to time. However, today I had one of my first good experiences with AT&T’s support (formerly SBC in our area).
I also discovered that AT&T now offers naked DSL or as they call it “dry-loop DSL”. In other words, they allow you to purchase DSL without requiring you to have phone service through them. I had heard mention of this happening in the future, but didn’t realize it was already available.
Unfortunately if you remove your phone service, your DSL no longer qualifies for whatever special offers they have, which means you’ll be paying more for your DSL. So, despite removing phone service, your bill may not decrease by all that much. The support folk informed me that if I were to switch to dry-loop DSL, they have to shut of my phone AND DSL prior to turning on the dry-loop DSL. I was told that I might be DSL-less for up to 5 business days. Surprisingly, the support person was apologetic about this issue.
Dry Loop DSL Options from AT&T
To talk directly to the dry-loop folk at AT&T, call 1-888-800-4095 (7am - 9pm M-F; 8am - 5pm Saturday).
The web is buzzing about Yahoo! Pipes. It’ll be interesting to see what people build with Pipes. I couldn’t think of any need I had that would be fulfilled by Pipes, until today. I host this site on TextDrive / Joyent, and they have a forum that I lurk on from time to time. I’m mostly just interested in what a few select people say, particularly the top few people who work at TextDrive. Unfortunately on that forum, there aren’t any RSS feeds available that will monitor particular users’ posts. Until now, I’ve been using a bookmark to do a search on the forum that returns the latest posts from a specific user. In about 10 minutes of playing with Yahoo! Pipes, I had a working Pipe just to my liking. Hopefully, this does the trick for me.
I’m curious to see if I’ll “miss” posts by the select three users. The feed I’m filtering, contains the 15 most recent posts to the forum. This means that each post might not be listed in the feed for very long, as it may get pushed down by more recent posts. Presumably, either my RSS reader would have to access to Pipe or possibly Yahoo! Pipes would have to access the feed during that window in. If they don’t, then I’ll miss a post. It seems like this might be a problem for a significant number of uses for Yahoo! Pipes, so I’m interested to see how that plays out. Granted this “problem” is inherent in feeds, but it may be compounded when you’re filtering lots of feeds for specific information.
While we’re on the topic of working with feeds and publishing the results, it is worth noting you can do some simple manipulation and publishing with Google Reader, as well.
I've been using Subversion for a project I recently started at work. The project is a web application in PHP. Having enjoyed using Ruby on Rails on a different project, I wanted to setup a simple framework that borrows some ideas from Rails, like MVC, a test infrastructure, and a general directory layout that makes sense. I want this framework to be reusable for other projects, but I also want to be able to make changes to the framework from within the individual projects that use it and then port those changes over to my vanilla framework. Here's where Subversion comes into action.
FWIW, the process I use here is pretty much the same process you'd use for branches. Pretend I have the framework at /php_framework in Subversion. To start a new project using the framework, I issue the following command:
svn copy svn+ssh://svn_server/php_framework \
snv+ssh://svn_server/new_project -m "Creating new_project"
Then I can check out a copy of /new_project and work on it as I please. If I end up making a change to things that belong in the framework, I'll want to port those changes back into the framework. For simplicity, in most cases I'll want all the changes that affect the framework to be in a changeset of their own. This way a particular revision will contain only changes to the framework and not any changes to the application itself. If I go this route, I can port the changes with the following commands:
svn checkout svn+ssh://svn_server/php_framework
svn merge -r 135:136 svn+ssh://svn_server/new_project \
php_framework/
svn commit php_framework/ -m 'ported r136 from new_project'
The first command gets a working copy of the framework. The merge command takes the diff between revision 135 and 136 of /new_project and applies it to the php_framework directory. Then we commit the changes to the framework.
If this revision has some changes to files that don't belong in the framework, we can specify the file(s) that changed that we want ported to the framework in the merge statement like the following:
svn merge -r 135:136 \
svn+ssh://svn_server/new_project/blah/somefile.php \
php_framework/blah/somefile.php
I was pleased with how simple this process turned out to be. For more information, the Subversion book is online.
The real title should be “How to stop a Javascript or Flash distributed denial of service attack”, but that’s way too long of a title. As nifty client-side browser tricks are being propogated to the masses, they are also causing a few problems along the way.
Say you’re writting a Javascript or Flash enabled web application that has the browser send off HTTP requests occasionally. What can you do when a bug in your application causes clients to send a constant stream of HTTP requests to your poor server?
I recently ran into this type of problem and had to figure out how keep our servers from being overloaded by a number of clients that were sending a constant stream of requests to our servers. Lucky for us, the URLs that were being requested by these “rogue” clients were easily distinguished from “valid” requests.
The first step is finding some way to intercept the requests and do something different with just those requests. For my case, these rogue requests were all being handled by a 404 page, which was a PHP script. My first idea was to delay the response sent to these rouge clients, by just adding a sleep of a few minutes to this PHP page. This worked as advertised since the rouge clients were waiting until the each request was completed before sending another request, but I was still looking for something a bit better.
My second idea was to try altering the response for these requests to be a ‘301 Moved Permanently’ response instead of a ‘404 Not Found’. My hope was that if I specified a location of say ‘http://localhost/’ that all subsequent requests destined for these rouge URLs would instead be sent to the localhost, thereby no longer bothering our servers with these silly requests. Unfortunately, this didn’t seem to work for me in my tests.
My final and satisfactory solution was to send some special cache headers in response to these rogue requests. I added a few lines found in an example in the ever useful PHP documentation. These lines told the Flash script to cache the URL they just requested for 30 days. Subsequent requests for these URLs were just looked up in the local cache by the Flash script, stopping the steady stream of requests sent to our servers for these worthless URLs. Success!
According to geology.com, the highest point in Florida is a whopping 345 feet. Britton Hill is less than a mile from the Florida-Alabama border. In my neck of the woods, everyone said that Mount Trashmore was the highest point in Miami-Dade County. However, Britton Hill is almost 3 times as high as Mount Trashmore! (via digg.com)
For the past 6 months I’ve been an alpha tester using FeedLounge exclusively as my feed reader. I’ve been fairly satisfied with it, but this past week I’ve been weening myself off of it and moving to Google’s Reader. Today marks the first day that I didn’t have a “FeedLounge tab” in my browser. I moved away from FeedLounge for 2 reasons:
The original plan for FeedLounge was to offer free accounts and paid accounts. I was hopeful that my needs would be met by a free account. However, it was recently stated that they’d initially be offering only paid accounts. IOW, I’d have to pay for the service come March 16th if they didn’t come up with a way to offer free accounts by that time. True to my Dutch roots, I had a hard time coming up with a good reason to pay for this service.
Finally, it turns out I’m not a power user, which FeedLounge touts as its target user. I subscribe to about 60 feeds. I originally thought that I’d use the nifty tagging features in FeedLounge. It turns out I didn’t. Most of the time, all I want to do is go through all my unread items, and perhaps occasionally mark an item to come back to later. Google Reader meets these simple needs.
I updated my persistent Gmail searches script to work with the latest and greatest Firefox (1.5) and Greasemonkey (0.6.4). Enjoy!