Showing posts with label user group. Show all posts
Showing posts with label user group. Show all posts

Thursday, August 27, 2009

What on Earth have I been up to?

I’ve been busy:

DateTitleVenue
02-Apr-09WebCast: Intro to ORM for DBAsPASS USA
16-Apr-09What’s New in Microsoft SQL ServicesWellington SQL Users
30-Apr-09Microsoft CertificationsAuckland SQL Users
14-May-09How To: Design and Develop Applications to Ensure QualityVUW
26-May-09How To: Design and Develop Applications to Ensure QualityEllerslie .NET Users
14-Jun-09Microsoft Sync FrameworkNZ .NET Code Camp, Porirua
18-Jun-09Microsoft Sync FrameworkWellington SQL Users
15-Jul-09How To: Design and Develop Applications to Ensure QualityWellington .NET Users
30-Jul-09Microsoft Sync FrameworkAuckland SQL Users & Ellerslie .NET Users
04-Aug-09Creation: Why I BelieveMalakai’s Care Group, Wellington Elim
20-Aug-09How To: Design and Develop Applications to Ensure QualitySoftware Quality NZ
13-Sep-09Microsoft CertificationsNZ .NET Code Camp, Auckland
29-Sep-09Creation: Why I BelieveJeannie’s Care Group, Wellington Elim

I’m available for bookings!

I have moved my Blog!

Old Site: http://www.geekzone.co.nz/JamesHip/

New Site: http://JamesHip.blogspot.com/

Reason: I can now use Windows Live Writer to write my blogs, instead of manually creating an html page in Microsoft Visual Studio!  Also, the formatting was being automatically changed, thus rendering my final output almost illegible.

Method: I had to move each item manually!  I discovered how to make my past blogs appear as though they were written on their original post date, but I couldn’t make the comments appear that way.  It took me 7 days to do it, because there was 7 pages of blogs to move over; each page was about 20 blogs.

Result: This will be my final entry at GeekZone.  Thanks, Mauricio, for being a great service when I needed you.

Wednesday, July 15, 2009

Delivered my Quality Presentation Again

This time to the Wellington Dot Net Users Group.
See previous post for link to slides.
Another good discussion ensued.
This time I demoed FxCop.  That went well.
I think next time (if there is one) I would also demo the Testing framework.

Feedback on my presentation style: was good, but I need to "own" the subject a bit more.  Instead of being deferential to either the material or the audience, I need to project confidence in the stuff I know.

Sunday, June 14, 2009

The Microsoft Sync Framework

I gave a presentation at the NZ .NET Code Camp at Whitireia Polytech, Porirua on Sunday 14 June 2009.
What Was Covered
  • Overview of the Microsoft Sync Framework
    • Enabled scenarios, vision, approach
    • Demo: Prerequisites and Installing
  • Synchronizing existing endpoints using the Sync Framework
  • Exposing data as FeedSync compatible RSS and ATOM feeds
The Microsoft Sync Framework

Access to your data on any computer, device, or service across disparate applications.

image

 

Slide Presentation

Click here to download the slide show presentation for the Microsoft Sync Framework

Impressions

I was in a story-telling mood yesterday.  I explained that I had just laid my mother to rest, so was interrupted in my preparation.  I sensed sympathy for my situation and no animosity for being under-prepared.

In the course of my preparation, I discovered two quite disparate explanations of the Sync Framework from Microsoft.  The first (which I had studiously prepared) was the offline caching and automatic synchronisation that SQL Server enabled via the Compact Edition.  The second (which was rushed) was the manual coding of new providers and their exception rules via the SDK.

It ended up be a facilitated discussion (is that lazy of me? or is that being dynamic and confident and adaptable?)  Anyway, questions were asked and answered, so feedback was mainly positive.

Questions

I was asked “Does the provider enable the use of security credentials and/or encryption?”

From the material I had presented, it appeared that since the protocol could be specified, that therefore if HTTPS was specified, then encryption would be enabled.  Also, as the providers encapsulated callbacks to handle exceptions such as conflict resolution, it is logical to assume that the providers are completely programmable to handle any security (login) requirements.

