Monday, December 21, 2009

Bad Haircuts

A while back I got the worst haircut I’ve ever gotten. I could tell because when men get haircuts, they go unacknowledged (my wife usually doesn’t even notice!). But people noticed me this time.

I could see the flurry of familiar questions each horrified/amused onlooker mentally dismissed when they first met me after the cut…did he cut his own hair? Is that a wig? Did he pay for that? Then I’d invariably see their eyes trace a circle around my head as they imagined the bowl that must have been used as a cutting template. It came out something like this:


Maybe I got what I deserved by going to a place called Fantastic Sams and paying a mere $11.

But wait, since it’s almost Tuesday, let’s make this a twofer. A few months later I went to a Great Clips that had just opened by our house. It turns out that it’s a terrible idea to go to a haircutter’s grand opening. Let me guide you through the cut…

So there I was looking a little scruffy, hoping for a trim, so I hopped into the chair and described what I wanted. The cutter gets started and does the clipper thing and some scissors and we start to talking. I ask my usual question which is something about how busy they are (not).

She said she didn’t know anything about it because she just started and, in fact, is graduating soon…

“From…cosmetology school?”

“No, high school.”

“Oh, so you’re in like a vocational school or something?”

“No, high school.”

“Oh, so you’re planning to go into cosmetology school?”


Awesome. “So have you been working in this business long?”

“No…this place just opened and they were hiring so…here we are!”

Hmmm so no training required at all…awesome. So she’s cutting my hair and doing the clippers and scissors and clippers and scissors and back again to clippers…? I’m detecting a problem. It seems she’s going back and forth—temple to temple—with the clippers and moving towards the top of my head as she goes. I suggest that we stop with the clippers

“hmmm that’s probably enough with the clippers”

“I know, I just can’t get it even…” buzzzzzzz

“Ok, it looks good…no—yep it’s great—no…no—ok there, now it’s great.” No more need for those clippers…or scissors. “We’re done here.” (it went something like that).

So I was done and had what I guess was just a hack job that resembled something like this:

(artist rendering)

Then I’m not sure how this happened, but Sarah (who only rarely gets her hair cut), decided to get a trim and got the same person! I swear I didn’t know, babe—honest!

Sarah asked for a trim up to her shoulders—about an inch. The cutter took about 3 inches off. When Sarah’s hair was flying fast and free well above her shoulders, the cutter suggested that her hair bounced up quite a bit with its curl. Her hair is not curly. At all.

After the cut, Sarah thought she got a mediocre cut but didn’t think much of it until we put our stories together. She apparently had some good conversation herself. My favorite response came when Sarah asked the cutter if she grew up cutting her family members’ hair:

“Oh no, I’m not allowed to cut my little sister's hair.”


Sunday, November 8, 2009

New Website

My super amazing wife has started her own blog. It is phenomenal. Some of the best stuff I've read in a LONG time. Seriously. You should check it out. Oh, and this is totally not her hijacking my site*

*actually it is

Wednesday, September 30, 2009

Food Allergies != Fun

Sarah and I grew up without allergies and in allergy-free homes with allergy-free extended families and mostly allergy-free friends. That’s why it’s so strange to us that Maya has unpleasant sensitivities to so many different foods.

The confirmed list of banned foods includes:

  • Tomatoes
  • Pineapple
  • Blueberries
  • Dairy

And some recent probable foods:

  • Soy
  • Corn

In case you haven’t checked a food label recently, that means she can’t eat anything. No cheese, ice cream, ketchup, fruit salad, anything sweetened with corn syrup (e.g. almost everything), anything with soybeans or soybean oil (everything else), or anything with butter in it.

Maybe I’m being a little dramatic—she’s not going to starve—it’s just very difficult to get used to and impossible to eat meals prepared by others. She gets by on a solid diet of delicious home-cooked meals, supplemented with scrambled eggs and peanut butter.

Fortunately, Sarah’s taken this all in stride. She bakes all of our bread and sandwich buns (you cannot find buns that are safe for her to eat at a regular store—it’s crazy), and somehow prepares three meals a day for her and dinner for us without the above ingredients…and they’re good.

