Microsoft today released preview 5 of the upcoming AJAX 4.0. This is the AJAX version that will be included with Visual Studio 2010 and ASP.NET 4.0. It has a ton of great new features that you can learn about and download on the AJAX CodePlex site.
One of the new features in preview 5 is Dynamic and Recursive Templates. That should be interesting to play with!
Happy coding!
Don
It's going to be a busy fall for me, at least for a month or two. I'm really lucky to have been invited to speak at some fabulous conferences and user groups.
September 23-24
(Ottawa is the 23rd and Montreal the 24th. I don't have location information yet though.)
I'm meeting up with some family in Montreal, so am going to visit the Ottawa and Montreal .NET user groups. At both groups I'll be spending about an hour on these two topics:
SQL Server Efficiencies: Sparse Columns and Filtered Indexes
One of the tools that Microsoft provides to help minimize data storage sizes in SQL Server 2008 is sparse columns. Sparse columns provides an efficient way to store data that is predominantly null by requiring no disk storage space for the null values. This sounds great, but there is a cost: in a field marked as sparse, the non-null data takes up a bit more storage space than if the field weren’t sparse, either two or four additional bytes depending on the data type of the field. A new feature in SQL Server 2008 that is useful with sparse columns—although usable even if a table doesn’t have sparse columns—is filtered indexes. This is an index with a WHERE clause that allows you to index only a subset of the rows in a table. The index favors a subset of the data in the table, which is very useful with sparse columns because most of the data in the field is null. You can create a filtered index on the sparse column that includes only the non-null data. Doing so optimizes the use of tables with sparse columns. This session will explore both of these great new features that can raise the efficiency of your databases to new levels, both when used together and used apart.
[This session is adapted from part of the AppDev SQL Server 2008 courseware I wrote. Seems to be a topic of interest, since I was also asked to present it at SQL PASS (see below).]
Unleash Management Studio 2.0
The SQL Server 2008 story isn’t really about productivity, but the latest version of Management Studio has definitely come of age. There are all kinds of tools and useful information throughout the environment, masking the complexity of and sometimes enhancing the underlying database and server features. During this session we’ll shine a light into the various nooks and crannies of this useful tool for both developers and administrators. You’ll learn about the new activity monitor, Intellisense (and how to keep it from driving you nuts, particularly if you are used to Visual Studio), T-SQL debugging, object explorer details enhancements, and lots more. You’ll learn various tips and tricks to make the most out of this tool. I personally guarantee you’ll have at least one WOW! moment, and come away with a list of features that you can use immediately to be more productive with this tool that you probably use so much every day.
[I've done this one a few times at conferences, with new stuff every time. It's fun to present, and attendees always seem to learn some new tricks.]
Then I'm home for a week before heading to AppDev to tape some courseware. And home a few days before off to one of my favorite places in the world: the Netherlands!
19-20 October

I'm really excited that I've been invited back to the Software Development Conference (SDN) in the Netherlands. This is a user group conference put on by the Software Development Network. I love user group conferences because people are so happy to be there and it's fun to meet and interact with such enthusiastic technologists. (That's a big reason I love to attend DevTeach in Canada.)
I'm presenting four sessions at SDC:
SQL Server 2008 Security for Developers
Have you had a run in with SQL Server or database security? Did it leave a bad taste in your mouth? Does the mumbo jumbo of database security give you the heebee jeebies? Don’t let it get you down! Come to this session and face your fears. We’ll cover the most important basics of security, why the roadblocks are there and how to get around them safely and securely. You’ll learn the terms, see how security features protect your data and server, and how to work within the system when writing code that runs within the server or in external applications. Come with your questions and be prepared to leave your fears behind.
User-Defined Types and Aggregates in SQL Server 2008
Running .NET code within SQL Server 2008 has opened up a lot of amazing possibilities, providing flexible options for working with relational data. But defining your own user-defined types and aggregates is easily the most complex and powerful thing you can do with SQLCLR code. That power and complexity puts off some developers, but you shouldn’t miss out! SQL Server 2008 expands UDTs in great new ways, making it all the more important to know how to use them. In this session we'll explore how to create custom types that perform well, write attributes correctly, and use the right serialization formats. We'll also talk about issues you should consider when designing your own types, as well as when it might be better to use other options.
AJAX 4.0: Rich Internet Applications Come of Age
The ASP.NET team at Microsoft just never sits still. They are enhancing the AJAX features of ASP.NET with great new stuff like client-side template rendering, declarative instantiation of behaviors and controls, a DataView control, markup extensions, and new bindings. Everything is in flux, but there are few parts of ASP.NET as exciting as what is coming down the road. During this session we’ll explore these new features as implemented in the current release and see how you can make your Web applications an even better experience for users. Microsoft’s plans for AJAX will blow your mind!
Revenge of the Client: AJAX 4.0 Data Binding
AJAX 4.0—scheduled to release as part of Visual Studio 2010—is introducing a lot of nice new features, but none are as revolutionary and interesting as its support for data binding. By using data binding and client templates, along with a few other new features, you can create a complete, robust data application all within an HTML page loaded in the browser. The pages can have full CRUD support—the standard Create, Retrieve, Update, and Delete database operations. This session will explore these new data binding features, and look at a complete application that works with SQL Server data, entirely within “static” HTML pages. These new client-side features open up great possibilities for rich, client-side data applications.
I'll spend a few days in the Netherlands after the conference. Not sure what I'm going to do yet. Maybe some paddling?
Then home for a whole week (wow!) and off to SQL PASS in Seattle.
2-5 November

