Category Archives: Other

Learning from kids

My 8-year-old son Gus had his second competitive gymnastics meet this morning. As we were leaving the venue to head home, I asked him if he had fun, and he gave me an emphatic “Oh yeah!”

Gus knows what’s important – he’s doing gymnastics because he absolutely loves it. Because he has some natural ability and a good body type for the sport, there’s nothing to prevent him from succeeding at it. But because he LOVES it, he works his tail off at it and continues to improve. To the outside observer, success FOLLOWS enjoyment of the sport, but to him, success EQUALS enjoyment.

As a proud papa, it’s fun to see him enjoying a sport and getting good at it, and I’m learning a lot, too. I’m impressed with everyone I’ve met in the sport. I like his coaches, and I get along very well with the other parents on his team. I’ve also been very impressed with the attitude of sportsmanship I see embodied by all the coaches and other gymnasts I’ve seen at his first two meets (and the prior “practice” meet). There was a kid in Gus’s rotation today who was the only one on his team. Gus’s 6-member team adopted him, and he had plenty of kids to share high fives with. This is a great sport.

I’ve made the decision never to “coach” Gus myself. Obviously, I could encourage him to keep his legs together better on a certain skill, or I could incentivize him to keep improving his scores. I don’t want to do that. It’s so cool to see Gus motivating himself – it would be less cool if he were doing something to please me. He has good coaches. My job is to cheer for him.

I can also film him and show him the video. That way, he’s coaching himself. I ask him questions, and it’s truly interesting to me. At lunch after the meet, I asked him if he feels pressure or if he just does it. He says he just does it. Interesting. It sure looks pressure-packed, but maybe that comes later.

Gus faced a little adversity today. He got off to a great start, doing an excellent pommel routine and earning a 14.9 (scoring is on a 16-point scale – all the kids do the same routines with some opportunities for bonuses). That turned out to be good for his first podium finish, a 3rd place! After a solid rings routine and a really good vault, he was on his way to an exceptional parallel bars routine when he did a swing handstand that went too far, and he fell, right before the dismount. He got back on and finished the routine but didn’t get a good score for him.

I was really interested to see his reaction. He cared, obviously, but he wasn’t devastated. He ate a Clif bar before the next rotation and tried to regain his focus. He had a significant bobble on high bar that showed his confidence wasn’t fully back. He had another bobble on floor, but then he finished strong with a fine roundoff-back-handspring, a skill he added last week. His all-around score was lower than the last meet, but it was great to see how well he could handle adversity. I wasn’t sure what he’d say when I asked him if he had fun afterword, so I was thrilled to hear his enthusiastic “Oh yeah!” Clearly, he knows what’s important.

I think I’m going to learn a thing or two from this kid.

Bit by bit

I passed 1,000 twitter followers today, and while it’s an arbitrary milestone of very minor importance, I couldn’t help but feel pleased about it. More is better, right?

In reality, there’s nothing particularly interesting or significant about having 1,000 followers. There are people I admire/don’t admire who have 0, and there are people I admire/don’t admire who have millions. Because of the nature of my job, my friends tend to have more followers than I do. If I worried about having a ton of followers, I’d be down on myself. I’m not particularly worried about it.

There is something I find interesting about watching my twitter followers grow, though – it happens gradually, bit by bit. There are so many aspects of my life where I try to complete something all at once. Growing a following doesn’t seem to work that way. If I stop tweeting, the number of followers remains stagnant. If I tweet regularly, then the number goes up, a little at a time. The important thing is to focus on the input (tweeting regularly in this case) and trust that the outcome (getting more followers) will happen.

Blogging is even more interesting. I’ve committed to writing more frequently this year. I started a Startup 101 column in Visual Studio Magazine that’s going to compel me to write at least one high-quality article a month. I’m trying to blog a LOT more frequently this year (this is 7 days in a row!) – I’m trusting Seth Godin’s advice that in order to become a better writer, I have to write. According to Seth, if I write frequently, I’ll get a little better every day.

At the moment, my 8-year-old son Gus is watching a movie in the other room while doing “circles” on the mushroom he got for Christmas. Just a few months ago, he could barely do a single circle. Then he got up to 3, then 5, then 8 … now he sometimes can do 20 (although his coach wants him to improve his form by keeping his legs together better). It’s a bit-by-bit kind of skill. Gus loves doing it, so he does it constantly, and he gets slightly better every day.

Growing up as a musician, I’ve spent a great deal of my life focusing on bit-by-bit skill growth, but somewhere along the line I started focusing more on all-at-once kinds of things. It feels good to get back to bit-by-bit growth and learning.

What kinds of bit-by-bit things are you working on these days?

Running Every Day

The Thursday after Thanksgiving, I was planning to run with my Uncle Frank at Riverside Park, as I often do. Frank is my best running buddy. We started running together about six years ago at our family reunion. Frank always ran about 7 miles from my grandma’s cabin to the shore of Lake Michigan, and that year, I finally decided to join him. We started running regularly after that and became very close. He’s very important to me.

But on Wednesday, November 30, I got a call from Frank telling me he wouldn’t be able to run the next day. He was having a hard time completing sentences, so he handed the phone to his wife, my Aunt Betty, who explained that Frank was at the hospital to investigate the cause of his sudden speech problem. They had already found a mass in his head but didn’t know what it was.