So as you might imagine, we’ve become quite good at reading food labels. We love that labels are often very clear, including nice bold statement like “contains milk, soy”, but sometimes they hide ingredients behind phrases like “natural flavors” and “spices”. As a parent trying to figure out why my almost-two-year-old daughter is sensitive to a dish it’s very helpful to know what’s actually in it. Concealing ingredients behind groupings like those is very frustrating for us.

imageA recent example of our struggle is Progresso chicken broth. What’s in chicken broth you say? According to the product label, the website, the toll free number on the back of the box, and the letter they sent us, this is what’s in there:

Ingredients: Chicken Broth, Sea Salt, Sugar, Autolyzed Yeast Extract, Carrot Puree, Natural Flavor, Salt, Chicken Powder, Chicken Fat*, Celery Juice Concentrate, Onion Powder, Chicken Meat, Carrot Juice Concentrate, Spices, Onion Juice Concentrate, Garlic Powder. [underlining added]

Oh, so the first ingredient in broth is…broth. That makes sense. So Sarah emailed and called Progresso to find out what exactly are: chicken broth, natural flavor, and spices. I’m wondering what chicken powder is, too, but that’s for another day. Their response: we don’t know (i.e. they don’t tell us so we can’t tell you). I called again and pressed further and was simply told to stop buying Progresso Broth if I was worried about it because they can’t tell me what’s in it.

Well that was frustrating. This as a great example of a company failing to win a customer. There’s probably a dozen reasons not to tell us what’s behind those ingredients but I can’t think of one that really stands up to scrutiny. It’s not like we’re going to start making our own broth. Plus, if I was a real competitor, I would think more scientific approaches to figuring out what is in the box would be more fruitful. Instead of giving us a complete, uncensored list of ingredients like Superior Touch did for their Better Than Bullion product (they were awesome—completely answered our questions in a single phone call), they took our name and promised a call back. Days later, the callback was unhelpful. Weeks later, we received a package from General Mills, Progresso’s parent company. This contained a letter with the same unhelpful answer: we won’t tell you what’s in there, but thanks!

As expected, they included some coupons for more broth (which we can’t use in anything Maya touches because we still don’t know what’s in it). Unexpected, though, was the reason for the package: they included a bunch of General Mills-themed matchbox cars. Seriously—we have four of these things:

IMG_6340 IMG_6337
(Charlotte pictured, not Maya) 

Maya loves them. So, Progresso, thanks for the coupons and the toys—I guess we’re even. I wish I could feed your product to my child, though!

Tuesday, September 29, 2009

To Fail Or Not To Fail; Plus Bonus Ruminations

A hilarious meme popular in my social group right now is that of the fail. This is inspired by many popular sites, the most notable being FailBlog. a “fail” is an act of failure concluded with the (typically third-party) exclamation “fail”. Some examples:

While trying to refill a honey bear, I over filled causing quite a mess. Upon seeing my error, a witness is right to proclaim, “Fail!”. This is also increasingly popular in photos. For example, FailBlog is full of sign fails and science fails like these:


But you already know this. Why would I spend so much time defining a fail? Because apparently it’s not so obvious to a certain group of BabyCenter moms. Here are a few Fail fails:


What’s the fail? Are they not girls? Is one of them not yours?

image But they do match. You don’t get how this works…


Is it because the kid isn’t smiling at your song? Or is this a song lyric grammar fail? Sigh…

Sometimes, it’s a genuine fail, but needs a much, much shorter title (e.g. “Fail”):


The problem is that a true fail is self evident and most of these are not. Adding extra words to the caption should only carefully be done to add an extra punch.

In the spirit of all things fail, here are a few pics I snapped on the way to work recently:

Commute Fail

Fire Fighting FTW

On my way to work the fire truck pulled out in front of me and while I waited at a traffic light, they extinguished the flames shooting out of that car. Good work guys!

Here’s another encountered while trying to start up a VM on my Windows 7 machine (for those lucky enough to not be familiar with this, it’s the BSOD—what you see when your computer decides to suddenly stop working):


If you want some more funny pics, check out some recent protester signs.

While I’m dumping photos off my phone, here are some non-fail ruminations.

Once a year, Starbucks seduces its coffee loyalists (warning: avoid mental image!):


And on the other side of the same easel, we’ve got a number of problems. We’re missing an apostrophe, it’s already well after 2pm, and what does that mean about the tax? It’s applicable some places but not here, where I am?