I promised to look this up.  Here’s the answer:

http://www.microsoft.com/downloads/details.aspx?FamilyId=2e9bec3b-9deb-4620-a955-266e656d8fa4&displaylang=en

About the Presenter

James Hippolite remembers being 15 in the 5th form at Nelson College, when he sat up one night coding a bio-rhythms application on his newly acquired second-hand Apple IIe.  At 3am, he ran into his mother’s bedroom to excitedly inform her he’d successfully finished.  Her measured response allowed him to continue to feel good about coding.

James holds Microsoft certification as a Professional Developer (MCPD: Web Developer), IT Professional (MCITP: Database Developer) and Trainer (MCT).

He lives in Wellington and is currently employed full time in a large corporate and loving the regular hours that non-consultants enjoy.

Wednesday, April 15, 2009

What's New in Microsoft SQL Services - My DNUG Presentation

I gave a presentation today:
Title What’s New in Microsoft SQL Services
Brief Come hear how SQL Data Services is evolving to provide rich relational database capabilities and how easy it is to take existing database applications and extend them to the cloud.

Learn how SQL Data Services provides highly available and scalable relational database storage and capabilities while allowing you to leverage existing SQL Server knowledge, protocols, client libraries and tools.

Hear about Microsoft's plans to accelerate delivery of the key relational data capabilities you've asked for through a service endpoint that directly supports the T-SQL language and the Tabular Data Stream (TDS) communications protocol as well as their rich support for breadth and open source development languages, frameworks and client libraries.
Bio

James Hippolite started programming on an Apple IIe, at the age of 14. After graduating with a bachelor degree in Information Systems from Victoria University of Wellington in New Zealand, he started working with small systems relational databases, like dBase, Paradox, FoxPro and Microsoft Access.

In 1991 he founded Mana Information Systems, a company for SME who couldn't afford their own IT departments. As the lead developer, he developed small to medium WinForms applications using SQL Server, Visual Basic and latterly ASP.  In 2003 James developed in C# his first .NET web application, an internal metrics reporting tool for his new employer, Telecom New Zealand, utilising SQL Server stored procedures and .NET classes.

After finally being convinced by their absolute ease of use, James finally converted to using ORMs full-time in 2008. He is a Microsoft Certified Trainer.  He has contributed lectures on Microsoft Certification and SQL Server Reporting Services to the INETA and PASS communities.

James lives in Wellington and is currently employed full time in a large corporate and loving the regular hours that non-consultants enjoy.

Audience Wellington Dot Net User Group
Attendees About 20 – I don’t view this negatively.  It was a niche subject.
Date/Time Wednesday 15 April @ 6pm @ Xero
Slides What’s New in Microsoft SQL Services
Impressions

I had to break the first rule of presentations to developers: I had no demonstrations!  This was because the Invitational CTP won’t be available until next month.  So I couldn’t go online to demo what I was talking about.  However, the 20 slides fitted well within the 1 hour that I had, with plenty of time for questions through-out.  The pizza arrived 5 minutes early, so I had to wrap up the last 4 slides, which I don’t think anybody minded!

The questions were right on the ball, and added to the body of this presentation.  Specifically:

  1. How will the new TDS requests be protected from network sniffing? 
    • It appeared that TDS + SSL is an option, but I need to investigate whether this is a connection string setting, or is implemented in some other way.
  2. What is the site where I can register my interest to be included in the CTP trial?
  3. What is Microsoft’s revenue model?  I.e. what will it cost me to use this thing? 
    • Nobody knows yet, but look to the Google model of transaction throughput + database size as a likely indicator.
  4. Is anybody else offering this?
    • Amazon’s S3
    • Google’s Big Table
Further Comments

The slide show was a download from the Mix 09 web site, which I then modified to the fact that:

  1. I couldn’t demo anything
  2. I put my name instead of Nigel Ellis, Architect, Microsoft SQL Services
  3. I took notes from Nigel’s talk and included them in my slide notes pages. 