This was shocking to me, because Frank is one of the healthiest people I know. He’s 68, but when we run, he has to slow down for me, 26 years his junior. After I got off the phone and cried a bit, I thought about what I could do for Frank. Since he’s my best running buddy and can’t run right now, I decided I would run every day until he could run with me again.

Frank went into surgery the next day, and they removed (most of) a grade 4 brain tumor. He was home within a couple of days, and I saw him shortly after. He was doing great – laughing, being himself and praising Jesus with all his heart. Frank is handling everything as well as he possibly can, and his faith allows him to accept any outcome with remarkable peace. I find his strength inspiring.

Frank and Betty hosted the BIG family party at their house New Year’s Eve, and he looked great. He wanted to wait until after the holidays before undergoing chemo and radiation, but he’ll start that within the next day or two. Brain cancer is a nasty one, but apparently the mass has not grown back, which is positive.

I’m praying for you every day, Frank, and my prayer is to run. I hope you can join me again soon.

New gear

It was 18 degrees F for my morning run today. Last year I said I wasn’t going to run below 20 anymore, but then I got new running gear for Christmas. The most important was some compression shorts to protect my nether regions, but with the combination of everything, I was toasty warm – even had to worry about being a bit too warm and sweating too much toward the end. I’m pretty sure I could run down to 10 with this gear now. Paula even got me YakTrax, so I’m looking forward to the next slippery sidewalk day.

Sometimes gear really does make the difference. If there’s something you really want to do but think you can’t – is it because you are lacking some essential gear? Does that gear exist? Can you afford it? Seem like important questions to me.

What does the mobile web mean for apps?

I love apps, I really do. Windows Phone recently passed the 50,000 apps mark, and there will be an app marketplace built into Windows 8 as well. I recently interviewed the guys from Anlock, who talked about what a boon marketplaces are for startups, and I suspect I’ll be talking to more app developers in the same vein.

Then in late December, ESPN updated their mobile website. If you have a relatively current smartphone, go visit it now. It’s simply amazing. ESPN has a Windows Phone 7 app, but I see no need to install it now. I have the website pinned to my start menu, and I visit it quite frequently to read stories and check stores. It’s very app-like – it has nice big, touchable links that feel like buttons. It just works. An native app might be able to improve the experience slightly but not by much.

Clearly HTML5 and the rise of good browsers on smart phones enables this kind of experience. What does it mean for startups? When will you favor a mobile website instead of building an app? When will you favor apps?

Happy New Year

The passing of a year is an arbitrary event, but for many people – including me – it happens to coincide with the longest continuous block of vacation that I take. I’m wrapping up nearly 3 weeks of mostly vacation with just a few work days mixed in. It’s given me time to reflect on what’s important to me, both at home and in my career.

I am truly blessed to be healthy and happy. I work on things I care about, and I’m able to work to improve myself. I’m doubly blessed to have a healthy and happy family. I’m so happy that we are together as a family – one day at a time.

Tomorrow is a Football Holiday, but I look forward to coming back to work Tuesday with a renewed sense of focus and vigor. Microsoft has been very good to me, but the real reward of my job is that it gives me the opportunity to work with lots of great software companies. That’s what matters – helping software companies – and I look forward to upping my game in the coming year. Here’s to a good 2011 and a great 2012.

Fear

This is the story of my 9/11. I felt compelled to write it down, but it was hard – as Brad Feld said earlier this year, it feels self-indulgent. I was deeply traumatized by 9/11, but I’m ultimately fine. I’m alive. I still mourn for the nearly 3,000 people who lost their lives that day, and I feel sorrow for those that loved them.

In July of 2001, I started working a contract for a large bank on Wall St in New York City. The contract was through a mentor of mine that I respect greatly, Desmond; I was thrilled to be working with him, so I was willing to put up with the travel. I was actually kind of proud of the commute. I’d leave my apartment in Grand Rapids, Michigan by 5:00 am Monday morning and arrive at my desk in downtown New York before 10:00 am. I’d leave work by 3:30 pm Friday and be home by … well, the flights out of LaGuardia were always late on Friday night. My wife, Paula, hated it, but the contract was REALLY good money, so we were both willing to put up with it “for a while,” especially since we were about to make an offer on a house.

It was the first time I had been to New York since high school, and I was barely there. I just walked from the office to my hotel and back until I flew home. For the first seven weeks, I stayed at the Marriott World Trade Center, between the two towers. Their room service was pretty good (I was particularly fond of the beef curry), so I often ate in and worked or just watched TV. I figured I would wait to explore New York until Paula could join me.

I’ve always been partial to Marriott, but this hotel irritated me. Even though I wasn’t paying for it, I hated being charged $390 per night (plus copious taxes) while little things like elevator lights went unfixed for weeks. Three out of seven weeks I had to change rooms because something important like a shower was broken. Enough! The week of September 3rd, I decided to try an alternative, the Holiday Inn Wall Street. It was a few blocks closer and a hundred bucks cheaper. Turns out it wasn’t nearly as nice, either. It was kind of dreary and had that vague, damp smell frequent travelers know all too well. I was thinking of switching back to the Marriott, but I decided to give the Holiday Inn one more week. I checked in after work September 10 and went to bed.

