Script Error, Not SQL Server, Caused Hotmail Outage

Last week the Data Driver wondered if SQL Server was behind the recent Hotmail outage.

The answer is: No.

It was a script error, according to a Windows Blog post by Mike Schackwitz, pointed out to me by a helpful member of Microsoft's PR firm.

To sum up, a script meant to delete temporary accounts used for automated testing accidentally deleted some real users' directory records. This supposedly didn't delete any actual data, but a lot of users responded to the post and disputed that, with many saying they lost years' worth of messages and that some accounts were still unavailable. The complaints were still rolling in as of today.

Microsoft representatives were helping some of those users, but there were many comments along the lines of "Disgusted!!!!" and "Shameful!!" and "IT IS CERTAINLY NOT FIXED."

If you're still missing data, the blog lists several links that might be able to help you recover it.

Are you still having Hotmail data issues? Comment here or drop me a line.

Posted by David Ramel on 01/12/20117 comments


Was SQL Server Behind Hotmail Outage?

Microsoft is providing scant details about last weekend's Windows Live Hotmail outage, but the Data Driver blog's interest was piqued by a Microsoft announcement in a blog post that customers "temporarily lost the contents of their mailbox through the course of mailbox load balancing between servers."

And, as has been reported many times, Hotmail runs on SQL Server. A December 2009 blog posting that offered "A peek behind the scenes at Hotmail" indicated the service is "the largest SQL Server 2008 deployment in the world (we monitor and manage many thousands of SQL servers)." (Coincidentally, both aforementioned posts were in the Windows Team Blog.)

Of course, after the outage was fixed, the anti-Microsoft camp soon weighed in with some pointed digs, such as these two found in comments on a Yahoo News article:

  • "Wow! Microsoft is blaming their service failure on a Microsoft server. Wow!"
  • "Maybe someone should tell them about Linux?"

But interestingly, according to Yahoo Answers, "Before Microsoft bought out Hotmail, their servers were all Linux based, and Microsoft left them that way for many years until the bad publicity forced them to use their own operating systems."

Of course, all computer systems will suffer failures, and I think Microsoft is as serious about reliability and security as anyone. But coming close on the heels of the cloud-based Business Productivity Online Suite data breach, the Hotmail outage opens the company up to yet more criticism as it seeks to transition to "live" and cloud-based services. Ironically, that "peek behind the scenes at Hotmail" posting mentioned earlier included this information:

We make significant investments in engineering and infrastructure to help keep Hotmail up and running 24 hours a day, day in and day out, year after year. You will rarely hear about these efforts – you will only read about them on the rare occasion that something goes wrong and our service has run into an issue.

Too true.

Do you have any inside info on how Hotmail uses SQL Server or more details on the nature of the outage? Please comment here or drop me a line.

Posted by David Ramel on 01/05/20112 comments


PHP Meets SQL Server -- Converting MySQL Queries

As an addendum to last week's post about a recent SQL Server camp held for PHP developers, Microsoft's Brian Swan has published some new nuts-and-bolts details for converting MySQL queries.

Swan, who blogs on the "At the Intersection of PHP and Microsoft" page, said he learned the technique at the JumpIn! camp, where Microsoft hosted some 17 prominent PHP developers in order to share ideas and educate them about the process of supporting SQL Server and SQL Azure in their PHP applications.

He said it was "an excellent two-way learning experience" and one of the things he learned was that the SQL Server Migration Assistant for MySQL 1.0 (SSMA) can convert specific database queries in addition to its main job of converting databases.

Swan explains the relatively straightforward process by using SSMA to convert the MySQL query:

SELECT post_title, post_date FROM wp_posts ORDER BY post_date LIMIT 5 OFFSET 5;

to the SQL Server query:

SELECT TOP (5) ssma$sub1.post_title, ssma$sub1.post_date
FROM
  (
    SELECT wp_posts.post_title, wp_posts.post_date, ROW_NUMBER() OVER (
      ORDER BY wp_posts.post_date) AS ssma$rownum
    FROM dbo.wp_posts
   ) AS ssma$sub1
