Archive for

January 2010

iPad - it's a netbook yes but the screen is the key

Like much of the tech community on twitter I was left a little non-plussed by the launch of the iPad but having slept on it I think this could be another killer segment for Apple.
A while ago I bought a netbook (Dell Mini 10v) and installed OSX with the help of the community on http://www.mydellmini.com/forum/.

It solved many problems, giving me a lightweight email and internet device I could take anywhere and was synced with my main machine without fuss. At £200 I was also less precious about it than my MacBook Pro.

In use though it's been too much of a compromise. It just felt small and claustrophobic using it. There was no joy and the trackpad was a real pain to use. Couple that with the enormous battery I had to use to get close to a days use out of it and it really wasn't the portable lovely befitting OSX.

The iPad looks like the answer to my original requirement, lightweight, fast, excellent battery life and automatically synced. Perfect.

Well almost.
I'm really surprised that they didn't include at least an SD card reader in the device let alone a single USB port for exchanging pictures and other files. It is running iWork after all.

Having to keep a couple of connectors in your bag really isn't elegant and in truth is going to be downright irritating.
I understand that it's more about content consumption rather than creation but this device is perfect for taking on trips that don't warrant the full laptop paraphernalia. I want to take pictures and share them or update documents and give them to people.
Yes you can email or exchange over Bonjour but that is a whole lot more hassle than transporting on a the now near ubiquitous USB drives.

I'm not sure I'll be able to resist buying one and I will certainly get the camera connection kit but that will be grudgingly and will tarnish the whole experience.

But, I don't think the story ends there.

The iPad is a great alternative to netbooks, despite it missing a couple of slots, but it also sports the biggest multi-touch screen on the market.

Couple that 10 inches of tactile gorgeousness with the ingenuity of the app developers already working on the iPhone platform and some amazing use cases and applications are going to materialise over the coming months.

I wouldn't be surprised if much of the innovation comes out of the enterprise sector. Tablet PCs never took off because they were bulky and still tied to the desktop metaphor.
The iPhone OS is built to touch, couple that with the lightweight portability and suddenly it looks like the team at Apple have delivered on Bill Gate's vision.

I for one am quite excited and devoting offline brain cycles to exploring the possibilities.

Posted

What if Apple turned iTunes store into Amazon/Ebay killer?

If the tablet is going to redefine how content is being delivered, turning the existing concept of magazines into interactive delights, it would make sense to deliver a purchasing experience.

I read a lot of cycling magazines that contain reviews of wonderful products that I invariably MUST have right at that moment.

What if Apple, as part of a new content platform, enabled purchasing of these items, via the iTunes store.

I could buy that wicked new Chainset or spangly new jacket with my existing iTunes account.

That would be a game changing prospect.

Posted

Custom domain names in Windows Azure

need a a CNAME mapping to /cloudapp.net as described here: http://blog.smarx.com/posts/custom-domain-names-in-windows-azure

Filed under  //  dev  
Posted

The trick to getting CruiseControl.net build label into PowerShell script

is to use an environment variable.

The PowerShell Task is a subclassed Executable Task which loads a series of environment variables before the task is executed. You then just need to access those in your PowerShell script via the $Env variable.

In my case
$label = $Env:CCNetLabel

Scroll down to the Notes section of this page http://confluence.public.thoughtworks.org/display/CCNET/Executable%2BTask for a full list of the environment variables that are set.

Filed under  //  dev  
Posted

Automating Azure deployment with Windows PowerShell

One of the pre-requisites I had for using Azure was that it could be deployed automatically as part of an integration and deployment process.

A quick scan through the Labs in the Windows Azure Platform Kit, which by the way have been an excellent resource so far, gave me Windows PowerShell as the option.

 

It proved pretty easy to get up and running. Here's my quick start guide.

Download PowerShell and the Azure CmdLets

If you're running anything other than Windows 7 you'll need to download and install PowerShell from here: http://support.microsoft.com/kb/926139.

Next you need the Azure Power Shell CmdLets available here: http://code.msdn.microsoft.com/azurecmdlets. Once you've downloaded and extracted the scripts, you then just need to execute the startHere script to get them installed.

Script the deployment

I won't regurgitate the full instructions as it's best to read through the Lab Deploying and Monitoring Applications in Windows Azure - Exercise 2 - Using PowerShell to Manage Windows Azure Applications in the Windows Azure Platform Kit.

Is also worth checking reading about them on Ryan Dunn's blog: http://dunnry.com/blog/WindowsAzureServiceManagementCmdLets.aspx

This is the script I ended up with

Add-PSSnapin AzureManagementToolsSnapIn

$service = "<service_name>"
$sub = "<subscription_id>"
$cert = Get-Item cert:\CurrentUser\My\"<thumbnail>"
$package = ""<package_file>""
$config = ""<config_file>""

