This is a test
This is a test document from google docs. I decided to try this procedure to see if it worked for my old MT blog install. Sure enough, it seems to. Kick ass. Sort of. You see, I'm not sure I really want to write my blog posts in Google Docs. But it's nice to know that I can do this if I want to. Anyone else tried this yet? Hmm, checking the source, it seems that there's some funky stuff getting inserted in here. I'll have to see what I can do to clean that. For some reason, paragraph <p> tags don't appear anywhere. It seems to use break <br> tags instead. That's annoying. (comments)
Publication date: 2008-07-10
more
10 Tips For Your First Email Campaign
While it may seem like the natural partner to web development, the art of email marketing comes with a whole new set of important steps to take if you want that newsletter to pay dividends. Ben Chestnut lays down ten top tips for anyone wondering how best to approach that tricky first campaign.
Publication date: 2008-03-27
more
< head > Conference Q&A with Aral Balkan
Aral Balkan talks to Digital Web about the <head> conference: an experiment in online communities. Bringing a collection of varied and insightful speakers from around the globe to thousands of attendees without even stepping outside.
Publication date: 2008-10-08
more
A Day of Glider Extremes
A couple weekends ago we experienced a pair of glider extremes at Hollister on Saturday: one very short flight and one very long flight.
The short one, unfortunately, was us. Kathleen and I headed down to fly the BASA Grob 103 on what was predicted to be an epic soaring day. And it was. Unfortunately, we got there a bit late and the weather had already developed quite a bit more than we expected.
We towed toward the east hills and got off around 6,000 feet in what seemed like decent lift. But it was hard to stay with it and the high clouds from over-development in the Santa Cruz Mountains were quickly spreading. That blocked out the majority of sunlight and shut down most of the lift. We quickly went from "wow, this is going to be a good day" to "gee, let's see if we can find enough lift to keep from having to land soon."
Before long, we were getting low and had to head back to the airport. But there was one big a problem. A wall of clouds and rain was approaching from the west and brought a wall of dust on the ground to match. There was a very visible gust front headed directly toward the airport. Folks on the radio were advising pilots to stay away because of the 30 knot crosswind.
We were getting so low at that point that I didn't like the idea of flying back through possible sink and a definite headwind just to land at an unsafe airport. Luckily we were just a few miles from the private Christensen airport, so I put the nose down and headed straight to the runway at maneuvering speed (Va). No pattern. I knew where the wind was and decided to land downhill but into the wind.
All the the while, we were watching lightning strikes in the Santa Cruz Mountains from the approaching storm--some of which started a few of the 1,000+ wild fires that have burned so much of the California countryside.
Anyway, before long we were on the ground and sitting in the glider while the storms passed. And after the fun passed, I got on the phone to call for a retrieve.
This goes down in my book as my shortest (distance and time) cross country flight. Ever.
*sigh*
More pictures available in my Christensen Landout on Flickr.
And for something completely different...
In related but much better news, Hollister glider pilot Eric Rupp set a new distance record the same day, flying his DG-300 glider from Hollister to Calexico, California--right on the Mexico border. This amazing 782.66 kilometer flight has been the subject of much planning and speculation until Eric finally pulled it off. It was an amazing combination of great weather, timing, and piloting.
You can see flight details on OLC and his SPOT Satellite Messenger kept the rest of us informed on the ground while he was flying.
Eric's epic flight was covered a bit in the press as well:
Bay Area glider makes record-breaking flight to Mexico - Santa Cruz Sentinel
444 Miles Of Non-Powered Flight - AVweb
Congrats to Eric on an amazing and inspiring flight. (comments)
Publication date: 2008-07-03
more
A Job That Matters
In Tim O'Reilly's Work on Stuff that Matters he elaborated on three criteria that constitute "stuff that matters" for his readers:
Work on something that matters to you more than money.
Create more value than you capture.
Take the long view.
A number of folks where surprised when I announced that I was joining craigslist back in July but it's an organization that I really admire. Having been there about 6 months now, I can definitely say that it's a job that matters based on Tim's thinking and my own.
Every time I meet someone and tell them where I work, their reaction is quite positive. They've had a good experience with craigslist, like the service, love the philosophy, and so on. Craigslist matters ordinary people--not just technology nuts.
Similarly, I know that we create more value than we capture. The majority of our service is free and usage seems to be growing all the time. People I talk to get such good responses with craigslist classifieds (compared to, say, newspapers) that I know we're giving people more than their money's worth.
As for taking the long view, I think being a non-public company helps that a lot. I've rarely thought about what "the next quarter" will bring. It's quite a contrast from my years at Yahoo. When we're discussing technology infrastructure, I'm always trying to think ahead a year or two (or more). But the day to day ups and downs just don't feel as important the way we operate. I like that.
All in all, I've been very happy with the change and am glad that Tim posted something that helped me to explain what I like about it. (comments)
Publication date: 2009-01-27
more
Aircraft Insurance Surprise
I haven't flown my glider much in the last year and probably won't be flying it again for many months. While that may not be ideal, it means I can spend less money by not paying for an annual inspection and can greatly reduce or eliminate the insurance costs. Or so I thought.
It just so happens that my insurance carrier emailed the other day to ask about renewing my policy (it's that time of year). I explained that I probably wouldn't be flying it and would probably let the policy lapse. The countered with an offer of "storage only" or "ground" coverage, which means that they'd still insure it for non-flight related damage.
Now gliders are kind of expensive to insure in the first place. The annual insurance bill is roughly the same as it is for our Cessna 182Q (which is worth twice as much as my glider). So I was looking forward to paying a lot less.
Wrong!
It turns out that moving to storage only coverage still costs roughly 67% (2/3rds) of what the full flight coverage is. I'm still trying to process that figure. That's like State Farm Insurance telling me that if I agree to keep my car in the garage for a year, they'll give me a 33% discount.
Apparently, (1) there is a lot of overhead in the insurance industry, and (2) they think I'm far more likely to encounter non-flying damage.
And, the best part is this... If I were to cancel coverage all together for the year, I'd have higher rates when I come back next year because of discounts I've accrued with them. "If you let this policy go and then come back later, the new policy offered will be about 15% higher in cost just due to the loss of those discounts." Strangely, I thought those discounts were the result of earning additional ratings (like my Commercial) and gaining experience and flight time.
It's no surprise that the first four letters of the insurance company most glider pilots use are "Cost", huh? (comments)
Publication date: 2009-03-20
more
Are Accessibility Statements Useful?
Leona Tomlinson is back for a second article, detailing where accessibility statements fit into Web sites today.
Publication date: 2008-11-12
more
Asking as a Substitute for Thinking
Reading the comments to Patterns for email as work conversation, I came across a comment that hit on something I see all too often (and am certainly guilty of myself):
I?m definitely trying to get people used to the idea that I may only answer e-mails during two periods a day, but that if they have something quick, I?m available via IM. The issue really revolves around that I need some uninterrupted/uninterruptible chunks of time during the day or I feel like I have ADD, bouncing from issue to issue. Also, to a certain extent, I find that the people who work for me will, if I?m available, use asking me something as a substitute for thinking (this I?ve learned after years of being instantly available and then wondering why the people working for me don?t seem to be developing critical thinking skills).
It's really, really tempting when you're busy and heave deadlines looming to just ask the guy (or girl) who you know will know the answer. Sometimes it doesn't even enter your thinking because you're focused on accomplishing something else. And it's equally hard to estimate the impact of your interruption on their productivity, concentration, and focus.
The real trick, I think is finding a way to handle this that's polite yet firm. And when you're the sort of person who's more apt to say "yes" than "no" when someone asks for help, it's difficult to help coworkers understand that you'd rather they learn to fish instead of coming to you for one when they're hungry.
Do you run into this very often? If so, how do you handle it? (comments)
Publication date: 2008-03-21
more
Asynchronous MySQL Client in Perl
I recently found myself wishing for an async library for MySQL. My goal is to be able to fire off queries to a group of federated servers in parallel and aggregate the results in my code.
With the standard client (DBD::mysql), I'd have to query the servers one at a time. If there are 10 servers and each query takes 0.5 seconds, my code would stall for 5 seconds. But by using an async library, I could fire off all the queries and fetch the results as they become available. The overall wait time should not be much more than 0.5 seconds.
While I found little evidence of anyone doing this in practice, my search led me to the perl-mysql-async project on Google Code. It's a pure-Perl implementation of the MySQL 4.1 protocol and an asyncronous client that uses Event::Lib (and libevent) under the hood.
The code contains little in the way of documentation or examples, aside from the simple bundled test script. After a bit of mucking around with it, I managed to cobble together a working example. It looks like this:
#!/usr/bin/perl -w
use strict;
use Event::Lib;
use Data::Dumper;
use MysqlAsync;
use AsyncCaller qw/schedule/;
$Data::Dumper::Terse = 1;
$|=1;
my $expected_results = 25;
my $results = 0;
my $dbh;
for (1..$expected_results) {
# my $secs = int(rand(5));
my $secs = rand(5);
my $query = qq[select sleep($secs)];
schedule(0.001, sub{
my $dbh = MysqlAsync->new(
database => {
host => "localhost",
port => 3306,
database => "mysql",
passwd => "xxxxxx",
user => "root",
},
connect_timeout => 1,
max_requests => 25,
db_timeout => 10,
# logfile => "/tmp/mysqllog",
);
$dbh->get_array($query, \&result );
});
}
event_mainloop();
exit;
sub result
{
my ($result) = @_;
if (defined $result) {
print "result: " . Dumper($result);
} else {
print "error: " . Dumper($dbh->error());
}
$results++;
# all done?
if ($results == $expected_results) {
exit;
}
}
__END__
Sure enough, that code runs in just a bit more time than the longest query it executes, rather than the sum of all the query times.
What still surprises me is that this code doesn't appear to get a lot of use (or at least discussion) in the real world. In the PHP world, the mysqlnd driver offers async queries.
So count this as my contribution to demonstrating that Perl can do async MySQL queries too. (comments)
Publication date: 2008-11-15
more
Award-winning Washington DC Web Design Company to Promote BAE Systems Global Analysis
Washington, DC, May 29, 2007
Publication date: 2008-03-14
more
Back Seat Flying in the Citabria: Tailwheel Fun
About a week ago I finally got the chance to work on the back seat flying with my instructor in our Citabria. I'm not new to flying from the back. I've done so in gliders for a few years now, but I knew this was going to be a bit different.
I wasn't concerned about the actual flying. Flying is pretty much the same no matter where you are. The only question is how many of the instruments you can see from the rear seat. Luckily, I found that I was usually able to see the two or three that mattered: airpseed, altimeter, and engine RPM.
What I knew would be the most interested was the takeoff and landing--especially the landings. Being a tailwheel airplane, the nose is naturally much higher when on the ground or in a landing attitude. That means dramatically restricted visibility from the back. On takeoff it's not too bad, since you can pretty quickly get the tail flying and level out the airplane.
On landing, however, you end up using a lot of peripheral vision and a bit of faith. (This is assuming a normal three-point instead of a wheel landing. See also: Conventional Landing Gear).
But a funny thing happens after you practice it a few times: you start to get the hang of it and realize that it's not all that different than landing from the front seat. You're still trying to stay lined up on the runway and fly the airplane until it lands. In fact, you're trying to keep it from landing as long as you can so that when it finally touches down there's not enough energy for it to start flying again.
Aside from the satisfaction of learning something new and building confidence in flying your airplane, being able to fly from the back seat has another benefit.
You can now have your wife fly from the font seat and get used to the airplane that she'll be using to finish up her training too. And I may be biased, but I think she did a pretty darn good job on her first flight from the front seat. :-)
I'm not sure I'd want to put a non-pilot up front--or at least not someone who hasn't been around airplanes a lot. There are a some controls that I cannot reach from the rear. But I'd feel pretty comfortable giving rides from the back now. (comments)
Publication date: 2008-10-08
more
Back up in your ass with the resurrection!
It's had to explain the appeal of Office Space if you don't already get it. Therefore its even harder to explain how funny the first set of comments in response to this link on reddit.com is to me.
[Hint: the full sized image is easier to read.]
Seriously, I'm already a fan of both Office Space and Reddit. But now I love each one just a little bit more.
Feel free to insert your favorite Office Space quote in the comments below--unless you're a no talent ass clown like me, that is.
Damn it feels good to be a gangster.
In related news, Get Firefox 3 Today. I did. You should too. (comments)
Publication date: 2008-06-18
more
Bash Trick: Watching Multiple Background Jobs
I recently had a need to add some error checking to a bash script that runs multiple copies of a Perl script in parallel to better utilize a multi-core server. I wanted a way to run these four processes in the background and gather up their exit values. Then, if any of them failed, I'd prematurely exit the bash script and report the error.
After a bit of reading bash docs, I came across some built-ins that I hadn't previously used or even seen. First, I'll show you the code:
wait.sh
This is the bash script that runs the parallel processes and gathers up the exit values.
#!/bin/bash
FAIL=0
echo "starting"
./sleeper 2 0 &
./sleeper 2 1 &
./sleeper 3 0 &
./sleeper 2 0 &
for job in `jobs -p`
do
echo $job
wait $job || let "FAIL+=1"
done
echo $FAIL
if [ "$FAIL" == "0" ];
then
echo "YAY!"
else
echo "FAIL! ($FAIL)"
fi
sleeper
And here's the Perl script that I wrote in order to test the functioning of wait.sh. It accepts to arguments. The first is the number of seconds to sleep (to simulate the delay associated with doing work) and the second is the exit value it should use (any non-zero value indicates a failure).
#!/usr/bin/perl -w
use strict;
my $time = $ARGV[0] || 1;
my $exit = $ARGV[1] || 0;
sleep $time;
exit $exit;
Discussion
New to me was the use of let to do math on a variable so that I can count up the number of failures. Is there a better way? There's no native ++ operator in bash. Similarly, using jobs to get a list of pids to wait on provided to be a very useful idiom.
The code is straightforward and works for my purposes. But since 99% of my time is spent in Perl rather than bash, I wonder what I could have done differently and/or better. Feedback welcome.
And, if this is at all useful to you, feel free to take it and run...
Finally, I'm starting to really dig gist.github for showing off bits of code. It's good stuff. (comments)
Publication date: 2008-11-22
more
Better Living Through Taxonomies
As a change from our usual front-end development focused articles, this week we
Publication date: 2008-03-14
more
BlackBerry Curve Impressions
Yesterday my wife inherited my trusty old Motorola V710 cell phone after hers vanished. I took advantage of some credit I had, plus a pair of aggressive rebates from Verizon Wireless to get a Blackberry Curve at a very good price.
I'll preface this by saying that I've never owned a "smart" phone before and wasn't sure what I was getting into. But so far I'm pretty happy. Having access to some of my favorite on-line apps (in mobile form) is surprisingly handy.
So far I've set up a few favorites in the browser, such as Weather Underground Mobile and Bloglines Mobile. I've also installed a few apps: GMail Mobile, TwitterBerry, and Google Maps Mobile. I expect that I'll find some useful aviation related mobile sites or apps that I need to try out as well.
The best part is that once the service on my EVDO card is shut off, I'll have a cheaper bill and similar capabilities to what I had before--partly thanks to Bluetooth Tethering. And from the looks of it, there are even some Linux tools to play with.
I dig that fact that I don't need to buy funky chargers. USB power is great. I'm finding the interface pretty easy to adapt to, and thanks to some BlackBerry keyboard shortcuts, I'm pretty good on the keyboard.
I thought about getting the BlackBerry Pearl but couldn't see the point of having something with a retarded keyboard when the "real thing" was close in price.
I haven't yet tried the camera and uploading to Flickr. Sadly, there is no ZoneTag.
I have used it as a phone and it's at least as loud and clear as my old phone.
What else is out there that I need to play with? I'm sure there's a lot...
See Also:
Motorola V710 Data Rates on Verizon
Cheap Cell Phone Replacement Parts
(comments)
Publication date: 2008-05-24
more
Broken Finger
No, that's not my X-Ray. I don't have a copy of mine to post yet, but I do have a swelling broken finger as the result of a difficult to start pressure washer.
Oh, and I have Vicodin too.
Now here's the funny part. It's not fixed yet. The x-ray revealed an "interesting" break. That's not my description. The physician's assistant who read them actually said that a few times.
So I'm scheduled to see an orthopaedic specialist at 2:30pm on Monday to determine the best course of action. Meanwhile, it's taped to the medical equivalent of a sick and I'm at home with a loving wife and a small bottle of pills.
Ugh.
It took me nearly 34 years to brake a bone. Not even a pair of skis could do it. It had to be a fancy power tool. (comments)
Publication date: 2008-03-24
more
Building a Cheap Ass Linux PC
One of the down sides to leaving Yahoo! is that the notebook computer I've been using for last few years will no longer be mine in a few days. I'm one of those people who used their company issued computer for lots of non-company stuff too.
When I start at Craigslist, I'll be getting a new laptop running Linux. But that's several weeks away and doesn't run some of the funky Windows apps I need or want access to. So I'm going to try keeping work separate from non-work this time around.
What to do?
I have a Thinkpad T43p at home that's been used mainly as a backup sever and lightweight web browser for a while now. It has a 2GHz CPU, 2GB RAM, 80GB disk, and a kick ass screen and keyboard. But it's running Ubuntu.
So I'm planning to use the recovery CDs to make it back into a Windows box (maybe dropping in a bigger disk along the way) and using it as my personal Windows machine. But that means I need a system to take over doing backups and that other stuff that the Thinkpad used to do.
My solution is to pull a few cheap parts off Newegg.com and build a low-end (but still probably overkill) machine that'll run Linux and do what I want. Here's what I ended up with.
IN WIN IW-BT610T.300BL Black Steel MicroATX Desktop Computer Case 300W Power Supply$50.99
Intel BOXD201GLY2A Intel Celeron 220 SiS 662 Micro ATX Motherboard/CPU Combo$64.99
Crucial 1GB 240-Pin DDR2 SDRAM DDR2 533 (PC2 4200) System Memory$21.99
Sony NEC Optiarc Black 16X DVD-ROM 48X CD-ROM SATA DVD-ROM Drive Model DDU1671S$18.99
I already own a SATA hard disk I can drop in. Same goes for the keyboard and mouse. Plus installing Ubuntu costs me nothing other than my time.
At a total cost of $156.96 plus shipping, it's not bad for under $200. It'll do the backup and other "home server" jobs just fine and serve as a web browsing station now and then if need be. I almost opted for the Intel BOXD945GCLF Atom processor Intel 945GC Mini ITX Motherboard/CPU Combo for even lower power consumption, but wanted to stick with a Micro ATX board for now.
I'm really impressed by what you can get for a cheap these days! The CPU is even 64 bit--not that it matters in this case.
Thoughts?
Semi-related: This old laptop: Revitalizing an aging notebook on the cheap. (comments)
Publication date: 2008-06-21
more
Chicken Tortilla Soup Crock Pot Recipe
If you have a slow cooker (or "crock pot") and enjoy tortilla soup, here's a good recipe to try out.
Ingredients:
4 chicken breast halves
2 14.5 oz. cans of chicken broth
1 garlic clove, minced
2 tbsp. margarine
2 12 1/2 oz. cans of chopped stewed tomatoes
3 cups hot salsa
1/2 cup chopped cilantro
1 tbsp. or so of ground cumin
tortilla chips
Optional:
cheese (whatever you prefer in your soup)
sour cream
The steps:
Grill the chicken breasts. Shred them with a fork and knife.
Combine all ingredients except cheese, sour cream, and chips.
Cover the pot and cook on low for 8 to 10 hours.
Enjoy the soup, adding chips, sour cream, and cheese to taste.
What I like about this recipe is that it's incredibly simple, involved grilling (always fun), and takes no more than about 15 minutes to get going. You're then left with enough soup for four adults (or two for two days in our case).
Personally, I skip the cheese and sour cream. The soup itself is excellent with some chips added in. (comments)
Publication date: 2008-03-14
more
Concept Design Tools
Does your creative process start with the same sketch of a web page every time? Or even the same Photoshop template? You could be missing out on the most innovative solutions by not putting enough thought into the concept, says Victor Lombardi. Here he outlines three methods for pulling apart a brief to tackle the underlying concept design.
Publication date: 2008-10-01
more
Congrats to Chad Dickerson on his new gig!
News is out today that Chad Dickerson is leaving Yahoo! to become the CTO of Etsy in New York. That's fantasic news and I wish him the best of luck. Having made a similar decision myself, I know it's not easy.
How time flies. I still remember interviewing Chad on the phone a few years back and talking about some experiences we had in common: using Perl to wrangle news and content feeds from varous partners and so on. It didn't take long to realize he'd be a great addition to Yahoo. That turned out to be quite the understatement. :-)
Chad and I worked together in various capacities for a few years at Yahoo! and he truly made a mark there, kicking off Hack Days, helping put the Yahoo! Developer Network on the right track, and generally kicking ass. Seriously. Ask anyone who worked with Chad.
I know this will be a big loss for Yahoo! and Brickhouse but it will be an even bigger gain for Chad and Etsy.
My only regret is that we didn't get to work together longer.
Good luck, Chad! And welcome to the ex-Yahoo! club. (comments)
Publication date: 2008-07-23
more
Congrats to Yahoo! on the BOSS Launch
One of the more ambitious projects in the works when I left Yahoo was BOSS, a more open Yahoo! Search for developers and publishers. I see that BOSS launched today and wanted to say congrats to my friends in the Yahoo! Developer Network and Yahoo! Search.
Marshall Kirkpatrick said it well in his ReadWrite Web post today:
It is clear, though, that BOSS falls well within the company's overall technical strategy of openness. When it comes to web standards, openness and support for the ecosystem of innovation - there may be no other major vendor online as strong as Yahoo! is today. These are times of openness, where some believe that no single vendor's technology and genius alone can match the creativity of an empowered open market of developers. Yahoo! is positioning itself as leader of this movement.
Well done.
Keep on pushing... (comments)
Publication date: 2008-07-11
more
Cooking With Stock
Unless you
Publication date: 2008-09-10
more
Crazy Yosemite Squirrel
A few weeks ago we ended up hiking the Mirror Lake Trail in Yosemite National Park and encountered an amusing little squirrel near the end of the trial. I just happened to have finished filming a deer that walked nearby, so I pointed the Canon SD800 at the little furball to see if he'd perform.
Sure enough, he did. Check out the video.
I have no idea if this is common or not, but we were all amused at the little stretching thing he did at the ~40 second mark.
I also have some good photos of that hike (and the visit to Glacier Point) that should be coming online soon. Watch my Flickr photostream. (comments)
Publication date: 2008-07-08
more
Creating The Perfect Portfolio
If you
Publication date: 2008-03-14
more
DC Based Digital Agency Deploys New BridgeSpan Financial
Washington DC - October 30, 2009: Janmedia Interactive, INC, a Washington DC based New Media Agency, has collaborated with BridgeSpan Finacial in launching a new website for one its flagship products, SafeStart.
Publication date: 2009-11-20
more
Pages:
« 1 2 3 4 5 6 7 8 9 10 »
Site generated in 0.1708sec.