This worked really well.  Unfortunately, because the original format was PowerPoint 2007, when I converted it to PowerPoint 2003, most of the text came across as pictures, so I lost some of the nice transitional animation.

I got to use my new MCT credential in my introduction slide for only the second time so far (first time was for the PASS presentation earlier this month).  I also show the Telecom logo and gen-i’s Microsoft Gold Partner cred.  I just think it is polite to acknowledge that Telecom have permitted me time to prepare these presentations.

Mark Carroll from Microsoft turned up half-way through my presentation.  He didn’t make me any more nervous, but I wonder whether he was auditing my presentation for any particular reason.  I hope it was to ascertain whether I would make a good MVP.  We shall see.

Sunday, November 30, 2008

ODBC Provider Bug?

ODBC Provider Bug?
James Hippolite
Friday 28-Nov-08 09:45

Has anybody heard of a bug in the ODBC provider for Excel where, if a column has 10 NULLS in a row, then the entire column comes in as NULL?

Paul Bibby
Friday 28-Nov-08 09:57

Don’t know if this is similar to your experience ?

http://www.stata.com/statalist/archive/2006-08/msg00457.html

Leigh Hunt
Friday 28-Nov-08 10:40

I ran in to I think the exact same issue a number of times years ago, importing mixed field types from Excel into Access, using the JET driver.

I think Paul's answer is probably the one your after, especially the links to http://www.dicks-blog.com/archives/2004/06/03/external-data-mixed-data-types/ and http://support.microsoft.com/default.aspx?scid=kb;en-us;257819.

However, I encountered mine about 8 years ago, using older versions of the software, so thought I'd post it here incase the above solutions don't fix it for you... (I notice one article states that the MaxScanRows argument doesn't work in a connection string - well it certainly works in the registry:

I changed the following entries in the registry:

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Text]
"MaxScanRows"=dword:0001869f
"ImportMixedTypes"="Text"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Text]
"MaxScanRows"=dword:0001869f
"ImportMixedTypes"="Text"

After this, all imports would work fine for me.

Cheers,
Leigh.

Thursday, November 6, 2008

User Group PDC Event

From Kirk:Hi,

Thanks for RSVPing for tonight's meeting!

This is just a quick reminder that we start slightly earlier than usual (5:30pm), and our venue is different (Mezzanine Room, Level 1, Wellington Library). The room is just next to the lift on the first floor, before you go into the library.

It's looking like we're going to have a whirl-wind 2 hours going through some of the cool stuff from the Professional Developers Conference (PDC) last week:
- Cloud services / AzureChris Auld
- Silverlight 2.0James Newton-King
- New VB.NET featuresJames Hippolite
- SharepointChan Kulathilake
- Windows 7Mark Orange
- Oslo and modelingOwen Evans
- New C# 4.0 featuresKirk Jackson
I also have a few prizes to give away, so make sure you get there on time!

For those of you that have invited your kids, there will be a prize or two for them too.

Cheers, see you tonight,
Kirk
From James:

My presentation was on VB.NEXT, the Next Version of VB.NET.
My slides are here: http://cid-a93b6100e328706d.skydrive.live.com/self.aspx/Presentations/VB.Next.pps
I covered the following topics:

  • Where is Visual Basic Headed?
  • Co-Development with C#
  • New Features
  • Future Trends

The New Features I covered were:

  • Automatic Properties
  • Multi-Line Lambdas (and Sub Lambda with PLINQ)
  • Generic Variance (too hard, left this for Kirk!)
  • Dynamic Language Runtime Interop
  • Collection Initializers
  • Array Literals
  • Implicit Line Continuations
  • Embedded Primary Interop Assemblies

Thursday, October 16, 2008

ORM 102: A Comparison of Two ORMs

