A few months ago, I mentioned that my friend and I were going to start building a UAV. It’s taken us a little while, but I’m pleased to report that over the previous bank holiday weekend we were able to take it out for our first test flight.

This test flight was the first step in our move towards building a fully automated UAV platform using a Netduino. This flight, however, is 100% manual, with no auto-pilot assistance. The objective is to get to grips with manual flight as we need to be able to launch and land the aircraft and take over in the event of an autopilot failure.

Now, bearing in mind that neither of us have any flight experience whatsoever, below is a video clip of some of the flights during the day. There are, as you might expect, several crashes and some very unsettling flight patterns, but don’t worry, as neither I nor anybody else involved have any aspirations to become a commercial pilot. :)


Lessons learned

As the pilot, I gleaned some useful insight into the flight characteristics of the platform. Here are my initial thoughts:

  • The stock rudder is way too small to have any authority, particularly with the upgraded brushless motor. It has a control surface of just 2.5cm x 10cm (approx.). In light wind, it was pretty much uncontrollable and at speed, no chance. We later modified the rudder to 6cm x 15cm and are looking forward to testing that out next weekend.
  • After the first crash, the tail completely detached from the body. It was way too brittle and broke in the only place we hadn’t reinforced with glass tape. After fixing, we ended up with a plane that was, well, a bit ‘warped’. That’s fine for our trainer, but in a future version before we integrate the UAV electronics we’ll probably need to embed some carbon-fibre rods throughout the body to improve the rigidity.
  • Ailerons would make the model much more responsive, so we’ve added those too (I’ll probably blog about the modifications in a separate post) and these will be tested next weekend.
  • We should have taken time to balance the centre of gravity properly. This might account for some of the more ‘wild’ elevator action seen in some of the clips.
  • Even when flying into a headwind, very little motor input is required in order to maintain stable flight. I think I only used 100% throttle maybe once, just to see how it reacted.

I’ve spoken with a lot of developers recently who haven’t yet adopted the Windows Azure platform, often because they think the process is difficult, time-consuming or requires some kind of advanced ninja training to get up and running.

This video will show you that it can be done in 90 seconds or less, without writing a single line of code!

In the screen cast, I’ll show you how to create a new Azure project in Visual Studio 2010, add a web role to the project, create a deployment package, upload it to the cloud, and then view it running in the cloud.

Before you begin though, head over to the Windows Azure site, and make sure you’ve activated a Windows Azure subscription. If you’re an MSDN or BizSpark subscriber, you get a free basic subscription anyway which is great for this demo. If you’re not, don’t worry, because until June 30th, Microsoft are giving you a free trial, too. Just get started at http://www.microsoft.com/windowsazure/free-trial/.

It’s seriously easy to do, so what are you waiting for – get going! :)


EDIT 30/03/2011:
In this video, I’ve shortened the “deployment” sequence to fit within the timeframe, but it should be noted it is normal for this part of the process to take anywhere between 15-30 minutes (while the Azure platform does what it does to spin up the resources it needs to run your solution). Thanks to all the watchers who pointed out that this fact was probably worth mentioning! :)

As always, feedback is appreciated and welcome.

I gave a talk at Microsoft BizSparkCamp in London on March 25th, and I thought I’d follow that up with a blog post summarising some of the main benefits of deploying your next solution on Windows Azure. These reasons all form part of what I call the “Lure of Azure”.

So here’s a taste of eight of the reasons I broadly covered in the talk:

Reason #1: Financial
Building, deploying and maintaining a Windows Azure solution is likely to cost you far less than acquiring and maintaining your own physical infrastructure. If high availability and redundancy are important to you, I can pretty much guarantee you can’t do it cheaper or quicker than with the Azure platform.

Reason #2: Forget hardware
Very few applications actually need to be run on dedicated physical hardware (“Co-location” etc). Windows Azure abstracts away all the hardware and gives you a platform upon which you deploy code only, and through configuration files, you can determine how much or how little of the resources will be available to your application. Let Windows Azure take away the strain of worrying about load-balancing and redundancy, as all that’s taken care of for you.