The next morning I got ready as usual and headed out the door a few minutes before 9:00. I heard a hotel employee saying something about a fire to the front desk clerk. Her manner was odd – not “FIRE! FIRE!” – more like, “no really, I’m telling you, it’s on fire!” as if trying to convince someone to come look at something. I wasn’t sure what that was about.

I walked out the front door, turned the corner (I think it was onto William St, but it might have been Nassau), and saw about about 25 people looking up and out across the street. I looked up, too – at about a 45 degree angle – and saw the top of a World Trade Center tower on fire. I immediately burst into tears (as I just did while remembering it). It was surreal to see something that I knew to be concrete and steel literally burning from a gaping hole. It was impossible. And I couldn’t imagine how they were going to put out a fire on something so huge. I knew people were going to die. That rush of thoughts and the visceral power of the first-hand image were instantly and overwhelmingly sorrowful.

All around, traffic was already at a complete standstill. Some drivers were honking. Everyone was pretty rattled and somewhat confused. I walked over to a grassy median to compose myself and noticed that debris was floating down from that shocking black plume of smoke. It was to have been a beautiful, clear day; papers and coffee cups fluttered in the breeze and glistened against the sun. Many of the papers had already littered the ground. The place looked trashed, like after a parade. A memo that minutes earlier had been on someone’s desk landed at my feet. I felt that I was violating the privacy of a person I didn’t even know.

I heard snatches of conversation from a couple of people talking, “a plane or a helicopter hit it” … I mumbled something to join in the conversation. We had no way to know if it was an accident or an intentional act at that point.

And then the second plane hit. I do not remember that exact moment. I don’t remember a sound; I don’t remember a sight. I think my back was turned to the towers.

I do remember shortly after someone yelling “another one hit it!” and at that moment, I knew this was no accident. I also assumed I was in danger, and I went immediately into survival mode. Instinctively, I thought I might have been in the “circle of debris,” so the first thing I did was take cover in the nearest doorway (a restaurant that was not open).

My next fear was that I would be trampled, because now people were completely freaking out. I remember someone yelling “run for the bridge!” in reference to the Brooklyn Bridge. That made sense, except for one thing – I had no place to go if I crossed the bridge. I wanted to get off the street – it did NOT seem safe – but I was pretty sure I would ultimately be OK. I didn’t want to be a burden to others, and I wanted to call Paula. I reached for my cell phone, but I remember thinking that other people might need to call more than I did (this was an era when cell phone towers could easily be overloaded). The thing to do was go back to my room.

I got to my room and called Paula from a land-line. No answer. I left a message to call me right away.

I went into combat mode. I closed the shades to protect against flying glass. I tried to remove the pictures from the wall (more glass), but they were bolted on. I changed into my tennis shoes and shoved every energy bar I had into my backpack along with candy bars and waters from the minibar. I learned what I assume to be the derivation of the term “scared shitless” … apparently the body doesn’t like to hold onto anything extra when one is frightened.

Turning on the TV, I heard the announcers talking about hijackings and terrorists. Some people were jumping. Oh my God … who would do this?

As horrific as this experience was, I remember clearly a moment where it seemed as though the spirit of Martin Luther King Jr or Ghandi or Jesus was there with me urging me not to hate back (I wouldn’t learn how to hate for another five years, but that’s a completely different story).

I called my wife again and reached her this time. She had turned on the TV right before I called. We talked for a few minutes, but again, I didn’t want to be selfish with the phone lines, just in case. I asked her to call my family, but I called my brother myself. As Ed screamed “who would do this?” and we cried, I wanted to encourage him not to hate. I called Desmond after that. For some reason, I felt compelled to make him laugh.

Back to panicking … as the TV announcers were trying to figure out what was going on, things got worse. The Pentagon was hit and more planes were feared hijacked. Now I was truly terrified. There was talk of poison gas and the possibility of tens or even hundreds of thousands killed. Could the poison reach me? Would I be a name on a memorial? If more planes were headed to New York, the next logical target would either be the Empire State Building or the big buildings on Wall St, right next door to me. I felt I was in immediate danger but didn’t know what to do about it. I doubted my earlier decision not to run for the bridge. I took towels and tried to make a seal under the hotel room door, and I inspected the windows for ways to do the same.

Back on the phone with Paula, I felt some momentary comfort. Then on TV I saw what appeared to be one of the towers collapsing. Even the announcer was unsure (NBC, I believe). “Oh my God! Paula, did that just happen?” The TV switched to a distant shot showing the ash cloud rushing down streets between buildings. I could see that it was heading my way, and then a moment later, all the light outside the room was gone. I don’t remember the sound. I don’t remember the tremor. I peaked out of the window, and the sun was gone. All I could see was the black snow outside my window.

I didn’t know I could get more scared than I was before, but apparently I could. Was this the end? Was there poison or even just something like asbestos from the building that would kill me (quickly or slowly)? Yes, I was thinking about myself at that point. I thought there was a damn good chance I would die, and I was scared.

Then came the smell. Have you ever left a plastic-handled knife or spatula on a stove? Now imagine burning a million of them. The smell of the fallen buildings lingered for months after 9/11. That smell haunts me still.

