Details of the session on 28 November;
Title: Team Development – working with Project Manager, Team Lead and Business analyst roles;
This talk focuses on how the project manager / lead and the Business analysts can interact with the other primary roles of Architect, Developer, Tester and DBA. Learn how a variety of approaches can be used and how Team system can leverage the strengths of other tools including Microsoft Excel, and Microsoft Project to allocate and track tasks that need to be undertaken by the entire software development team.
Speaker: Mark Carroll
Wellington SQL Server Meeting Notice
Our next meeting will be:-
29 November 2007 6pm
Intergen
L7 Plunket House
126 Lambton Quay
(Lifts lock at 17:30. If you're late and there's nobody around to swipe you up, contact Adrian on 027 435 4050)
The topic of his presentation is:-
"Addressing in New Zealand - Introducing e-SAM"
In August 2008 NZ Post is forcing all organizations to re-apply for the bulk mail discounts. New rules are that mailing databases need to be SOA certified; 85% of the address data need to comply with NZ Post addresses and standards. How are organisations to achieve this? e-Spatial's solution is different to the others in that it is an open database model allowing DBAs to easily find any issues and tune it when necessary. It is also spatial including mapping reference data for all common NZ datasets.
Presented by
Matti Seikkula - Chief Information Officer, e-Spatial, will talk about how SQLServer is used against e-Spatial's addressing product e-SAM. Matti has more than 17 years of experience in systems design, software development, architecture and data modelling and over 11 years of experience in spatial integration.
Matti will be supported by Shane Turk, Spatial Database Specialist at e-Spatial. Shane has more than 15 years of experience with various spatial databases and GIS.
Pizza and drinks are being provided with the kind courtesy of Microsoft.
Seating is limited to the first 50 registrations.
Ping us an email at wgn-sql-server AT googlegroups.com if you will be attending :)
Sometimes it’s the smallest enhancements… INSERT INTO has gotten a small makeover in SQL Server 2008 which now allows you to specify multiple rows as part of a single statement. While the sky has yet to fall in reaction to this, it’s a great little enhancement for people generating data insert scripts so that the data can be inserted as a single statement (rather than having to batch it all together), and I was surprised how many people commented to me after my TechEd session about how they loved this change :)
To make use of it, simple append addition rows in a comma delimited format, surrounding each row set in brackets.
e.g.
insert into Product values
(1, 'XBOX 360', 100),
(2, 'Black Zune', 100),
(3, 'Windows Server 2008', 100),
(4, 'SQL Server 2008', 100),
Table Value Parameters are a small new T-SQL enhancement in SQL Server 2008 which allows us to pass through a TABLE value instance as a parameter to a stored procedure. This is a welcome new addition to support of the TABLE type as it helps in the situations where we want to pass in a row like structure without having to separate it out into arguments and then recombining it as part of the query.
Making use of it is fairly simple, let’s look at an example:
First we define the type
create type OrderTableType as TABLE(ProductId int, ProductName varchar(255), Quantity int)
Then we define the stored procedure (implementation excluded)
create procedure dbo.UpdateProductFromDailyOrders( @orders OrderTableType READONLY )
First we need to declare an instance of the type and populate it with some data
declare @todaysOrders OrderTableType
insert into @todaysOrders
select p.Id, p.ProductName, sum(o.Quantity)
from [Order] o inner join Product p on o.ProductId = p.Id
where o.OrderDate = '2007-01-05'
group by p.Id, p.ProductName
Then can now make use of it with the stored procedure
exec dbo.UpdateProductFromDailyOrders @todaysOrders
Easy!
The only caveat you have is that the structure passed in has to be specified as READONLY preventing any modification of the data inside the parameter.
0.8.5.0 — from file “npctrl.dll”.
One for the "I must remember this later" basket :)
Earlier this week I helped Ayende out with an issue he was having with getting SSIS and WCF to talk togethor..
The problem presents itself when using the Web Service Task in SSIS and trying to bind to a WCF based endpoint which is exposed using a basicHttpBinding.
Normally you are able to easily inspect the WSDL and bind to an appropriate Service and Operation using drop down selectors. When connecting to a WCF based service however, Oren found an issue in not being able to use the selectors.
After having a look into this, we found that the problem stemmed from SSIS's apparent lack of being able to digest the xsd:import's being generated by WCF for types generated in a namespace which differed from the namespace being used by the service or the binding.. e.g.:
The way I fixed this up "in the interim" was simply to merge the type definitions back into the main WSDL. This fixed up the issue.
You can also avoid this problem all togethor if you have a consistant namespace for both your types and bindings. Oren has already wrapped up a nice post on whats involved.
Other than the all powerful Powershell Gadget, the other Sidebar Gadget I now run all the time is Simone's Cruise Control.NET Gadget. This is a very useful little tool which gives nice visibility of any projects managed by CCNET which you want to view the latest integration status for..
Handy!
Check it out over at Simone's blog..
One question Ive seen come up a couple of times recently is "Can we use Silverlight with our Gadgets?" - this was also asked about it back when it was known as WPF/E but the bits were a bit less viable then.
So the answer today is "yes, but its not perfect". Here is an example hosting one of the Video Player applications inside the Sidebar..
Tim Sneath mentioned to me that one of the main limitations is that the Silverlight UI will always be boxed into a rectangular shape, so you dont have free license. Also for deployment, if you have your Gadget installed by someone who doesnt have Silverlight, make sure your window renders large enough to show the "Download Silverlight Beta" button :)
Anyone else looking into this currently?
As I mentioned yesterday I think the major announcement around Silverlight is the integration with the "CoreCLR". Scott thinks so also (see 2a and 4).. btw thats a post worth reading..
So ignoring all the UI goodness for a few moments, lets imagine I just want to avoid using all that nasty JavaScript and would rather use C# in the browser. Well why not just create an empty transparent canvas and use Silverlight as a .NET hosting container?
A contrived example of how this works in practice is:
Create a simple HTML page:
<div id="fooBlock">Hello World</div>
Add in a Silverlight code container block, and our associated XAML with a Canvas on it, in my case I decided to host an Image inside the Canvas for good looks..
<div id="SilverlightControlHost" > <script type="text/javascript"> createSilverlight(); </script> </div>
the CreateSilverlight call just instantiates a new XAML object which is hosting Page.xaml. Note the property set of enableHtmlAccess to true which allows the managed instance to get access back to the client side DOM.
Sys.Silverlight.createObjectEx({ source: "Page.xaml", parentElement: document.getElementById("SilverlightControlHost"), id: "SilverlightControl", properties: { width: "0px", height: "0px", version: "0.95", enableHtmlAccess: true }, events: {} });
Now the default view of this would look like:
But lets say we added the following lines of code in our managed load event:
HtmlElement el = HtmlPage.Document.GetElementByID("fooBlock");el.SetStyleAttribute("color", "Red");el.SetProperty("innerText", "foo");
Now we get:
HtmlPage returns us the current page instance, if we are allowed to see it. And from there we can walk the DOM using a new set of classes under the System.Windows.Browser namespace.
Not only can you manipulate the DOM from managed, but you can call into managed from JavaScript, or fire events in both directions. This gives you a fairly tight glue to get even your standard web apps humming with managed goodness.
I dont think the potential impact of this can be understated, while I fully expect the power of .NET to be used in anger in combination with the richer user experience that you get with Silverlight, there is equal opportunity to make sure your AJAX hums even better by doing more sophisticated work client side using .NET.
If you have Beta 1 of Orcas, get started by just creating a new Silverlight project! - you can go download the extensions for Silverlight as well as the 1.1 SDK (remember to install the 1.1 Alpha of Silverlight to make sure you get the new assemblies like System.Silverlight) and check out the QuickStarts at silverlight.net
Of course, you dont want to end up just writing a desktop app inside a browser window, or do you?
One of the other things launching today is a project which seems to fit as part of the ASP.NET "Futures" works which is all about delivering the next wave of web applications with technologies like ASP.NET AJAX, Silverlight etc.
The project - codenamed Astoria gives you a toolkit to build and expose data services over a REST interface (Alex - you excited yet?) by leveraging the Entities framework which unfortunately has been delayed.. Still, I think its a good step forward to push out more of a "resource" service over a REST interface because the convention of how you access stuff makes more sense.
So for example, if I had a Content service, it would be exposed as:
http://server/service.svc/Content (returns all rows)
http://server/service.svc/Content[1] (returns the entity keyed as 1)
http://server/service.svc/Content[1]/Tags (returns all tags for that entity)
While you are somewhat expressing a query in the URL syntax, thats the advantage of the convention is that its very clear what you are asking for. This was something Alex pushed hard at the Code Camp and I think he is on to something..
Take a look at the toolkit here..
Jim Hugunin who is presenting at Mix has blogged some more about the Dynamic Language Runtime (DLR) which is this new wave of support for dynamic languages and gives a quick overview of what Microsoft are doing in this space. Interesting to note the addition of Dynamic VB - making a comeback?
One thing stressed was that a lot of this is "earlyish still" and he comments that:
"We plan to kick off a broader engagement with language implementers at the upcoming lang.net conference in three months - at the end of July. This will be the best place to really engage with the DLR and let us know what we got wrong."
Still, very exciting! Tomek thinks the Ruby news is pretty cool ;)
So I thought I would give the Streaming Services a quick test. Thankfully this is a very simple thing to do by following Tim Sneaths instructions on what you need to do.
So following that through a few things to note,
Uploading was nice and painless too:
When you complete the upload it even gives you all of the HTML and Javascript you need to embed in your page. Very useful.
And voila.. one hosted Silverlight application leveraging the streaming services :)
The API also includes a set of REST based interfaces for doing all of this in an automated fashion which is what Ill be having a look at next.. Interesting to see the use of a REST API as part of this service - signalling perhaps some changes in the wind? Im sure at least Alex will be happy ;)
So lots of new news this morning, here is a recap..
So first off Silverlight was shown off in pretty impressive fashion with some snazzy demos by ScottGu which apprently will be downloadable soon - for now you can check out the keynote videos at http://www.visitmix.com
Check out some blog commentary on the keynote here: http://www.joshholmes.com/2007/04/30/MIX07KeynoteInformationOverload.aspx
The major news was the announement of full support for developing managed code with Silverlight as well as the existing Javascript development support. And the CLR is being taken cross platform as well, with an demo from Scott showing cross platform debugging on a Mac (ooh ahh) ;) Pretty cool, but it really does strengthen the development story :)
The CLR in Silverlight seems fairly competent. Its not just a "Rotor" implementation although you wont just be dragging and dropping ;) But it does retain most of the core BCL including LINQ support. This was obviously seen as core.
Oh, and you can go live with Silverlight now as well - yay! :)
So this is interesting for me around 2 areas,
1: the use of streaming video, particularly trying to introduce more use of high def video for content providers to use. The timing may never be good for us down here in NZ but for the US and Europe its great timing to start capitalising on the uptake of HD. I can definitely see this as a push towards streaming to the 360..
2: A second "big" player in the interactive media front. This is interesting because Flash already has total market coverage and provides the ability for RIA (Rich Interative Applications). I think however with Silverlight and the integration of .NET you will see a high surge of interest in building RIA's and this will translate to it being more widely used in web UI's. Although someone still needs to cover the accessibility (eh JD?) :)
So this will either be the beginning of a new "browser war" of sorts, or a non event.. We shall soon see :)
So you can download the updated beta of Silverlight 1.0, an alpha release of 1.1 (and both for Mac as well) (with the newer bits in it, which is what some of the demos were working off) and the new May CTP of Expression Blend 2 (already eh?) :) You will want to use the Expression Blend 2 version to build for Silverlight..
So second bit of news today was the announcement about the continued support for dynamic languages with IronRuby joining IronPython. The IronRuby 1.0 should be up for download soon.
Also discussed was "Dynamic Language IL" which allows any dynamic language to work happily in managed land. All of that is supported on the Silverlight CLR as well which is pretty impressive and I think that should mean its already installing a semi 3.5 capable CLR :) Nice..
Thirdly, Silverlight Streaming Services was announced and is available straight away for use: https://silverlight.live.com
This is a storage service (similar to S3) which allows you to upload video content for use with Silverlight and then stream your content from the Microsoft servers. The idea is to also price it similar to S3; 1 million free minutes per month followed by costs recovered via injected advertising or a pay as you go model.
I think we might have to do something around Background Motion there this morning ;)
<script>
InitializeInterop();
</script>
try
{
var proxy = new ActiveXObject("Mindscape.ConsoleHost");
proxy = null;
return true;
}
catch (e)
return false;
codeBase = System.Gadget.path + "\\Bin\\Mindscape.Gadgets.PowerShell.dll";
shell = new ActiveXObject("WScript.Shell");
shell.RegWrite(root + "Mindscape.ConsoleHolder\\",
"Mindscape.Gadgets.PowerShell.ConsoleHolder");
shell.RegWrite(root + "Mindscape.ConsoleHolder\\CLSID\\",
"{91267DB9-9914-4524-A757-9024B99D02E9}");
shell.RegWrite(root + "CLSID\\{91267DB9-9914-4524-A757-9024B99D02E9}\\",
shell.RegWrite(root + "CLSID\\{91267DB9-9914-4524-A757-9024B99D02E9}\\InprocServer32\\",
"mscoree.dll");
shell.RegWrite(root + "CLSID\\{91267DB9-9914-4524-A757-9024B99D02E9}\\InprocServer32\\ThreadingModel",
"Both");
shell.RegWrite(root + "CLSID\\{91267DB9-9914-4524-A757-9024B99D02E9}\\InprocServer32\\Class",
shell.RegWrite(root + "CLSID\\{91267DB9-9914-4524-A757-9024B99D02E9}\\InprocServer32\\Assembly",
"Mindscape.Gadgets.PowerShell, Version=1.0.0.0, Culture=neutral, PublicKeyToken=5bd33ec22e477ed5");
shell.RegWrite(root + "CLSID\\{91267DB9-9914-4524-A757-9024B99D02E9}\\InprocServer32\\RuntimeVersion",
"v2.0.50727");
shell.RegWrite(root + "CLSID\\{91267DB9-9914-4524-A757-9024B99D02E9}\\InprocServer32\\CodeBase",
"file:///" + codeBase);
shell.RegWrite(root + "CLSID\\{91267DB9-9914-4524-A757-9024B99D02E9}\\InprocServer32\\1.0.0.0\\Class",
shell.RegWrite(root + "CLSID\\{91267DB9-9914-4524-A757-9024B99D02E9}\\InprocServer32\\1.0.0.0\\Assembly",
shell.RegWrite(root + "CLSID\\{91267DB9-9914-4524-A757-9024B99D02E9}\\InprocServer32\\1.0.0.0\\RuntimeVersion",
shell.RegWrite(root + "CLSID\\{91267DB9-9914-4524-A757-9024B99D02E9}\\InprocServer32\\1.0.0.0\\CodeBase",
shell.RegWrite(root + "CLSID\\{91267DB9-9914-4524-A757-9024B99D02E9}\\ProgId\\",
"Mindscape.ConsoleHolder");
shell.RegWrite(root + "Component Categories\\{62C8FE65-4EBB-45e7-B440-6E39B2CDBF29}\\0 ",
".NET Category");
Register("HKCR\\");
Register("HKCU\\Software\\Classes\\");
As announced by Soma, ScottGu and others, Expression Web and Blend are going to be released through MSDN to the developer audience.
Have a read on Soma's post for more info. Ultimately this is based on a very strong feedback call from the community. IMHO - its a good thing :)
Looks like Kirk had an awesome time at the MVP summit recently! While I didnt make it to the Summit myself it looks like plenty of interesting up and coming technologies were showcased and it sets the scene for what should be another awesome PDC towards the end of the year. Definitely looking forward to that!
I was keen to read that Kirk was talking about Xero's interest in Longhorn Server particularly in leveraging IIS7 and some of the new management capabilities. I would say "Go for it guys!" and hopefully I will see a Xero up at the ISV training for Longhorn Server :)
Ive been involved with the Longhorn Server betas since mid last year and Im really impressed with how its taking shape. This is definitely more of a feature release which is building on the existing stability and strength of 2003 Server, bringing togethor a number of features unveiled in Vista as well as a number of great management released features which building on the vision of the DSI. I think "agile operation" of enterprise systems is something we are going to get a lot more focus on over the next couple of years.
If you are interested in IIS 7, there is already a good set of resources building up at http://www.iis.net plus we are more than likely to be blessed with several top speakers from the product team again this year at Tech-Ed :)
AP has been working on a nifty new Powershell gadget (run up a managed Powershell object within a Gadget and have a little prompt which sits in your Sidebar which you can work with) - can't wait to start using that one :)
Anyway, he was commenting on the Gadget development process and particularly working with JavaScript. One tip which is very useful for your Gadget development is to wire up script debugging so you can debug into your Gadget JS from Visual Studio and work out whats going on.
To enable script debugging you need to set the options in Internet Explorer - untick the following two boxes and close off all instances of IE and the Sidebar, and then fire up the Sidebar.
To work with breakpoints you can just set a breakpoint in your JS file and then attach the debugger to the instance of sidebar.exe which is hosting your Gadget. The Sidebar will start up a number of instances of sidebar.exe, so initially you will have nothing to attach to.
A tip here is that you can inject a statement "debugger;" into your Javascript (at an appropriate point) to force it to raise a Script Breakpoint exception that will allow you to attach a debugger at that point to get things going. Very useful for catching the Gadget earlier in the load cycle.
Once your debugger is attached your breakpoints and watches will all operate as expected.
Good times :)
Ive spent a bit of time over the last few months working with Vista Sidebar Gadgets and how they could be used to add some extra reach across existing applications. This is something we talked about during the "Extending the Reach of your Applications" talk in the recent Technical Briefing events.
I think there are great opportunities to use Gadgets as a rich surface to present application functionality or information out to users at a desktop level. For example in the enterprise you could use this to surface your typical portal style applications or information in a way that allows personalisation richness with a stronger user experience and still allowing for single sign on through your domain based Windows Authentication.
Getting data from an RSS feed is a pretty simple start, if you are using Sharepoint you can just have your Sharepoint lists published through WSS and then consume them that way. There is already an out of the box RSS Feed Viewer in Vista or you can customise it to suit your own needs for display.
You could also look at coupling Gadgets against functionality exposed through web services. Basic services can be consumed through standard Javascript by using the webservice behavior for IE which has been floating around for a while now.
Or you could leverage .NET functionality to achieve this. We used this to set up our moderation gadget to make a secure call using WCF against a WS-Secure endpoint (wsHttpBinding). This could make the idea of surfacing your internal functions through Gadgets even easier as you will keep focused on the interface.
If you are looking to leverage .NET in your Gadgets AP found a great CodeProject article which can give you a nice (installation free) and generic way to consume .NET objects or you can build your own class library, set it up for Interop and the have it registered as part of your Gadget install process using the same technique of registry key injection.
You could even have your Gadget host a service (again by leveraging WCF) which would allow it to be pushed data rather than using a pull model. This might work well for monitoring scenarios within a subnet or for P2P style gadgets.
Im going to be doing some work on getting togethor some starter material for building Gadgets shortly, and if you are interested in building Gadgets either for public use or in your enterprise then I would love to hear from you :)
Thanks to everyone who attended the Microsoft Technical Briefings over the last 3 weeks. We had lots of fun and enjoyed having the opportunity to talk about the recent work we have been doing and discussing some of those ideas. As promised, it’s time to start posting our presentations, demos and links. If you’re looking for the files from John-Daniel Trask you can grab them from his blog. In a few weeks we will also be making available videos of the three presentations that Mindscape delivered for those wanting to see them again or who could not attend the sessions.
Here are the links from the presentation:
* RSS Toolkit Project on Codeplex * Create your OpenSearch xml easily using this online tool * WPF: Community Home * WPF: Charles Petzold's Blog * WPF: Download Expression Blend RC * MSDN documentation for Sidebar Gadgets * Example of a quick start for developing Ga