Friday, December 19, 2008
Azure Cloud Computing User Group December Meetings a Big Success
The presentation and demo apps for this first meeting have been posted on the CCUG web site. We'll be posting the schedule for January meetings soon as details are firmed up.
Tuesday, December 16, 2008
Dev Fabric Status Colors and Meaning
Sunday, December 14, 2008
New on CodePlex: AzureLiveID
AzureLiveID is available on CodePlex.
Saturday, December 13, 2008
Windows Live ID Authentication for your Azure Web Site, Part 1
For an Azure web application, Windows Live ID authentication is based on 3-way cooperation between your web site, Windows Live ID, and your Azure project settings.
User Experience and Page Flow
The first thing to understand is the intended user experience. Let's walk through it from the vantage point of a web visitor to your Azure-hosted web site.
1. On your site, not signed in
When a visitor first comes to your site, your site likely won't know who they are unless they've been there very recently. Your site will offer a Sign In link (click the image for a larger view).
2. Live ID sign in
When the user clicks on your Sign In link, their browser will take them to the Windows Live ID system, where the user can sign on with an existing Windows Live ID or create a new one on the spot. Don't worry, you haven't lost the user as you'll see in a moment.
3. Back to your site, authenticated
Upon successful sign in to Windows Live ID, transfer is passed right back to your site. This time, the site knows who you are and is able to read account-specific information from cloud storage. Instead of "Sign in please", the site now welcomes the user with a cheery "Welcome, [Name]
Pretty cool, eh? Now let's see just how this magic is made to happen.
Page Flow
Now that we know what the experience is like, let's study the page flow from behind the scenes. Although the user experience seems to involve 3 pages, there are in fact 4 page states to consider as shown in the figure below.
Here's a blow-by-blow account of what happens.
1. On your site, not signed in
When a visitor comes to your site, your site may or may not know who they are. This is determined by a cookie. You include the Live Services IDLoginStatus control on your page, which displays a Sign In link if your Live ID identity is unknown to the site. if it does know who you are, the control will instead display a Sign Out link. Let's assume for the moment we don't know who the user is and the cookie is not found.
In the screen capture below, my site recognizes it does not know who the user is and alters the page display accordingly. This is evidenced by the "Please sign in with Live ID" message (set by code in my Page_Load method) and the Sign In link (provided by the IDLoginStatus control). Note you can control the appearance of the control to match your site's look.
2. Live ID sign in
When the user clicks the Sign In link, the IDLoginStatus control redirects the browser to the Windows Live ID system, where the user can sign on with an existing Windows Live ID or create a new one on the spot. Note the Windows Live ID infrastructure is only willing to participate if your site has been previously registered with it.
3. Authentication Handling
This next step is not apparent to the user but is an integral part of the process. Upon successful sign in to Windows Live ID, transfer is passed back to your site--but not to the originating page. Instead, a web authentication handler page is invoked. How does Live ID know where to direct control? You set up a "return URL" when you register your site with Live ID. Your web authentication handler page is given a unique ID (GUID) for the user and a cookie is created. This GUID is the key you use to provision account-specific data for the user.
4. On your site, signed in
The handler then redirects to the desired page. In this example, we go right back to the page we started on, Default.aspx. This time, the cookie exists and the site is able to read account-specific information from cloud storage keyed on the unique ID of the user we received in Step 3. Instead of "Sign in please", the site now welcomes the user with a cheery "Welcome, [Name]
Wednesday, December 10, 2008
Azure Cloud Computing User Group
The community site is http://www.CloudComputingUserGroup.com.
Initial locations where we have secured willing hosts and a place to meet are Seattle, Los Angeles, Orange County, San Diego, Phoenix, Denver, Salt Lake City, Dallas, Chicago, Boston, New York, and Philadelphia. Manyof these areas are having their first meeting this month, all should be meeting by January.
The December meetings are introducing the platform, after that each meeting will drill into a specific area. The meeting format is pizza and introductions, a short presentation, one or more code demos, and lots of discussion.
Here's the December meeting schedule:
Region | Date |
Philadelphia | 12/01 |
Chicago | 12/09 |
Denver | 12/09 |
Phoenix | 12/11 |
San Diego | 12/11 |
New York | 12/15 |
Orange County | 12/18 |
I'm the national coordinator for the user group, so if you have any questions just send mail to me either via this blog or the community site. We hope you'll join us as we explore this exciting new area together.
Thursday, December 4, 2008
Azure Step-by-Step: Hello, Cloud
Azure Step by Step: Hello, Cloud
http://www.savefile.com/files/1915293
Here's an excerpt:
...
Tuesday, December 2, 2008
So Cal Code Camp - Azure Sessions
- Azure Cloud App Demo: Social Networking Web Site
Forget "Hello, Cloud", it's time to see something real and substantial. See a social networking site and the code behind it that runs in the cloud, uses cloud storage, and authenticates using Windows Live ID. It's Azure cloud computing in the real world. - Azure Cloud Application Model
Microsoft's Azure cloud computing platform has a new role-based application model that can scale well at every tier. Learn about the model and see it in code. - Azure Cloud Security
The Azure cloud computing platform offers compelling security capabilities. Learn how to integrate Windows Live ID with your web site. Learn how to integrate and federate enterprise security with your cloud application. - Azure Cloud Storage
In this session we'll explore how cloud storage works on Microsoft's Azure cloud computing platform. This includes the ability to store and recall BLOBs, queues, and tables.
Hope to see you there!
Saturday, November 29, 2008
Why I'm Shopping Online This Year
Worker Trampled to Death in Wal-Mart Sales Stampede
Two armed men shoot and kill each other at a Toys-R-Us
Wednesday, November 26, 2008
Channel 9 video - Impact of Cloud Computing
ARCast.TV - Mickey Williams and David Pallmann of Neudesic on the Impact of Cloud Computing
Friday, November 21, 2008
Xbox Live Avatars
The Sin of Verbosity and the Art of Brevity
One of the greatest gifts you can give yourself is self-improvement. Our shortcomings may be obvious to all around us but we can be blind to them. If you can recognize your shortcomings you can do something about them, and if you really work at it you can make some amazing and lasting changes in yourself.
One of my shortcomings is the sin of verbosity: taking too many words to say something. That is, using a much larger number of words to express something that really could be said in a much shorter and clearer way. Coupled with this is repetition, needlessly repeating what has already been said which is unnecessary because it has already been said. Do you see what I mean?
What's so bad about being verbose? It's just a few extra words after all. In fact, the driving force behind verbosity (at least in my case) is the desire to be precisely understood. To me it's always seemed downright dangerous to just say a few words: they might be understood incorrectly or incompletely. I now know that notion is completely backwards. Verbosity does not aid clarity, it impairs it.
Some people just downright hate verbosity. When my book Programming Indigo came out, one of the first reviews rather unnecessarily went to great lengths to trash the book. While I think the attack was way overblown (many have told me they appreciated this book), it was clear the reviewer was mostly offended by verbosity and repetition. And to that I plead guilty.
When I worked at Microsoft, my superiors had little tolerance for verbosity, or for me. :) While there I learned a great deal about how to take raw information and distill it into its essence and communicate it in a concise way with clarity. This takes work. Whoever said "if I had more time, I would have written a shorter letter" knew what they were talking about: brevity with clarity requires effort and refinement. It may come naturally to a precious few, but the rest of us have to work at it. Especially the great unwashed, verbozos like me. Brevity of course is right in line with the larger concept of Less is More.
Am I over my verbosity? No way, I'll need to consciously work at it for the rest of my life. But as an ongoing student of brevity, I'm getting better at it. I sometimes take 30 minutes to compose an email, not to make it long but to make it short--and clear. And I was able to reduce this blog posting from its original 1000 words down to 460. That says a lot.
Wednesday, November 19, 2008
Debugging Azure Cloud Applications
Local Debugging. First off, the general hope is that you'll catch and fix problems on your local box long before you place anything into the cloud. Locally you can use familiar tools such as the Visual Studio debugger and event logs and other tools to get to the root of problems.
Application Logs. However, it's possible to have an app that works locally that doesn't work when deployed to the cloud. What do you do then? You look at the logs for your application, that's what you do. Unfortunately this is something of an involved process today:
- You have to first find the Copy Logs button, which is lurking under your Configure button on the Azure portal. This hasn't been obvious to everybody.
- Clicking Copy Logs will copy your logs to your storage account.
- Lastly you need to run a program to read your logs out of cloud storage so you can view them. There is a sample in the Azure SDK called CloudDrive that does this. It is an exension to PowerShell. There is some work involved to configure, build it, and get it going the first time around.
No doubt this will become more streamlined over time, but it's what we have to work with today. Benjamin Day has written an excellent post that gives a blow-by-blow account of exactly what you need to do, including screen captures. You can also instrument your application to write to those logs using the RoleManager.WriteToLog method.
MSDN Forums. MSDN has a very good set of forums set up with several Azure categories. I've mostly been interacting with the Windows Azure forum, and I've found it to be a great place to go to get answers or help others. Moreover, Microsoft personnel have been fantastically responsive and helpful. So if the above methods don't help, post your problem to the appropriate forum. Between Microsoft and the community you'll likely get some help.Tuesday, November 18, 2008
Is Cloud Computing Just Hosting?
Is cloud computing just hosting, re-branded? The answer is no. And yes. Really, it's hosting++. Let's dig in and see how cloud computing is like and unlike hosting.
- Automatic Provisioning and Deployment. Like standard hosting, cloud computing gives you a place to run your applications and store your data in a managed data center. Unlike standard hosting, you aren't required to remotely connect to a specific set of machines and configure them yourself. Instead, you provide the data center with your code and metadata about what its needs are. The data center takes care of virtualization, provisioning, deployment, and load balancing for you--completely automatically. You never get involved in installing software or configuring servers. In Windows Azure, this is all controlled through a well-designed portal at Azure.com.
- On-Demand Scaling. Like standard hosting, your cloud computing code and data is maintained on servers and storage devices. Unlike standard hosting, the scale-out of your code and data happens automatically, on-demand. If traffic levels increase, so does the instancing. If traffic levels drop, the number of active instances goes down. You can grow anytime, without having to requisition new hardware. Azure never wastes your money or the data center's hardware.
- No Long Term Commitments. Like standard hosting, cloud computing costs something. In the case of Azure at least, you aren't required to make a long term commitment or sign a contract for a specified period of time such as one or more years. You pay for what you use, and you can stop anytime without penalty. It's computing done right.
- Pay as You Go. Standard hosting often charges you for keeping machines and storage available regardless of the extent to which they are actually used. In Windows Azure cloud computing, you only pay for what you use. If you use more, you pay more. If you use less, you pay less. Just like how your electric or water bill works.
- Additional Services. Standard hosting doesn't generally provide any new software capabilities, it's just an alternative place to run code and store data. Windows Azure does provide new software capabilities, and they are both numerous and compelling. Live Services allows you to tap into the Windows Live identity and contacts services. Geneva technology allows you to support enterprise customers and let them use their native security system; and you can even federate a mix of enterprises and security mechanisms simultaneously. SQL Services provides database services with new scalability options not available in the enterprise. .NET Services gives you a service bus, which allows for business-to-business publish/subscribe communication that is firewall friendly. .NET Services also lets you run workflow in the cloud. Windows Azure really is an operating system for the cloud, and Azure Services really provide applications with a fresh set of capabilities that are also easy to get at and combine.
- Available, Scalable, Reliable. In the enterprise, some of the hardest things to do well are high availability, dynamic scalability, and high reliability. These things come "for free" with the cloud any time you use it.
Hosting is to cloud computing like radio is to color TV. There's nothing wrong with hosting, but the next generation is upon us.
Saturday, November 15, 2008
Overcoming Fear of Cloud Storage
Concern about storing data in the cloud is one of the first objections to cloud computing that is raised by some who work in the enterprise. Usually the expression of concern is followed by a gentle but firm explanation of how vital, proprietary, and utterly irreplaceable this information is. The message is clear: the data is critical to the operation of the business; the data must be protected; and maintaining its integrity and availability is paramount. The enterprise goes to great lengths to ensure this.
The first thing I will say about this is, you may be right in some cases. Some data does belong in the enterprise, depending on the nature of the data and the organization and the regulations it is subject to. But that's a far cry from saying no enterprise data should ever go into the cloud. That's why I think Microsoft's vision, called Software + Services, makes a great deal of sense for the enterprise. S + S is all about recognizing that some software and data is best kept local, while other software and data is best placed in the cloud. Rather than dictating what the split should be, S + S says you are in the best spot to make that determination. Dr. McCloud likes to call this writing your own prescription.
We can use the existence of the hosting industry to demonstrate the idea of putting your data "out there" can work for businesses. The idea is neither new or unproven and is used successfully today by businesses of all sizes. For sure, you need to have a strong comfort level about the vendor, the storage practices, the fail-safes, the data protection policies, the service level commitment, the security arrangements, and the degree of control you have. Dr. McCloud prefers sound methods of treatment and so do his patients.
Learning more about how the cloud infrastructure handles storage should also encourage you. Let's look at Windows Azure specifically. When you store something in the cloud, it gets simultaneously written to several different places, each in a different fault domain. SQL Services and cloud blob/queue/table storage are designed to scale supremely and automatically. Many things that are commonly needed in the enterprise are also very difficult, expensive, and time-consuming to get right, such as high availability, sufficient scalability, disaster recovery, and dynamic adjustments to changes in traffic levels. These things come "for free" with the cloud platform every time you use it.
One last point, putting data in the cloud does not necessarily mean it vanishes from the enterprise. We'll likely be seeing some interesting patterns develop for synchronizing and safeguarding data that lives in more than one place.
Cloud storage is a good thing, and you don't have to feel like you're taking some tremendous risk to try it out as long as you exercise a little common sense. Dr. McCloud thinks this makes for an excellent prognosis.
Azure Tip: How to Get Cloud Storage Working Locally if You're Not Running SQL Server Express
If you're not running SQL Server Express, you'll need to change two values in the DevelopmentStorage.exe.config file which resides in C:\Program Files\Windows Azure SDK\v1.0\bin to have the correct SQL Server instance name (shown in red below).
- The first is the DevelopmentStorageDbConnectionString value in the connectionStrings section.
- The second is the dbServer value in the developmentStorageConfig section's third Service entry (the one named Table).
<connectionStrings>
<add name="DevelopmentStorageDbConnectionString" connectionString="Data Source=.\SQLEXPRESS;Initial Catalog=DevelopmentStorageDb;Integrated Security=True" providerName="System.Data.SqlClient" />
</connectionStrings>
<appSettings>
<add key="ClientSettingsProvider.ServiceUri" value="" />
</appSettings>
<services>
<service name="Blob" url="http://127.0.0.1:10000/"/>
<service name="Queue" url="http://127.0.0.1:10001/"/>
<service name="Table" url="http://127.0.0.1:10002/" dbServer="localhost\SQLExpress"/>
</services>
Note that the first entry uses "." to indicate local machine while the second uses "localhost."
Fear of the Cloud
"Fear of clouds" existed before cloud computing ever came on the scene, and is known as nephophobia. Interestingly, there are quite a few parallels between this real-world phobia, the fear of clouds, and its newer cousin, the fear of cloud computing:
- In nephophobia, the patient can experience breathlessness, excessive sweating, nausea, dry mouth, feeling sick, shaking, heart palpitations, the inability to speak or think clearly, a fear of dying or losing control, a sensation of detachment from reality or a full blown anxiety attack. A select few seem to exhibit many of the same symptoms when confronted with cloud computing.
- In nephophobia, the patient has to come to grips that they are fearful of something that poses no actual danger. The same is true of cloud computing: whatever area you're concerned about (data, security, reliability, management) is potentially done better in the cloud computing environment, and with less personal headache to you and your organization. Granted, some of this is true today and some of it will come as cloud computing platforms mature.
- Treatment for nephophobia centers around "reality therapy", finding false constructs in the patient's mind and dealing with them, in effect reprogramming the subconscious. Likewise, a reality adjustment is a good treatment for fear of cloud computing: the more you understand about what it really is and how it works, the higher your comfort level is likely to be.
Fear of the cloud can take many forms, including fear of cloud storage, fear of cloud security, and fear of cloud reliability. In future posts we'll look at these aspects individually.
Dr. McCloud is here to put you at ease. Now sit back and relax so I can examine you with my nephoscope... aha, there's your problem!
Friday, November 14, 2008
What's Holding Back Cloud Computing
- Service Management - technologies immature
- Scalability - parallel processing, no problem; sequential processing, different story
- Costs - economies of scale only go so far, unless customer is willing to trade data or advertising views for services
- Culture - trust, chargeback, sharing
- Connection - only as good as the Internet, unless you pay to harden your connection
- High Availability - for workloads that are stateless, no problem; for stateful workloads, same issue as enterprises
- Customization - difficult - at least with monolithic applications
Gartner is of course talking about the state of cloud computing generally as they see it. I thought it would be interesting to analyze whether these points ring true or not--and how deeply--with Windows Azure specifically in mind. Here's my take on it:
- Service Management - technologies immature. It's true many of the technologies are immature, this is just the start of a big wave with many implications. A good example is SQL Services compared to SQL Server in the enterprise, the enterprise version is far more capable today. However, in the case of Windows Azure not everything is immature. Microsoft has been doing online for some time now, growing in the scale and variety and reliability of what they offer--and some of these properties have been using the data center infrastructure. In other words, the cloud platform Microsoft is offering is also used by Microsoft itself.
- Scalability - strong parallel processing story, poor sequential processing story. This may be true of cloud computing offerings in general but here I think Azure has a very good story. One of the .NET Services in the platform is the Workflow Service. That would seem to address any kind of processing you have in mind, whether sequential, parallel, or a mix.
- Costs - economies of scale go only so far. I'm not sure what they're getting at here, they might mean that there's only so much cost savings to be realized. Well, so what? It's still a refreshing set of new choices, and no one's taking the traditional choices away. Cloud computing--at least in the Microsoft vision of Software + Services, is not about abandoning the enterprise and traditional ways of doing things. The whole idea is have some software local and some software in the cloud. The beauty of the S+S approach is that each organization is free to make their own determination about what makes sense local and what makes sense in the cloud. Obviously, cloud computing going to have a stronger appeal for some more than others.
- Culture - trust, chargeback, sharing. I do hear from some folks that they think the whole idea of putting software or data in the cloud is unrealistic, at least for their organizations. I guess my answer to that is threefold: 1. You may well be right, in your individual case. Some things just belong in the enterprise. 2. Secondly, the existence of a hosting industry testifies that some organizations are perfectly willing to put software and data "out there" as long as they can be satisfied about the security arrangements. 3. You might well change your mind down the road. Similar to web services, there are going to be the pioneers and the settlers in this new space. Not everyone's gong to be a pioneer, but the wave will likely hit everyone eventually one way or another.
- Connection - only as good as the Internet. True enough. But in case no one's noticed, we're all becoming very dependent on the Internet. That includes how customers interact with your business.
- High Availability - applications must be stateless. Well, that's true. The load balanced, virtualized, automatically provisioned nature of the platform needs stateless software to do well. But stateless has been a recognized best practice for some time now, especially in SOA, so this doesn't seem like a terrible restriction to me. And there are ways to pass state around even in nominally stateless applications.
- Customization - difficult - at least with monolithic applications. Once again I'm a little unclear as to what's being said here. In the case of Azure, I can't think of any customization restrictions the platform forces on you as compared to using .NET on premise. There are, in fact, some very nice customization capabilities in the platform including the ability to simultaneous support different security systems through federated security.
Putting it all together, I think Azure stacks up quite well against where the rest of the industry is in cloud computing. No one's pretending platform maturity, but what does exist is already compelling and competitive.
Azure Assimilation Complete
Monday, November 10, 2008
The Less is More Revolution
By David Pallmann, Director, Custom Application Development, Neudesic
I'm making it official and declaring that we are now in the midst of a major revolution in computing, perhaps with overtones that extend beyond technology. I'm calling it The "Less is More" Revolution. It amounts to a major refactoring of how we do things, ...of how we do everything.
When I say "Less is More", you probably think instantly of Apple, one of the great success stories in applying less is more as a design principle to hardware and software. If you're not a proponent of less is more, spending 10 minutes with an iPhone or an iPod will likely make a believer out of you.
But "Less is More" didn't start with Apple, nor does it end there. The phrase has actually been around since the 19th century. One of the founders of modern architecture who used the phrase often and believed deeply in simplicity of style was Mies Van Der Rohe, who dabbled in both architecture and furniture design. So less is more isn't new, but it is coming into full bloom.
"Less is More" certainly makes sense as a UI approach. The 80/20 rule frequently applies: you may find you can provide the important 80% of possible functionality with a mere 20% of the UI that you would need to cover everything. Not that this comes easily or automatically. It's not hard to make a simple interface that does simple things, nor is it particularly hard to make a detailed interface that does many things--but who wants to use either? What takes work and validation and refinement is finding the sweet spot where a simple and pleasing UI yields the most power for the user. That outcome is worth the extra effort it takes to get there.
Social networking web sites such as Facebook also demonstrate less is more. I and just about everyone else I know are on Facebook or similar sites constantly, and the primary activity is to update our "what are you doing right now?" status and view the status of others. From a computer science perspective, this is not exactly rocket science. From a social perspective, it's huge: I actually feel closer to friends and family today, many of whom are thousands of miles away, than ever. I feel more a part of their lives. It's a little thing with big implications. It's less is more.
The Agile Manifesto and accompanying interpretations are a good example of less is more in software development methodology. By focusing on what's important and reducing emphasis on the less important, you measurably accomplish more by doing less. In other words, less is more can be applied to process. This has great implications for improving business process itself as well as the technologies that support business process such as workflow engines.
"Less is More" has been popping up as a principle in web technologies as well. The influence of REST, an approach to simplifying the way data and resources are exposed on the web, is phenomenal. When I worked at Microsoft during the time when WCF was being developed, I don't think I heard the term "REST" once. Today, not only can WCF do REST, support for REST seems to permeate just about everything Microsoft is doing. Don't believe me? Search MSDN for "REST" and you'll get close to 500,000 hits.
"Less is More" and REST are both utterly pervasive in Windows Azure, Microsoft's cloud computing platform. Just about anything you could want to do with the cloud computing platform can be invoked or accessed as an HTTP REST URL. That includes database storage and queries with SQL Services. At the recent PDC convention in LA, Don Box and Chris Anderson showed the attendees just how much they could accomplish using just REST and simple web HTTP requests. You can watch the video here.
In the cloud computing case, the "Less is More" effect is quite pronounced. As Microsoft extends its enterprise platform into the cloud, with new capabilities and new business models, you might well expect increased complexity in designing, implementing, and deploying software. Instead, there's less work involved. Things are just a lot simpler to get at and work with and combine and deploy, thanks to some great design decisions. I do have to admit "less" also rings true in another sense: there is less functionality available to you. Because the platform is so young, there are lots of things you give up. The cloud offerings aren't anywhere close to what the enterprise technologies give you, today, but they do give you the most important things. I'll readily admit SQL Services in the cloud appears to give me only a fraction of the functionality of SQL Server in the Enterprise in its present form. Of course that will change over time. The interesting point is, it doesn't matter. I'm going to happily use it anyway, because the "more" the platform gives me more than makes up for the "less": the way the platform is put together is so radically empowering that it's worth it to put up with functional omissions.
I'm thinking less is more is now a firmly entrenched and warmly embraced concept in the minds and hearts of consumers, meaning there's going to be more and more demand for it in everything from web applications to kitchen appliances. A growing portion of the public knows the difference between overengineering and elegant design now from firsthand experience, and everything I'm observing indicates people will flock to refreshing alternatives in droves at every opportunity--even when there's some additional cost involved.
"Less is more" is sometimes defined as "minimalism", but I'm not sure I like that word as it suggests "doing without" or some sort of monastic asceticism. When less is more is done well, you don't feel like you've given up anything. Rather, you feel highly empowered and effective. When you encounter less is more engineering in your daily life on a regular basis, the sun shines a little bit brighter, the sky is bluer, and the birds are singing more loudly and cheerfully than ever. It's a good thing, and when you enter that zone you don't ever want to leave it.
Is less is more a discipline for designers, or is it a something to be mastered by every developer? I say it needs to be both. We clearly won't get less is more pervasively unless designers lead the way with this as a foremost principle, but less is more extends far beyond design, as we've already illustrated. Developers need to practice less is more every time they create a class, implement a function, or design an interface. Remember, less does not automatically lead to more: that result is never an accident. Rather, it's a by-product of conscious intent. For this reason, all developers need a firm understanding of the principle. Fortunately, excellent groundwork has been laid by Martin Fowler and others in advocating refactoring. Less is more fits in with refactoring quite nicely.
What makes me think I'm right about this? These influences have been going on for some time, but my recent foray into Cloud Computing with Microsoft's Windows Azure platform is what brought it all into sharp focus. Exposure to elegance is contagious and addictive. Try it, you'll like it.
"I have made fire"
In the film Castaway, there is a moment when Tom Hanks finally is able to get a fire built. Beating his chest, he proclaims to the world, "I HAVE MADE FIRE!" That's exactly how you will feel when you get your first cloud app running and deployed, no matter how simple your first effort is.
Last week, I made fire. Who knows what this week will bring!
Saturday, November 8, 2008
My First App in the Cloud: "Whatsup"
"Whatsup" is a simple version of the "what are you doing right now" functionality you find on Facebook and other sites. Whatsup lets you post your name and status and view the statuses of others. Here's what it looks like.
When you access the page, you see the recent status of others. If you enter your name and status and click Post, the page updates to show your status top most.
Obviously this isn't a terribly sophisticated program, but it does make a nice transition from "Hello, Cloud" to something more substantail. You can actually build this app from scratch in front of an audience and deploy to the cloud in 30-45 minutes which makes this great for user groups and training sessions.
Thursday, November 6, 2008
How to Deploy an App to the Azure Cloud, Step by Step
1. In Solution Explorer, right-click the cloud project and select Publish.
2. The publish folder for your application will open in Windows Explorer, showing a package file and a config file. You'll need those in a moment.
3. The azure.com cloud portal will open up in your web browser (you have signed up and received your cloud account, right? If not, go to http://www.azure.com right now and take care of it).
4. Either create a new project on the portal or select an existing one. You'll then be at the page shown below, which I'll refer to as the Environment Page. On the left is a Production environment, and on the right is a Staging environment.
5. If you have a Deploy button under the Staging environment, proceed to Step 6. Otherwise, click Delete to delete the previous deployment. After that a Deploy button should be visible.
6. Click the Deploy button under Staging and you'll get this Staging Deployment page.
7. Now click the first Browse button and select the .cspkg ("cloud service package") file from the Publish folder that opened up in Step 2. Then click the second Browse button and select the .cscfg ("cloud service config") file. Lastly, enter a label for the deployment, such as a version number.
8. Click Deploy and the process will begin. It may take a little while.
9. Once deployment is complete, you'll be back at the Environment Page and will have new buttons under Staging. Click Run to start your app running in the staging environment.
10. To access your app, click on the Website URL link (in red, contains a GUID). Your app will open in a browser window. Try it out and make sure it's working as you expect. You can repeat this entire process as many times as necessary if you need to make changes to your project.
11. Once you're happy with your app in the Staging environment, you can switch it over to Production. Just click the Promote button (blue circle with white arrows).
12. After a brief wait, your app has been moved to Production. It can now be accessed at its intended URL. You're done!
Windows Azure group on Facebook
Sunday, November 2, 2008
How to See and Say "Azure"
Azure, most people know, means blue. But which blue? Wikipedia somewhat unhelpfully first tells us the precise hue that azure is, then does an about face and admits it can be a synonym for blue in general, often sky blue or United Nations Blue.
"Azure is a blue color on the HSV color wheel at 210 degrees. Azure is the hue that is halfway between blue and cyan. Its complementary color is orange.
Azure is a near synonym for the color blue. Commonly it refers to a bright blue, resembling the sky on a bright, clear day.
...
In some color systems, azure is defined more specifically. In the X11 color system which became a standard for early Web colors, azure is a pale blue color. "United Nations blue", as it's called by the United Nations, is the light blue color of the Flag of the United Nations and of the helmets worn by the United Nations peacekeeping forces.
And then there's the matter of how to pronounce Azure. Is it "az'URE" (rhymes with "bonJOUR"), or "AZ'ure" (rhymes with... nothing). I fully expected when I checked dictionary.com to find both pronunciations listed, but it turns out only the latter pronunciation (emphasis on first syllable) is correct. So it's AZ'ure (āzh'ər). It may well have a different pronunciation in some other languages.
Hue and pronunciation aside, Windows Azure is an exciting cloud computing platform. At least, that's how I see it. And say it.
Friday, October 31, 2008
First Time in the Cloud with SQL Data Services
While the SDS Explorer is rather simple, simple is all you need to use SDS. HTTP GETs and POSTs are what you use to retrieve, query, or store data using REST. There are other ways to access SDS, such as using C# or Ruby, but using REST from the SDS Explorer seemed appropriate for first-time experimentation.
This is definitely not your father's SQL Server:
- There's a learning curve. There's a new authority-container-entity hierarchy you need to understand. Authorties hold containers. Containers hold entities. Entities are like tables, but records are really just ids and data. An entity can be homogenous where all data is similarly structured, or jagged. Fortunately the documentation explains this nicely.
- Access using REST is simple. It's way different from what you're used to in the enterprise (not necessarily in a bad way), but I found myself comfortable using GETs and POSTs to store and retrieve data in no time.
- It's fun. Once I finally stored some records and was abel to retrieve them, I felt a real sense of accomplishment. And it was fun. Granted these are baby steps, but you've got to walk before you can run. Performance was excellent.
I have to admit, this experience is warming me to REST. Those restafarians might be on to something after all.
Wednesday, October 29, 2008
Cloud Computing User Group
The user group will also have local chapters. These can be in any location where someone is willing to host the meeting each month and find a place to meet. Microsoft consulting partner Neudesic has offered to provide meeting space in its locations. It looks like the first meetings, which could be within the month, will take place in Seattle, L.A., Orange County (CA), San Diego, Phoenix, Denver, Dallas, and Philadelphia. Thank you Neudesic!
Cloud Computing is a big thing, and it's going to take a community to pioneer it.
How Cloud Computing Will Affect Every Developer
Today at the PDC, Mickey Williams and I gave this talk in the form of a conversation using this presentation for Microsoft's Channel 9 (Internet video). It should be showing up on the Channel 9 site (channel9.msdn.com) soon, I'll include a link once it appears.
A PDF of the presentation itself is available here: http://www.savefile.com/files/1866092.
Here's an outline of the deck:
- Level Set - Clearing up Cloud Terminology
- Cloud Computing in a Nutshell
- Microsoft's Cloud Computing Platform
- Impact all Developers will Feel
- Impact on Enterprise Developers
- New Patterns for Business Apps
- Cloud Service Application Model
- EAI Developers
- SOA Developers
- SQL Server Developers
- Web .com Developers
- Computer Science / Grid Computing Developers
- Consultants
- Product Developers
- Start-ups
- Leveling the Playing Field
- One Last Category... "I Don't Have a Use for Cloud Computing"
- Summary
PDC2008 Report, Day 2 (Tuesday)
Windows 7 highlights (Steve Sinofsky):
- Addresses lessons learned from Windows Vista and Windows Server 2008. It has had important work in the areas of ecosystem readiness, standards (CSS in IE), compatibility (UAC "went too far"), and better support for certain scenarios.
- Remote desktop can support multiple monitors.
- Task bar - small icon support, customizable shut down button
- Action Center - you can change (or hide) all messages for all Windows subsystems
- UAC slider (you decide how much you want)
- Developers get ribbon user interface, jump lists, libraries, multi-touch support, Ink/speech support, DirectX improvements
- Fundamentals: work to decrease memory,m disk I/O and power; and increase speed, responsiveness, and scale.
- Memory sticks can be encrypted, so if you lose one no one else can do anything with your files.
- VHDs can now be created from hard drive images easily. You can also boot natively from a Win7 VHD.
- Better DPI controls and multiple monitor controls.
- Improved magnifier. Win+, Win- to zoom.
- Amazing project set up via Win+P keystroke.
Building Great Apps - Scott Guthrie ("ScottGu"):
- Win7 apps - win32/c++: New Win7 APIs. MFC for Win7 - ribbon UI and multi-touch support.
- VS2010 - IDE support for very large code bases. Multi-core app dev.
- Windows apps with .NET - .NET 3.5 SP1 improvements: streamlined setup, start-up performance improvements, graphics improvement, WPF DirectX interop, more controls.
- New WPF toolkit (for all versions off Windows). New data grid, data picker, calendar, ribbon controls.
- Windows apps with .NET 4.0 - WPF improvements (multi-touch, deep zone, visual state manager). Fundamentatls and interop (in-process side-by-side support for multiple CLRs, managed/native code interop, dynamic language support, extensible component model). Improved tooling in VS2010.
- VS2010 - changing over to be WPF based. Very extensible. Multi-monitor support. Refactoring support. Better test/developer workflow.
- IE8 - improved standards support, web slices, visual search, accerlators, built-in tools for Javascript debugging.
- ASP.NET in 2008 - dynamic data, REST, MVC support, Ajax/JQuery. Intellisense + JQuery downloadable now at jquery.com.
- ASP.NET 4 - web forms, MVC, Ajax, distributed caching ("Velocity") in CTP stage now.
- VS22010 for web development - code focused improvements / editor improvements, JS/Ajax tooling, design view, SS2 support, publishing and deployment, possible to maintain a separate config file for each environment.
- Sliverlight 2 - Netflix Instant Watch is live now using Silverlight. Silverlight toolkit (charting, tree view, dock panelo, wrap panel, view box, expander, ....). Silverlight designer in VS2010. Working on Silver in or outside the browser.
In the technical sessions, I concentrated today on Oslo, whicih is about modeling. I'm going to post on that separately.
Monday, October 27, 2008
PDC2008 Report, Day 1 (Monday)
As expected, the cloud computing platform has been officially announced and is the star of the PDC. The platform is being called Windows Azure and sports a light blue Windows logo.
Here's the architecture:
- Windows Azure is the cloud operating system This includes a utility computing infrastructure, a basic API for things like storage, a new app model, and a powerful portal for uploading and managing cloud services.
- Azure Services are building block services for applications. This includes Live Services, .NET Services, SQL Services, SharePoint Services, and CRM Services.
- Above that are Software as a Service (SAAS) applications from Microsoft. The consumer ones are branded with Live and the business ones are branded with Online.
There is a web site for Azure, azure.com.
After the keynote, the sessions kicked off many of which explore the cloud computing platform in more detail. But that's not the only thing at the PDC. There's also Oslo (about modeling applications), Dublin (making Windows Server into a superior app server), Surface (awesome table-top interactive graphical surface), .NET 4.0, and more.I've known about the cloud computing platform details for about 6 weeks but was under non-disclosure. Now that the platform is public I can discuss it openly.
A national cloud computing user group community has been started at http://www.CloudComputingUserGroup.com (not a Microsoft web site).