Yet I wasn’t dead. I didn’t appear to be choking. I seemed fine, though nearly exhausted from the physical toll of prolonged fear.

You can follow the timeline on Wikipedia. Flight 93 crashed (heroically taken down by its passengers – did they save my life? They saved someone’s). The second tower inevitably fell.

Surprisingly, the Internet connection in my room actually worked pretty well that day. I had bitched to management several times the previous week that the paywall was not working. Finally I convinced them to unplug the paywall appliance and just plug their connection into the damn router, so it was working fine. I sent some emails to people letting them know I was OK. I took solace in communicating with people on the “Dallas Stars Mailing List” (back before facebook, we used to communicate with likeminded strangers through email lists).

I think it was a few minutes after the second tower fell that I heard a rustling outside my door. Peering out the eyehole, I saw a couple covered in ash. I opened the door to see if they were OK, and they entreated me to stay inside my room so that I didn’t get ash all over myself. We had a conversation through the door. They were from Northern Ireland and spoke in a casual brogue. “Oh, we’re used to this sort of thing. Terror is nothing new.” They were walking back to their room but got caught in the ash cloud when the second building fell. They dove behind a car to take cover. As they were shaking themselves off, the gentleman actually ministered to me. He encouraged me to take a drink and maybe get a meal. “You’ll feel better, you know …”

At some point, I took his advice and went down to the restaurant for a bowl of soup.

It annoyed me that I had to take the elevator down to the restaurant – and this should tell you something about me: I already knew that the stairwells exited into the street and didn’t let me walk down to the lobby (very odd). I discovered this the previous week, because I actually check for fire exits at hotels.

When I went back to my room, I tried to drink a whiskey and Coke, but it didn’t taste good to me.

Eventually the ashcloud settled and I could see out into the street. There was about three inches of grey ash on everything. There were police helping pedestrians and trying to get traffic to leave the area.

On the TV, the mayor said that they were evacuating lower Manhattan. I WAS IN LOWER MANHATTAN! WHY WASN’T I BEING EVACUATED?!? Once again, I was very scared.

I reached my cousin Mary who lived near Penn Station. She said I could come stay with her, so I began making plans to head out. I called Paula and let her know. I packed a couple of things into my backpack – I couldn’t take my suitcase, because I would be walking about 40 blocks. As I left my room, I decided to prop my door open – I thought it was possible someone without a key would need to use it.

I started to walk into the elevator, and then I went back to my room … there was one thing I didn’t feel good about leaving unlocked – my laptop, since I had client information on it that I was obligated to protect. So I put it in the room safe and started to type in a security code …

The power went out. Holy shit. If I hadn’t come back to lock up my computer, I would have been stuck on that elevator. I’m pretty sure this was 5:20 p.m., when 7 World Trade Center fell.

I couldn’t see a thing – everything was completely black. I opened the door to my room and heard people talking. There was the Irish couple plus maybe two more people. We couldn’t see anything. There was no emergency lighting and no illuminated exit sign (aren’t these things supposed to be regulated?).

Luckily, I hadn’t locked up my laptop yet, so I pulled that out and used it as a flashlight, and we all took the stairs down to the street. (If you are wondering why I didn’t just use my smartphone, then you need to remember that there were no smartphones at the time. The 2001-era StarTac was a fine, fine phone, but it didn’t emit enough light to use as a flashlight.) I shared the water from my backpack with one of the people about to leave the building, and I recommended everyone cover their mouth and noses with a towel or napkin.

Because a massive building had just fallen (Building 7 was half the size of the two towers, yet it would have easily been the tallest building in my home town), there was plenty of ash in the air again. We decided to walk across the street to a glassed-in lobby where we could see about 20 other people. I remember one businessman who was coping with a fifth of Jack Daniels. He literally staggered diagonally across the street at one point.

When the ash had died down a bit, I set out to walk uptown. There were a few police on the street directing the remaining pedestrians, and I was very thankful to see them. I remember walking past a hospital. I had an inclination to go in and see if I could help or donate blood or something, but I was pretty sure they wouldn’t let me donate – I was too scared. I was pretty sure they’d admit me if I walked through those doors, so I thought the only way I could help was to keep walking and leave the area.

As I followed the path the police suggested, I latched onto a guy named Allen leaving the area. I needed to talk with someone, and he was kind and supportive. He lived in the area, in the building across the hotel.

It seemed important to me to remember him, so I got his email address, and we touched base a few times after that. He was one of my first facebook friends, and I still enjoy seeing his updates. I don’t know him, yet he’s important to me.

After walking about 5 or 10 minutes, we left the dome of ash and emerged into a beautiful, sunny day. That’s another surreal memory – the image of destruction getting smaller and smaller as I walked further uptown.

Allen and I parted ways. I walked to midtown and found my cousin’s apartment. I crashed on her couch, but I slept fitfully – simultaneously frightened and comforted by the sounds of fighter jets flying above Manhattan.

The next day, the message on TV was that people should leave Manhattan if they can, since there was no way to support people with food and other essentials. All the trains would be free – just get out. I had another cousin who lived in New Jersey, so I went there; Paula and my mom drove 16 hours from Michigan to pick me up there.

There were people who thought I was dead. I forgot to call Desmond back until the next day after so much more had happened, and he thought I was still staying at the Marriott. He thought I was gone. I still feel terrible for making him experience that.