WHERE ssma$sub1.[ssma$rownum] > 5
ORDER BY ssma$sub1.[ssma$rownum]
GO

(Whew! If I'm a noob evaluating the two on the basis of query simplicity, it's pretty clear which direction I'd lean.)

Swan noted that all queries won't translate successfully (if they contain functions specific to MySQL, for example), but even if it doesn't work, it can provide clues to help write the translated query yourself.

Do you have experience in supporting SQL Server in PHP apps? Is MySQL really that much simpler than SQL Server? Please share your thoughts here or drop me a line.

Posted by David Ramel on 12/08/20103 comments


PHP Developers Get SQL Server, SQL Azure Insights

Microsoft isn't letting up on its full-court press to woo PHP developers into the SQL Server world.

The company earlier this month hosted 17 PHP developers at a SQL Server JumpIn! Camp, where they learned how to incorporate SQL Server support into their apps with the help of Microsoft experts, according to a post yesterday in the Microsoft SQL Server Driver for PHP Team Blog.

Program manager Ashay Chaudhary reported that the 17 developers represented 10 PHP projects from several countries. They were treated to dinners, entertainment and more at the five-day camp, where the goal was to "listen to and learn from the PHP community and educate them about our technologies, SQL Server, SQL Azure, Windows Azure & IIS, and help them understand how they can leverage them best in the applications."

The 10 projects included content management systems, a profiling utility, an e-commerce solution, a Web application framework and more. Chaudhary said eight of the projects completed enough coding to demo their apps with SQL Server, while four actually managed to publish builds during the camp. Four projects reported improved their performance on IIS using the WinCache extension, four tested successfully on SQL Azure and three used the new PDO driver for SQL Server support.

"By adding support for SQL Server, these projects stand to gain from the broad customer base that already has SQL Server in their organizations," Chaudhary said.

"We now have a much clearer understanding about what we need to do to better support PHP applications on Windows/IIS/SQL Server and the Azure platform," he said. "The PHP participants now have a better understanding of how SQL Server works and how PHP applications can best utilize its capabilities, and understand how we are trying to add value to their applications."

Last April, Microsoft held a similar camp in Zurich, Switzerland. Chaudhary said he will write more about the November camp as he has time to reflect on the event, but he didn't indicate that any future camps were scheduled.

"For now," he said, "you can look forward to Windows, IIS, and SQL Server support in several great PHP applications with many more to come over the next few months."

One of those apps will be ImpressCMS, a content management system. Marc-Andre, CEO and founder of ImpressCMS, blogged that his goal at the camp was to "implement PDO and MSSQL support" into his product and reported it was a success. "We are still missing a few things in the installer to make our CMS install properly on MSSQL, but we will get there!" he said.

What do you think about Microsoft's overtures to the open source community? Comment here or drop me a line and share your thoughts.

Posted by David Ramel on 11/30/20101 comments


SQL Server Developers Get Taste of 'Juneau' Goodies

Here's good news if you're a database developer who doesn't like working with SQL Server Management Studio (SSMS): You may not have to use it too much longer.

At the recent PASS Summit, Microsoft showed a packed roomful of database developers how the next version of SQL Server--code-named "Denali"--will include a unified development environment based on Visual Studio.

Officially called SQL Server Developer Tools code-named "Juneau," the new bells and whistles were demonstrated by Microsoft's Don Box during a PASS keynote address by Quentin Clark.

"What we're trying to do with Juneau is really advance the state of the art of database development," Box said as he demonstrated the new functionality in a Visual Studio shell. "What we're doing is, we're looking at all the stuff we've done in the past, all the stuff that's been done in Visual Studio, around doing things like .NET, C++, C<--we're trying to bring that goodness to the database development world," Box said.

Working in the Visual Studio shell, Box said, lets developers "take advantage of the new shell, the new WPF-based text editor, new language services. All those accrue value to the SQL Server product. And this also accrues value to business intelligence, so the BIDS assets are going to be in the same shell as our relational database assets."

With a nod to those who happen to like SSMS, Box demonstrated the "connected experience that an SSMS user is going to be used to, inside of Juneau."

Box showed how Juneau lets developers use the Server Explorer to drill down into a database and get the same preview that SSMS provides. "I can say new query and I get the new text editor with new language services on top of T-SQL based on the database I'm deployed against," he said. He showed a simple Execute command and said, "I also can do execute with debugging, so basically anywhere I see SQL text in a text editor, I can select it and either execute it directly against the database, or I can execute under debugging and just start doing step into or step over, anyplace I see text."

A new table designer was also demoed that used the Visual Studio style panes of code, design or a split between the two. When changes were made to the design pane, they were immediately reflected in the text editor pane, and vice versa.

Also, Box noted that the table designer lets developers easily see subordinate objects such as check constraints, primary constraints and indices. As he clicked through these items, the relevant T-SQL code was brought up in the text editor, with the affected columns highlighted.

And in some ways, Juneau will surpass SSMS. When using a CREATE view, Box noted that it's not idempotent, so any changes made would normally involve transcribing them into ALTER commands. "One of the things that we do in the tool which is an advance of what I have in SSMS today, is I have the ability to take all these pending changes which I've been accruing and say 'figure out the ALTER script for me.' So if I say commit all to database, we actually do analysis of all the source text that you've now accrued vs. the actual catalog in the database and we figure out what needs to be done to make this so."

Plenty of other cool things were shown, also, including FileTable file storage, semantic searching and version-awareness and edition-awareness, which means Juneau enforces language constraints depending on your target, be it Denali, SQL Server 2008 or SQL Azure. And speaking of Azure and the cloud, while Box didn't address it directly, one of the aims of Juneau is to "is to make developing for SQL Azure and on-site SQL exactly the same," according to a recent interview with Clark by The Register.

You can register and see the Box demo yourself--along with other presentations--at the PASS Web site.

While the first Community Technology Preview (CTP) of Denali was released at the Summit, developers will have to wait a bit to get their hands on the Juneau technology--it's scheduled to be included in the next CTP, with no expected timeline provided.

Posted by David Ramel on 11/15/20101 comments


New SQL Server: Scanning 1 Trillion Rows Per Minute

There were plenty of "oohs" and "aahs" from the audience at the PASS Summit during Ted Kummert's keynote address Tuesday as he demonstrated new capabilities of the next version of SQL Server, called "Denali."

One notable demonstration was with Microsoft's Amir Netz, who ran a side-by-side comparison of a database query using some 2 billion records, with one side of the screen showing the query being run with regular technology and the other side showing the same query running many times faster with the VertiPaq technology borrowed from PowerPivot. Netz said the blinding speed of VertiPaq would equate to a theoretical processing rate of 1 trillion rows per minute.

The VertiPaq technology--using columnar storage as opposed to rows--is now available to parts of the new SQL Server, such as the new BI Development Studio running with Visual Studio 2010.

Netz also gathered applause by showing off "Crescent," the code name for "a new Web-based data visualization and reporting tool that extends PowerPivot," as described by Microsoft. Netz showed in a flashy demo how huge amounts of data can be manipulated to "tell a story" to others.

While the Community Technology Preview of Denali was released at PASS, Microsoft hasn't said when a final product is expected to ship.

Other enhancements introduced by Microsoft include:

  • A SQL Server 2008 R2 Parallel Data Warehouse appliance released with hardware partner HP (with other choices available in the future). "Through deep interoperability with the Microsoft Business Intelligence (BI) platform, customers can deliver managed self-service BI solutions to everyone in the organization," Microsoft said in a statement.
  • An updated Microsoft Certified Master (MCM) program for SQL Server that "allows SQL Server experts to achieve MCM certification with more flexibility and at a lower cost compared with the previous program."
  • Code-name "Atlanta," a configuration service hosted in the cloud that will "help IT proactively avoid configuration problems and rapidly resolve identified issues through step-by-step guidance."

The PASS Summit continues through Thursday.

Posted by David Ramel on 11/09/20101 comments


New DataMarket, Improved SQL Azure Services Announced

Microsoft last week announced that its portal to buy and sell data services has launched as DataMarket, part of the Windows Azure Marketplace.

Formerly called Project Codename "Dallas," the market serves as a repository "that makes it easy to discover, purchase and consume data through a variety of different sources, both public domain and commercial," said program manager Steve Yi in a PDC10 session.

DataMarket has a new Web site and new information sources available for subscription, with many more on the way. The site lists 13 data categories such as Financial, News, Statistics and Weather, along with 28 publishers and more than 70 individual data feeds.

The feeds are typically presented in the XML-based OData format and can be easily integrated into applications built with the .NET Framework, for example, or directly into PowerPivot and Tableau data visualization projects.

Microsoft is rolling out new paid services through Nov. 22, with a variety of pricing and consumption options. Users can also request early access to the paid subscriptions.

You can learn more about DataMarket here, and Microsoft has also put up several YouTube videos, dealing with topics such as discovering and subscribing to data and using DataMarket with PowerPivot.

In other data-centric news, the company announced several enhancements to the cloud-based SQL Azure, including a Community Technology Preview (CTP) of SQL Azure Reporting, bringing the same capabilities of SQL Server Reporting Services to the cloud.

A SQL Azure Data Sync CTP 2 was also announced, along with a lightweight, Silverlight-based database manager, formerly called "Project Codename Houston."

You can learn more by watching the following PDC10 video presentations:

Introduction to Windows Azure Marketplace DataMarket

What’s New in SQL Azure

Code First Development with Entity Framework

Building Engaging Apps with Windows Azure Marketplace DataMarket

Introduction to SQL Azure Data Sync

Introduction to SQL Azure Reporting

Introduction to Database Manager

What do you think about the new DataMarket and SQL Azure enhancements? Comment here or drop me a line.

Posted by David Ramel on 11/03/20100 comments


SQL Connectivity: Give Microsoft Your Two Cents' Worth

Even though SQL Server just underwent a major upgrade with 2008 R2, Microsoft is seeking customer input about new features you'd like to see added to the database technology.

The company this week posted the SQL Connectivity Customer Survey (Fall 2010), which will be up until Oct. 25.

The survey asks respondents to rate the importance of possible enhancements such as improved network performance (via tabular data stream compression), easier setup and configuration (through a richer GUI), "reducing the number of new connections that need to be opened" (through connection pooling improvements) and several others.

It was exactly one year ago that the SQL Connectivity team started "interacting on a regular basis with the developers and users in the form of surveys," said program manager Raghu Ram in the survey introduction.

"During the last 12 months, we completed surveys that focused on the broad SQL Connectivity components, including ODBC, ADO.NET, JDBC and PHP," Ram said. "These surveys provide us with an ability to validate some of the requests we have got from developers, users and partners." He said the roadmap for SQL Server has evolved based on this survey feedback.

Indeed, last summer saw the release of SQL Server Driver for PHP 2.0, which for the first time supports PHP Data Objects code.

So here's your chance to possibly influence the next upgrade. In addition to the possible enhancements listed above, the survey asks respondents to rate the importance of better support for multi-core CPUs and multiple network interface cards, better diagnostics and troubleshooting, transparent failover and new authentication types.

What's at the top of your list for SQL Server improvements? Comment here or drop me a line.

Posted by David Ramel on 10/20/20103 comments


Yup, No SQL Server CE in Windows Phone 7

Yesterday's Windows Phone 7 launch extravaganza renewed the months-long debate among developers about database options--specifically, whether the new mobile OS should come with persistent local storage such as built-in SQL Server Compact Edition.

Microsoft's answer, of course, is go to the cloud. And if you don't want to do that, you can opt for a local storage alternative such as XML files, isolated storage or third-party embedded solutions such as Perst.

Besides the "The cloud is the answer. What's the question?" mentality in Redmond, many (even Microsoft people) have pointed out that Win Phone 7 targets consumers more than enterprises, so there is less need of any SQL Server.

Still, considering all the integration with other Microsoft technologies such as Xbox, Office and so on, it seems strange there's no stated intention to provide SQL Server in the future, like they're doing with copy-and-paste functionality. Surely Microsoft isn't going to ignore the enterprise market, and developers in the enterprise market have clearly stated their preference. Check out these comments from the debate mentioned above on an MSDN forum:

  • No database in WM7 Phones? This is ridiculous! 
  • With this I may stick into iPhone development.
  • Without real database support, a phone is just a portal device.  It will have very little value in itself, and will be easily replaced with the next shiny new portal device with a flashy UI.
  • This is indeed a step backward from WM 6.5. Why not implement Sql CE Compact? You cannot write real business application without database support and cannot presume that we live in an always connected world. Developers need database support ... Are you really considering not to implement it?
  • This doesn't make any sense, surely it can't be a huge undertaking to incorporate SQL Server Compact with its managed wrapper into Windows Phone 7?
  • We just started our project (2 months ago) to move to WM ... THE one deciding factor was SqlCe ... with that gone we will definitely regroup and probably move to Droid or iPhone before we throw any more resources after WM with no stated intentions!
  • I concur with everyone else...developers NEED database support on Windows Phone 7!

It's pretty obvious what mobile developers want. Is Microsoft listening?

What do you think? We'd love to hear your arguments, pro and con. Has anybody seen definitive indications that SQL Server CE is coming to Windows Phone 7? Comment here or drop me a line.

Posted by David Ramel on 10/12/201027 comments


Using WebMatrix with PHP, OData, SQL Azure, Entity Framework and More

I've written before about Microsoft's overtures to the PHP community, with the August release of PHP Drivers for SQL Server being the latest step in an ongoing effort to provide interoperability between PHP and Microsoft technologies.

With a slew of other new products and services released (relatively) recently, such as SQL Azure, OData and WebMatrix, I decided to see if they all work together.

Amazingly, they do. Well, amazing that I got them to work, anyway. And as I've said before, if I can do it, anyone can do it. But that's the whole point: WebMatrix is targeted at noobs, and I wanted to see if a hobbyist could use it in conjunction with some other new stuff.

WebMatrix is a lightweight stack or tool that comes with stripped-down IIS and SQL Server components, packaged together so pros can do quick deployments and beginners can get started in Web development.

WebMatrix is all over PHP. It provides PHP code syntax highlighting (though not IntelliSense). It even includes a Web Gallery that lets you install popular PHP apps such as WordPress (see Ruslan Yakushev's tutorial). Doing so installs and configures PHP and the MySQL database.

I chose to install PHP myself and configure it for use in WebMatrix (see Brian Swan's tutorial).

After doing that, I tested the new PHP Drivers for SQL Server. The August release added PDO support, which allows object-oriented programming.

I used the PDO driver to access the AdventureWorksLTAZ2008R2 test database I have hosted in SQL Azure. After creating a PDO connection object, I could query the database and loop over the results in different ways, such as with the PDO FETCH_ASSOC constant:

(while $row = $sqlquery->fetch(PDO::FETCH_ASSOC) )

or with just the connection object:

foreach ($conn->query($sqlquery) as $row)

which both basically return the same results. You can see those results as a raw array on a site I created and deployed on one of the WebMatrix hosting partners, Applied Innovations, which is offering its services for free throughout the WebMatrix beta, along with several other providers. (By the way, Applied Innovations provided great service when I ran into a problem of my own making, even though the account was free.)

Having tested successfully with a regular SQL Azure database, I tried using PHP to access the same database enabled as an OData feed, courtesy of SQL Azure Labs. That eventually worked, but was a bit problematic in that this was my first exposure to PHP and I haven't worked that much with OData's Atom-based XML feed that contains namespaces, which greatly complicated things.

It was simple enough to grab the OData feed ($xml = file_get_contents ("ODataURL"), for one example), but to get down to the Customer record details buried in namespaces took a lot of investigation and resulted in ridiculous code such as this:

echo $xmlfile->entry[(int)$customerid]->children
('http://www.w3.org/2005/Atom')->content->
children
('http://schemas.microsoft.com/ado/2007/08/dataservices/metadata')->
children
('http://schemas.microsoft.com/ado/2007/08/dataservices')->
CompanyName->asXML();

just to display the customer's company name. I later found that registering an XPath Namespace could greatly reduce that monstrous line, but did require a couple more lines of code. There's probably a better way to do it, though, if someone in the know would care to drop me a line (see below).

Anyway, the ridiculous code worked, as you can see here.

I also checked out the OData SDK for PHP. It generates proxy classes that you can use to work with OData feeds. It worked fine on my localhost Web server, but I couldn't get it to work on my hosted site. Microsoft Developer Evangelist Jim O'Neil, who used the SDK to access the "Dallas" OData feed repository, suggested I needed "admin privileges to configure the php.ini file to add the OData directory to the include variable and configure the required extensions" on the remote host. I'm sure that could be done easily enough, but I didn't want to bother the Applied Innovations people any further about my free account.

So I accessed OData from a WebMatrix project in two different ways. But that was using PHP files. At first, I couldn't figure out how to easily display the OData feed in a regular WebMatrix (.cshtml) page. I guess I could've written a bunch of C# code to do it, but WebMatrix is supposed to shield you from having to do that. Which it does, in fact, with the OData Helper, one of several "helpers" for tasks such as using Windows Azure Storage or displaying a Twitter feed (you can see an example of the latter on my project site). You can find more helpers online.

The OData Helper made it trivial to grab the feed and display it in a WebMatrix "WebGrid" using the Razor syntax:

@using Microsoft.Samples.WebPages.Helpers
@{
var odatafeed = OData.Get("[feedurl]");
var grid = new WebGrid(odatafeed, columnNames : new []{"CustomerID",
"CompanyName", "FirstName", "LastName"});

@grid.GetHtml();

which results in this display.

Of course, using the built-in SQL Server Compact to access an embedded database was trivial:

@{
var db = Database.OpenFile("MyDatabase.sdf");
var query = "SELECT * FROM Products ORDER BY Name";
var result = db.Query(query);
var grid = new WebGrid(result);
 }
@grid.GetHtml();

which results in this.

Finally, I tackled the Entity Framework, to see if I could do a regular old query on the SQL Azure database. I clicked the button to launch the WebMatrix project in Visual Studio and built an Entity Data Model that I used to successfully query the database with both the ObjectQuery and Iqueryable approaches. Both of the queries' code and resulting display can be seen here.

Basically everything I tried to do actually worked. You can access all the example results from my Applied Innovations guest site. By the way, it was fairly simple to deploy my project to the Applied Innovations hosting site. That kind of thing is usually complicated and frustrating for me, but the Web Deploy feature of WebMatrix really streamlined the process.

Of course, WebMatrix is in beta, and the Web Deploy quit working for me after a while. I just started FTPing all my changed files, which worked fine.

I encountered other little glitches along the way, but no showstoppers. For example, the WebMatrix default file type, .cshtml, stopped showing up as an option when creating new files. In fact, the options available for me seemed to differ greatly from those I found in various tutorials. That's quite a minor problem, but I noticed it.

As befits a beta, there are a lot of known issues, which you can see here.

Overall, (much like LightSwitch) I was impressed with WebMatrix. It allows easy ASP.NET Web development and deployment for beginners and accommodates further exploration by those with a smattering of experience.

We'd love to hear your thoughts about WebMatrix, Microsoft's embrace of PHP, or (kind of) new stuff like OData and SQL Azure in general. Comment below or drop me a line.

Posted by David Ramel on 09/30/20102 comments


LightSwitch: From Download to a Cloud App in 55 Minutes

You've probably heard about the uproar from professional developers about Microsoft's new direction of catering to amateurs with low-end tools like WebMatrix and Visual Studio LightSwitch, designed for quickly building data-centric apps without that pesky code-writing thing.

Some people complain that Microsoft is promoting poor programming practices; some complain that it devalues their jobs and leads to impossible expectations ("Joe in Finance did this in an hour, why can't you just flesh it out into a companywide app by the end of the day?"); some apparently just don't like opening up software development to the great unwashed masses.

From what I've read, it seems like WebMatrix is targeted to hobbyists or techies just looking to experiment with programming , possibly leading to more advanced coding and escalation of skills, while LightSwitch is designed to let non-programmers quickly get small business apps going for single or small group use.

Or, as Eric Nelson wrote in an MSDN blog: "LightSwitch is targeted at business developers and power users creating custom LOB applications leveraging data from multiple sources that can be easily deployed to the desktop or cloud."

I could fake being a business developer or power user, so I decided to find out just how easy it is to build a LightSwitch data-centric app, using a SQL Azure database in the cloud.

I started from scratch, downloading LightSwitch, installing it and building the app. The timeline went something like this:

  • 11:15 -- Search for LightSwitch; download it.
  • 11:31 -- Begin installation.
  • 11:47 -- Setup Complete, Thank You For Installing, Run The Product Now.
  • 11:48 -- Restart required to finish installation (?) but installation doesn't continue after restart.
  • 11:53 -- Start building an app, roughly following a tutorial.
  • 11:59 -- Connect to my SQL Azure database.
  • 12:10 -- Display a query-based "screen" that lets me add, edit and delete records. Like this:
Flipping LightSwitch on
Figure 1. A LightSwitch query-based 'screen' showing a SQL Azure database. [Click image for larger view.]

So, in less than an hour, with no LightSwitch experience whatsoever, I was looking at a customized pseudo-app in Visual Studio. (Of course, that doesn't include 45 minutes or so of fumbling around because I couldn't find any LightSwitch new project templates in VS until it finally dawned on me I had to target .NET 4 instead of 3.5, but that's just my usual inept Ramel-specific experience that other people don't have to go through).

Deployment is a whole other issue, and seems to be a little buggy in this beta. I couldn't get a "three-tier" app running on my hosted server with msdeploy.exe, but a less ambitious "two-tier" desktop app was easy to get going on localhost.
So the tool seems to do the job it was designed for and should get even better in final release.

I've also been tinkering with the WebMatrix beta. It has required more coding from me, but that's because I've been attempting far more complex experiments with PHP, Odata, SQL Azure and the like.

But it too seems to fulfill its promise. It combines low-end versions of IIS (Developer Express) and SQL Server (Compact, or embedded) with the ASP.NET framework that make it easy to get data-centric Web apps up and running. It provides many templates for common technologies such as WordPress, DotNetNuke, Joomla! and more. And deployment worked out much better. It has a simple "Web Deploy" (apparently a packaged msdeploy.exe) feature that allowed me to get some apps up and running on one of the suggested hosts, Applied Innovations (great service from these guys!).

I like fooling around with these tools. Quite simply, some .NET concepts (covariance, contravariance, anyone?) are beyond me and will never be mastered. The framework is just too complex. It's frustrating to muck around in C# and know there are ways to do what I want to do, but it takes endless hours of searching and blunt-force, trial-and-error drudgery to do it.

Maybe that's not an issue for professional developers who devote their working lives to learning .NET and the like, but I wonder how hard it is for some of them, too. There are a lot of experts out there, but they all seem to have their own little areas of expertise. Has anyone mastered the whole thing?

I greatly admire professional developers and the work they do. But there's a great middle ground between absolute novices and skilled pros, and Microsoft is trying to address that market. Why not?

What do you think? Comment here or drop me a line.

Posted by David Ramel on 09/22/201011 comments


The Future Of Data And Search--Or At Least A Fun Toy

This data stuff is getting cooler all the time.

Continuing to explore new ways of looking at data, I've been fooling around with Pivot from Microsoft Live Labs.

It takes data visualization to a spectacular new level with intriguing manipulation of images and data. It uses "Collections," composed of XML data and images, that "combine large groups of similar items on the Internet, so we can begin viewing the relationships between individual pieces of information in a new way. By visualizing hidden patterns, Pivot enables users to discover new insights while interacting with thousands of things at once."

Pivot projects can range from simple to extraordinarily complex. For a simple example, I downloaded the Excel plugin. It adds a Pivot Collections tab to the Excel ribbon where you can enter items for your collection, including image location, name, Href if applicable and description.

Entering data into Excel Pivot tool -- in the cloud.
Figure 1. Entering image information and accompanying metadata into the Excel Pivot tool. [Click image for larger view.]

It took just minutes to choose 10 photos of family visits to South Carolina beaches and enter them into Excel, with the description field indicating family members featured in each photo: a combination of David, Laura, Justin and Kristen. I could then then preview the collection and publish it.

Calling up the collection in the Pivot viewer presented all 10 photos.

Ramel pics, done.
Figure 2. The completed Ramel family beach outing collection. [Click image for larger view.]

The viewer lets me enter a keyword to find the photos with descriptions matching that keyword. So entering "David" makes the seven photos without me in them animate off the screen, leaving the three photos that include me.

Filtering for David
Figure 3. Choosing to view just photos featuring "David." [Click image for larger view.]

Entering "Justin" shows all photos with the both of us, and adding "Kristen" presents all photos that feature all three of us and so on.

I did a similar project with stock photos on my Windows 7 machine, featuring landscapes, animals and flowers. If you download the Pivot tool you can point its browser to view my project here and sort by "animal," "flower" and "earth."

Also, a Silverlight PivotViewer control lets Web devs embed Pivot into their sites; you can see the above example as a Silverlight app here (I used a SDK example, so on this page there are nav links to other collections such as new cars and AMG movies in the top right corner).

Filtering for flowers
Figure 4. The stock photo collection, narrowed down to just flowers. [Click image for larger view.]

Those two simple "Hello World"-type projects give you the basic idea, but the complexity can increase markedly, of course. There are Linked collections that can contain several thousand items and Just in Time collections that are built dynamically from user input and can be of unlimited size, with various types of selection tools, such as checkboxes and sliders to narrow results.

This enables endless possibilities. For examples, if you're into the new fantasy football season, you can use one of the collections in the Pivot gallery to view all NFL players and their stats from the 2009 season, sorting by position, team and the usual stats: touchdowns, rushing yards, passing yards and so on.

Or you can search through national parks monuments and historic places, sorting by state, type, number of annual visits, typical crowd size and more, using checkboxes and sliders to adjust different parameters.

National parks and Montana, filtered.
Figure 5. National parks and such in Montana. [Click image for larger view.]

If you haven't downloaded the Pivot viewer, you can quickly check out the functionality--and animation--by going to MSDN Magazine's Web site and clicking on the big "Launch Pivot" button. Then you can explore 10 years worth of magazine articles, sorting by popularity ("viewed often" or "viewed occasionally"), topic, issue date, author, column name and even if the article has associated downloadable source code or not. Though I must say, the logo/text images aren't nearly as spectacular as those in the national parks collection. (In the interest of full disclosure, I'm the features editor for MSDN Magazine, though not a Microsoft employee.)

There are dozens, if not hundreds, of interesting Pivot examples out there. It can also be used to find Web pages and do other cool stuff. It may just be the future of search on the Web.

If you've tried Pivot, let us know what you think about it. Or share other cool Pivot examples.

Posted by David Ramel on 09/13/20100 comments


Subscribe on YouTube