Thursday, November 22, 2007

Microsoft UNPLUGGED

Just got back from attending Microsoft UNPLUGGED - 'Web Development with Visual Studio 2008' with Nigel Parker (Auckland's version of Wellington's Darryl Burling).

Highlights included:

  • VS 2008 multi-Targeting Support
  • Web Designer and CSS Support
  • Nested Master Page Support
  • JavaScript Intellisense and Debugging
  • Code Editing Improvements

I won Windows Live OneCare!  "The All-in-One Security and Performance Service for your Windows XP or Vista PC"

Just in time too, because my McAfee subscription was due to expire this week!

I asked the question "Does all that IntelliSense also go with VBScript"?  The answer was yes.

Tuesday, November 6, 2007

Best Practices - SQL Server Reporting Services

Rules to Better Reporting Services 2005

About Adam
  • Chief Architect
  • Runs teams of developers
  • Present .NET User Group, .Sydney
  • Speaker for Microsoft Roadshows, Dev Conn, VSLive
  • Microsoft regional Director, Australia
  • adamcogan@ssw.com.au
Complaints
  • VS.NET (resolution: Report Builder)
  • Security not very definitive (resolution: make everyone Admin.  Preferable make Security Model same as SQL Server)
  • Lack of control over interface (e.g. Textboxes don’t break over pages).
  • RTF/HTML
  • Easy way to put the RS box on the web
  • IIS on the RS box
  • No CSS
  • Data Bars
Best Practices
  • Dev, Test, Production
  • Automated Deployment
1. Which User Experience?
  • Report Builder
  • Web Site (Report viewer control)
  • Emails (aka Subscriptions)
  • Windows
2. Do you know when to use Reporting Services?
  • Good when:
    • Faster to develop read-only reports
    • Has a designer – non .Net developers needed
    • No code – maintenance is easier
    • Groups and totals is easier (in ASP.Net you would need to iterate…)
  • Bad when:
    • Licensing
    • Parameters – forced to use built-in controls
    • Query string – when you change the parameters and refresh a report, the values do not appear directly in the query string
    • Can’t separate SQL in to a strongly-typed dataset or middle-tier object like in ASP.Net – if worried about it use stored procs
ASP.NET – the Good
  • Can edit data
  • Control over parameters e.g. you can page through months using a hyperlink
  • Can use query strings to pass parameters for easy URL creation
ASP.NET – the bad
  • Higher development time
  • No graphs
3. Do you check that “RS Configuration Manager’ is all green ticks? 4. Do you check out the built-in samples?
  • Install, Install, Open Folder
  • Deploy Adventure Works OLAP
  • Deploy Model
5. Do you have your deployment strategy sorted? Prepare
  • Tip: When should this deployment story be sorted?
  • Think about being Larry King before an interview…
Do you know the 2 migration options for Access?
  • Import Reports
  • Save and Interop with SSQ Access Reporter
6. Does your report print and display on the web correctly?
  • Tip: Export your report to PDF and do a print preview, so you don’t have to print a lot of testing pages to find out the best page settings.
7. Do you include a useful footer at the bottom of your report?8. Do you avoid using word ‘Report’ in reports?9. Do you underline items with Hyperlink Action?10. Do you show errors in Red?11. 12. Do you show the past 6 months of totals in a chart?13. Do you show data and chart in one?14. Do you avoid using…?15. Are you aware of the common charts in tables problem? 
  • Or do you use expressions to show the correct scale on charts?
  • Or do you use red for negatives for charts in tables?
16.17. Do you avoid showing change as a percentage?18. Data Layout – do you use alternating row colours?19. Do you have nodes count like Outlook?20. Do you avoid displaying decimal places?21. Do you have consistent height for table rows?22. Do you display zero number as blank in your reports?23. Do you know the best way to show your numbers?24. Do you know too many numbers can be scary? 
  • Do you use de-normalized database fields for calculated values?
25. Do you show all the report parameters in the body?

Friday, October 12, 2007

Lap Around MS Visual Studio 2008

Around MS Visual Studio 2008

Features

  • Multi-targeting Support
  • Base Class Source Code Support
Windows Developers

Designer / Developer Collaboration

· Expression Blend

o Control Templates

o Data Templates

o Animate

o Advanced Layouts

o Triggers

· Visual Studio 2008

o Layout

o XAML Editing

Windows Presentation Foundation

  • Split View XAML Editing/Design
  • WinForms Interop
  • ClickOnce

Client Application Services

  • Leverage ASP.Net Services on the client
    • Share user authentication and authorization between Client and Web applications
    • Store user settings on the web
  • Client Services infrastructure
    • Handles web services communication
    • Provides offline support
  • Blah

Services Enhancements

  • WCF Project Templates
  • Test Clients
  • AutoHosting - just press F5
  • HTTP Programming support

Syndication

  • Managed programming model for Syndication Feeds
    • Creation – from existing data types
    • Consumption – from external RSS / Atom feeds
  • Provided in the System.Syndication namespace
  • Unified RSS / ATOM Feeds
  • Composes with Web programming model

Web Programming Model

  • Simple approach for building REST-based services
  • The URI is the API i.e. http://localhost/GetOrderStatus/329301
  • UriTemplate maps Uri segments to parameters
  • Support for XML and non-XML data
Web Development

HTML Designer & ASP.Net Enhancements

  • Expression Web WYSIWY designer
  • Greatly improved CSS Support
  • Vastly enhanced JavaScript support
  • Nested master pages
  • New server controls
  • ASP.Net AJAX baked in

ASP.NET AJAX Control Toolkit

  • Joint project between Microsoft and the community
  • A few dozen controls, more to come
  • Three goals:
    • Place to get…
    • Etc…

ASP.NET Futures (July CTP)

  • First look at more upcoming features for ASP.NET
    • The will ship as a separate download after 2008
  • A few features included in it today:
    • <asp:History> control
    • <asp:Diagnostics> control
    • <asp:media> control
    • <asp:xaml> control
    • CSS Control Selectors support in ASP.Net

Dynamic Data Controls

  • <h1>Task List App using Oryz</h1>
  • <asp:DynamicAutoData id=”Scaffold” DataContext=”LINQModel” runat=”server” />
Office Development

Visual Studio 2008 Tools for Office

  • Baked into Visual Studio Professional
  • New designers
    • Outlook
    • Ribbon
    • Custom task pane
  • ClickOnce support

Creating SharePoint Workflows

  • Today – 15 steps
  • VSTO 2008
    • Create workflow in VSTO 2008
    • Design the actual workflow code, etc.
    • Press F5
Mobile Development

Mobile Development

  • Works side-by-side with Visual Studio 2005
  • In-box support for Windows Mobile 4.0 SDKs
  • Unit Testing Integration with Visual Studio Team System
  • Security Aware IDE
  • Device Emulator 3.0
  • LINQ

.NET Compact Framework v3.5 – Supported Platforms

  • Windows CE 4.2, 5.0, 6.0
  • Etc…
Data Access & Programmability

New language features

  • LINQ
  • Anonymous types
  • Implicit types
  • + much more…

Visual Studio Team System Product Roadmap

  • Capability for building next generation of applications for : Vista, Office 12, Web
  • Software Factories
  • VSTE DB Pro integration into VS Team Suite
  • Updated Language Enhancements

Summary

  • WinForms, WPF, WF & WCF
  • Web design, JavaScript, CSS
  • Office 2007 baked in

SQL Server User Group Meeting

From SQL Server 2000 DTS to SQL Server 2005 SSIS Upgrade and Migration

Session objectives 7 key takeaways

  • Session Objectives
    • Explain the migration story for SSIS 2005
    • Describe tools and practices for migration
    • Provide guidance for current engagements
  • Key takeaways
    • We will not break existing installs
    • Integration Services is first version of a new ETL product
    • Migration is not perfect
    • Redesign is a better option

Agenda

  • From DTS to SSIS
  • Upgrade Experience
  • Support for Migration
  • Migration Packages
  • Guidance for DTS Users

Upgrade vs. Migration

  • Two products – two questions
  • Upgrade
    • How do I upgrade my server without disturbing existing DTS processing?
  • Migration
    • How do I bring my existing DTS processing under the new SSIS model?