Things were different for me once I got home. Looking back, I was clearly experiencing “post traumatic stress.” I didn’t care about trivial things like money anymore, and there was no way I was going back to New York … until about three weeks later, when Desmond convinced me I was needed and that returning was my way to contribute to the important task of making the world normal again.

Going back to New York after 9/11 was chilling. Much of downtown Manhattan looked like a battlefield. It smelled terrible. For months I could hear trucks hauling debris off to Fresh Kills; the bouncing debris often crashed against the metal bed of the truck, and it always jolted me back to memories of that day.

I worked with other people – living people – who had stories vaguely similar to mine. There were probably a couple hundred thousand people like me who were in the thick of the experience but were ultimately fine. Many of us were shaken to our core – many people who watched on TV were shaken. But life went on. We took comfort in sharing our stories with each other. We got regular air-quality updates from building staff. I remember before 9/11 having a series of fire drills that were treated with customary ambivalence. That process continued after 9/11 – but those were the most serious, crisp fire drills you could imagine.

Direct flights from GRR to New York were gone, and I couldn’t bear to be away from Paula, so I convinced her to travel to New York with me for about three weeks at a time. We had purchased a house a couple of weeks before 9/11 but hadn’t moved in yet, so it seemed like a good time for a transitional living experience. We later learned that our new neighbors thought we were government agents or something, since we bought a house but were never around.

Through all this, a funny thing happened – we fell in love with New York. It was an odd time to be there – very little tourism, so we bonded with the natives. My customer let us have a corporate apartment near Lincoln Center (celebrity sightings in our building included Howard Stern, Regis, Jon Bon Jovi, and Jeremy Irons). We went to operas, ballets, concerts, hockey games, movies, and ate incredible food every day – it was pretty awesome. We essentially lived there for about 7 months before I impetuously quit the contract, ostensibly because I wanted to nest and have a kid. I’ll talk more about those things another time.

At the beginning of 2002, I switched to a different project for the customer. This one was at an office in Long Island, so I no longer went downtown much after that. On that project, I became friends with a woman who lost her husband, his brother, and their best friend in the attack. I lost touch with her after the contract ended; I think she had to change all her contact info to hide from reporters. I miss her, and I worry that she’s OK.

As I said, after a few months, I left the contract (earlier than I should have). I thought about 9/11 almost every day for the first year or so. I came up with a couple of ideas for tributes but didn’t submit them. Both had to do with the power of the buildings themselves, as well as the people who were lost. Like many people, I used to know where I was in Manhattan by looking for the towers. It was disorienting to lose that experience. I wanted to place park benches all around the city – one for each victim lost – with a simple sign next to it, showing where the towers used to be from that vantage point, memorializing the towers along with the victims.

My other idea was to create a scale-model concrete replica of Manhattan as it was on the morning of 9/11 before the attacks. If it were about 40 feet long, the towers would be about 10 feet tall – taller than non-basketball players can reach. Most of the rest of the big buildings would be 6 or 7 feet tall. That would emphasize just how huge the buildings were that we lost. The streets would be about kid-width, so this would be a living history lesson to tell future generations what things were like in New York before the attack. I originally thought that a model this size would fit between the footprints of the two towers, but you could put a tribute like this anywhere. I love the tribute they made at ground zero, but I haven’t seen it in person yet. I hope to soon.

I never knew fear before this experience. I never knew what it felt like to be frightened for my life. I never knew what it meant to feel anguish, to feel sorrow for people I didn’t know, to feel terror. Now I do. But I also know what it means to persevere, to recover, to grow. I hope I never see anything like that again, but if I do, I suspect that I won’t be frightened. I think that kind of terror only works once.

I am truly thankful to the people who conquered fear that day. I am thankful to Rudy Giuliani for stepping up as a leader during and after the attacks. I am thankful to the first responders that sacrificed their health to help others and to help New York recover. I am thankful to the people who lost loved ones and somehow managed to get out of bed the next day, and the next, and the next … I am thankful to everyone around the world who responded to the multiple tragedies of 9/11 by showing genuine concern and kindness toward others, even if only for a moment. I am certainly thankful to everyone who picks up a weapon and risks their life to defend people like me from threats of future attacks, even when they don’t necessarily agree with all the decisions made to deploy them. And yes, I am thankful to the people who make those difficult decisions, even though I don’t always agree with them. In their own ways, all these people work to conquer fear – conquer terror – and I thank them. Thank you.

Windows Azure for Web Startups

Lately I’ve been working with startups who are interested in Windows Azure, but they want to use PHP, Ruby on Rails, or Python. Sometimes they also want to use Macs for their primary development machines, and they want to retain the tools they are comfortable with (e.g., github), which are typically Unix commands.

You absolutely can use Windows Azure for PHP, Ruby on Rails, or Python web development, and you can keep your Mac and all your usual development tools for those platforms. However, there is a bit of upfront work that needs to be done to get you to that point – and currently, some of that upfront work needs to be done on a Windows machine. As this scenario becomes more and more popular, I’m pretty sure that this upfront process will get simpler and simpler (whatever Microsoft doesn’t get to, the community will).

So until we reach a point where you can be blissfully unaware of what’s happening behind the scenes to run these languages on Windows Azure, somebody on your team needs to take responsibility for understanding how it all works and how to set things up.