I love SQL PASS! Good friends and amazing technical geek-out. I'm doing just one session, so most of the week I'll get to hang out and soak it all in. And this year I've gotten smarter: I'm not leaving until Friday morning so I can hang out Thursday night.
SQL Server Efficiencies: Sparse Columns and Filtered Indexes
One of the tools that Microsoft provides to help minimize data storage sizes in SQL Server 2008 is sparse columns. Sparse columns provide an efficient way to store data that is predominantly null by requiring no disk storage space for the null values. This sounds great, but there is a cost: in a field marked as sparse, the non-null data takes up a bit more storage space than if the field werent sparse, either two or four additional bytes depending on the data type of the field. A new feature in SQL Server 2008 that is useful with sparse columnsalthough usable even if a table doesnt have sparse columnsis filtered indexes. This is an index with a WHERE clause that allows you to index only a subset of the rows in a table. The index favors a subset of the data in the table, which is very useful with sparse columns because most of the data in the field is null. You can create a filtered index on the sparse column that includes only the non-null data. Doing so optimizes the use of tables with sparse columns. This session will explore both of these great new features that can raise the efficiency of your databases to new levels, both when used together and used apart.
If you're able to attend any of these events, please come up and say hi!
I love security. Not necessarily being secure in life--life itself is a risk, after all--but computer security is interesting. One bit of proof of that is that I always push for a dedicated security chapter in any courseware I develop for AppDev. (Although I have to admit that I messed up with the SQL Server 2008 Integration Services course I'm updating right now...security will still be part of the Package Management chapter, not a separate chapter. Next time I'll rectify that!)
If you're into SQL Server security, Microsoftie Laurentiu Cristofor's blog is a must for your RSS feed. Laurentiu doesn't write as much about security these days, but the archives are full of great stuff.
Laurentiu recently wrote an interesting post, Basic SQL Server Security concepts: ownership, CONTROL, TAKE OWNERSHIP. In it he talks about permissions related to object ownership. I have to admit that a few things were of interest to me, either because I hadn't encountered them yet in the wild, hadn't really thought about them, or it's always good to be reminded of them:
- The owner of an object ... most importantly, cannot be denied those permissions while he continues to be an owner.
- The CONTROL permission [is] the next best thing after ownership of the entity, but it's not quite as powerful as ownership. The main difference is that a grantee of CONTROL can still be denied some other permissions on the entity. [I love his example: I can have CONTROL of a table, but can be denied SELECT permission on it. When would I ever use that??? :-)]
- TAKE OWNERSHIP [can be] used to selectively grant someone the ability to willingly become the owner of an object. [Laurentiu's emphasis. I had never worded this as willingly, but that's a good way to think of it.]
And best of all:
- Side effect of ownership change: A potentially surprising side effect of changing ownership of an object is that all permissions granted on that object will be lost. [Again, Laurentiu's emphasis. This is something I've never explored nor, to my knowledge, ever had a problem with. I'll have to watch this for side effects though, since I suspect they could be nasty if I weren't aware of this.
Read the whole post; it isn't long.
Practice safe computing!