Impressive hand-writing, though!

Pictures don’t do this next one justice. It was the saddest water feature I’ve seen in a long time:


Despite its imposing size, it had just one little stream of water which did not do well to cover up the pump or wires powering the thing.

On to more serious matters: getting busy. Here’s family prevention section at Target:


A few observations:

  • The top two shelves are only necessary if something from a lower self has let you down or wasn’t in use
  • A purchase from the lower shelves is probably always done with a smile (thus the cool product names)
  • Purchases from the top shelves, however, are undoubtedly nervous buys (even if you’re trying to become pregnant), and thus the professional product names (peeing on a stick never looked so…idk)
  • This could be a nice (i.e. hilarious) way to bring up the pregnancy topic with your significant other. Simply peruse the aisle and instead of reaching in for some family prevention, pick up some family detection

Anyone remember Microsoft Bob? Here’s a kid’s version available today:


And finally, I leave you with something that rarely happens as planned:


Friday, August 28, 2009

Two Cents on Healthcare, Part 3

My previous posts on this topic have met with some healthy and informative discussion. In this post I hope to address some of those comments and then bring my position back into focus.

I started with this:

“I fully support dramatic health care reform. I don’t know what the right solution is but what we’re doing now isn’t it.”

I really mean that last part: I don’t know what the ultimate solution should look like. I’m not an expert but then it doesn’t take an expert to see the writing on the wall: we’re trending in a dangerous direction.

After that, I railed a bit against our current system and posted references supporting my claim that we pay way to much for a system that is not the “best in the world”. This struck a chord with some readers. Paula Haren responded:

“Wow, pull a couple of various quotes and put them all together and your an expert! Considering I have spent lots of time as a nurse(>10yr) and a patient and a wife of someone with cancer and considerable medical debt depite excellent insurance....I must respectful disagree. Sorry Mike, but its just not that simple. And yes, the US does have the best health care in regards to inovation...Spend as much time at Cleveland Clinic as I have and you will see all these people who's socialized medicine has under or miss served (or did not serve at all) their medical needs. I think you would have to put down The New York Times and get in the trenches to appreciate what I am saying.
Just wanted to add my 2 cents!”

To healthcare providers: I meant no offense to you personally. Most of my medical care encounters have been excellent and I attribute that to having good insurance that affords me access to good doctors and nurses. Unfortunately far too many of us do not have access to good care or when they depend on it are hit with obscene debt; and systemic problems lead to poorer outcomes for us on so many levels it’s depressing. As an aside: how is it that you have “considerable medical debt despite excellent insurance”? That sounds like a contradiction to me.

imageAfter doing additional research, I’m sticking to my original claim: the United States is not a leader in health care (not even close). Here’s a nice assortment of numbers that don’t make us look so great. And a couple more from the CIA World Factbook (which is fun to browse, by the way):

With respect to Paula’s experience at the Cleveland Clinic, I’d say she probably does see a lot of good medicine but her highly ranked hospital—which is in the top ten in 11 categories—is hardly representative of the nation. In contrast, my hospital ranks in only two categories and gets an unimpressive #45 in each.

In addition to anecdotal counterclaims like that, I’m also seeing a lot of fear. This comment from Miki Hempleman is representative of what I’ve heard from several people:

“I totally understand your feelings Michael and were it all it is SAID to be, I might also swallow the "magic pill" ... but it's not. Read more in depth and you will see it is VERY scary a proposition and will NOT do what they say it will. And I for one am in no hurry to move into a system that will not work.

Nervous tho after hearing and talking to good friends that are both Canadians and Brits. It's not that great a deal all the way around. Your aunt?? I believe... whomever, had some very good insight as well.

Getting nervous, real nervous about where we are headed as a country. Man I hope we aren't going to take a ride down the slippery slope. It's SUCH a fine line for us to unravel.”

And it’s really no wonder. Every day interest groups, political action committees, corporations, concerned citizens, and politicians scoop buckets of muck out of the sewers to toss at each other through every medium. Absolutely absurd claims like Obama death panels would be frightening indeed if there was any truth to them.