I want to help. For simplicity, I’m going to talk about PHP for the rest of this post, but the same techniques would work for Ruby on Rails, Python, or Java (or Perl or any language that supports FastCGI and has an implementation that works on Windows Server). These concepts are useful for developers using C# or VB.NET as well, especially if you would rather use a tool like WebMatrix instead of Visual Studio.

Thanks to Bizspark, a startup can use Windows Azure for FREE for up to three years (and cheaper than retail after that). So while this might take you a couple of days to figure it out and set it up, it’s pretty worth it. This isn’t shared hosting … we’re talking a 99.9% uptime SLA and dedicated cores!

If you’re not ready to join Bizspark, go to www.windowsazurepass.com and use promo code PFOLEY to get a free 30-day trial – no credit card required.

Architecture

Windows Azure has a hierarchical model for deploying compute resources (note that I’m leaving out some details):

image

At the top level, you have a service, which is a logical grouping of functionality. A complex solution might have multiple different roles – a role is essentially a specific definition of a virtual machine. For any given role, you can have multiple instances running, but each instance will look the same; this is a “stateless web app” model of scalable development – data is stored in SQL Azure or in Windows Azure storage (neither is shown on this model). You want to have at least two instances running in order to get high availability. If your traffic increases, you simply up the number of instances. Windows Azure seamlessly balances load across these instances.

This is amazingly powerful and flexible, but if you are building a web startup, you probably want to focus your energy on the actual web site – the grey boxes inside the instances. You probably want to start with an architecture that you know will work – that’s “good enough” – without having to think about all the possible fancy permutations.

And there are indeed fancy permutations – most enterprises will take advantage of Windows Azure’s excellent support for production and staging environments (the outer green box represents a subscription – a unit of billing which can contain multiple services):

image

Architecture is always driven by context. And a big part of a startup’s context is cost. The MSDN benefits in Bizspark include enough free Windows Azure resources to keep two instances running full time. While it might be super convenient and more “safe” to keep separate production and staging deployments running all the time, it’s not cost-effective for a startup on a tight budget.

A startup also needs to iterate quickly. You need to be able to have multiple versions of your site running at any one time so that you can perform A/B tests on the effects of various changes. In addition, you probably want a separation between your homepage and your “app” – and maybe even a separate site for administrative activities:

image

If you’re on your way to becoming the next facebook, it might make sense to put each site in a separate role … but you can support a significant amount of activity on a pair of instances, and you might as well use up all your free capacity before you start paying for more. It makes sense to run a bunch of sites on a single role.

There’s one more detail – most web solutions have some amount of background processing. The canonical way of doing this in Windows Azure is to have separate separate web roles and worker roles in the same service:

image

This is a great way to architect a solution – it provides for excellent resiliency and separation of concerns. However, it also adds more cost. Most startups can get by with a single web role that also contains the background processing:

image

In summary, if you own a web startup, you want to join Bizspark and use the MSDN benefits to get free Windows Azure compute resources. Your free resources are enough to run two instances full-time, so you want to get the most out of those instances. In practice, these means you are going to have a single role with two instances (two are required for high availability), and you are likely going to run several separate sites within that role. You are also going to run your background processing in the same role.

Implementation

To implement this architecture, I recommend running a synchronization process that lets you publish site changes by copying files to Windows Azure storage. This has two big benefits:

  • Site changes show up instantly (and you can rollback a bad change instantly as well)
  • For most website changes, you won’t have to change the role at all

If you’ve set up your role to support PHP, then you don’t need to change the role just to change some .php files. While using a separate staging environment is technically safer, you can justify running test and production in the same role so long as it’s really easy to rollback bad changes. The only time you really need to fire up a staging environment is if you’re installing support for a brand-new technology or doing something like upgrading PHP itself. Since that’s a fairly rare occurrence, you can just do this manually. Extra small instances cost 5 cents/hour, so it’s not much of a financial burden to upload a new deployment for a few hours when you do need to test with an increased level of safety.

There are lots of resources explaining how to get up and running on Windows Azure – so many that it can be hard to know where to start. I recommend http://www.interoperabilitybridges.com/  to stay up to speed on all the projects that are supporting open source languages – like the Windows Azure SDK for PHP. I also learn a lot from Steve Marx and Wade Wegner – the idea for a synchronization utility came from them.

But if you’re like me, you don’t want to work through all the details – you just want to get started. The best resource I’ve found for that came from IRhetoric. This post provides a zip file that has everything you need to get started developing php on Windows Azure.

To go past “getting started” and get closer to production-ready, I think at least two more things are needed:

  • A synchronization utility running in Windows Azure that pulls code files from Windows Azure storage
  • A command-line utility for uploading files to Windows Azure Storage in order to deploy them (so they can be sync’d by the utility above)

Once running it looks something like this:

image

Using a zip file is handy for this sync process, because it makes uploading changes all-or-nothing. You could get fancy and do diffs, but I think it’s better to zip up whole sites – that makes it easier to rollback to previous versions if something goes wrong.

Progress

I’ve begun experimenting with an implementation of this … you can see what I’ve done by downloading this zip file. This is NOT production-quality code – I have not thoroughly tested it, and I haven’t implemented everything that’s needed (handling multiple sites, for example). This is just an example to give you an idea of what can be done.