Reason #3: Consolidation
The Windows Azure platform allows you to consolidate all your logical services under one account, with one control panel. That means you can instantly provision SQL Azure databases, and make use of infinitely scalable storage resources on-demand from a single point of administration, quickly and easily. Managing Windows Azure applications that utilise SQL Azure, Windows Azure storage and Compute is orders of magnitude easier than maintaining the equivalent physical infrastructure yourself.

Reason #4: Scale up (and down)
If you’re going to buy a physical infrastructure, chances are you’ll over-specify and end up with a lot of spare capacity because you build-in a lot of what you don’t need all the time… I.E. you build to accommodate ‘peak’. That means you’d be paying for what you don’t need (or use) most of the time with any physical infrastructure. Windows Azure solutions can be scaled-up and down on demand, meaning you only ever pay for capacity when you need it.

Reason #5: Build flexibility
If you build on physical infrastructure, when you need more of something (or less, for that matter), you end up messing about with hardware. If you lease (as many of us do), then that means contract variations, change requests, maintenance periods and perhaps even down-time but generally always cost. The Windows Azure platform lets you do all this stuff on-demand, with ease.

Reason #6: Better global reach
Locating a physical data centre in one territory is one thing, but if you want truly global scale it pays to geographically distribute your resources to other territories as well. Co-location is an expensive way to do this, and then you have to think about how you’re going to replicate your data between all your data centres yourselves and the bottom line is: that’s tricky to say the least. Locating resources globally in Windows Azure is as easy as point-and-click.

Reason #7: If you’re a .NET house already, it’s even easier
Using Visual Studio 2010? Know C#? Most of your existing code can run in the cloud immediately with just a few minor tweaks. Go download the SDK and start today.

Reason #8: Flexibility to utilise all, or a part of the platform
Fed-up maintaining your own SQL database cluster? Running out of resources locally? Hosting company charging you too much for a SQL server database? Bung your database on SQL Azure and leave your app where it is. You can use the SQL Azure Migration Wizard to move your databases over to the cloud, then it’s just a simple matter of changing your connection strings in your code. Show me a simpler way of creating a triple-redundant SQL server instance!

There are many other reasons, of course, and I could expand on any of these along the way but the point of this post was to just get you thinking about some of the key advantages by summarising some of the points I discussed in my talk. Feel free to post comments!

For what must have been the zillionth time last weekend, I found myself writing code again for Y.A.T.E.S. (or, “Yet Another Template Email Sender”). I don’t know why I didn’t get around to adding some snippets into my library sooner, but I thought I’d share the following as I finally decided to write something which is a good starting point for future expansion.

Basically, it fetches any file from disk (you specify), reads the contents into a variable and then parses it for a list of tokens you supply, substituting the tokens with your own values. It works equally well with HTML and plain-text emails and supports multiple CC and BCC addresses.

EDIT: July 2011 – The project has now been updated to support fetching of template files from remote locations (by URL).

Usage

I’ve tried to keep it as simple and short as possible:

// Fetch template body from disk
var template = TemplateHelper.GetEmailTemplate("D:\Path\File.htm");

// Add any tokens you want to find/replace within your template file
var tokens = new Dictionary<string, string> {{"##FIRSTNAME##", "Richard"}, {"##LASTNAME##", "Parker"}};

// Specify addresses (CC and BCC are optional)
var to = new MailAddress("some_email_address@some_domain.com");
var fr = new MailAddress("some_email_sender@some_domain.com");

// Optionally, specify a List<MailAddress> for both CC and BCC fields, or pass null.
var cc = new List<MailAddress>() {new MailAddress("bar@foo.com"), new MailAddress("foo@bar.com")};
var bcc = new List<MailAddress>() {new MailAddress("fizz@buzz.com")};

// Send the mail
TemplateHelper.Send(to, fr, cc, bcc, "##FIRSTNAME##, thanks for registering!", tokens, template, true);

It’s free to use, you can use it as you wish, and it comes with all the usual disclaimers etc.

To get the source code, head on over to the CodePlex project at tokenmail.codeplex.com.

Enjoy!

Follow

Get every new post delivered to your Inbox.

Join 261 other followers