This fear of change is something I simply do not understand. Maybe it’s just my engineer-wired brain: if something is broken, you fix it. I’m not so naive to believe that this problem is solvable overnight or that a first-pass fix will be perfect (so few things ever are). Instead, I’m pragmatic enough to realize that we’re not setting in stone the next year, decade, or century of healthcare-related policies. Positive change will happen just like everything else: one step at a time (and getting from zero to one is the hardest part).

Finally, I want to refocus my position on this issue:

  • Everyone should have health care coverage
  • Coverage should be similar to what I have (I’m middle class, I pay small $15-20 co-pays for office visits, and all the important stuff is covered)
  • Coverage should be mandatory
  • Coverage need not be free (but it must be affordable)
  • These steps are necessary for the fiscal stability of our nation as the status quo is unsustainable (thanks for the video, Steve!)

We could hypothetically do this with private insurance and some new legislation. I’m not opposed to that idea out right, I just don’t think it’s practically possible. In the health care equation between the patient, doctor, and insurance companies, only the insurance companies have a direct incentive to keep costs down and they’re doing a lousy job at it:


I’m afraid I’ve run out of time to cover all the specific points that Tiffany and Tim discussed. I think they did a fine job and I will likely come back to some of their discussion in the future. They have both clearly put a lot of thought into how specific reform could be implemented and I like the dialog.

Tuesday, August 25, 2009

Two Cents on Healthcare, Pre-Part 3

While I prepare part three of my healthcare series, I’d like to get some feedback on a question that’s come up more often than I expected:

Is access to comprehensive healthcare a right or a privilege (regardless of ability to pay)?

Let me know what you think.

Sunday, August 23, 2009

Two Cents on Healthcare, Part 2

image My friend Tiffany commented on part 1 of my healthcare posts on Facebook:

Please address how and/or why the US will remain on the cutting edge of health care without dissolving into the bowels of mediocrity. And, what motivates our most outstanding physicians to continue practicing in this capitalist society? I look forward to your thoughts and will end with a smiley face in order to maintain lightheartedness. :)

This received a very nice response from Tim:

Shouldn't the same motivations still apply?

The physicians are still going to be paid, they are still going to help people, and the plans I have heard would make compensation better for non specialists, like your family doctor.

As far as the cutting edge, I think that was the point of the link. The US is not on the cutting edge of health care now

We may spend the most money, but we don't get the best service, that's bad Capitalism.

I will also end with a smile :) this is just a friendly post. I look forward to reading more about it. Thanks for the link.

I appreciate the genuine friendliness with which Tif and Tim signed their comments though I predict that this will deteriorate soon. I guess we’ll see how long it lasts!

I completely agree with Tim. Our current system isn’t the world class health care giant we all like to believe it is even though we’re paying through the nose for it. While those numbers are dated, more recent analysis is grim, too:

image “It’s harder to keep deluding yourself or be complacent that we don’t have areas that need improvement,” said Karen Davis, president of the Commonwealth Fund.

The study, which assesses the United States on 37 health care measures, finds little improvement since the last report, as the cost of health care continues to rise steadily and more people — even those with insurance — struggle to pay their medical bills.

The central finding is that access has deteriorated,” Ms. Davis said.

…the United States, for example, has reduced the number of preventable deaths for people under the age of 75 to 110 deaths for every 100,000 people, compared with 115 deaths five years earlier, but other countries have made greater strides. As a result, the United States now ranks last in preventable mortality.

I really think we can simplify and sidestep most of the controversy with a little logical deduction.

Premise: no one will be denied essential health care.

This is a fact today. If uninsured deadbeat Joe Shmoe (no offense, Joe) comes down with cancer, he will receive complete treatment at a hospital, regardless of his ability to pay.

Today’s financial impact: We all hope he can pay but with the cost of an extended hospital visit (easily in the six figures), let’s not count on it. So Joe declares bankruptcy and society absorbs the cost of Joe’s treatment through higher health care costs. Everyone loses.

Consider the same scenario but now with Joe being a mostly responsible guy. Suppose instead of being a deadbeat, he had saved away $100,000 for retirement…but neglected to carry health insurance. We’re a little better off because he can apply $100k towards his medical bills, but Joe’s seriously screwed. He’s probably still looking at bankruptcy and his life savings has just vanished. Sure it’s his fault for letting his insurance lapse but it still seems unfair, especially when compared to the deadbeat version.