Creating a command-line utility that can be added to your build script is fairly straightforward – just use the Windows Azure SDK for PHP and do something like this:

<?php
/* Write to blob storage */

$account = ‘accountname’;
$key = ‘biglongkeyfrommanagementportal’;
$container = ‘container’;
$uripath = ‘filename’;
$localfile = ‘filename’;

require_once ‘Microsoft/WindowsAzure/Storage/Blob.php’;
$storageClient = new Microsoft_WindowsAzure_Storage_Blob(‘blob.core.windows.net’, $account, $key);
$result = $storageClient->putBlob($container, $uripath, $localfile);

// check for errors, eh?

?>

After I do a bit more exploring and testing, I’ll record a screencast showing how these things fit together. Eventually, I’d like to show an example that could be used as a complete, production-ready scaffold for a web startup. There are several additional items to check off before reaching production-ready:

  • Polish the sync utility (support for multiple sites, clean up old files, support for background processing, better error handling/tracing/logging, documentation)
  • Set up the role for Remote Desktop so that you can diagnose problems more easily (this can be a bit tricky the first time)
  • Develop a build script that handles source control and deployment (and strive for continuous integration)
  • Adopt reliable patterns for using SQL Azure and Windows Azure storage – potentially adopt different techniques for disposable development (prototyping) vs sustainable development
  • Adopt patterns for local storage for development and UX testing – can’t rely on the dev fabric, because it must also work on non-Windows environments
  • Adopt a reliable unit-testing practice for sustainable development
  • Test, test, test
  • Rinse and repeat for Ruby on Rails and Python (and whatever else startups seem to want)

I’ll keep experimenting, and I’ll write about these issues as I learn.

As I work through a “standard” architecture for web startups using Windows Azure, I can even envision automating the process of setting up and maintaining the Windows Azure role, similar to the way Windows Azure Companion works. It might even be possible to allow a simple Windows Azure role architecture to be enabled without ever requiring a developer to download the SDK – or even have to be on Windows. I envision a way to do that, but I have to work through the details.

If you’ve read this far and find this approach intriguing, I’d really like to hear from you. Feel free to leave a comment or email me at Patrick.Foley@microsoft.com. Let me know what you are working on and how I might be able to help.

An easy way to get $250

Does your company own a piece of web-based software? A product or utility written in .NET (or php, ruby, python, or java)? Simply check a box to verify that it works on Windows Azure, and Microsoft will send you a check for $250. Full details and terms here (notably, this offer is for US companies only and ends June 17), but I’ll summarize below. If you Know your app is already compatible with Windows Azure, this should take you less than 10 minutes.

Profile your app in Microsoft Platform Ready

Microsoft Platform Ready is a key resource for partners to get step-by-step guidance and support on our platform technologies. It also helps you test applications and earn Microsoft partner competencies.

If you haven’t signed up for MPR yet, go to www.microsoftplatformready.com, sign in with your Live ID, then profile yourself and your company:

image

Be sure to use a valid phone number and zip code – that’s how we determine which evangelists (like me) work with you.

Next, profile your application. Check that it supports the Windows Azure Platform:

image

If you have more than one app, please profile all of them (hey, it’s how I’m measured!), but only the first app you profile qualifies for the $250 (and you must be based in the US and verify compatibility between April 15 and June 17, as the terms state).

For each app that you profile, go to Test | Verify and check the box to verify that the app is compatible:

image

Finally, take a screenshot (Alt-PrtSc) of the following page after you verify compatibility and email it ALONG WITH YOUR PHYSICAL MAILING ADDRESS to appplatformready@microsoft.com, preferably using THIS TEMPLATE, before 6/21/2011 noon PDT (if you think of it, cc Patrick.Foley@microsoft.com so I know that you read about the offer here).

That’s it!

Again, only the first app qualifies for $250, but please verify all your apps that are compatible with Windows Azure.

More about Microsoft Platform Ready

Even without this incentive and even if your apps aren’t compatible yet, you should sign up for MPR (yes, of course we shorten it) and profile your apps anyway. Doing so gives you access to free email and phone technical support. If you want to go beyond self-verifying your applications, you can download the testing tool for Windows Azure, which will help you identify possible problems in your code. When your app is released and you have submitted the results of using the test tool, then you can qualify for the “Powered by Windows Azure” logo and earn points toward Microsoft Partner Network competencies. Similar benefits are available for our other platform technologies, including Windows Phone 7, Windows 7, SharePoint 2010, SQL Server, Windows Server 2008 R2, and more.

There is another, more subtle reason for profiling your apps in MPR – it makes you visible to Microsoft. There are thousands of ISVs in my part of the world alone (I work with software companies in the middle of the US). When we come out with new products or new features or marketing incentives of interest to ISVs, we use MPR to know who to connect to. If we don’t know you are working on Windows Azure, for example, we don’t know to reach out to you to offer help, ask for feedback, and to tell you about this easy way to earn $250.

How to try out Windows Azure for free

If you haven’t tried out Windows Azure yet, you should … the easiest way to do so is to go to www.windowsazurepass.com and use promo code PFOLEY. This will give you thirty days to experiment – no credit card required. If you are thrilled with what you find and want to keep going, you can even migrate that to a paying account (note that you get free Azure via MSDN – and you can get free access to MSDN via BizSpark).

