great chicken coop fire of 2010




soup box derby 2010

Langley's Soup Box Derby was this past weekend, and after a few years of *intending* to participate, we finally got in gear and built our racer.

after scoring a couple of old (free!) BMX bikes to use as the base, an idea took shape. Michaleen and I spent friday afternoon and evening putting the contraption together, and, after an ill-fated attempt at some rear-wheel steering, had a complete (albeit untested) racer done at 10pm. with darkness upon us, we had to cancel any plans for a test run and just hope for the best at the race in the morning.

here it is in all of its glory: two bikes hooked together with some metal bits with a kayak strapped on top - the pinnacle of simplicity and elegance!

Michaleen suggested that if everything went horribly wrong and i couldnt stop the contraption, i could veer left and into puget sound, so we dediced the paddle was a necessity.

here is me with 3/4ths of the pit crew preparing for the first run.

each racer had to take a mandatory solo test run to make sure their machine was capable. since we have never tested out our contraption, i have to admit i was a bit nervous. after about 10 yards, i picked up some steam and suddenly had quite a bit of shaking and wobbling to contend with. i managed to keep the racer inbetween the curbs, but something was definitely wrong.

after the test run, we decided that the shaking and jerking was due to too much toe-out and some loose handlebar bolts. we neglected to bring any tools, but after a quick trip to the second-hand store, we had a make-shift tool make out of a socket bit (no ratchet) and decided that our problems were solved and we were going to go for it. here is Eden giving me some advice on how to improve my driving for the official runs.

we headed back up the hill and the official came over and offered some cautionary words. he was worried about the shaking and swerving, but i assured him we were sorted. even the little kids were making the run from the top of the hill so we couldnt wimp out now. in the first heat, i started of cautiously with the brakes slightly on just in case. as my competitior pulled ahead, i decided to just go for it. miraculously, the shakes were gone and i navigated straight and true to the finish a few yards behind.

in the second heat, i was feeling more confident and went for it as soon as the flag dropped. our well-tuned machine pulled away from the competition and cruised to victory.

in the end, we werent the fastest racer, but we werent even close to the slowest, so i was happy. for our outstanding effort, we 'earned' these trophies. actually, everybody who entered and even some people who didnt enter got a trophy. in the end, it was a really fun day and we are already dreaming up ideas for next years vehicle.


summer projects

finally got a couple of summer projects wrapped up so i decided to share a few pictures.

first up is the chicken coop/chicken run. in just five short months, the chickens have grown from being small enough to hold in your hand to practically full grown.

the chickens just started laying eggs as well - first one chicken followed the next day by another. almost two weeks went by before the third started as well, and we are still waiting on the fourth. so far they have produced almost two dozen eggs though, and we are consistently getting three eggs every day now. if you have never had them, i cant recommend farm-raised fresh chicken eggs enough - they taste 100 times better than store-bought.

the chicken coop is attached to the garden shed, which is actually more like a covered storage area since it only has walls on three sides and most of those walls are just windows or fencing.

we got the steel casement windows from a guy here on the island who was saving them for an art project. he finally decided he wasnt going to get around to it, so we took them off his hands. the windows in the roof came from a local antique store, and all in all, i think it turned out really nice.

lastly, the vegetable garden. we didnt really know what we were doing, so we decided just to plant everything we wanted and see how it went. some of the plants should have been planted in the fall or started indoors, but we still had pretty good success. a few things didnt grow (i am looking at you, watermelon and butternut squash), but almost everything else did well.

the first thing to come up was the lettuce and though we ate some, it turned out to be very popular with the chickens. abbey even gets them to jump for the lettuce, which is pretty funny to watch. the chickens also love the broccoli leaves and fava beans, though we are saving most of the fava beans for ourselves (homemade pasta with fava beans and pancetta is my new favorite).

another surprise was the potatoes - we planted three varieties (german butterball, russian banana, and purple peruvian) and they did amazing. in just a few months, we have tons of big potatoes. the german butterball potatoes are so good - you gotta try them!

right now, the various summer squash plants are taking over the garden, but we are still waiting on some beans, leeks, jalapenos, and a few other things as well.


cracked frame with a happy ending




Fire and Forget

...or, 'How to Make One-Way Cross-Domain POST Requests with XmlHttpRequest'.

Most developers know about the same-origin policy when it comes to Ajax requests using XmlHttpRequest (XHR). Essentially, it means that an XHR request from the hosting domain cannot be made to any other domain. In fact, it is even more strict than other scripting and cookie policies in that it cant even be used across subdomains of the same domain.

