Tuesday, February 03, 2009
Singlehandedly Destroying Our Carbon Footprint
So I’ve done about 43,000km of travel so far this year….. YIKES! probably another 30,000 this month too.
I’ve decided to use Tripit to track my travel stats this year.
Travel|Tuesday, February 03, 2009 11:34:03 PM UTC||
Wear Your Helmet Children
So I watched a few Snowsports videos while I was skiing in Banff last week. There is an increasing focus on avalanche education which is a good thing I think. I watched the Biography flick on Craig Kelly called Let it Ride and The Fine Line which is a sort of Hybrid action+education flick on Avalanches in the back country.
All go through the big three avy safety tools you should never be without:
- Beacon/Transceiver. With fresh batteries and a user who knows how to use it. I’ve got one of the older model Barryvox beacons.
- A probe- that’s long enough for the sort of locations you’re hitting. I have a 300cm G3 probe.
- A shovel. I’m personally not a big fan of polycarbonate shovels, they may be lighter, but the wet snow here in NZ is just too likely to break them… You want a nice big alloy shovel for digging your friends out pronto like!
Something that a bunch of them missed was helmets. Back when I was a ‘grom’ skier Helmets were totally ‘uncool’… but that’s all changed, I wouldn’t be without mine. Several of the case studies in The Fine Line talked about severe head and facial injuries so a good Helmet is number 4 for me.
Check out this email that the guys from Shred Ready received about how one of their helmets helped in an avalanche situation.
Adventure Sports|Tuesday, February 03, 2009 10:53:44 PM UTC||
Monday, February 02, 2009
Xero Error handling. Errors in your pages are bad. Errors in your Error pages are REALLY bad.
Whoops! Got to Xero this morning and got this.
Looking at the address bar it appears that it’s sent me to the custom error page. And then the custom error page has thrown an unhandled exception which has been bubbled to the default error handler.
If ever there was a case for using ‘On Error Resume Next’ then Custom ASP.NET Error pages are it . Throwing an unhandled exceptin from your nice Custom Error page gives bad UX.
On the plus side, the Xero support people are just super and the actual application really rocks too.
.NET|Monday, February 02, 2009 10:32:23 PM UTC||
Sunday, January 25, 2009
Windows Azure Development Fabric and IP v6 Issues
So you may find yourself having issues calling into the development fabric web roles. The error message will be something like ‘te server actively refused the connection’. There are some issues with IPv6. The development fabric will only listen on open host and I think what was happening is that the requests appear to be coming from the IPv6 address rather than the IPv4 one3.
Anyway, I disabled IPv6 and commented the IPv6 localhost entry from the *.hosts file. All worked after this.
Windows Azure|Sunday, January 25, 2009 1:01:35 AM UTC||
Saturday, January 24, 2009
Wednesday, January 21, 2009
Dumb and Dumber – How the $%^&$%*& do you download a browser, without a browser
So I’ve been using the internet for a long time. I remember when Windows 3.1 never used to come with a browser. In most cases I’d use a copy of the browser from a 3.5” floppy disk and I’d install it with that. Sometimes I’d install a command line FTP client or Cute FTP from my floppy disk and use that.
Eventually Microsoft and the OEMs started shipping Windows with a browser. This meant that no matter what browser I actually wanted to use… I didn’t have to find my floppy disks because I could just boot up the browser and browse to Netscape.com and download my preferred browser. This was a marvellous advance.
The DUMB folks at Opera think this was some sort of retrograde step. The even DUMBER folks at the European Union are listening to them. Microsoft may have to ship a special European version, especially crippled to not have a browser.
Maybe DUMB and DUMBER haven’t thought about it yet… but, how the $%*&! do you download a competitors browser if you don’t have a browser to download it with in the first place! How many of the ‘late comers’ to the web have any idea where to find a browser DVD/CD/Floppy disk. How many have the foggiest flue how to login to their ISPs FTP server to download it? They expect to buy their PC from the department store (noticed how few ‘computer stores’ are left) and they expect to take it home and it just plugs into ADSL and works.
This is the most completely stupid idea I have ever heard of!
I hate Competition law at the best of times. It’s a nasty retrospective “don’t know you’ve broken the the law until you’re actually prosecuted because we changed what it meant half way along the way” piece of shit public policy. But, I hate DUMB and DUMBER even more.
PoliTechLaw|Wednesday, January 21, 2009 3:03:59 AM UTC||
Tuesday, January 20, 2009
Why You Can Just ‘Browse’ To Tables in Azure Storage
So one of the cool things you can do in Windows Azure storage is just enter the URL of a public Blob in your browser and retrieve it via an HTTP GET. This makes sense as in REST, a GET and a URI will return the data at the URI. In the case of an Azure Blob this means the bytes stored returned with the appropriate content type in the header.
You can also do thinks like retrieve a list of the Blobs in a given container like this:
It would be nice to be able to do the same with Azure Table storage. A quick glance at the SDK leads one to think it’s as simple as
But this will fail on both the Cloud Storage and Local Storage. This is because
“The request must include the Authorization header and the Date header, as specified in Authentication Schemes.”
So that sounds simple enough- I just cracked open Fiddler thinking I’d just punch in the headers. But, these headers are actually fairly complex. Well, ms-x-Date is simple enough, but, the Authentication headers involve both canonicalization and signing of the request.
I’d love to give you a simple solution so you can just browse tables, but, I haven’t got one. I hope that at least this saves you from spending too much time trying.
Windows Azure|Tuesday, January 20, 2009 7:39:40 AM UTC||
Windows Azure Queue Timeout
So a question came up in the Azure training session today about what the timeout was before a ‘Dequeued’ message was returned to the quen unless it was ‘Removed’. Windows Azure is designed to ensure your messages will always be completed so it returns a dequeud message to a queu if it has not be permanently removed after a period of time.
I knew it had to be configurable… but had no idea exactly how.
The answer is here in the SDK
or, if you are using the StorageClient sample code from .NET (and if you are using .NET then you really should be!) then this post from Neill Kidd should help
// Get message with 60 sec visibility
Message msg = queue.GetMessage(60);
This means to ‘Dequeue’ a message only place that message back on the queue if RemoveMessage has not been called within 60 seconds.
Windows Azure|Tuesday, January 20, 2009 7:21:02 AM UTC||
My Windows Azure Blog Post Todo List:
So based on the questions I have been receiving at the various Azure Services Platform events around the world I am starting to put together a list of blog posts to do as I get time. Please feel free to suggest other posts.
Windows Azure|Tuesday, January 20, 2009 2:46:36 AM UTC||
- What Fits Where
I probably need to do a post that talks a bit about which bits of the Azure Services Platform fit into what sort of businesses and business models. Windows Azure won’t cure world hunger, but, it will be a great platform to use if you’re going to build the next Facebook. There’s not been a lot out of Microsoft with these sort of details yet, so, hopefully this post will go someway to answering these questions.
- Forward Caching in Windows Azure
This post will talk about how to use the Local Storage in Windows Azure to cache data. Why you would do it. What data you should store in there. What data you should not store in there.
- What Being Stateless Means
What does building a stateless Web Role or Worker Role mean? What are some common traps where people might slip into ‘statefulness’?
- Multithreading and Parallelization in Windows Azure Worker Roles
When should you spawn multiple threads vs When you should create new instances. Will discuss things like performance bounds. CPU Bound vs IO Bound vs Network Bound.
- How To Implement A Plug-in Model In Windows Azure
Because the Windows Azure deployment model is on a Package basis it’s not possible to add new DLLs once an application has initially being deployed into a Compute project. The solution is, of course, to load the DLLs remotely into Cloud Blob storage and then dynamically load the types using a plugin pattern.
“In the mornin’….. I’m havin’ Donkey!”
So Vittorio and I went out for a traditional Beijing Dinner last night. Was really good. We tried some adventurous things. We didn’t quite get to eating the Silk Worms, but, we did eat Donkey meat.
Donkey meat in the centre, behind the pickled cucumber circle. I felt a little queasy this morning… but no idea if that was food or just general exhaustion. I’m planning a quiet night with room service in the hotel this evening. Of course my hotel meal will usually cost the same for one as dinner last night cost for four!
Travel|Tuesday, January 20, 2009 12:40:05 AM UTC||
Saturday, January 17, 2009
Strategies for Scaling out your Data Tier
Had plenty of conversations over the past few days in Mumbai with people about scale out strategies. About the difference between stateless and stateful portions of your application and about some ideas around choosing horizontal partitioning strategies.
Waddayaknow… I boot up RSS Bandit this morning and Dare has a great post on this.
Covers many of the things we discuss this week.
One of the things I focussed on a bunch this week is having some knowledge of the distribution of your data when choosing a good partition key.
You want a horizontal partitioning key (partition key in Azure Table Storage) that ideally DOESN’T fit a normal distribution.
Think of it like this. If you partition your data using say the first letter of the user name then you’re gonna end up with a whole bunch in your ‘S’ partition and not a lot in your ‘Z’ partition.
Anyway. A great post and well worth reading.
Building Scalable Databases: Pros and Cons of Various Database Sharding Schemes
.NET | Windows Azure|Saturday, January 17, 2009 12:32:19 PM UTC||
Friday, January 16, 2009
Azure Blogs – OPML
So I am running an Azure Training course here in Mumbai today and people are asking about good blogs to read WRT the Azure Services Platform.
Here is the OPML export for my Azure folder from RSS Bandit.
Windows Azure|Friday, January 16, 2009 10:19:32 AM UTC||
Using ASP.NET Sessions with Windows Azure
If you are building applications with Windows Azure you will know that your Web Role and Worker Role instances need to be stateless. If you’ve been architecting high scale (read horizontally scaling server farms) then you’ll be used to this concept- you’ll know about the Sql Session state provider and so forth.
If you are using Azure you obviously will not be using the Sql provider. Instead you should look at the AspProvider example in the SDK. This uses Azure Blob and Table storage to store your session state.
Windows Azure|Friday, January 16, 2009 10:09:49 AM UTC||