There are a LOT of tutorials on developing for Windows Azure – start here if you are brand new (I’m a fan of the Training Kit in particular). For languages other than .NET, you’ll have to do a bit more upfront work to set things up (read the blogs of Steve Marx and Wade Wegner), but Windows Azure is still a great fit.

$250 is $250 …

I’ll be writing a lot more about moving applications to Windows Azure in the coming months, but if your app is currently compatible with Windows Azure, you might as well get that 250 bucks now. In fact, the offer is limited to the first 250 people who submit, so do it NOW! Follow the simple instructions above and email me at Patrick.Foley@microsoft.com if you have any issues.

My new role

About a month ago, I started a new role at Microsoft. I have the same title (ISV Architect Evangelist) and the same boss (Nathan Hancock), but my responsibilities are quite different. For the previous 4.5 years, I worked with 10 to 20 “managed ISVs” – software companies who are large enough that if they switched from Microsoft to one of our competitors or vice versa, it would have a noticeable effect on our revenue somewhere down the line. Now I work with everyone else – the 6,000 or so “unmanaged ISVs” in the middle of the US. The effect of any one of these software companies adopting our platform might not be immediately noticeable, but the cumulative effect certainly is. That’s why Microsoft invests in my role.

So what do I do? Simple. I help software companies. It doesn’t matter whether you use our technologies or not – I’m here to help.

My role is mostly technical (my background is as a developer and architect), but a lot of the challenges facing software companies are business related (“what’s the right way to license xyz from Microsoft” or “how should I monetize this functionality” or “why should I use the cloud”) – I help with those, too.

For the foreseeable future, I’m focused on our cloud offering, the Windows Azure platform (which includes SQL Azure and Windows Azure AppFabric). It’s an offering I’m quite passionate about, so it’s easy for me to rally ISVs to support it. Most of the things I’ll be writing and speaking about over the next year or so will be related to Windows Azure and how it can help software companies succeed.

Because I need to reach thousands of software companies, Microsoft has several programs that allow me to “scale,” including

  • Microsoft Partner Network – the overarching Microsoft partner program
  • Microsoft Platform Ready – the place for partners to get step-by-step guidance and support on Microsoft platform technologies
  • BizSpark – the way for startups to become partners and get no-cost access to Microsoft technologies for three years

Sometimes it can be confusing to navigate all our different resources, so I like to think that I put a human face in front of these programs. If you wonder what programs are right for you, don’t hesitate to ask me – Patrick.Foley@microsoft.com.

I’m based in Grand Rapids, Michigan and primarily serve the Central Region of the US:

I have peers who do what I do in the East and West and in other countries around the world. In case you are curious, the region is divided into sales districts as well, colored on the map: South Central (orange), North Central (yellow), Midwest (green), and Heartland (blue). I serve the whole region.

At Microsoft, we measure what we do, and we put those measurements into yearly commitments – for the rest of this fiscal year (which ends in June), I am measured by how many partners in the Central region profile applications that are compatible with Windows Azure in Microsoft Platform Ready – I will blog about what that means for you soon, but that’s how my boss will evaluate my effectiveness this fiscal year (though it is only a couple of months long for me). Next year, we’ll probably adjust that measurement a bit.

A quick aside on commitments … it’s easy to measure the effectiveness of sales people, because money is a really good way to keep score – it ultimately rolls up to regulated income statements, so sales estimates (goals) HAVE to be tracked for public corporations. For people who don’t bring in direct revenue, it’s harder to find a suitable measurement. Joel Spolsky argues cogently that companies shouldn’t even try. Management by Objectives is deeply ingrained in Microsoft culture, so we try our best anyway.

One last thing about my role – a few weeks ago, my twitter friend Sasmito Adibowo questioned how I can give advice to startups and small software companies when I work for the largest software company in the world. I think that’s a fair point – I haven’t delivered code into production for a couple of years now, and I haven’t worked on a startup or small software company for several years. I have never been the driving force behind a true software startup (though I did build a small consulting company). I have learned an enormous amount from working with successful software companies of all sizes in my role as an evangelist and through interviews on the Startup Success Podcast. Still, I lack the credibility that can only come with building a successful software company from scratch. I’m more like a food critic than a chef.

Sometimes I feel a tug to leave and start my own company, but that’s not going to happen anytime soon. I really like working for Microsoft, and at the moment I think I can make a bigger impact here than on my own. I also have a wife and an eight-year-old son, and my family has grown to appreciate the stability that comes from working for a large, successful company.

I still want to create software, and I want the real-world credibility of building my own company, so I plan to follow in Patrick McKenzie’s footsteps and build a MicroISV as a side project (Patrick was eventually successful enough to quit his day job). Microsoft is surprisingly cool about this. I have lots of ideas, but whatever I do will definitely involve Windows Azure and will probably involve Windows Phone. Unfortunately, I’m not as disciplined as Patrick McKenzie, so I have nothing to show for my efforts, yet. It might take me a while to get off the ground, but I won’t give up. And of course, I’ll write about it here.

In the meantime, remember – if you work for a software company, don’t hesitate to reach out to me. I will do my best to help.