Archive for June, 2013

Rebranding GoldMail and keeping up with Azure SDK updates

June 30, 2013

I am VP of Technology for a small ISV called GoldMail; all of our applications run on Windows Azure. We are rebranding – changing from “GoldMail” to “PointAcross” – and we will change the company name at some point as well. People think “GoldMail” is an e-mail product (it isn’t), and PointAcross (as in, we help you get your point across) is a more focused brand. We are changing everything except our desktop product, which will remain GoldMail, and will eventually be deprecated. We have been working on a web version of our desktop product for quite some time now, and we’re calling it PointAcross. With our web application, we can accommodate both Windows and Mac users. We’ve also simplified the usability.

Our infrastructure – over a dozen cloud services – runs in Windows Azure. With each update, we have to update the SDK in every project, do regression testing, and then release them to production. Our product roadmap is packed; we are pushing out releases as fast as we can, with some big product features coming in the next few months. The trick is to minimize disruption by combining the SDK updates with new releases. This works pretty well, although some of our products have faster release cycles than others, so not everything gets updated at the same time.

As you know if you’ve read my post about our implementation of Windows Azure, I am a glutton for punishment, so I’ve commited to rebranding everything and upgrading everything to SDK 2.0 in the same release. We updated to SDK 1.8 a few weeks ago, but we are still targeting Storage Client Library 1.7, so we have breaking changes to contend with. Did I mention I committed to completing all of those changes in two weeks?

Now, there are two ways to do a rebranding project of this size. The easy way is to change all the public-facing URLs by just adding DNS entries that point to the goldmail services, storage accounts, etc., using pointacross in the names. This leads to major confusion later, and makes it difficult to get rid of any goldmail artifacts down the line. Plus, if we add more services, do we brand them as goldmail internally (to be consistent), or switch to pointacross?

The harder way is to set up all new services and storage accounts in Windows Azure, and add new DNS entries for them. If we do it this way, we have to change all of the URLs in the configurations (and code) for all of the services, and all of the storage account names and keys we have in the Azure service configurations. But in the end, we end up with an infrastructure that is fully branded with the new name, and there won’t be any slip-ups where the old name will be displayed. Also, we can set up the new services, publish everything, and run the two production systems in parallel, then cut over when we’re satisfied that everything is working correctly. After cutting over, we change any goldmail DNS entries that might be used “out in the wild” (like in HTML pointing to our embedded player) to point to the PointAcross addresses.

Of course, I’ve chosen to do the more difficult way of rebranding. I think of it as “the right way” – I hate to do anything halfway, and we’ll never have time to go back and rebrand internally, so if we don’t do it now, we’ll end up with goldmail services forever. I’m also taking advantage of this opportunity to move all of our services and storage accounts from the North Central data center to the US West data center. I have several reasons for doing this.

First and foremost, the North Central data center is full. If you don’t already have services running in North Central, you can’t select it as an option. This also means that we can’t create VMs and use IAAS in the same location as our other services, because they don’t have that feature enabled for North Central. My second reason is because the new hardware in the newer data centers has the newer, faster hard drives, and our applications will gain performance with no effort on our part. Well, no effort except for the huge effort of moving everything, but that’s a one-time hit, versus the performance gain for our customers.

The other thing I will do is add a new storage account for diagnostics. When we started, we only used one storage account, because our use of Azure Blob Storage was almost non-existent. We have added some usage for blob storage, so it makes sense to use our main storage account for that, and create a new storage account for the diagnostics. Also, we have 2-1/2 years of diagnostics in the storage account that we don’t need to be retaining and paying for, and we can let it go when we delete the old storage account some time down the line.

In my next post, I’ll talk more about this project and how we’re going to move data from one storage account to another, as well as any issues I hit upgrading to SDK 2.0. In the meantime, if you have any advice or comments, please leave them in the comments section!

3/8/2014 GoldMail is now doing business as PointAcross.

Problem debugging WCF service in Azure compute emulator

June 30, 2013

I’m using VS2010 SP-1 with all updates installed, Azure SDK 1.8, and the Storage Client Library 1.7. Storage Client Library 1.8 had breaking changes in it, and it’s going to take a few days to update and test all of our services, so we’ve been waiting for SDK 2.0 (which came out not too long ago).

I want to talk about the problems I’m having running my WCF services in the compute emulator. I’m curious to see if anybody else is having these kinds of problems, and wanted to see if upgrading to SDK 2.0 fixes the problems.

First, I have a startup task in my service that registers some dll’s. To run my WCF services in the Compute Emulator, I have to comment out that startup task in the csdef file. I also change the number of instances of the web and worker roles to 1, to make it run faster. I change the web.config to have debug=”true” so I can debug the code. I hit F5.

I am running the staging Azure cloud project in my solution, so this runs against blob storage and the SQL database in Azure, not on the local machine, so that complication is removed. When I hit F5 to run the application in the compute emulator, I get this:

This is fairly new. I’ve been having problems for several months, but this is a recent addition. I also see this message when running any of our web applications in the compute emulator. I do have “Launch browser for endpoint” checked, so it does open IE. I think I’ started seeing this message when I updated to IE10, but I couldn’t swear to it.

I click Okay. Now my service is running in the local compute emulator, and I can run my client that calls it and test the calls and stop it at the breakpoints and look at what’s going on, etc. I hit Stop in Visual Studio to stop the service so I can make some changes.

I make changes and hit F5 to run the service in the compute emulator again.  At some point (sometimes it’s the first time, sometimes it’s after a couple of iterations of changes), I get this error:

It worked just a minute ago just fine, so I know the file is right. And once I get this error, the service won’t run right, and I can’t debug into it. If I hit Continue (just for grins), the dialog goes away and then pops up again. If I hit OK, it closes the dialog, but doesn’t stop the service – I have to do that in VS. If I stop it and try to run it again, I get that error again. To get it to run again in the compute emulator, I have to clean the solution, wait a few seconds, and then I can run it.

At this point, I can no longer make changes, do a build to make sure it compiles, and then run it. From this point onward, I have to clean the solution and just run it. I have this happening on both of my development machines, so if it’s something about my setup, it’s on both of them.

In case you’re wondering, I did consider upgrading to VS2012, but the “updates” to the Pending Changes window just add one more layer of difficulty to our work, so my team has decided to wait for VS2013, where they have responded to that feedback from myself (and many, many others).

Next: I’m upgrading to SDK and Tools 2.0, and am interested to see if the problem is going to be fixed. If you’ve had this problem and have managed to fix it, please post your solution in the comments.

Fun stuff to do if you’re in San Francisco for the BUILD conference

June 21, 2013

Is there any tourist-y stuff to do in San Francisco?

I have to start by saying what’s fun for some people will not be fun for everyone. I’m not going to repeat all the San Francisco treats (such as Rice-a-Roni) for you; that’s what guidebooks are for. Everyone knows about Fisherman’s Wharf, Pier 39, Alcatraz, the Golden Gate Park, the California Academy of Sciences at the park, and of course the famous Golden Gate Bridge (the best view of which is from the north side of the bridge, from the battlements in the Marin Headlands). For people who like to shop, the Westfield Center is on Market and Powell St, and Union Square is two blocks up Powell.

There’s also the Letterman Center for the Digital Arts in the Presidio, home to Lucasfilm and ILM. (Take your picture with the Yoda fountain!). If you have a car, you can drive north on 101, and take the Lucas Valley Drive exit and go west to Nicasio, and drive by the entrance to Skywalker Ranch. (I’m not posting the # here, I don’t want the double-L’s coming after me (the Lucasfilm Lawyers)). (Did you notice I closed all of my parentheses correctly? Good to know that learning LISP was relevant to my life.) Oh, by the way, you can’t see anything from the entrance, and they have a lot of security cameras, so don’t try climbing over the fence and running for the main house. (Don’t ask.)

Any tech events going on around \\build?

So let’s talk about fun things to do if you’re a tech person coming to \\build – you know, the parties, the events happening at the same time, where you can see people you haven’t seen since the last conference or MVP summit? Here’s a list I managed to cobble together. If you know of any I’ve missed, please add them in the comments so I can go to them, too. Be sure to check the event pages themselves in case there are any changes after I post this.

Monday, 21 June

  • Microsoft .NET client-side development futures / panel discussion. Microsoft offices, SF, 6:30 p.m.
    Discuss Microsoft .NET client-side development and the future thereof with Laurent Bugion and Ward Bell (both are Silverlight MVPs). There will also be 1 or 2 guys from Xamarin joining in. More info here.
  • Preparing applications for production environments. Microsoft offices, Mountain View, 6:30 p.m.
    You need a car to get from SF to this meetup in Silicon Valley about preparing applications for production environments. More info here.

Tuesday, 22 June

  • Vittorio Bertocci speaking about Identity/AD/ACS and Windows Azure. Microsoft offices, SF, 6:30 p.m. 
    Come see Vittorio Bertocci, a superstar from Microsoft who is the expert in Identity/AD/ACS in Windows Azure! He’s always entertaining and informative, and great at answering questions. This event is kindly being sponsored by AppDynamics, so there will be pizza and drinks; please sign up ahead of time so we get enough pizza! More info here.
  • Bay Area F# User Group meetup. Microsoft offices, SF, 6:30 p.m.
    Meetup of the Bay Area F# user group. More info here.
  • Xamarin Welcome Party 7:00-midnight
    This is conveniently about a block from the Microsoft offices, and I suspect their numbers will coincidentally increase at about the time the two meetups end. More info here.

Wednesday, 23 June

  • Glenn Block speaking about scriptcs. Github HQ, SF, 7:00 p.m.
    Come see Glenn Block from Microsoft talk about scriptcs at the second SF .NET User Group (yes, there’s two, don’t ask). Github is on 4th St; I hear they are letting in the first 55 people who have RSVP’d to the meetup. More info here.
  • \\Build Welcome Reception
    If the pattern of the past few \\build conferences holds, the \\build welcome reception will be Wednesday night. I’ll post more information when I find out if I’m right or now.

Thursday, 24 June

  • Deep Fried Bytes party. Thirsty Bear Brewing Co., South of Market 8:00-10:00 p.m.
    To get tickets to this, you have to track down Chris Woodruff or Keith Elder at the \\build conference. More info here.
  • \\Build Attendee Party
    This is another educated guess. If the pattern holds, there will be an Attendee party on Thursday night. I’ll post details here when/if I get them!

How do I find the Microsoft office in San Francisco?

Several of these events are at the Microsoft offices in San Francisco. They are very generous with their space, and we who run the meetups and user groups really appreciate their support, especially that of Bruno Terkaly with DPE for hosting all of our SF meetups.

The office is about two blocks from the Moscone Center, where the \\build conference is being held, on Market Street where Powell runs into Market. Of course, they don’t have a big sign on the street that says Microsoft, you have to be “in the know” to find it. Fortunately, Microsoft Research (apparently in the same location) has a very nice page here that shows you where it is.

Is Rice-a-Roni really the San Francisco Treat they claim it is?

Yes it is. Do you have the Rice-a-Roni song in your head yet?