Proposed financial impact: we cover Joe and everyone else with universal health care (not necessarily free, but mandated, just like car insurance in Ohio and elsewhere). He gets sick and the system pays, just like before. Only now, we’re accounting for it properly and Joe’s finances are not left in ruins. The cost to you and me is the same either way.

It’s great that we’re a compassionate nation that hesitates to let the sick perish, but perhaps I’m too generous when I assume that the uninsured are so well received. Some stats suggest that many die in need of medical care that’s out of reach (via Powazek, via Blurbomat):

Here's what's actually happening. The US is the only major industrialised country that does not provide regular healthcare to all its citizens. Instead, they are required to provide for themselves – and 50 million people can't afford the insurance. As a result, 18,000 US citizens die every year needlessly, because they can't access the care they require. That's equivalent to six 9/11s, every year, year on year.

That’s embarrassingly sad.

Ruminations in Pictures (Briefly)

Just a few quickies I snapped recently. I noticed this Ben Franklin quote on a website (left) which appears to be attributed to a rather modern looking Ben.


I accidentally ended up at Bing recently and spent some time learning about Puffin chicks (and forgetting what I was going to search for). This factoid will surely make any new mother cry:


While heading home from a busy day Sarah and I were on the same course as this dushbag for a couple of minutes. It’s funny how applicable some stereotypes are:200908221557_112This guy had a Confederate Battle Flag license plate frame, some weird goatee thing, broken tail lights, spray painted and possibly suped up truck, rolled up sleeves, and was swerving and weaving like a true—pardon my language—douche bag. I shouldn’t be so surprised considering where I live.

And lastly, Maya and I came across this violent if not perverse Elmo toy:


You shake it and his head flops around as he giggles (seems similar to this NSFW product ad).

Two Cents on Healthcare

I’m not prepared to tackle the healthcare debate on this blog just yet. I have very strong feelings on the matter—so much so that I’m not sure where to start. I’m swirling from thought to thought unsure of how to begin writing. It’s a feeling similar to what I experience after a house move where I just walk around in circles unsure of how or what to start unpacking. So I’ll be brief.

I fully support dramatic health care reform. I don’t know what the right solution is but what we’re doing now isn’t it.

Feel free to post comment with questions, clarifications, etc. but please keep it civil. This is likely to be the first of many short blurbs on the topic.

Building a Windows Sidebar Gadget

I use Hudson CI to monitor software builds at work and thought it’d be nice to provide visibility of Hudson’s data through a sidebar gadget. Unfortunately, one didn’t exist so I took it upon myself to make one. It turned out to be very, very easy.

Here’s the end result:


The gadget is on the right side, the regular Hudson interface on the left. The top 11 projects are listed as links to their project pages within Hudson. The colored bullets indicate build status (green = good, red = bad). I experimented with shading, text color, etc. and concluded that just having colored bullets was clear, clean and consistent with the regular Hudson interface.

imageAnyway, the easiest way to get started with Gadget development seems to be starting with an existing gadget. I started with the unofficial flair gadget. A .gadget file is really just a zip file. 7zip seems to know this as it allowed me to unzip it without renaming it to .zip which was nice. After unzipping, I stripped out pretty much everything except the structure.

The gadget is remarkably simple—it’s just two web pages, main.html and settings.html. All the other files are just there for support: a few images, jquery (my favorite JS library), and json2 (brings JSON support to IE which is curiously missing on my Windows 7 machine). Obviously main.js/.css/.html go together as do settings.js/.css/.html.

Here’s what the main page looks like:

<html xmlns="">
  <title>Hudson Monitor</title>
  <link rel="stylesheet" href="styles/main.css" />
  <script type="text/javascript" src="scripts/jquery-1.3.2.min.js"></script>
  <script type="text/javascript" src="scripts/main.js"></script>
  <script type="text/javascript">
    $().ready(function() {
<g:background src="images/bg.png">
    <ul id="jobs"></ul>

The HTML really boils down to a single element: <ul>. The real magic happens within main.js. Here’s the relevant section:

function FillMain() {
    // Get the url from the saved settings
    var url = System.Gadget.Settings.readString("hudsonUrl");

    if (url == null || url.length == 0) {
        $("#jobs").append("<li class='status-red'> \
            Whoa there! Check your options, pal</li>");

    $.getJSON(url+"/api/json/?jsonp=?", FillMainCallback);

    // Repeat every 20 minutes
    setTimeout("FillMain()", 20 * 60 * 1000);

function FillMainCallback(data) {

    // space is limited
    var items =, 11);
    // add each item to the list
    $.each(items, function(i, item) {
        var itemName =; 
        var itemClass = 'status-' + item.color;
        var itemUrl = item.url;

        $("#jobs").append("<li class='" + itemClass + "'><a href='" 
            + itemUrl + "'>" + itemName + "</a></li>");

I won’t talk about that too much except to say jQuery makes all of this so much easier:

  • $.getJSON(): contacts the Hudson build server and retrieves a terse list of build statuses. Hudson provides a straightforward, albeit limited API at http://hudson-url/api.
  • $.each(): iterates over each Hudson project returned by the server; for each one, adds it to the list (#jobs) as a new list item

With the data flowing nicely, all that was needed was a little light graphics work and some CSS and I called it a day. I borrows the pretty background image with the curvy, aero border from the Outlook gadget but replaced the Outlook icon with a Hudson logo.

This is a feature-poor gadget, I admit. I plan to add the ability to order the projects by other criteria (e.g. last-activity-date) and the ability to pick which projects are listed. I might try out some other UI designs, too. What I have is functional and clean but leaves a bit to be desired.

Friday, August 14, 2009

Enabling Dynamic HTTP Compression in IIS7 on Windows Server 2008

I’m not very familiar with the newer configuration screens in Windows Server 2008 so I pulled my hair out trying to update some settings. Apparently it’s just too obvious for Google to have been any help so I’m documenting it here for the next shmuck.

I wanted to enable dynamic http compression. I found the page to enable it but it wasn’t installed:

“The dynamic content compression module is not installed.” (but we won’t tell you how to install it)

It turns out that installing it is very easy and didn’t require a reboot (for me, at least):

Text only

Install it:

  1. Open server manager
  2. Roles > Web Server (IIS)
  3. Role Services (scroll down) > Add Role Services
  4. Add desired role (Web Server > Performance > Dynamic Content Compression)
  5. Next, Install, Wait…Done!

Enable it:

  1. Open server manager
  2. Roles > Web Server (IIS) > Internet Information Services (IIS) Manager
  3. Next pane: Sites > Default Web Site > Your Web Site
  4. Main pane: IIS > Compression

With perdy pictures

Install it:

  1. Open server manager
    0 start server manager
  2. Roles > Web Server (IIS)
  3. Role Services (scroll down) > Add Role Services
  4. Add desired role (Web Server > Performance > Dynamic Content Compression)
  5. Next, Install, Wait…Done!

Enable it:

  1. Open server manager
  2. Roles > Web Server (IIS) > Internet Information Services (IIS) Manager
  3. Next pane: Sites > Default Web Site > Your Web Site
  4. Main pane: IIS > Compression


You might be wondering why you’d want to compress content in the first place. This site has a nice analysis of the practice as well as detailed information regarding what compression level you should use (and how to set it).

Tuesday, August 11, 2009

First Look at Windows 7

When Windows 7 hit MSDN late last week, I took the plunge…and I’m loving it.


I’m not one to participate in the religious wars that operating systems seem to cultivate—I have three machines, each perfectly suited to its task: a Windows machine, a Mac, and a Linux box. I’d say I’m pretty well rounded. Interestingly, I have almost zero experience with Vista. I’ve used Server 2008 a bit and liked it but for many reasons was stuck on XP until just recently.

I don’t really believe the anti-hype that Vista is awful just like I don’t think MS is evil or Google is taking over the world (…or are they?). Instead, I think MS is just a popular company to hate, which is something Google has been extremely careful to avoid so far.

Anyway, back to Windows 7. It’s awesome. Compared to XP, it is elegant, quick and intuitive. They might have gone overboard just a bit with the transparency or dialog animation but I am thrilled. So much so that I think I worried Sarah a little when I raved about how much I liked it upon installation.

First some good things. The defaults seem to be much better this time around. I have found myself changing very little in the control panel. On my modest 1.6ghz dual-core laptop, it’s very snappy. The new Explorer is very nice to work with and actually provides helpful information as you go in the form of action buttons directly underneath the address bar:


Some of my apps are incompatible with either W7 or X64 but Microsoft has me covered with Windows 7 XP Mode. XP Mode is basically an entire install of XP virtualized to run within your current Windows 7 session. They do some nice tricks to make things blend in with W7 but it’s really just an app running in a VM. I used this for the Cisco VPN Client (which doesn’t support x64) and a weird corporate app. Once you install them inside the XP VM, they show up on your Windows 7 Start menu like so:


And then when you launch the app, it looks like a normal XP program (overtop a regular Windows 7 program for comparison):


It’s a little slow and perhaps overkill for some small incompatibilities but it is extremely effective and was a major selling point for me.

It’s not all shine, though. I have a few gripes—some big, some small. First, I regret going to x64. I thought at the time that x64 would allow me to use all of my 4gb of memory. This appears to be false as my computer’s hardware seems to be limited to 3.25gb, regardless of OS. I get all the hassle of x64 with only minor benefits. Very lame.

Next, my touchpad scroll area doesn’t work. I screwed around with all the Vista x64 drivers I could find but haven’t had any luck getting it to work. Driver issues like this were old hat back in Windows 98/XP days so I guess I should consider myself thrilled that I didn’t have to install a single driver to get sound, video, wireless, etc. So, no scrolling from the touch pad from an OS that’s not officially been launched yet? Not a big deal, it’s just annoying.

Third, some development tools require some extra effort or have reduced functionality. For example, Visual Studio 2005 reminds me each time it runs that it’ll run better if I run it as an administrator. Further, VS2008 informed me that it’s not too keen on Edit&Continue since I’m running x64.

Finally, I wish there had been a reasonable in-place upgrade option from Windows XP.  Back in high school, we used to format our machines every month or two—that’s what was required to keep Windows 98 running with all the crap we were putting it through. XP was pretty solid, though, when used primarily for work stuff so I haven’t done a clean format in years. But to get to Windows 7, I would have had to first go to Vista. Doing two major upgrades seemed worse than doing one clean format. The format/install was painless and I imaged my system first which made me confident I wouldn’t lose anything. Still, reinstalling every damn piece of software and copying over settings to obscure locations is tiresome.

Far and away, I’m loving Windows 7 and don’t regret the move at all. I just might do x86 if I had a do-over (though I might yet reap the benefits of x64 when I get a laptop upgrade in a year or two).

Tuesday, August 4, 2009

We’re going to the zoo--zoo--zoo…how about—what are you looking at?!


We went to the Cleveland Zoo today for World Breastfeeding Week. It was a beautiful day for it—sunny skies, but not too hot and we all seemed to be in surprisingly good spirits. Here are some highlights:

  • We spent the whole morning bribing Maya with Penguins we’d see at the zoo later. “Finish your cereal so we can see the penguins!” “Go downstairs with Mommy so we can see the penguins!” “Don’t fall asleep…” yadda yadda. We quickly learned that Cleveland Zoo doesn’t have penguins. We’ve been there several times this year. We’re members.  We have no excuse. (note: Akron zoo has an awesome penguin pool which we’ve been to many times)
  • We saw an awful lot of scary parenting. To paraphrase a friend (Tif, I’m gesturing in your direction): why would you bring your kids to the zoo if you don’t like them? One particular incident comes to mind. Just as we arrived we hit the bathrooms. While doing my business, a woman was standing in the door way shouting at her son to go into this stall, then that stall then, “ah jesus forget it cause you’re too slow and now we ain’t waitin for another one.” Aside from encroaching on the sanctity of the men's room, I became a target when she saw my surprised expression as I was leaving and decided to shout at me, “what you looking at?!” My next blog post, that’s what.
  • All the exhibits have a little plaque that shows where the animals live—coastal Australia, Central America, etc. None of these include Northeast Ohio which seems strange because that’s the only place I ever see zebras and wallabies.
  • A local WIC chapter had a booth showing 10 steps to successful breastfeeding. The severity of one of these surprised me: “Don’t smoke. Limit alcohol. Avoid medications and street drugs.” Avoid street drugs? That sounds more like a suggestion than a rule. (sorry for the blurrycam)



  • Raffles are really, really boring when you aren’t participating or interested in anything being raffled (it’s WBW week, after all)
  • Smokers are very annoying. Seriously: if a venue has designated smoking areas, please use them!
  • The zoo is exhausting but only kids are allowed to sleep (not fair!)


  • Maya can count (1, 2, 7, EIGHT!!!, 14, 1, 1, 1, 2, jump!)
  • If you ask Maya, all we saw today were birds. A duck, a goose, a zebra bird, a kangaroo bird, a doggie bird, a bird bird…

That’s all I have for zoo-related news today. Just to empty out the memory card, here’s a few unrelated ruminations:

  • I’m awesome at slicing bread. Like this is some sort of gift. You don’t believe me? This was sliced free-hand, I swear:


  • This tree (on Graham Rd in Stow) got screwed:


  • A single beehive can produce 100 pounds of honey each year, according to Sarah who heard it from a friend who has three such hives in her backyard. I guess we’re getting closer and closer to becoming hippies every day because I love honey…a lot…and now have to convince myself that I don’t want to take care of hundreds of stinging insects just to get it for cheap. I think we’ll just keep getting it from our honey-person (yes, we buy it direct from some cranky lady a few miles away…by the gallon, though soon we might get it from our hippie friend). Here’s how much I love honey—I have two honey bears which I refill from our gallon jug, but I also received this sweet dispenser as a gift last year:


  • And finally, after the zoo we found a this-end-up-fail on our doorstep:


Sunday, August 2, 2009

Apache Reverse Proxy Implemented

Note to off-site viewers: this post has pictures. If you don’t see them, come to the site for a better view!

This is a follow-up on my previous post about the server architecture I setup to support my company’s developers. This was the goal:


Or in words: users inside and outside of the company need access to a bunch of tools (the green arrows). The proposed way of doing that uses a single server as a gatekeeper and router to other servers (the black arrows).

This design offers many benefits which I won’t repeat here—head over to the original post to read up on them. Instead, this follow up serves to document how this design was implemented. In many ways it was easier than expected but we hit a few hurdles I didn’t expect.

The first hurdle was expected: getting the reverse proxy working. A teammate tried to get this going with IIS7 for a while without success. I took a stab at it with Apache—something I’m much more comfortable with—and got things working pretty quickly. While IIS required explicit rewrite rules with URLs, tags, etc., Apache seems better suited to the job and has a nice, clean configuration:

imageProxyPass /redmine/ http://rowlf/

<Location /redmine/>
        ProxyPassReverse /redmine/
          Order Deny,Allow
          Allow from all
          Satisfy Any

ProxyPass /svn/ http://scooter/svn/
<Location /svn/ >
        ProxyPassReverse /svn/
          Order Deny,Allow
          Allow from all
          Satisfy Any

ProxyPass /VaultService/ http://vincent/VaultService/
<Location /VaultService/ >
        ProxyPassReverse /VaultService/
          Order Deny,Allow
          Allow from all
          Satisfy Any

imageRedmine was pretty easy to get going at first but had a path-root problem. It wasn’t liking that I was serving it out of a directory (/redmine) on kermit but was actually hosting it on a rwolf’s root (/). It complained by building resource links for things like css and js with an incorrect path. This was quickly remedied by adding this line to Redmine’s environment.rb file (it’s a Ruby on Rails app) as noted here:

# added to end of file C:\redmine\config\environment.rb
ActionController::AbstractRequest.relative_url_root = "/redmine"

image SVN also took a little extra effort to realize it needed the extra verbs explicitly permitted with a <Limit> directive:


By the time I got those two running, another teammate got Vault running on Vincent so I wired that up easily, too.

imageI was most worried about Vault because it’s the only closed source system involved. I have nothing against closed-source software (it’s what I make every day), just that if SourceGear (Vault’s maker) didn’t plan or desire for Vault to work with a reverse proxy, I’d be pretty much SOL. But it worked most easily so props to SourceGear.

That’s it. Now I’ll just let it incubate for a week or two with a few people testing it occasionally to see that it holds up. When ready, I’ll just throw the switch and our existing users for svn and Redmine won’t even notice because their URLs won’t change. Vault users will need to use a new URL but hopefully for the last time…and maybe we can redirect the old URL to the new one transparently—I’ll need to look into that to see if the Vault client will follow a 301 redirect