Showing posts with label Wellington. Show all posts
Showing posts with label Wellington. Show all posts

Wednesday, December 22, 2010

Geek Post Monthly Newsletter Volume 2 Issue 11

Geek Post

Volume 2 Issue 11

November 2010

Hippolite Musings

Tena Koutou Katoa,

In November, I:

    1. Conquered the Project Management tool which Telecom uses by entering 3 months actuals and 1 months forecast work for the 8 staff in my team.  I’m a trainee Team Lead!
    2. Attended another Vex Robotics Scrimmage.
    3. Received direction on how to maximise My Personal Performance (MPP) reporting.  This is corporate-speak for complying with my quarterly performance reviews.
    4. Fixed up WHEN library database in preparation for handing it over to somebody else.  Yippee!
    5. Sat and failed my Windows Communication Foundation exam.  Ah, well, there’s always next month!
    6. Studied (before and after exam) materials for said exam.
    7. Took final minutes as Secretary for Grenada Village Community Association at AGM.  Presented finances as acting Treasurer.
    8. Assisted Fiona to handover Membership Secretary duties of WHEN.
    9. Delivered one project.  Picked up three more.  Christmas is always busy (people trying to get stuff finished before the shutdown period).

Blessings,
James


Community Development

Grenada Village Online

  • My former manager read last months blog; found out I needed training in how to give a logo a transparent background; sent me an email explaining how to do it; and now Grenada Village has a better look and feel. 
  • Here’s how:
    • Downloaded IrfanView.
    • Load the graphic.
    • Save As…
    • Specify JPG
    • Click on background
    • Specify Transparent.

Align Church Online

  • Reorganised home page and master page so that Search Widget and Login Widget are both Web Parts in the right pane. 
  • Implemented Top 5 News Items (as per Grenada Village Online).
  • Reduced size of logo.
  • Looks much better.

Wellington Home Education Network

  • Handed over Fiona’s Membership Secretary role.
  • Still to hand over my Treasurer’s role.

Wellington SQL Server Users Group

Wellington Dot Net Users Group


Developer News

Top Stories

  • Show off your Azure skills using New Zealand Digital Content
    If you want a good incentive to learn more about Windows Azure then check out the "Best use of Windows Azure cloud computing services" category in the Mix 'n Mash competition that opened today. The competition is a chance to show the world what you can do with New Zealand digital content and data. All you need to do for a chance to win $1,000 is to build a mashup hosted on Windows Azure (there are other competition categories as well).
  • PDC On Demand: The Future of C# and Visual Basic
    Technical fellow Anders Hejlsberg talks about the roadmap for C# and Visual Basic in vNext and beyond. Plus: Asynchrony in C# 5. Part II: Whence await. Part III: Composition.
  • New Release: Visual Studio 2010 Productivity Power Tools
    A set of extensions to Visual Studio Professional (and above) which improves developer productivity. In this third major release of the Power Tools we have made significant improvements to the Solution Navigator and the Tab Well to address our top customer requests.
  • ASP.NET MVC 3 Release Candidate
    Backwards compatible with ASP.NET MVC V1 and V2, this release adds a ton of new functionality and refinements.


Training

  • Complete Conference Session Schedule Now Online!
    The virtual Microsoft Certified Career Conference is almost here, and it will be packed with valuable information you won’t want to miss! Join highly respected leaders in the industry for technical and career development sessions and network with other professionals during and after the event. Check out the Conference Schedule and Register today. Microsoft Certified Professionals can use the code MCP50 for a 50 percent discount.
  • Add the MCT & Educator Virtual Summit to Your Calendar
    MCTs and registered academic educators can join us for the MCT & Educator Virtual Summit—a complimentary readiness event on November 17. To make sure you do not miss this event, add it to your Outlook calendar.
  • Certification/Exams - Save up to 20 Percent on Microsoft Certification Exam Packs with Second Shots
    Get the certification you need to keep your career on track. Find guidance on the training you’ll need, chart your training course, and save up to 20 percent when you purchase Microsoft Certification Packs of two to five exams.
  • Training - MOC/Courseware/Exams/Clinics - New Microsoft Official Courses Mean New OneNote Trainer Packs
    Eight new OneNote trainer packs are available—bringing the total number to 40. All are available at the MCT Download Center. Check them out today!
  • New IT Fundamentals Course for Windows Server 2008/R2
    Microsoft Learning is proud to announce the release of Course 6420B: Fundamentals of Windows Server 2008. This five-day course covers the fundamental concepts and skills of server administration, Active Directory, networking, and security of Windows Server 2008 servers (including Windows Server 2008 R2) for students who are new to IT.


Study News

As per last month, I finished studying Microsoft .NET Framework 3.5 - Windows Communication Foundation.  I booked my MCTS exam 70-503 for Tuesday 9 November at Auldhouse.  I failed.  Now I’m doing the Skill Port on-line training (freebie offering via Telecom).  Will re-sit in the new year.

What I have learned from this experience