This is part 2 of a 2 part series of articles:

  • In part 1, I introduced the concepts of Object Relational Mappers, and demonstrated the integration of a popular Open Source ORM called SubSonic into the Visual Studio Integrated Development Environment (IDE).
  • In part 2, I shall be integrating a Kiwi ORM, LightSpeed, into Visual Studio, and comparing the products on functionality.

Who Should Read This Article

  • You are starting out developing, or have been developing for a while and wondered about ORM.
  • You are classically trained in Entity Relational Modelling and know you need to get your head around Object Oriented Design.
  • You have a BCOM and want to understand what all those BSc’s are talking about.

What Is Covered in This Article

  1. How Do I Use LightSpeed?
  2. How Do These Two ORMs Compare?
  3. What about LINQ?
  4. Summary


How Do I Use LightSpeed?

What Do I Need?

How Do I Integrate LightSpeed into Visual Studio?

  • After you have downloaded it, install it. 

What is LightSpeed?

LightSpeed is a commercially-available ORM created by MindScape, a NZ company.  Unlike SubSonic, LightSpeed is a fully supported product. 

How Do I Generate DAL Classes?

  1. From Visual Studio, create new Web Application Project (e.g. http://localhost/AdventureWorks/
  2. Add VB Class Library Project (e.g. AdventureWorks.DataAccess)
    • Add… New Item
    • Under Data, select LightSpeed Model.  Click Add.
    • From the new designer that opens up, go to the Server Explorer
    • Point, click and drag tables (up to 8) from the Server Explorer to the LightSpeed Model designer.
    • Right-mouse-click, select Arrange, to arrange the class definitions into a classic hierarchy.
    • Click Save
  3. Add New File… Application Configuration
    • Add a configuration section for a LightSpeed Context:
      <configSections>
         <section name=”lightSpeedContexts” type=”Mindscape.LightSpeed.Configuration.LightSpeedConfigurationSection, Mindscape.LightSpeed” />
      </configSections>
    • Add a configuration string section (not shown here).
    • Add a LightSpeed Context section:
      <lightSpeedContexts>
         <add name=”default”
                  connectionStringName=”DBconnection”
                  dataProvider=”SqlServer2005”
                  identityMethod=”KeyTable”
                  pluralizeTableNames=”false” />
      </lightSpeedContexts>
    • Click Save
  4. Add New Item… Class
    • Call it e.g. Repository
    • Add the following code:
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Text;
      using Mindscape.LightSpeed;

      namespace Demo9
      {
         public static class Repository
         {
            private static LightSpeedContext<ModelUnitOfWork> _context;
            public static LightSpeedContext<ModelUnitOfWork> Context;
            {
               get
               {
                  if (_context == null)
                  {
                     _context = new LightSpeedContext<ModelUnitOfWork>();
                     _context.ConnectionString = LightSpeedContext.Default.ConnectionString;
                     _context.PluralizeTableNames = LightSpeedContext.Default.PluralizeTableNames;
                     _context.IdentityMethod = IdentityMethod.KeyTable;
                  }
                  return _context;
               }
            }
         }
      }
    • Click Save

Consume DAL

  1. Add a Class Item to the project, call it e.g. Product
  2. Type the following code under appropriately name and parameterized methods:
    //The Add Method
    {
       using (ModelUnitOfWork uow = Repository.Context.CreateUnitOfWork())
       {
          Product product = new Product();
          product.Name = “LightSpeed”;
          product.Description = “Fantastic .NET O/R Mapper”;
         
          uow.Add(product);
          uow.SaveChanges();
       }
    }

    //The Find Method
    {
       using (ModelUnitOfWork uow = Repository.Context.CreateUnitOfWork())
       {
          Product product = uow.Products.Where(p => p.Name == '”LightSpeed”).First();
       }
    }

    //The Delete Method
    {
       using (ModelUnitOfWork uow = Repository.Context.CreateUnitOfWork())
       {
          Product product = uow.Products.Where(p => p.Name == '”LightSpeed”).First();
          uow.Remove(product);
       }
    }

  3. Click Save
  4. Build and Run (F5)


How Do These Two ORMs Compare?

Feature

SubSonic

LightSpeed

NHibernate

Author

Rob Conery

MindScape

Chad Myers

Open Source?

Yes

No

Yes

Price

$0.00

Ed. Limitation Price
Exp Up to 8 classes Free!
Std Up to 30 classes $99 USD
Pro None $299 USD
Ent. None (source!) $499 USD

$0.00

NZ Made?

No

Yes

No

Generates DAL?

Yes

Yes

Yes

Mapping Files?

No

No

Yes

VS Designer?

No

Yes

No

Configuration

Web.config

Opinionated Convention

Config files

LINQ Support?

Yes

Yes

Some

Focus on

Developer speed

Performance

Enterprise


Summary

In this two-part article, I have shown and compared the functionality of two different Object Relational Mappers.  SubSonic is an Open-Source, simple, free utility for quickly getting data classes out of the database and into .NET design environment.  LightSpeed is a commercial product, designed to optimize the developers experience through industry-standard use of LINQ and a Visual Designer to allow reverse-engineering of new class attributes back into their table columns.

In the end, you will decide which criteria is more convenient for you.  It has not been my intention to attempt to persuade you to decide one product over another.  I hope I have adequately explained the purpose and use of Object Relational Mappers in general, by showing these two specific examples.

ORMs are great time-savers for developers who have to work with existing database structures.  They cut out the necessity for 90% of stored procedures in one application I was creating, because I didn’t have to worry about the four CRUD procs.  This leaves more time to concentrate on the other 10% of stored procedures that are really necessary, because they can’t be done any other way.  One example that comes to mind is this: suppose you had to count the number of purchase orders that a product appeared in.  The LINQ way to do it is:

qry.Where(Columns.ProductID).Equals(productID)
qry.From(DAL.Product.Schema)
Dim prd As DAL.Product = qry.ExecuteAsCollection(Of DAL.ProductCollection).FirstOrDefault

Return prd.PurchaseOrderDetailRecords.Count

 

However, the problem with this way of doing it is that the line prd.PurchaseOrderDetailRecords.Count, in order to succeed, must first go and get all Purchase Order Detail records.  This is hugely inefficient for a mere count.  The better way to do this is to create a Stored Proc which accepts the Product ID and only returns the integer count.


About the Author

James Hippolite started programming in 1983 on an Apple IIe, at the age of 14. After graduating with a bachelor degree in Information Systems from Victoria University of Wellington in New Zealand in 1990, he started working with small systems relational databases, like dBase, Paradox, FoxPro and finally Microsoft Access.

In 1991 he founded Mana Information Systems, a company for SME who couldn’t afford their own IT departments. As the lead developer, he developed small to medium WinForms applications using SQL Server, Visual Basic and latterly ASP.  In 2003 James developed in C# his first .NET web application, an internal metrics reporting tool for his new employer, Telecom New Zealand, utilising SQL Server stored procedures and .NET classes.

Due to the absolute ease of use of ORMs, James finally converted to their use in 2008. James is slow adopter of technology, which is no reflection upon his Microsoft Certified Trainer status.  He has contributed lectures on Microsoft Certification and SQL Server Reporting Services to the .NET community.

He lives in Wellington and is currently employed full time in a large corporate and loving the regular hours that non-consultants enjoy.

ORM101: An Introduction to Object Relational Mappers

I gave a presentation at the Wellington Dot Net User Group last night. I have been asked to supply my notes.

Steps for downloading and installing:

  1. Download
  2. Install
  3. Add External Tool command to Tools menu
    • Title: SubSonic DAL
    • Command: SubCommander/sonic.exe
    • Arguments: generate /out Generated /lang VB
    • Initial directory: ($ProjectDir) Use
    • Output window Prompt for arguments
  4. Add Subsonic Toolbar Customise Add External Tool 1

Steps to Generating DAL classes:

  1. Open new Web Application Project (AdventureWorks)
    1. Open IIS Manager
    2. Enable Directory Security, Integrated Windows Authentication
  2. Add VB Class Library Project (AdventureWorks.DataAccess)
    1. Ensure Project Root Namespace = “AdventureWorks”
    2. Add Reference to Subsonic.dll, System.Configuration, System.Web
    3. Delete Class1.vb
    4. Edit app.config
    5. Add section reference to
    6. Add a connection string for each one of your providers
    7. Define Subsonic Service Provider(s) (one per database):
    8. Add Generated folder to DataAccess folder (or project)
    9. Execute Subsonic
  3. Add Existing Item(s)
  4. Build

Using in Web Project:

  1. Add a Business Logic Layer (Class Library)
    • Add References to SubSonic.dll, AdventureWorks.DataAccess
    • Rename Class1 as Product
    • Define the class as Public, decorated with
    • Define methods as Public, decorated with
    • Save and Compile
  2. Add a Grid to a Web Page
    • Add Reference to Subsonic.dll
    • Add SubsonicSection to web.config
    • Add SubsonicProvider to web.config
    • Add ConnectionString to web.config. Highlight difference in user ID.
    • Set Default.aspx as Start Page
  3. Build and Run (F5)

Saturday, May 10, 2008

Why Bother With SSRS?

One really interesting question I got during my presentation this week, to which I felt I didn't give a particularly well-rounded response, was "Why bother using SQL Server Reporting Services at all?"  The question was asked seriously in the context that I had just demoed how to create a really simple table report, which could more easily have been done on a page with a GridView.

Now that I've had time to think about it, there are 3 really good reasons:

  • If all you want is a simple table report, the questioner is absolutely correct: do it in a GridView.  However, if you want Excel-like charts, then SSRS is the easiest way forward.
  • Also, SSRS lets you easily create form-letters (with page breaks, headers and footers in the correct places).  You can't guarantee what a web page will output like.
  • And finally, SSRS lets you output to PDF.

Wednesday, May 7, 2008

Wellington .NET User Group Meeting

Presented on two topics last night:

  • Microsoft Certification in Visual Studio 2008: why and how?
  • SQL Server Reporting Services: How to create, deploy and consume a report.

Seemed to be quite well received.  Of the 30-odd there, only 4 of us had ever sat an exam before, so the audience had come to hear what was definitely a new topic for them.  Kirk Jackson was impressed to see so many new faces.

Darryl Burling asked at the end, how many people were interested in pursuing certification, now that they understood the mechanics.  The majority put their hands up.

Anyway, if you, dear reader, where one of the ones asking for my presentation notes, they are now available for download here:

http://cid-a93b6100e328706d.skydrive.live.com/browse.aspx/Presentations

Enjoy.

Thursday, April 17, 2008

Follow up from my presentation

Here is the link to my PowerPoint presentations.
Adrian will put them up soon.
http://dot.net.nz/Default.aspx?tabid=101

Microsoft Certification and Creating a SSRS report

Wellington SQL Server Meeting Notice

Our next meeting will be:-

17 April 2008 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)

Topic 1: "Run-through: How to create and use a Microsoft SQL Server Reporting Services Report"

Topic 2: "SQL Server Certification: How do I do it, why bother and what are my options?"

Did you know there are 3 Microsoft Certified IT Professional tracks in Microsoft SQL Server 2005?  What are they, and why should I care?  James will give a clearly reasoned account why certification is for you.

Presented by James Hippolite, who has been a trainer, published reviewer and solution developer for over 20 years.  He first became a Microsoft Certified Professional in 1996, when it wasn't cool.  He woke up in 2001 and realised that remaining in Desktop Applications (specifically Microsoft Access) wasn't going to feed the kids and pay for cool technology, so purposefully changed career direction into Enterprise Applications (specifically VB front-end and SQL Server backend).

He lives in Wellington and is currently employed full time in a large corporate and loving the regular hours that non-consultants enjoy.

Pizza and drinks are being provided with the kind courtesy of Microsoft.

Seating is limited to the first 50 registrations.

Please advise on adey11@gmail.com if you will be attending?

Please DO NOT reply to this email?
More information