However, I recently stumbled onto a loophole that proves quite interesting. If you run Fiddler or your favorite proxy and try this sample, you can clearly see that the request (from my domain) to another domain (*) is being made just fine. At first I thought it was some kind of browser bug so I tried a few others with the same result. A quick 'View Source' of the sample page will show that it is straight-up Javascript; no client libraries or other trickery to confuse the issue. It took me a minute, but then I realized what was going on.

Turns out the same-origin policy specifically disallows *reading responses* from other domains. Since the responses contain HTTP headers (which in turn could contain cookie information), that is the data that is marked as off-limits. However, the request is sent and processed on the server just as it normally would. The only difference is that the client (the Javascript making the XHR request) just can see the response that comes back.

"Great" I hear you say, "what good is it if we cant read the response?". Well, for plain-jane Ajax stuff where you are making requests to return JSON or HTML to update the page dynamically, it really isn’t useful at all. "And besides, we can already use JSONP and <iframes> and dynamic <script> tags to do cross-domain requests" you argue. True, but those techniques only allow GET requests – this cross-domain XHR request allows the full set of HTTP methods, including POST, so you can post form data using this technique.

And although the response is off-limits, we *can* get some indication of the result of the request. The .status property is not allowed, but the .statusText property is, sometimes, allowed. Why sometimes? I don’t know for sure, but in Firefox, if the request succeeds and returns a 200 OK response, the .statusText can be read and returns 'OK'. (Conversely, if a 404 response is generated, the .statusText property cannot even be read and throws an exception). So you can at least determine if your request made it to its destination and was successfully processed or not.

So what is it all good for? You can make fire-and-forget requests (a sort of web-based UDP protocol) where the responses don’t matter. Or you could have a backend system or API that only accepts data (think: analytics tracking service or notification service like These might not be earth-shattering ideas, but I thought it was an interesting scenario to consider.

Anyway, maybe everybody already knew this except me and I am just years behind the times. But if not, maybe this will help someone out there who is looking for a creative solution to their problem.

* - Why doesn't allow POST requests and I didn’t want the 405 Method Not Allowed response to confuse people




four new additions to the family recently


sledding @ Big Four Ice Caves

i had been wanting to take everyone sledding this winter, and this past weekend we finally got the chance. the original plan was to head to Mt. Pilchuck and the Heather Lake trailhead, where they closed the road and set up a Winter Recreation Area just for sledding and snowshoeing. however, when we arrived, there was not a trace of snow anywhere. we followed the road 7 more miles to the Mt. Pilchuck trailhead and still not a patch of snow to be seen. hmmm - we had driven this far, we didnt want to go home empty-handed.

we head back down the hill and stopped at the Verlot Vistor Center to ask the rangers their advice on where to go. unfortunately, they told us what we already knew - there was no snow anywhere nearby. finally, one of them suggested we try the Big Four Ice Caves area - there might be a small bit of snow left there, but it was a bit of a hike in and no guarantees. it was better than driving home defeated, so we decided to give it a try.

the hike in was about a mile through a very pretty area. the start consisted of a wooden boardwalk across a beaver march, and then a crossing of the Stillaguamish River before leading to the ice caves. the surrounding snow was completely gone, but the actual ice caves themselves were still there. with the fog and the granite backdrop, it was quite an impressive sight.

we found on small place off to the side suitable for sledding. the snow was very hard, but we were able to carve out a couple of small chutes. the rides were short and bumpy, but everyone had a great time anyway.

although not at all how we inteded the trip to go, we had a great time in a beautiful place that we probably would not have even known was there otherwise. a truly fortuitous turn of events and a flexible attitude by everyone made for a great trip in the end.


snowshoeing @ skyline ridge

this past weekend, we decided to take advantage of the winter weather and do some snowshoeing. we decided on a spot up at Stevens Pass that offered a short 3-mile round-trip trek with a lake at the top.

when we arrived, it was overcast, windy, and downright chilly. but we bundled up and headed out anyway. however, not too far into the trek, the sun came out and we had beautiful blue skies.

the trek was entirely uphill for the first half (in order to gain the ridge and reach the lake), but everyone trudged onward.

near the top, the trail forked and we initally took the right path. this lead to a beautiful view of the surrounding area.

after taking in the views, we retreated downhill several hundred yards and then took the left path to the lake. it was completely frozen over and snow covered with lots of tracks right across the middle of it.

a nearby small peak called out to be climbed, but we decided to eat our lunch instead and just enjoy the scenery and our accomplishment.

after a nice lunch, we turned around and headed down. the going down was much easier, minus the out-of-control sledders and frigid wind blasts.

everyone ended the day with a smile on their face, so i would have to say that it was a very nice trip.