if ($args.Length -eq 1)
{
        $label = $args[0]
} 
else
{
        $label = "unknown"
}

/* 
    If the staging deployment doesn't exist, this will create it
*/
/*
New-Deployment -serviceName $service -subscriptionId $sub -certificate $cert -slot staging -package $package -configuration $config -label $label |
Get-OperationStatus –WaitToComplete
*/

/*
    Upgrade the current staging deployment
*/
Get-HostedService -serviceName $service -subscriptionId $sub -certificate $cert |
Get-Deployment -slot staging |
Set-Deployment -package $package -label $label |
Get-OperationStatus –WaitToComplete

/*
    Set to running
*/
Get-HostedService -serviceName $service -subscriptionId $sub -certificate $cert |
Get-Deployment -slot staging |
Set-DeploymentStatus running |
Get-OperationStatus –WaitToComplete

/*
    Move staging to production, this will actually swap them over
*/
Get-HostedService -serviceName $service -subscriptionId $sub -certificate $cert |
Get-Deployment -slot staging |
Move-Deployment |
Get-OperationStatus –WaitToComplete

You'll note that I have two options for the deployment New-Deployment and Set-Deployment.

When you start off, Azure has nothing in either of the staging or production slots so you have to use New-Deployment.

When you create the first staging deployment then move to production, this empties the staging slot.

When you run through the process again, with New-Deployment, the Move swaps the deployments over so staging then has the first deployment and production the second.

At this point you can then start upgrading the staging deployment with Set-Deployment

You can of course avoid all this by just doing two manual deploys before automating it.

Posted

Migrating to SQL Azure

So, I have myself a database in the cloud but it wasn't plain sailing migrating from an existing database.

I used SQL Server Management Studio to generate the whole schema as a script and attempted to run this on the cloud DB. As expected it didn't work. 

Here's what I had to change:

- Removed all Database creation and settings
- Removed all Schema and Role creations
- Stripped out the following index and table options: PAD INDEX, ALLOW_ROW_LOCKS, SORT_IN_TEMPDB,  ALLOW_PAGE_LOCKS, TEXTIMAGE_ON
- Removed all references to the file groups, ie [PRIMARY]
- Removed all instances of [dbo] referencing. This was actually to resolve an error with some aspnet db views containing three-part column names
- Added WITH (NOLOCK) to all table references that just had (NOLOCK), again aspnet db views.
- Populated the aspnet_schemaversions table as follows:

INSERT aspnet_SchemaVersions (Feature, CompatibleSchemaVersion, IsCurrentVersion)
VALUES ('common', 1, 1)

INSERT aspnet_SchemaVersions (Feature, CompatibleSchemaVersion, IsCurrentVersion)
VALUES ('health monitoring', 1, 1)

INSERT aspnet_SchemaVersions (Feature, CompatibleSchemaVersion, IsCurrentVersion)
VALUES ('membership', 1, 1)

INSERT aspnet_SchemaVersions (Feature, CompatibleSchemaVersion, IsCurrentVersion)
VALUES ('personalization', 1, 1)

INSERT aspnet_SchemaVersions (Feature, CompatibleSchemaVersion, IsCurrentVersion)
VALUES ('profile', 1, 1)

INSERT aspnet_SchemaVersions (Feature, CompatibleSchemaVersion, IsCurrentVersion)
VALUES ('role manager', 1, 1)

Filed under  //  azure  
Posted

Getting setup for SQL Azure

To access  SQL Azure database, you will need SQL Server Management Studio 2008 R2 CTP. The standard SSMS version doesn't cope with the slightly different schema of the cloud based cousin of the SQL 2008 we all know and love.

The Express edition of this is available here: 

http://www.microsoft.com/downloads/details.aspx?FamilyID=c772467d-e45b-43e1-9208-2c7b663d7ad1&displaylang=en

Just make sure you read the download options and don't do what I did. I downloaded just the database engine without the tools. Cue head scratching and that oh so familiar feeling of the dunce when I realised what not paying attention resulted in :)

Filed under  //  azure   dev  
Posted

Getting setup for SQL Azure

To access SQL Azure database, you will need SQL Server Management Studio CTP R2. The 2008 version doesn't cope with the slightly different schema of the cloud based cousin of the SQL 2008 we all know and love.

The Express edition of this is available here:
http://www.microsoft.com/downloads/details.aspx?FamilyID=c772467d-e45b-43e1-9...

Just make sure you read the download options and don't do what I did. I downloaded just the database engine without the tools. Cue head scratching and that oh so familiar feeling of the dunce when I realised what not paying attention resulted in :)

Filed under  //  azure   dev  
Posted