Upgrade Issues

  • Remote server upgrades to SQL Server2 005
  • Local server upgrades to SQL Sever 2005
  • Continuing to maintain DTS [packages after upgrade
  • Side-by-side vs. upgrade

Remote Server Upgrade

  • Local DTS packages continue to access an upgraded remote server without interruption
  • SQL Server 2000 Admin Tools will not connect to the upgraded server
    • Continue to edit DTS packages on remote file share without interruption
    • Install 2005 tools to edit DTS packages store in SQL Server 2005 msdb

Local Server Upgrade

  • Tools install includes DTS 2000 runtime
  • DTS packages on server, file system untouched by upgrade
  • DTs packages on upgraded server remain available for execution and maintenance
  • DTs agent jobs run without interruption
  • Apps written to DTs API continue to work
  • Server upgrade removes SQL Server 2000 Admin Tools
    • If you need legacy tools, install 2005 tools alongside 2000
    • Repository support withdrawn

Maintaining DTS 2000 Packages after Upgrade

  • Use SQL Server 2005 Management Studio to manage DTS packages
  • Access via Legacy node in Object Explorer
  • Legacy UI components don’t ship with 2005
  • Download DTS 2000 Designer Components

Side-by-Side vs. Upgrade

  • Upgrade database Server?
    • Avoid updating remote DTS packages and applications by upgrading the database server
    • Run 2000 and 2005 processing in parallel with side-by-side install
  • Upgrade Admin tools?
    • DTS and SSIS are essentially separate products
    • Missed…

Support for Migration

  • Execute DTS 2000 Package Task
  • Migration Wizard
  • Upgrade Advisor

Execute DTS 2000 Package Task

  • Use the Execute DTS 2000 Package task to invoke DTS packages from within an SSIS 2005 package
  • Wrap legacy packages to take advantage of improved SSIS:
    • Looping and sequencing constructs
    • Package security
    • Event handling
    • Logging and error handling
  • Embed legacy package in 2005 package for deployment

Package Migration Wizard

  • “Best Effort” migration
  • Creates new SSIS package leaving original in place
  • Migrate what we can convert
    • Variables and control flow
    • Most tasks
  • Wrap what we cannot convert
    • Complex Data Transformation Tasks (ActiveX script model)
    • Analysis Services Tasks
  • Some constructs not supported
    • Transactions
    • Dynamic Property Task
    • Access old API; script on step

Upgrade Advisor

  • Run before upgrade
  • Works on server, local or remote, or on file system
  • Upgrade Advisor analyses DTS packages and reports on upgrade and migration issues
  • Return to report later to review, check off fixes
    • Requires DTS 2000 server
    • Overwrites report

Package Migration Cases

  • Workflow
  • Simple Data Transformation
  • Complex Data Tran
  • Self-modifying packages
  • Dynamic Properties
  • Custom Task

Workflow Packages

  • Most tasks migrate seamlessly
    • FTP
    • Execute Process
    • Execute SQL
    • Bulk Insert
    • Copy Objects
    • Send Mail
    • Execute Package
    • MSMQ
    • Transfer Tasks
  • Control Flow and Precedents migrate without issue
  • Global Variables fully migrate
  • ActiveX Script task may require fix-up if referencing old API

Simple Data Transformation

  • DGS Data Transformation and SSIS Data Flow object models don’t map one to one
  • Goal
    • Migrate all package form Import/Export Wizard

Complex Data Transformation

  • Where migration not supported, migration wraps original taks in an Execute DTS 2000 Package Task
    • Script or other transforms
    • Multiphase pump, lookup, etc
  • Redesign with SSIS 2005 transformation s for performance
  • Add error handling for reliability

(here the battery died)

Friday, September 28, 2007

How to output numeric data as strings in Excel

A customer had a requirement to do this. The default implementation of export to Excel doesn't do this. I had to go looking for it. This is what I found:

'<summary>

'An overload for this function

'</summary>

Public Shared Sub DataTableToXhtmlTable(ByVal dt As DataTable, ByVal filename As String, ByVal WriteToResponse As Boolean)Dim dv As New DataView(dt)

DataTableToXhtmlTable(dv, filename, WriteToResponse)

End Sub

'<summary>

'This export method is similar to the common technique of binding a dataset to a datagrid/gridview

'and rendering the contents to produce a HTML table that Excel can understand. However the datagrid

'approach is not reliable if the data contains html characters, e.g. < or >, it produces invalid XML,

'which causes problems in Excel and OpenOffice.

'An alternative approach is to derive a GridView control that automatically sets HtmlEncode = true on

'all the BoundColumns, but this can produce very bloated output where non ASCII characters are represented

'and Excel will not decode the HtmlEncoded text.

'I found the simplest approach is to parse the dataview and write out an XHTML table. This way the

'output is guaranteed to be valid XHTML, and compatible with Excel and OpenOffice (use the HtmlDocument filter).

'</summary>

'<param name="dv"> The data source</param>

'<param name="filename"> If WriteToResponse is true, this must be a file name, otherwise a full path+file name to save the file to</param>

'<param name="WriteToResponse"> if true, Response.Writes the output to the client browser,

' otherwise writes the contents to the specified file path</param>

Public Shared Sub DataTableToXhtmlTable(ByVal dv As DataView, ByVal filename As String, ByVal WriteToResponse As Boolean)

Using sw As StringWriter = New StringWriter()sw.WriteLine(

My.Resources.ExcelBookXML.Header)

For Each dr As DataRow In dv.Table.Rowssw.WriteLine(

"<Row>")

For i As Integer = 0 To 13

Dim o As Object = dr.ItemArray(i)

If o.ToString = "" Then

sw.WriteLine("<Cell ss:StyleID='s23' />")

Else

Select Case i

Case 0

'An ordinary strgin

sw.WriteLine("<Cell ss:StyleID='s22'>" + _

"<Data ss:Type='String'>{0}" + _

"</Data></Cell>", XmlEscape(o.ToString()))

Case 1sw.WriteLine(

"<Cell ss:StyleID='s22'>" + _

"<Data ss:Type='String'>{0}" + _

"</Data></Cell>", XmlEscape(o.ToString()))

Case 2 : sw.WriteLine("<Cell ss:StyleID='s22'><Data ss:Type='String'>{0}</Data></Cell>", XmlEscape(o.ToString()))

Case 3 : sw.WriteLine("<Cell ss:StyleID='s22'><Data ss:Type='String'>{0}</Data></Cell>", XmlEscape(o.ToString()))

Case 4

'An ordinary number

sw.WriteLine("<Cell ss:StyleID='s22'>" + _

"<Data ss:Type='Number'>{0}" + _

"</Data></Cell>", XmlEscape(o.ToString()))

Case 5 : sw.WriteLine("<Cell ss:StyleID='s22'><Data ss:Type='String'>{0}</Data></Cell>", XmlEscape(o.ToString()))

Case 6

'An ordinary date

Dim StartDate As DateTime = CDate(o)

sw.WriteLine("<Cell ss:StyleID='s24'>" + _

"<Data ss:Type='DateTime'>{0}" + _

"</Data></Cell>", StartDate.ToString("yyyy-MM-dd"))

Case 7 : sw.WriteLine("<Cell ss:StyleID='s22'><Data ss:Type='String'>{0}</Data></Cell>", XmlEscape(o.ToString()))

Case 8

'A number that I want formatted as string

sw.WriteLine("<Cell ss:StyleID='s23'>" + _

"<Data ss:Type='String'>${0}" + _

"</Data></Cell>", XmlEscape(o.ToString()))

Case 9 : sw.WriteLine("<Cell ss:StyleID='s22'><Data ss:Type='Number'>{0}</Data></Cell>", XmlEscape(o.ToString()))

Case 10 : sw.WriteLine("<Cell ss:StyleID='s23'><Data ss:Type='String'>${0}</Data></Cell>", XmlEscape(o.ToString()))

Case 11 : sw.WriteLine("<Cell ss:StyleID='s22'><Data ss:Type='String'>{0}</Data></Cell>", XmlEscape(o.ToString()))

Case 12 : sw.WriteLine("<Cell ss:StyleID='s22'><Data ss:Type='String'>{0}</Data></Cell>", XmlEscape(o.ToString()))

Case Else : sw.WriteLine("<Cell ss:StyleID='s22'><Data ss:Type='String'>{0}</Data></Cell>", XmlEscape(o.ToString()))

End Select

End If

Next

sw.WriteLine("</Row>")

Next

sw.WriteLine(My.Resources.ExcelBookXML.Footer)

If (WriteToResponse) Then

Dim response As HttpResponse = HttpContext.Current.ResponseWith response

.Clear()

.Charset = System.Text.UTF8Encoding.UTF8.WebName

.ContentEncoding = System.Text.UTF8Encoding.UTF8

.AddHeader("Content-Disposition", String.Format("attachment; filename='{0}';", filename))

.ContentType = "application/vnd.ms-excel"

.Write(sw.ToString())

.End()

End With

Else

File.WriteAllText(filename, sw.ToString())

End If

End Using

End Sub

'<Summary>

' Replace < & > characters with their xml escaped equivalents

'</Summary>

Public Shared Function XmlEscape(ByVal s As String) As String

s = Regex.Replace(s, "<", "&lt;")

s = Regex.Replace(s, ">", "&gt;")s = Regex.Replace(s,

"&", "&amp;")

If s = "" Then

Return Nothing

Else

Return s

End If

End Function

Monday, September 17, 2007

Comp.Sci. vs Info.Sys

Hi,

I'm beginning to formulate an hypothesis, that I haven't designed any experiments for yet, so I can't call it a theory. It is this:

That Computer Science grads are taught C (C+, C#, whatever) and therefore have a "top-down" approach to software development. This top-down approach I define as being concerned with proper class definition, inheritence, polymorphism, etc. first, and the data layer takes care of itself, often via some Object Relational Mapper (ORM) tool.

Conversely, Information Systems grads are taught VB (and often SQL as well) and therefore have a "bottom-up" approach to software development. This bottom-up approach I define as being concerned with proper entity-relationship definition and the presentation layer is merely an extension of the database.

I do not believe either approach is superior in all circumstances: both may be better in certain instances.

It is less of a problem than the divide between Engineers and Developers. We really don't talk the same language!


I'd be interested in formulating debate around this topic, if anybody out there is also interested?

Wednesday, September 12, 2007

Passed Exam 70-547

Exam Number: 70-547

Name: PRO: Designing and Developing Web-Based Applications by Using the Microsoft® .NET Framework

Passing Score: 700

My Score: 725!!!

Result: Pass (Just)

Sectional Results (approximations):

  • Envisioning and Designing an Application (80%)
  • Designing and Developing a User Interface (85%)
  • Designing and Developing a Component (45%)
  • Designing and Developing an Application Framework (70%)
  • Testing and Stabilizing an Application (100%)
  • Deploying and Supporting an Application (80%)

This is the last exam of three (the other two being 70-528 & 70-536) which give me the new credential:

  • Microsoft Certified Professional Developer (.NET 2.0: Web)

I’m happy, but shattered. This one took a lot of study.

Thursday, September 6, 2007

Just Read The Manual

Kiaora Team,

I just discovered something interesting/important:

  • Use a separate cookie name (using the name attribute of the <forms> element) and path for each Web application. This will ensure that users who are authenticated against one application are not treated as authenticated when using a second application hosted by the same Web Server.

- Building Secure ASP.NET Applications

- Patterns and Practices

So, this means that my web.config should look like this from now on:

<authentication mode="Forms">

<forms name="StanleyAuth"

path="/"

protection="Encryption">

</forms>

</authentication>

<authorization>

<deny users="?"/>

</authorization>

Blessings,

James.

Thursday, August 23, 2007

VB vs C# comparison

Worth keeping:

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

Writing Applications that make SQL Server 2005 Fly

Shu J Scott

  • Program Manager for Query Processing
  • SQL Server Relational Engine
  • Microsoft
  • (Part of Tech Ed 2007)

Goal

  • Reduce the cost of managing database applications
    • Understand SQL server Query Optimizer specifics
    • Help the Optimizer produce quality query plans
    • Avoid problems through design/implementation best practices

Agenda

  • Make app run fast independent of the platform
  • SQL Server specific technical
    • SQL Server Query compilation Overview
    • Necessary conditions of quality query plans
    • Importance of good stats
    • Importance of indexes
    • Influence optimizer behaviour with query hints
  • Q&A

Platform-independent Techniques To Make App Run Faster

  • Good logical DB design
  • Good physical DB design
  • Proper hardware (memory, I/O, processing power)
  • Minimize # of round-trop messages between application and DB server
  • Use set-oriented power of query processor
  • Etc.

SQL Server 2005 Query Compilation Overview

  • New batch
  • Cache lookup
  • Parsing
  • For each statement
    • Plan guide match
    • Forced autoparam
      • Cache Lookup
      • Algebrization
      • Optimization
      • Cache new plan
    • Simple autoparam

Importance of Good Stats

  • Good Stats (leads to)
  • Good Estimates (leads to)
  • Good Plans (leads to)
  • Good query performance

Demo

  • What happens when QO has to guess selectivity?
  • For ad hoc queries, don’t use local variables, use static values
  • For procs, parameters are fine.

Best Practices for Managing Query Plan

  • Use AutoStats!
    • On by default
      • “no stats” causes bad plans
      • It is right much more often than it is wrong
    • If you must turn it off, don’t turn it off for whole DB
      • Selectively disable it for certain columns or tables
    • Watch out for read-only DB preventing auto-create/update of stats
  • Use FULLSCAN if Needed
    • Full scan gives best-quality histograms
    • Hard to determine what % is ideal, so just use FULLSCAN to eliminate sampling rate as a potential problem
    • You can usually afford the time to do FULLSCAN during your nightly batch window
    • FULLSCAN stats are gathered in parallel
  • Avoid Use of Local Variables in Queries
  • Avoid Updating SP Parameters Prior to Using It in a Query
    • Stored proc and all queries in it are complied with the parameter values 1st passed to it – parameter sniffing
  • Avoid Using a Function with Column Input in a Predicate
  • Avoid Use of Multi-statement TVFS and Table Variables in Plan-sensitive Queries

(here my battery died)

Friday, July 6, 2007

.NET User Group meeting 4 Jul 2007

What’s new in VB9

  • Philip Cox
  • Senior Developer
  • Trade Me Ltd

http://www.ribboncustomizer.com/

  • RCWOUG1
  • 15% discount until 19 July

Brief history

  • 1991 – Microsoft VB1 for Windows
  • 1998 – VB6
    • Easy to learn and use
    • Quick to create Windows GUI applications
    • Get’s picked on by lower level languages
  • 2002 – VB7
    • .Net 1.0
    • Garbage collection, structured error handling…
    • All the tools of the.net framework
    • Get’s picked on by C#
  • 2003 – VB 7.1
  • 2005 – VB 8
    • Edit and Continue
    • The My namespace
    • Generics
    • And more…

Implicitly Typed Local Variables

  • E.g “Dim memberId = 31719”
  • A switchable option

Object Initializers

  • Set properties of an object at the time of instantiating the object
  • Uses WITH

Collection Initializers

  • Dim x = {2, 4 ,5, 7}

Extension Methods

  • <Extension()> Function name(value as objectType) as outputType… End Function
  • Extends the object type (e.g. string)

Lambda Expressions

  • Not in Orcas Beta1 for VB
  • Is there for C#
  • Pointers to functions

Anonymous Methods (C#2.0)

  • The old way of doing Lambda Expressions
  • Take an object and return a function of that object
  • E.g. CalcLength lengthFunction = t => t.Length;
  • Console.WriteLine(“{0}”, lengthFunction(“Hi!”));

Anonymous Types

  • Var anon = new { firstName=”Phil”, LastName=”Cox”};
  • Dim anonymousType = New With (.FirstName=”Phil”, .LastName=”Cox”}

Deep XML Support

  • (C# does have)
  • Dim xml = _
    • <?xml versoin =”1.0”?>
    • <CoolNewFeatures name=”Nullabletype”>
  • Not in Orcas Beta1

LINQ (Language Integrated Query)

  • LINQ To Objects
  • LINQ Enabled ADO.net
    • LINQ To datasets
    • LINQ To SQL
    • LINQ To entities
  • LINQ to XML
    • FROM first (for IntelliSense)
    • WHERE <% entity.attribute %>
    • SELECT <xml>
  • LINQ to Objects too

Nullable Types

  • Not in Orcas Beta1 for VB
  • Int? nullableInt;
  • If(nullableInt == null) {}
  • Int I =

Relaxed Delegates

  • (only in VB)
  • AddHandler button1.Click, AddressOf clickEvent
  • Private Sub ClickEvent() ‘No need to specify arguments

Partial Methods

  • Not in Orcas Beta1 for VB
  • Can redefine methods in same class
  • Must be sub (or void) because sometimes it will return a value and other times it won’t
  • Can only be one stub and one implementation
  • If more than one implementation, compile error

Automatic Properties

  • Not in VB at all
  • Public class Person {
  • Public string FirstName {get; set;}
  • Public string LastName { get; set; }
  • Public int Age (get; set; }
  • }

And more!

  • Turnery “If”
  • Coalesce operator
  • Improved IntelliSense
  • “My” extensions
  • And more…

What’s new in C# 3.0

  • Kirk Jackson
  • Senior Developer
  • Xero

Agenda

  • A brief history
  • What’s new
  • Questions

Brief history

  • Pre 2000 – Other programming languages ruled the world
  • June 2000 – C# Announced at PDC
    • Beta version released
    • No comparisons to Java are made
    • ECMA Standardisation
  • 2001 – Mono C#
  • 2002 – Wellington .NET User Group
  • 2003 – VS .NET 2003
  • 2005 – VS .Net 2005
  • 2006 - .NET Framework 3.0
  • 2008 – C#3.0

Questions

  • Is it time to switch back to VB? That XML stuff looks pretty good.
  • Personally can’t see any difference/reason to change
  • Do C# developers get paid more?
    • There is prejudice against VB
    • However, there is a shortage of VB
    • Perhaps C# developers come from a Comp Sci (academic) background
    • Perhaps VB developers come from a Comm (business) background
    • Perhaps managers get paid more?

Friday, June 8, 2007

Stuff Chris Auld Saw @ MIX07

Chris JT Auld
Director – Strategy and Innovation
Intergen

Stuff I Saw @ MIX07 – A 72 Hour Conversation

http://www.visitmix.com/

What is MIX?

  • Annual Microsoft Conference for Web/Design types
  • Held in Las Vegas
  • About 1500 attendees
  • Very MIXed crowd
    • Lots of stuff targeted at business decision makers
    • Lots of design oriented stuff – plenty of Mac users
    • Good showing from other platforms – PHP, ruby, etc.
  • IMHO: My favourite Ms conference

What about this session?

  • A whistle stop tour
  • A bit on each session
  • SilverLight
  • Live Services
  • Decision Maker Stuff

SilverLight

  • Re-badge WPF/E
  • Flash killer
  • A few things
    • WPF for the Browser
    • Cross Platform Runtime
    • A Great Video Platform
    • 1.0 in Go Live Beta
    • 1.1 in Alpha (has .Net support etc)

WPF for the browser?

  • Originally WPF/E
  • XML based vector mark-up language
  • Subset of WPF for the desktop
  • Lightweight Plug-in <2MB download
  • Full CLR (not Compact Framework)
  • Chopped down Framework libraries
  • Runs in IE, Firefox, Safari
  • Supported Languages (at 1.1 launch) = C#, Dynamic VB, IronRuby, IronPython, JavaScript
  • Cross Browser Debugging… Cross Platform Too!

Better Than JavaScript?

  • From 1.1 Use Managed Code with DHTML DOM
  • Can consume JSON web services – no SOAP yet L
    • Custom slwsdl.exe proxy generator
  • Isolated Storage
    • Up to 1MB of storage on client side (1 per XAML file)
    • Shared between browsers
    • Similar to .Net Isolated Storage classes
  • DLR
    • Currently IronPython + JavaScript
    • Ruby and Dynamic VB Coming

A Great Video Platform?

  • Self-contained media playback
  • Customizable transport controls
  • Non-rectangular, semi-transparent video with overlays
  • Windows Media Services support
    • Live and on demand streaming
  • Media markers / script commands
  • ASX Playlist support
  • Closed captioning support with Expression Media Encoder
  • Bandwidth throttling with IIS 7.0
  • Local file playback (Coming)
  • Content protection (Coming)
  • Alpha video (Coming)

SilverLight Media Formats

  • The following file formats are accepted by the MediaElement (regardless of the file extension):
    • Video: WMV v7, v8, v9, VC-1
    • Audio: WMA v7, 8, 9 (standard)

Demos

  • SilverLight Chess
  • SilverLight Airlines
  • SilverLight Fox

Windows Live Web Services @ MIX

  • Add contacts, video, photos, maps and search to your site
  • Service APIs
    • (REST) SilverLight Streaming
    • (WebDAV) Spaces Photo
    • (REST) Live contacts
    • (SOAP) Virtual Earth
    • (SOAP) Live Search
    • (HTTP/SOAP) Authentication

Windows Live Contacts

  • Shared Contact Store
  • 500 Million address books
  • 263 Million Messenger Users
  • Possible Scenarios
    • Friend Locator
    • Buying
    • Calendar
    • Trust
    • Burrowing

Windows Live Contacts REST API

  • Code Sample and Response
  • Method Call example – GET
    • /livecontacts/Contacts/contact(x)/emails/Email(y)/Address
  • Response
    • <Address>some@where.com</Address>

Other Good Sessions

  • PAN01 great User Experiences for Ad-Supported Content
  • PAN11 Services on the Web: build or Buy
  • PAN05 – Open Source Applications using the .Net Platform
  • DEV12 – The Megasite: Infrastructure for Internet Sites
  • http://silverlight.metaliq.com/topbanana/

Tuesday, May 22, 2007

Microsoft Spatial - Hot off the Press!

Microsoft Spatial – Hot off the Press

From the SQL Server User Group Meeting - Thursday 17 May



Microsoft Spatial – Hot off the Press!

  • SQL Server Spatial & Virtual Earth
  • SQL Server User Group
  • May 2007
  • “Matty” from e-Spatial

Introduction – e-Spatial

· NZ’s premier location intelligence specialists

· True integrators:

§ Mapping engine

  • Address specialist
  • E-Government specialists

Introduction – Where is the Industry Now?

· Spatial has reached the mainstream

· Spatial databases and data warehouses – all vendors support them, or do they?

· AJAX mash-ups are everywhere – international solutions as well as local, but how to make money from them?

· Location Intelligence – a natural extension to Business Intelligence. SQL Server Spatial was announced at the Seattle BI conference last week

· Image and vector – two types of spatial data

· 2D, 3D (Z) and 4D(M) – use of multi-dimensional data

· Various spatial standards now in use

Spatial in SQL Server – Standards

· Support for several OGC Specifications

§ Geometry data type will comply with Simple Features for SQL

§ Can store Geography Markup Language (GML) in SQL Sever with existing XML data type

§ Can use Well-Known text and Well-Known Binary (WKT, WKB) for data transfer and access

· Other OGC standards

§ Styled Layer Descriptor

§ Web Feature Services (WFS)

§ Web Map Service (WMS)


Spatial in the database

  • Spatial objects
    • Points – point(X,Y)
    • (Multi) lines – line (point (x1, y1), point(x2, y2),)
    • (Multi) polygons – polygon (line (…), line (…),)
  • Geometry data type
    • Object definition (using points, lines and polygons) and type
    • Geometry collections
    • Project and datum
    • Default style (colour, thickness, pattern)
  • Spatial indexing – R-tree or Quad-tree (or Bi-tree)
    • SQL Server Spatial will use a 4-stage grid (like Quad-tree)
  • Spatial functions – intersects, touches, centroid (100+)…
  • XY Layers

Spatial in the database

  • This example map includes:
    • Properties
    • Address
    • Street
    • Postcode
  • Database tables would be:
    • Properties (100)
    • Address (80)
    • Street (20)
    • Postcode (1)
  • Relational data model:
    • Very complicated
  • Relational spatial can be complicated (overlaps) as typically 50+ layers in a map!

Spatial in SQL Server

  • SQL example: “In postcode 4102 show all properties with addresses on Van Asch Road”
  • No need to define many-to-many relationship tables, nor foreign-key links
  • Data maintenance much easier
  • Most line-to-point relationships are not spatial (point is not usually on a line), but a spatial relationship can be achieved using a buffer
  • SQL example: “Show all properties within 10 metres of Van Asch Road”
  • The buffer query applied a 10m buffer to the whole Van Asch Road
  • Buffer example – now included the area of the property
  • SQL example: “Show all properties and their area in square metres within 10 metres of Van Asch Road”
  • The returned properties are also ordered by largest area
  • We could continue – for example to do an intersect from the properties to surrounding properties (hazardous substance burning on the road)
  • Large fire (200m radius) on a given property
  • Let’s find its nearest neighbours

Uploading spatial data – Overview

  • Option 1: use data uploaded (“ETL”) facilities from external mapping vendors
    • Safe Software FME – will support uploading data in almost all formats
    • MapInfo EasyLoader – will support uploading MapInfo and some other major spatial formats
    • ESRI ArcGIS – will support uploading ESRI format
    • Freeware and Open Source upload plug-ins
  • Option 2: use Microsoft SSIS (Integration Services) to upload with WKT or WKB
    • Lots of methods/functions in SL Spatial to migrate spatial data
  • Option 3: create SQL to insert all data

Option 2: Upload spatial data with SSIS

  • SQL Server Spatial supports the OGC (Open Geospatial consortium) standards WKT and WKB for import/export
  • Also support importing and exporting OGC GML data
  • Most spatial data vendors and databases support these standards, allowing upload of their spatial data
  • Example: Create SpatialTable and populate it with ID, GeomText (WKT format) and null Geometry:
    • CREATE TABLE SpatialTable (id INT IDENTITY (1,1), Geometry geometry, GeomText as VARCHAR(2000));
  • Update the geometry with a spatial function:
    • Update SpatialTable ST set ST.GEOMETRY = ST.GEOMETRY.STGEOMFFROMTEXT(ST.GEOMETRY)

Accessing spatial data:

  • SQL Server Spatial does not include a map viewer!
  • Fast Access: use a mapping engine with off-the-shelf access
  • Slower Access: build your down data provider using WKT or WKB
  • Web services: several examples available for building web services interfaces between spatial data base and mapping engine

Image and vector data

  • As defined previously, vector data stores all points for spatial objects point, line or polygon)
  • Image data is stored as tiles, so only the lower-left and upper-right XY pair need to be recorded
  • In NZ we often use metre-based coordinate systems (projects) – NZTM or NZMG

Examples, Blogs and Announcements

Thursday, May 17, 2007

Minutes of Workgroup Solutions Team Day

WST Team Day

Tuesday 15 May 2007

Round Table - All

  • Application Linker
    • Could be turned into a Vista Gadget?
  • Working together
    • Can Tim help me with UPC?

Server Migration – David Bulog

  • Budget $350K
    • 5 new boxes = “blade” servers
    • 3 old boxes = DR
  • Can DR servers be set up with Replication?
    • No they can’t
    • Not allowed to be hot-swappable
    • Budget constraint
  • Windows Server 2003
    • Is IIS6 standard?
    • Is IIS7 a Service Pack upgrade?
  • Move DTS package from PROD to SSIS on DEV (can still push to PROD).
    • Send to Dave?

Word from the Top – Murray Mitchell

  • Structural Changes
    • Wellington App Dev Manager role happening “soon” (2 weeks)
    • Capability (training) Manager also happening tomorrow
    • Identity and Access Management – Meta-directory (Novell product) project to maintain/synchronise identities. Now Sun product is option (Novell difficult to engage).
    • Peter Hill – service response reporting.
  • Operating Model Reviews
    • PROBE – major problems
    • Meta-space
    • Mobile Devices
  • Operational Separation
    • Is immanent
    • SAP teams will be hit hard
    • Has implications for our work for Wholesale
    • Shared Capability will remain as an entity with clear rules of engagement
  • Engagement scores
    • Completed
    • To be released soon after analysis
  • Very dependable team
    • no red flags
    • no head count issues
    • recruitment drive in the market generating considerable interest = 200 applications

WST Issues - Mike Owen

  • Training – will be approved on a case-by-case basis
  • Separation – will need to stay aware
  • Tech Mahindra – will make ourselves available to assist them to assist us by explaining our needs for contract resources.
  • Performance Reviews

Team Standards – Norman Close

  • Database – Norman will create a document
  • ASP.NET – James will create a document
  • CMM – Team will not attempt to obtain an objective measure of standards, but will adhere to Best Practices as/when they become known

(Break for lunch)

New Stuff – Megha Barpande

  • Use of Empty Data Template to present Details View embedded in Grid View
  • Use of 3-tier – difficult to understand initially, but now very easy to implement and maintain.
  • Grid View (design mode) will not show Enable Editing option, if the underlying Object Data Source doesn’t allow editing.
  • Themes – for consistent look and feel

New Stuff – James

  • SQL Migration Scripts
  • Master Pages
  • Forms Authentication & Authorisation
  • Site Map, Site Navigation & Bread crumbs

Tuesday, May 8, 2007

MSD2D .NET Newsletter

I really liked this one… especially the “Today in History”!

I also tried the Orcas download (all 1.1 GB of it) - I got Windows Server 2003, but no Visual Studio!

April 27, 2007

Today in History

April 27, 4977 BC - Universe is created, according to Kepler

On this day in 4977 B.C., the universe is created, according to German mathematician and astronomer Johannes Kepler, considered a founder of modern science. Kepler is best known for his theories explaining the motion of planets.

Kepler was born on December 27, 1571, in Weil der Stadt, Germany. As a university student, he studied the Polish astroner Nicolaus Copernicus' theories of planetary ordering. Copernicus (1473-1543) believed that the sun, not the earth, was the center of the solar system, a theory that contradicted the prevailing view of the era that the sun revolved around the earth.

Read more...

Current Technology News

Extending Visual Studio
If you’re interested in building extensions for Microsoft Visual Studio (VS), then you should check out the Visual Studio SDK blog. A developer is posting a diary with deep technical information as he attempts to build VS extensions.

Enterprise SOA: Cool, Sexy and So-o-o Doomed!
In his "Enterprise SOA: cool, sexy and so-o-o doomed!" blog, Robin Harris gives his prognosis for Service Oriented Architecture (SOA). You have to love his quote, “Just as Object Oriented Programming failed to make reusable code work, the idea that generic 'services' will be reusable is just as unproven. OOP code reuse failed because code contains implicit assumptions that other applications didn’t share. Are services really so different?”

No, in that way, they’re not different at all. Just like OOP produced lots of libraries that were useful to a single application, SOA will produce services that are useful to a single application. It’s impossible to think generic when you’re dealing with one specific problem. That said, OOP was, and is, used all over the place because it reduces complexity for individual developers. Services offer the same benefit.

How Software Is Built
One project that I’m involved in delves into how the production of closed-source software differs from the production of open-source software and how those differences manifest themselves in the final product. If you live in either camp, check out http://briefing.mydotnetpro.com/t?r=54&c=22802&l=5031&ctl=540DC:83501A53948693B0B5781E3B464CDAB72E6AE64CBF1B101C and weigh in with your own thoughts.

Does Everyone Really Hate Making Desktop Apps?
A series of posts on the NeoSmart Files Web site explore the question, "Does everyone really hate making desktop apps?" I don’t know—desktop development is still a big percentage of what I do. I think many people conflate the “death of the desktop” with the “death of Microsoft” and gleefully wish that desktop apps would just vanish. Still, I find myself running Microsoft Word, Microsoft Excel, Microsoft Outlook, Intuit QuickBooks, Microsoft Money, Adobe Acrobat, etc. At the end of the day, desktop apps are easier to write and harder to deploy. No matter how easy Asynchronous JavaScript and XML (Ajax) makes Web apps to write and no matter how easy ClickOnce makes d esktop applications to deploy, that fact isn’t going to change.

Yet Another Repository for Broken, Undocumented, “Hello World” Web Services
Welcome to the Microsoft Connected Services Sandbox. It’s just like XMethods, but Microsoft has added a whopping 300 percent more buzzwords. Despite the fact that in 10 minutes tinkering, I couldn’t get any of the services to actually work, I’m certain that some whiz kid l33t technosexual would be able to build a Web 2.0 Ajax fronted and SOA powered restful and zestful mashup so RAD, agile, and TDD that your startup CEO would yell WTF and launch an immediate IPO.

Hey Microsoft, now that you’ve crossed this off your list, maybe you could “invent” an octagon shape that somewhat rolls and brand it The Wheel™.

.ANI-one Know What’s Wrong with My Computer?
In case you haven’t heard, there’s a vulnerability in just about every version of Windows that allows your computer to be compromised by a Web site’s animated cursor (.ani) files. The patch is available here.

Future Technology News

A View of the .NET Road Map
In an interview, Prashant Sridharan walks through plans for the upcoming Orcas Visual Studio release. It sounds like some of the big features are Language Integrated Query (LINQ) and new tools for testers. (It’s about time.)

Kick the Tires of the March Orcas CTP Without Trashing Your Machine
Microsoft has a new Community Technology Preview (CTP) of its next development environment, and you don’t have to trash your machine to try it out. Instead, you can download a free preconfigured Virtual PC image (4.5GB) and take it for a test drive. To run the image, you need to install Microsoft Virtual PC 2007, which is also free and weighs in at a mere 30MB.

Spring Update for Xbox 360 Brings Even More PC Features
According to Brando, during the week of May 7 the Xbox 360 will be getting expanded IM, a better Live Marketplace, and a controller with a full QWERTY keyboard.

Send news, tips, and names of other billionaires who should be exiled to space to Scott Swigart.

MSD2D a division of Penton Media, Inc.
1300 E. 9th Street
Cleveland, OH 44114

Friday, May 4, 2007

.NET User Group May Meeting - Nblogr

Ivan Porto Carrero

  • Senior developer
  • Xero
  • Creator of Nblogr

What is Nblogr?

  • Blogging Engine
  • Base library for other projects
  • My experimental project
  • Extensible
  • Showcase for technologies
  • Decided to actually go through making it a proper application because of people asking me for it.

Why another blogging engine?

  • Underestimated the work involved.
  • Used to be my experimental project / Facing fears
  • None of the blogging engines do what I want them to do at the time I started the project.
  • Exploring open source
  • Contributing to the community
  • There is no community blogging platform built on .Net
  • Base for a range of other applications that are based on blogging technology (CMS, forum, wiki, …)

Which technologies?

  • Base4 (http://www.base4.net)
    • Base4 takes care of the O/R mapping
    • Base4 is a lot more than just an O/R mapper
  • Castle (http://www.castleproject.org)
    • MVC framework a la Ruby on rails
    • Contributed to the project myself (minor patches)
  • Prototype (can be replaced)
  • .NET framework (the best framework for programming)

Base4 brush-up

  • Services layer over your database
  • Good layer of abstraction of my data
  • Objects instead of database schema.
  • Seamless setup experience
  • Supports migrations

Castle introduction

  • Castle mission statement: to provide a simple set of tools to speed up the development of common enterprise and web applications while promoting good architecture.
  • MVC framework
    • Promotes separation of concerns
    • Basic castle setup would be
      • Models => Castle provides ActiveRecord through Nhibernate
      • Views => Castle provides multiple view engines (aspx/webforms, nvelocity, brail, …) (rendering engine)
      • Controller => the director of the application. Delegates input to services. And sends the output to the views.
    • Castle provides Inversion Of Control which makes your application a lot more flexible.

Nblogr architecture

  • Views & JavaScript
  • Controllers
  • Service Layer
  • Base data object
  • ASP.NET App Svc & Logging & Output compression module
  • Base4 server/client
  • Castle facilities for Base4
  • SQL Server 2005

Architecture

  • Membership provider
  • More logging
  • Output compression
  • Initialisation of mapping service
  • DataObject
    • Generalisation works well
    • Abstract service works as DAO
  • Services Layer
    • Do the actual work
    • 1 class, 1 responsibility
    • 1 method, 1 task
  • Controller
    • Common functionality in base classes
    • Receive input from request
    • Dispatch to services
    • Output results to view
  • View
    • Render results
    • A view is a representation of data

Status / Roadmap

  • Current status = Alpha
  • Roadmap
    • Multi user management
    • OpenID and CardSpace
    • Themes

HELP!!!

Wednesday, April 25, 2007

txtsurvey.co.nz

From: Darryl
Sent: Thursday, 19 April 2007 10:13 p.m.
To: James Hippolite
Subject: txtsurvey.co.nz

Hey dude,
I know you have kids, but I dont know what ages they are. Regardless, you might be able to fill in a survey for me on the topic of text bullying.
I'm trying to figure out what the size of the problem is and whether an idea I have will resolve it.
If you know anyone who has kids with mobile phones, could you please pass this on and ask them to fill in the survey too? I'm aiming for 1000 responses.
Thanks for your help!
Kind Regards
Darryl

Tuesday, April 24, 2007

Minutes from SQL Server Users Group Meeting

Patrick Okeefee Patrick.okeeffe@quest.com

Product Architect for Quest Software’s spotlight on SQL Server product family

What problem are we trying to solve?

We are trying to get the best performance and the most efficiency from SQL Server

We are in this situation because…

  • Reactive – resource contention (CPU, I/O) is cause problem right now
  • Proactive – Aim I getting the best efficient from my workload? Will my application scale?

A SQL Server that is idle has no performance problems.

It is only when it executes the SQL in your application (or workload) that problems manifest.

Only by understanding how your application…

Where do I start?

In order to solve this problem we need a simple set of steps to follow:

  • Optimise application demand
  • Minimise logical I/O
  • Optimise physical IO (lather, rinse and repeat)

Most “bang for the buck” effort-wise is to be found in the first two steps. Then, iterate.

Within each of the three steps, there are three practical steps that can be taken…

  1. identify bottlenecks
  2. find the workload that is causing the bottleneck
  3. fix the bottleneck

How do you find the bottlenecks?

  1. customer phones; or
  2. monitoring is better

What kind of bottlenecks should I be looking for?

What data do I collect?

  • Advice like the following free on the internet – “if counter x says y it means you have memory pressure so you should add more memory”
  • It’s worth what you paid for it…
  • Counters, states etc. are a means to an end – what you really care about is how your workload …

Do I have a CPU bottleneck?

  • Performance Counters
  • Signal waits > 25% total waits
  • 2000 – dbcc sqlperf

What is a wait?

  • In a multithreaded server (like SQL Server), data flows from one subsystem to another and resources like disk, memory and CPU are shared.
  • When one worker thread (the one that is processing some user’s SQL) wants to access some shared resource, other threads have to wait.
  • Signal wait occurs when a thread has been granted access to the resource it was waiting on and is now waiting for CPU time.

CPU bottleneck Cause #1

  • Query Execution
  • We need the Top 5 CPU Consumers on the server
  • On SQL 2000 use a profile trace or a delta on …
  • On SQL 2005 query sys.dm_exec_query-stats cross apply sys.dm_exec_sql_text(qs.sql_handle)

CPU Bottleneck Cause #2

  • Low Plan Reuse
  • (Batch Requests – SQL Compilations) / Batch Requests
  • Hard to pin down specifically – more a general problem. Need to:
    • Look at how end users are submitting queries
    • Look for applications not using prepared statements (code snippets online set bad examples)
  • Excessive Recompilation (SQL Server 2005)

Memory bottlenecks

  • Assuming SQL Server is not starved of physical memory (i.e. no swapping), and we are re-using plans – from an application viewpoint, we are mostly interested in buffer cache behaviour
  • In OLTP applications, buffer cache bottlenecks are closely related to IO bottlenecks
  • Buffer Manager/Page Life Expectancy > 300 seconds is good

Memory Bottlenecks

Finding the top objects in the buffer cache

  • On SQL 2000 query syscacheobjects
  • On SQL 2005 query sys.dm_os_buffer_descriptors

IO Bottlenecks

  • Physical Disk Performance Counters
    • Avg. Disk Queue Length, Avg. Disk Sec/Read etc
    • Don’t forget to adjust for RAID
  • PAGEIOLATCH_* waits
    • 2000 – dbcc sqlperf(waitstats)
    • 2005 – select * from sys.dm_os_wait_stats

IO Bottleneck Cause #1 – Query Execution

We need the Top 5 IO Consumers on the server:

  • On SQL 2000 use a profiler trace – store results to a database table and query
    • (Looking for workload that does large average numbers of logical reads).
  • On SQL 2005 use sys.dm_exec_query_status
    • Look for queries with high average IO
    • this means this query is reading lots of rows
    • Ask the question – is this required?
  • Us equerries on sys.dm_dbindex_operational_stats to identify indexes that when read, required a physical IO
  • You can then XPath queries on sys.dm_exec_cached_plans to find workload using those indexes

Lock (and other) Contention

  • Contention usually manifests as blocking
  • Two common types
    • Environment related (waiting on WRITELOG or PAGEIOLATCH_* for example)
    • Application related (waiting on LCK_M_U for example)
  • Detecting blocking
    • On SQL 2000 use a query on the sysprocesses table to find spids that are blocked
    • On SQL 2005 use sys.dm_os_waiting_tasks
  • Patterns to look for
    • Single long wait
    • Large number of waits on single resource – “hotspot”
    • Large numbers of waits on large numbers of resources
    • All of the above chained together

Takeaways

  • Spotlight on SQL Server encapsulates all we talked about today…
  • Dashboard monitoring application

Minutes from MS Architects Forum

The Aspiring Architect

Content Management and Search Gadgets

Daryl Chantry
Architect
Architecture Strategy Team (Redmond)

Thursday 19 April 2007

Microsoft Wellington, Level 12 Mobil on the Quay

Glossary

FY08 begins 1 July 2007

Skills, Knowledge & Desire

What we will discuss

  • What is Architecture?
  • What is an Architect?
  • Architect Roles
  • Architect Levels
  • Becoming a certified Architect
  • Tools for Training
    • Skyscrapr.net
    • Gadgets
    • Community Content

What is Architecture?

  • Architecture is the art and science of designing buildings and structures
  • The inclusion of aesthetic principles distinguishes architecture from applied science or engineering, which usually concentrate more on the functional and feasibility aspects of a design, rather than the user experience.

What is an Architect?

  • The illiterate of the 21st Century are not those that cannot read or write. They are those that can not learn, unlearn, and relearn. – Alvin Toffler
  • Virtual Scenario
    • Individual
    • Company
    • Customer

Architect Roles

  • Enterprise
  • Infrastructure
    • Physical Network
    • Security
    • Storage
    • Network OS
    • Application Platform
    • etc
  • Solutions
    • Integration
    • Work Flow
    • Application
    • Purchased Applications
    • etc

Architect Levels

  • Aspiring
  • Associate
  • Microsoft Certified
    • Solutions
    • Infrastructure
    • Messaging

Becoming an Architect – Training Problem

  • Solution Architect (a to z)
  • Infrastructure (same)
  • E.g. Deployment of components requires a base understanding of network and server deployment.

Associate Architect

  • Architectural Concepts and Process
    • What is software/infrastructure architecture
    • Patterns, frameworks, methodologies
    • Te architecture process
  • Non functional Architecture
    • Scalability, Performance, Security, Resiliency, Failure Prevention
  • Functional Architecture
    • Architectural Patterns, Integration patterns, Data patterns
  • Specific Topics solution / Infrastructure
  • Business Technology Strategy
  • Communication, Leadership, and Organizational Dynamics

MCA Certification

  • Create a certification that assures our customer an MCA:
    • Is a successful, practicing architect
    • Can speak the language of business, architecture, and technology
    • Can provide predictability to IT and success on IT projects
    • Takes a vendor neutral stance to creating architecture

MCA Practicing Architect

  • Have driven projects through the IT lifecycle
  • Complex projects – multiple points of integration, multiple technologies
  • Large Projects
    • Enterprise impact
    • Strategic to the organisation

MCA Multilingual

  • Can speak the language of business
    • Translate business problem to technical solution
    • etc

MCA Predictable Results

  • Know where you fit into an enterprise framework and how to leverage it (TOGAF, Zachman, etc.)
  • Know and employ methodologies to drive your project through the lifecycle (MSF, XP, Scrum, Waterfall, RUP)
  • Leverage patterns
  • Know operational frameworks, how to provision for multiple management tools, train users, helpdesk

MCA Trusted Advisor

  • Identify the existing environment
    • What’s there; what can be leveraged
  • Identify the business requirements and goals
    • Business advantage? Migrate? Green field?
  • Identify…

MCA Candidate Commitment

  • Six months
  • AU$10,000

Tools – Community Content

Authoring and Content Management Processes

  • Flexible Content Management Framework
    • Document Storage, Authoring, Approval, Publishing
    • Close integration with Office Applications
  • Powerful Content Management Workflows
    • Built-in workflows
    • SharePoint Designer workflows
    • Visual Studio workflows

Skyscrapr.net

  • All Aspiring Architect content
  • Articles expire – must be maintained

Windows Vista – Gadgets

  • Mini Applications
    • Easy to use
    • Information at a glance
    • Simple to develop and customize

Gadget Deployment

  • Individual
  • Partner System
  • Customer System
  • Microsoft Content Management System

MS architect Forum Wellington, Thurs 19 April at 4:00pm

From: Mark Carroll (NZ)

Sent: Wednesday, April 18, 2007 11:18 PM
To: Mark Carroll (NZ)
Subject: MS architect Forum Wellington, Thurs 19 April at 4:00pm

Hi,

Thank you for your RSVP for attending this session.

Details from the invitation are reproduced below for your convenience.

See you at 4:pm.

Cheers

Venue Details:

When is the Event: 4:00pm Thursday 19 April 2007

Where is the Event: Microsoft’s Wellington offices, Mana Room - Level 12 Vodafone on the Park (formerly Mobil House), 157 Lambton Quay (the building behind Midland Park)

Background: When Ron Jacob’s came to NZ last December he created a lot of interest around the ‘Aspiring architect’s’ programme. In this architect forum we continue on with that theme with Darryl Chantry and we also want you stay around for some refreshments afterwards to talk about the Architect’s programme we have been running in NZ for the last three years. We want to get your feedback and insights into the kind of architect community and resources that can really make a difference and add value to both your organisation’s goals and your own personal career goals.

Part 1: Darryl Chantry on the Microsoft Aspiring Architect’s Program

At Microsoft we see aspiring architects as being developers, business analysts, or other IT professionals who want to learn more about architecture.

Some of the questions we get asked include:

1. What is architecture?

2. What does an architect do?

3. How do I become an architect?

4. Why would I want to be an architect?

5. What other architects are out there? (Who should I be following?)

6. Where should I be reading about architecture?

The Aspiring Architects have received little attention by the IT Industry, which has lead to a substantial shortfall in information this group can use for career development and growth. Given the lack of information currently available in the industry the Aspiring Architect Program has been created to address this issue.

In this presentation we will be discussing the questions listed above and looking at the tools and resources Microsoft will be making available to the aspiring architect. This talk will not only be for those wishing to become architects but also for anyone interested in training people to become architects. The presentation will also provide an opportunity for the attendees to talk over specific issues they may have in finding information relevant for the Aspiring Architect and to provide feedback and suggestions on what they would like to see included in future revisions of the Aspiring Architect’s program.

Part 2 (Over refreshments) Mark Carroll & Darryl Chantry on the NZ Microsoft Architect’s Program.

For the last three years we have been running architect events, including forums such as this, on a regular basis. The numbers attending these events have steadily risen over time in Auckland, Wellington and Christchurch. Over the same period we believe that the resources in terms of best practices guidance and experiences shared by others available from both NZ sources and internationally have increased dramatically. We are looking for your opinions and suggestions on what we currently do that works and what could be made to work better. This is an interactive forum and we would like you to bring along your opinions and preferences.

About the Presenters:

Darryl Chantry.

Darryl joined Microsoft in 2002 as the Architect for the New Zealand Development platform and Strategy group, primarily working in the public sector. During his time in New Zealand, Darryl played a key role in helping customers understand architects, and architecture, and highlighting the importance of both within the enterprise. In 2004 Darryl moved to Microsoft Australia as an Architect working predominantly in the communications sector. In Australia Darryl worked as an Enterprise, Solutions, and Infrastructure Architect and subsequently has developed a broad skill set as an Architect. Darryl moved to Microsoft Redmond in January of 2007 with his wife Melanie and their two Burmese cats Kito and Hoshi. Darryl’s new role within Microsoft is building a global Aspiring Architect program (AsAP) to provide guidance and assistance for anyone wishing to explore a career as an IT Architect.

Mark Carroll.

I have been the Architect for the New Zealand Development platform and Strategy group since pretty much when Darryl left for Australia in 2004 after my incessant barbing about North Harbour’s performance in the Super12. Most of you already know me from Microsoft and wider industry events usually focused on architecture or my other pet passion application lifecycle management. Another passion of mine (besides Architecture, Application Life cycle management and Rugby Union) is making sure that NZ architects and those folk who wish to become one get a fair go even if we live at the bottom of the South Pacific. That’s why we need a ‘world class’ architect community with ‘world class content’ and ‘world class’ candidates to keep architecture alive and vibrant here. Your feedback and comments will help maintain and develop both the architect community and our content. So bring yourself and bring your aspiring architects !

The forum will last for approximately one and a half hours.

Event interest rating:

Infrastructure Architects ****

Solutions Architects ****

Senior Developers and Team leaders ****

Enterprise & Strategic architects ****

The forum will last for approximately one and a half hours.

Event interest rating:

Infrastructure Architects ***

Solutions Architects ***

Senior Developers and Team leaders ***

Enterprise & Strategic architects ***

Mark Carroll Architect Developer & Platform Strategy Group Microsoft New Zealand Ltd

DDI: +64-4-8164017 MOB: +64-21-762-525 Fax: +64-4-473-2676 Blog: http://blogs.msdn.com/MarkCarroll

> The Microsoft Architecture Resource Centre – www.microsoft.com/architecture

> 20% Discount off Visual Studio Team Suite* - www.microsoft.co.nz/visualstudio

> Register today for Microsoft Tech.Ed 2007 in Auckland – (www.microsoft.co.nz/teched)

Thursday, April 19, 2007

Passed Exam 70-528

  • After failure to pass exam 70-551: UPGRADE MCAD Skills to MCPD Web Developer by Using the Microsoft .NET Framework (which incorporates all three exams 70-528, 70-536 & 70-547) on Thursday, 8 February 2007.
  • Sat and passed exam 70-528: Technology Specialist Microsoft .NET Framework 2.0 - Web-Based Client Development on Wednesday 18 April 2007.
  • 45 questions
  • Passing Score: 700 (out of 1000)
  • My Score: 735
  • Sectional Results:
    1. Creating and Programming a Web Application (estimate 75%)
    2. Integrating Data in a Web Application by Using ADO.NET, XML, and Data-Bound Controls (est. 50%)
    3. Creating Custom Web Controls (est. 70%)
    4. Tracing, Configuring, and Deploying Applications (50%)
    5. Customizing and Personalizing a Web Application (est. 80%)
    6. Implementing Authentication and Authorization (est. 75%)
    7. Creating ASP.NET Mobile Web Applications (100%)
  • This exam was substantially harder than I was lead to believe by the MeasureUp Practice tests.
  • Two down, three to go:
    • 70-536 + 70-528 together give me a Technology Specialist (Web Developer) Cert.
    • 70-547 to complete the Professional Developer cert
    • 70-431 to gain me a Technology Specialist (SQL Server 2005) cert
    • 70-447 to upgrade my SQL DBA to MCITP: DBA
  • Friday, April 13, 2007

    Passed Exam 70-536

    • After failure to pass exam 70-551: UPGRADE MCAD Skills to MCPD Web Developer by Using the Microsoft .NET Framework (which incorporates all three exams 70-528, 70-536 & 70-547) on Thursday, 8 February 2007.
    • Sat and passed exam 70-536: Technology Specialist Microsoft .NET Framework 2.0 - Application Development Foundation on Wednesday 11 April 2007.
    • 45 questions
    • Passing Score: 700 (out of 1000)
    • My Score: 824
    • Sectional Results:
    1. Developing applications that use system types and applications (estimate 55%)
    2. Implementing service processes, threading, and application domains in a .NET Framework application (est. 75%)
    3. Embedding configuration, diagnostic, management, and installation features into a .NET Framework application (est. 60%)
    4. Implementing serialisation and input/output functionality in a .NET Framework application (100%)
    5. Improving the securityof .NET Framework applications by using the .NET Framework 2.0 security features (est. 80%)
    6. Implementing interoperability, reflection, and mailing functionality in a .NET Framework application (est. 50%)
    7. Implementing globalization, drawing, and text manipulation functionality in a .NET Framework application (100%)
    • I'm very happy with the training I received from Chris Barker @ Auldhouse last week.
    • Now for the other two exams!

    Tuesday, March 27, 2007

    Parameter-Driven SQL Query from Excel

    Private Sub CommandButton1_Click()

    Dim TheQuery As QueryTable

    Dim TheSheet As Worksheet

    Dim FirstLetter As String

    Dim RunDate As Date

    Dim parm As Parameter

    Set TheSheet = ActiveSheet

    With TheSheet

    FirstLetter = .Range("B1")

    RunDate = .Range("B2")

    Set TheQuery = .QueryTables(1)

    End With

    With TheQuery

    .Connection = "ODBC;DRIVER=SQL Server;SERVER=(local);UID=(UserID);PWD=(password);DATABASE=(DBname)"

    .Parameters.Delete

    .CommandText = "EXEC dbo.prc_SelectTest @FirstLetter=?, @RunDate=?"

    Set parm = .Parameters.Add("@FirstLetter")

    parm.SetParam xlConstant, FirstLetter

    Set parm = .Parameters.Add("@RunDate")

    parm.SetParam xlConstant, RunDate

    .Refresh

    End With

    End Sub

    Saturday, March 24, 2007

    Thank you for attending the Microsoft Technical Briefing Event

    Hi

    Thank you for attending the Microsoft 2007 Technical Briefing Event. We hope that you enjoyed the day and got some insights into the exciting potential of the new and upcoming technologies.

    If you would like to review the presentations from the sessions, please visit www.microsoft.co.nz/techbrief following the Christchurch event on 21 March 2007.

    Also, don't forget to subscribe to one or both of our New Zealand technical newsletters:

    • MSDN Flash for developers
    • TechNet Flash for IT professionals

    These are free, online newsletters which we publish every two weeks. Apart from a wealth of information and links to further resources, they are our main vehicle for connecting with our technical audience and keeping you up to date on local events and initiatives. To subscribe,
    please go to www.microsoft.co.nz/subscribe.

    Tech Ed 2007

    From 13-15 August 2007 we will be holding Tech Ed - Microsoft New Zealand's most comprehensive technical training and educational event of the year. Last year the event sold out with 8 weeks to go and we expect demand to be equally high this year. To guarantee attendance, please register for Tech Ed as soon as possible. Tech Ed 2007 Early Bird Registrations are now open and Early Birds also receive a discount off the full ticket price. For more information and to register, go to www.microsoft.co.nz/teched.

    We look forward to seeing you there.

    ---------------------------------------------------------------------
    This email was sent by:
    Microsoft New Zealand
    22 Viaduct Harbour Street
    Auckland 1150, New Zealand
    To unsubscribe, reply to this message with the word UNSUBSCRIBE in the Subject line. Please contact us by sending an email to UpToDate@microsoft.com or by writing to The Privacy Officer, Microsoft New Zealand Limited, PO BOX 8070 Symonds Street, Auckland if:

    • You wish to change your contact details
    • You wish to place a written information access request
    • You wish to discuss a privacy concern

    Thursday, March 15, 2007

    Tools for working with databases

    Mike Zeff
    Developer Evangelist
    Developer & Platform Strategy Group
    Microsoft NZ

    http://blogs.msdn.com/mikezeff

    Or how to make the database guy part of the development team.

    Visual Studio Team System

    Team Edition for Database Professionals

    • Expand to database teams
    • Manage database change
    • Database Testing
    • Database Deployment

    What we heard from customers

    (or “why did we build it…”)

    • Managing data base change is hard…
      • A rollback means a LONG night
      • Development teams can end up working with out-of-data versions
      • Finding errors at the end of the development cycle
    • Disconnect between development and database teams

    Conceptual Overview

    • Schema change now managed in VS Team System and TFS
    • Production Database is now “One version of the truth” only for Data
    • “One Version of the truth for Schema” is Under Source Control

    Creating a Database Project

    • Core concept: offline database development
    • Simply a series of files collected together into a single logical collection
    • The files represent the truth of your schema
    • Can be included in complete solution
    • Can be stored in source control such as Team Foundation Server for versioning
    Offline Development
    • Import database schema to populate project from production
    • Nothing changes until deployment
    • A couple of other points, but Mike was too fast


    Demo Summary
    • Import schema from existing database
    • Database project is created as a series of .SQL files.
    • Some more, but he’s too fast.

    Isolated Iterative Development

    Benefits of this Approach
    • Managed, project oriented evolution of database schema
    • Application code and database
    • Too fast
    Managing Change
    • Changes are local to the project
    • Project can be compared with database
    • All elements can be managed under version control
    • Template driven
      • Version specific Microsoft SQL Server 2000 or SQL Server 2005
    Working with the Project
    • Add new elements
    • Too fast
    Refactoring
    • Bring the power of refactoring to SQL
    • Update all dependent objects in a database project
    • Make an atomic change, see preview
    • Rename
    Demo Summary
    • All changes occur offline, local to the project
    • Changes can be compared to database
    • Refactoring can update all dependent objects
    A Rollback Means a LONG night
    • Unit testing helps ensure that changes do not break existing code
    • Unit test designer is SQL focused
    • Work in the language of your choice: T-SQL, VB, C#
    • Builds on existing Team Test unit Test functionality

    What We Can Test

    • Stored Procedures
    • Functions
    • Triggers
    • Arbitrary SQL
    • Too fast
    Test Data
    • To create a solid foundation for testing we support data generation
    • Deterministic – always generate
    • Too fast
    Demo Summary
    • Use of Regular Expressions to limit generated test data
    • (he couldn’t get the RegEx to validate an email address)
    • Can specify number of rows to generate (up to 1 million?)
    • Can specify ratio of rows to related tables
    Build/Deploy
    • Standard Visual Studio build task
      • New versus update builds
      • Project properties for builds
      • Scheme compare for builds
    • Configurations
    • Pre/Post Deployment scripts
    • Build results in SQL script file
    • Deploy
    Build Cycle
    • Can also be used in a “continuous” environment

    Deployment Summary

    • Deploy using .SQL file
    • Too fast

    Additional Resources

    • Team web forum
      • http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=725
    • Team blogs
    Call to action
    • Visit the Database Professional Team Centre
    • Watch the on demand web cast series
    • Visit http://www.microsoft.co.nz/visualstudio for special offers on VSTS and VSTE DB Pro
    • Extra credit: install the beta version
    • Too fast


    The Future of Data interaction

    Problem

    Data != Objects

    LINQ
    • Fix the impedance mismatch among different data domains
    • Focus on the needs of the application not bridging disparate data representations
    • Build on general purpose language features in C# 3.0 and ????
    .NET Language Integrated Query (LINQ)
    • LINQ enabled data sources
    • LINQ enabled ADO.NET
      • LINQ to SQL
      • LINQ to Datasets
      • LINQ to entities
    • LINQ to Objects
    • LINQ to XML
    .NET Language Integrated Query framework
    • Too fast
    Querying relational data
    • current way (SqlCommand, SqlConnection, DataReader)
    • LINQ way (Define [Table], and use in code as a first-class object).
    Call to Action

    Extending the Reach of your Applications

    Jeremy (Jeremy@mindscape.co.nz) & JD (jd@mindscape.co.nz)

    Remoteness…

    • 1990 – MSDOS 6.22
    • 2000 – MS IE 4.0
    • 2007 – Windows Sideshow; Mobile Apps; XBOX; Smart Phones; MS Exchange Server
    What has enabled this?
    • Prevalence of Internet
    • Broadband is driving richer experience
    • Users expect to be connected
    • XML standard protocols for exchange of data (RSS, SOAP)
    How do you get started?
    • Publish RSS – allow your content to be syndicated
    • Expose Web Services
      • Open (ASP.NET 2.0 or WCF)
      • Secure (WCF)
    • Expose an OpenSearch provider – Let users search directly from their browser
    Easy Reach for your applications – Demo
    • RssToolkit.GenericRssChannel
    • OpenSearch
      • Create a Provider.xml which tells OpenSearch where to find the search page.
      • Add a link of application type = OpenSearch/xml
    Surfaces
    • Internet – Data (RSS) and Services
    • Platform Services
      • Windows Vista
      • Mobile
      • Media Centre
    • Application Surfaces
      • Microsoft Office 2007
      • SharePoint
    Windows Vista Desktop
    • Existing Opportunities – desktop client (Windows Forms)
    • New Opportunities
      • Rich Client (WPF)
      • Mini app (Sidebar Gadget)

    Windows Presentation Foundation

    • Unified approach to UI, Documents and Media
    • Integrated, vector-based composition engine
    • Declarative model (XAML)
    • Brings designers and developers together
    • Flexible Deployment
    Demo
    • Add a reference to Microsoft Feeds, version 1.0 (COM object)
    Vista Sidebar Gadgets
    • Easy to use “mini applications”
    • Designed to be informative or functional
    • Designed to have low intrusion
    • Allows reach for existing applications or services
    • Manifest (XML) to interface (html) to CSS, images, JavaScript to ActiveX and/or XML HTTP request
    SharePoint Web Parts
    • Created for SharePoint 2003 (what about Digital Dashboard?)
    • Empower users
    • Great for content delivery
    ASP.NET 2.0 Web Parts
    • Web Parts outside SharePoint
    • Even better for content delivery!
    Building Web Parts on WSS v3
    • Import System.Web.UI.WebControls.WebParts
    • Add the Web Part Manager
    • Customise Page Button
    • Add Web Part Zones (x2)
    • Add Catalog View
    • Add reference to our Web Part
    • DisplayMode = WebPart.ViewDisplayMode
    Call to Action
    • Publish an RSS Feed
    • Publish an OpenSearch provider http://tinyurl.clm/zda68
    • Download and install WSS 3.0 – build a Web Part
    • Build a Sidebar Gadget

    Building Composite Applications

    Jeremy Boyd

    Mindscape

    Lots of ground to cover!

    New concepts, code!

    Look for code, samples and presentation downloads

    http://turtle.net.nz/blog/

    Jeremy@mindscape.co.nz

    Composite Applications

    • The whole is greater than the sum of its parts
    • Composed of a number of discrete and independent pieces, aggregating this functionality through a software interface.
    • Break free from “silo” issues
    • Lower cost of development
    • Consistency
    Tradition Applications
    • An encapsulated system providing its own self sufficiency
    What’s enabled all this?
    • Services
    • Software over services
      • Lightweight
      • Loosely coupled
      • 3 tier architecture
    • Result: Reuse of software!
    Traps to watch for
    • Maturity for integration
      • Must be able to leverage services for direct integration for greatest benefit
    • External Trust
      • External data lives in the cloud
      • Reliance on provider for business operations
    Example: Exchange Server 2007 is used by
    • Outlook
    • Outlook Web Access
    • Outlook Voice Access
    • Outlook Mobile
    Background Motion
    • Lightweight build: 3 weeks
    • Consumes resources from
      • Flickr
      • Soapbox
      • GeoTagIt
    • Also publishes services and data
    Architecture
    • Presentation Layer = ASP.Net 2.0 & AJAX
    • Business Layer = Content Service, controllers & Model
    • Resource Layer = Service Proxies & LINQ to SQL Server
    But How?
    • Start with the problem e.g. Provide a community site to provide content for DreamScene
    • Focus on the interface
    • Work out who is already offering functionality
      • Flickr works well for images
      • Soapbox works well for videos
    We already had great tools
    • .NET 2.0 and .NET 3.0 Frameworks
    • ASP.Net AJAX
    • Composite Web Block
    • Enterprise Library
    • Don’t forget about 3rd party!
      • RSS Toolkit
      • Lucene.NET
      • 2 way data-binding
    Some tips from the Background Motion build
    • WebDataBinder
      • DataBinder.DataBind()
      • DataBinder.Unbind()
    • Microsoft.Practices.EnterpriseLibrary.Validation
      • [RequireValidator]
      • Presenter.Save()


    Supervising Controller (MVP)
    • View (GET http://site/pages.aspx)
    • Presenter (View is based on the PageBase class which wires it up to the Presenter)
    • Model (View can work with the Model but calls back to Presenter to perform process flow)
    • “Factor the UI into a view and controller where the view handles simple mapping to the underlying model and the controller handles input response and complex view logic.” Martin Fowlerwww.martinfowler.com
    • Cleanly separates UI process form binding/event logic
    • Improves testability
    Dependency Injection
    • Establish a level of abstraction via a public interface, and remove dependency on components by (for example) supplying a plug-in architecture – Wiki
    • Allows for loose coupling
    • Abstraction through interfaces
    • Composite Web Block uses
    • ServiceLocator approach
    Service Locators
    • I need an instance of IDataLayer class! (Consumer to Interface)
    • I can ask the ServiceLocator to give me an instance of IDatalayer
    • ServiceLocator holds an instance of Factory <IDataLayer>
    • Factory <IDataLayer> assembles a Concrete class instance
    • Concrete instance is returned to the Consumer
    • Consumer always calls through the IDataLayer interface
    So What?
    • Solid foundation leads to flexibility – supports change!
    • Lower development complexity – modularity!
    • Testability of solution
      • More effective integration
      • Shorter cycles
      • Always building working code!
    Unit Testing…
    • Create a separate library (project in the solution)
    • NUnit – a free testing framework
    • Define [Test] methods
      • Assert.IsFalse(contribution.ValidationResults.IsValid);
      • (do some work)
      • Assert.IsTrue(contribution.ValidationResults.IsValid);
    • Where might these be useful?
      • When a field length changes, the Unit Test will fail the Validator.
      • Helps save you a lot of time by capturing these types of failures
    Continuous Integration
    • Developer checks in to source control
    • The BuildServer monitors the source control
    • The BuildServer builds the application
    • The BuildServer runs the unit tests
    • The BuildServer notifies whether all tests passed
    Resources
    • External from this application
      • Active Directory
      • Web Services
      • Legacy System
    • Contract based consumption
      • Loose coupling
      • Flexibility in plug and play
    But how?
    • Windows Communication Foundation
    • The Unified Framework for rapidly building service oriented applications
    WCF
    • Building block for building Connected Systems
    • Designed around messages!
    • Full standards/specifications support (WS-* oriented)
    • Provide consistent API regardless of messaging requirement
    • Part of .Net 3.0 Framework
    Software + Services
    • ASP.NET AJAX. The free framework for quickly creating a new generation of more efficient, more interactive and highly personalized Web experiences
    • Building a mash-up using ASP.NET AJAX
    • Web Service can output AJAX (JavaScript)!
    AJAX with Services
    • ASP.Net AJAX allows native call
    • Too fast


    Call to Action
    • Read about Patterns
    • Look at Unit Tests and CI http://ccnet.thoughtworks.com
    • Download the Composite Web Block
      • And the Validation Block
      • And the Enterprise Library
    • Publish services in your enterprise to allow composite applications to flourish!

    Building Standards Compliant Websites

    John-Daniel Trask

    Mindscape

    What is a Standard?

    • Agreed upon protocols
    • Three types
      • De-facto
      • Industry
      • Government

    Importance of Web Standards

    • Ensure durability
    • Ensure accessibility
    • Ensure portability
    HTML
    • HTML 4.01
    • Last revision
    • Being superseded by XHTML
    CSS
    • Level 1 (CSS 1.0)
    • Level 2 revision 1 (CSS 2.1)
    • Level 3 (under development)
    • Mobile Profile
    • TV Profile
    WAI
    • Web Accessibility Initiative
    • Guidelines for
      • Aiding disable audience
      • Aiding agent type support
    NZ Standards
    Other Standards
    • RSS / ATOM (and icon)
    • SiteMaps
    • OpenSearch
    Why Standards Compliance Makes a Difference
    • Acid2 Test
    Implications of “no standard”
    • Separate specification class emerges per browser
    • More expensive delivery
    • Frustrates users
    • Hurts adoption
    Microsoft and Web Standards
    • Getting better
    • IE7 is a major step forward
    • IE8 under development (Acid2 compliant)
    • Working with other organisations
    IE7 Functional Advancements
    • Support for OpenSearch
    • Scaling handled by browser (text and graphics simultaneously)
    • Phishing filter
    • Tabbed browsing
    • RSS platform support
    IE7 Rendering Advancements
    • Fixed more than 50 CSS bugs
    • Transparent PNG support
    • Added CSS 2.1 positioning
    • Added CSS 2.1 selector support
    Advancements in Tooling
    • Validation added to existing tools
    • CSS Control Adapters for ASP.Net 2.0
    • Plug-ins for Internet Explorer
    • Full new product line…


    Expression Web
    • For designers
    • Standards based
    • CSS based layout
    • Strong support for XML and XSLT
    • Direct integration with ASP.Net 2.0
    Key Benefits
    • Prevents non-compliant sites
    • Rich CSS designer support
    • No OOTB (out of the box) legacy tags
    • Comprehensive DOCTYPE validation
    How to use this stuff…
    Visual Studio
    • Orcas, March CTP
    • Richer validation support
    • Link checking
    • Tag structure visualization
    • Web Designer and CSS support baked in Orcas
    • ASP.Net 2.0
    ASP.Net 2.0 CSS Control Adapters
    • Demo
    Validating your sites
    • Validate online with W3C
    • Validate with tools (e.g. expression ware)
    • Ease validation with browser integration
    • Download http://tinyurl.com/


    Checklist for building your site
    • Valid HTML
    • Valid CSS
    • Page weight
    • Screen size, font size
    • Accessibility factors
    • Cross browser checking
    Call to Action
    • Validate your sites
    • Grab Expression Web Designer (free 60 day trial)
    • Develop to standards