WCF is tricky, real tricky to get right.  And by virtue of its very nature, debugging it is hard, real hard.  For example, I had a real-life example to code.  I had a successful Web Service running inside an existing web site.  So I thought, “here’s a perfect candidate to switch over to WCF.”  Wrong.  I tried and failed for 3 days:

  • First, I discovered that because the DEV & PROD servers are Windows Server 2003 and not 2008, that therefore I can’t use WsHttpBinding but have to use BasicHttpBinding.
  • Then I spend an inordinate amount of time trying to decipher what combination of binding and address (HTTPS was not available to me) was giving me the really unhelpful “Service actively refused connection” error message.
  • Turned out that I had altered my DEV code some time back from System.Oracle.Client to Oracle.Data.Client and the DEV server didn’t have the correct Oracle client installed.  Nowhere did WCF tell me this.

I will keep trying.  I will succeed.  My success has merely been delayed.


Telecom News

Project Marley

It’s no secret that a strategic decision has been made to bring in-house as much IT work as possible.  This was caused by a number of factors, not least because of the government’s Ultra-Fast Broadband (UFB) initiative will probably force structural separation of the Chorus business off from the rest of Telecom.  This will mean the requirement for some IT resources to be split off separately to Chorus.

So, Project Marley is all about offering those HP staff who work exclusively on the Telecom account, to come over to permanent Telecom jobs.  This will be done sensitively, I have no doubt.  It doesn’t directly impact my small team, but what it does impact is that the appetite for increased permanent head count means my manager can now hire just about as many .NET developers as he would like.  So any of my Geek friends, if you’re reading this and desiring a change, let me know and I’ll see if I can arrange you an interview!


Situations Vacant

Lots

See my paragraph above.



INETA News

A summary of Significant Dot Net User Group Chatter


PASS News

A summary of  Significant SQL Server User Group Chatter


Events Schedule

In this section, I highlight dates, times and venues of events either I am presenting at, or of interest to Geeks.  I’m available for bookings.

Date Event Venue Speaker
1-Dec-2010 LINQ to Async: An Introduction to the Reactive Extensions Xero, Wellington Ivan Towlson
2-Dec-2010 SilverLight Firestarter Redmond or Online Lots
11-Dec-2010 SharePoint Saturday Christchurch Polytechnic Institute of Technology Lots
12-Dec-2010 VEX Robotics Scrimmage Hutt Valley High School N/A
15-Dec-2010 MonoTouch and MonoDroid Xero, Wellington Nic Wise
12-13 Feb 2011 VEX Robotics Regional Competitions St Peter’s College, Palmerston Northq N/A
April 2011 ALM Conference Wellington Various


Humour

Web Designers vs. Web Developers

An infographic of the differences between them.


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.

Thursday, May 14, 2009

How to: Design and Develop an Application to Ensure its Quality

I gave a presentation last night:

Title

How To: Design and Develop an Application to Ensure its Quality

Audience

Victoria University of Wellington, 3rd year “Software Engineering” students (SWEN 301 = COMP 301)

Attendees

About 30

Date/Time

Thursday 14 May @ 4pm

Slides

Ensuring Quality

Impressions

The first half of my presentation, defining and designing quality, was taken straight out of the book.  Specifically, straight out of the “Analysing Requirements and Defining .NET Solution Architectures” exam.  The second half of my presentation, coding quality, came out of my head and covered training, reviewing and testing.

I could see some heads nodding in agreement as I was speaking, always a good sign.  I could see some heads nodding in weariness, never a good sign.

The question time is always my favourite, because it’s then that I can most accurately gauge whether what I have been saying is “scratching the itch” of the intended audience. 

The first question was along the lines of “great, you’ve told us some more theory, now what about you personally?  What were some of your failures in your career that will help us to avoid pain and embarrassment?”  I won’t record here what I told them in answer, suffice to say it amused them..

The PhD student in the audience had come with slightly different expectations.  I think he was hoping for more concrete examples of measurements and statistics for writing good code.  My rather lame response was that if/when I’m inclined to worry about that kind of thing, then I turn on FxCop to analyse my code for me.

I admitted to being a “lazy coder” in that I enjoy/prefer using objects that I drag onto the page from a toolbox, rather than coding everything by hand.

Definition of terms became important.  I needed to very clearly define “Agile” and “Peer”.  To me, peer programming is not necessarily the Extreme Programming definition of working side-by-side on the same computer.  It just means working as a team on the same project.  To me, Agile just means having many, quick iterations, rather than waterfall software lifecycle methodology.  I hadn’t realised they considered themselves Software Engineers.  To me, there are hardware/network engineers vs. software developers.

Evaluation


Hi James,

Your presentation today was really good. I believe that students love to have you coming from the really world to share your invaluable experience with them. Thank you very much again for your valuable time and your efforts, in particular while you are so busy. I really appreciate it.

Best wishes,
Dr Hui Ma
Lecturer

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)

Tuesday, October 14, 2008

My Speakers Profile

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 worldwide success of SubSonic, James converted in 2008 to this O/R mapper, which is currently one of the market-leading data-access solutions for .NET, C# and VB.NET. James has been a trainer and contributed lectures on Microsoft Certification and SQL Server Reporting Services to the .NET community.  James has received for his community efforts no MVP reward yet.

Friday, September 19, 2008

Wellington Workgroup Solutions Team

P1000002 P1000004
James Hippolite, Senior .NET Developer Martin Harris, .NET Developer
P1000005 Gary Saunders
Megha Barpande, .NET Developer Gary Saunders, Lead Developer