Wednesday, February 07, 2007

with apologies and thanks to Sir Winston for giving me the courage to continue on with WiX :-)

The two links that make my WiX world turn are:

Wednesday, February 07, 2007 5:11:45 PM (AUS Eastern Standard Time, UTC+10:00)  #    Disclaimer  |  Comments [0]  | 
 Tuesday, February 06, 2007

Some of the problems a modern cow developer has to face... (thanks Brian - keep posting the funnies)

My contribution:


WATERFALL:  18 months ago, one cow went into the milking shead.  The method was sound, but you don't need milk any more.

AGILE:  Only milk when necessary. 

EXTREME PROGRAMMING:  You have two cows.  They milk each other.

TEST-DRIVEN DEVELOPMENT:  Know the bucket before milking any cows.

OPEN SOURCE:  I have a cow, you and some other guy from Norway milk it on weekends or when ever you have some free time. 

CONTINUOUS INTEGRATION:  Your team of two cows checks-in to the milking sheads every day.  Everyone has access to the milk.  Everyone feels good.

SERVICE-ORIENTED ARCHITECTURE:  We agree a schema for a cow.  No one feels dependant on any breed of cow, but no one has actually seen a complete cow.

SCRUM:  There is a backlog of milk orders.  Cows decide how they are to be milked.  Every 30 days the cows, pigs and chickens agree on an amount of potentially shippable milk.  The pigs and chickens get to decide when no more milk is needed.

SaaS:  You don't own the cows.  You rent access to them and pay for it out of OpEx.  Owning cows is outside of core business - you just need some milk.

Tuesday, February 06, 2007 12:53:08 PM (AUS Eastern Standard Time, UTC+10:00)  #    Disclaimer  |  Comments [0]  | 
 Monday, February 05, 2007

An easy one, but anyway... When building a target in NAnt that depends on a Web Service, the only change to your <vbc> or <csc> task is to make sure your sources include the Reference file that Visual Studio generated when you added/updated the Web Reference, as so:

<sources>
    <include name="MyProject\*.vb"/>
    <include name="MyProject\Web References\RemoteInterfaceWS\Reference.vb"/>
</sources>

I was also pleased to note that in cases where the wsdl imports a typed dataset (ie the remote Web Method takes or returns a typed dataset), Reference.[vb|cs] includes the dataset definition.  No need to add a step to execute xsd.exe!

Monday, February 05, 2007 3:11:53 PM (AUS Eastern Standard Time, UTC+10:00)  #    Disclaimer  |  Comments [0]  | 
 Friday, February 02, 2007

Got Build?

(sprint pending ;)

Friday, February 02, 2007 7:22:44 AM (AUS Eastern Standard Time, UTC+10:00)  #    Disclaimer  |  Comments [0]  | 
 Thursday, February 01, 2007

I love a good coincidence :-)  Couple of interesting expirations...

  • One of my credit cards expired today.  Not your problem I know, just saying...
  • The first Office 2007 betas expired today too.  If this stands between you and a productive morning in Outlook, grab the Beta 2 Technical Refresh and you will be able to the 31st of March.

*with apologies for the Dark Side of the Moon reference, I'm still on a buzz from seeing Roger Waters at the SuperdomeAcer Arena last week...

Thursday, February 01, 2007 12:04:52 PM (AUS Eastern Standard Time, UTC+10:00)  #    Disclaimer  |  Comments [2]  | 
 Wednesday, January 31, 2007

Don't get me wrong, I love Sharepoint.  Use it every day and sometimes even recommend it to others, but as no less an authority on the human condition as Ryan Adams put it, we hurt the ones we love :)

Sharepoint team:  please stop changing the names of things.  That will be all :-)

Wednesday, January 31, 2007 3:28:06 PM (AUS Eastern Standard Time, UTC+10:00)  #    Disclaimer  |  Comments [0]  | 
 Thursday, January 25, 2007

It has been hard to ignore some of the rumblings about the government's Access Card program, designed to improve the process around health and social services.

Problem is, there is an database nerd inside me that can see the merits of unified identity for what must be hunderds of computer systems of varying vintages in misc government departments.  The twitchy paranoid inside me detects that eerie National ID Card smell about them.  So I'm torn.

I wouldn't like to give the impression I know enough about this program to give informed critique, but I'm keeping an eye on this one...

Thursday, January 25, 2007 8:31:52 AM (AUS Eastern Standard Time, UTC+10:00)  #    Disclaimer  |  Comments [1]  | 
 Wednesday, January 24, 2007

First saw these in the back of Protect Your Windows Network and had cause to search for them today.  Here's the Linkage:

10 Immutable Laws of Security

Now look slightly more dated than I remember them ;)  So replace Password with Passphrase as appropriate etc, there is also some very good advice around too...

Wednesday, January 24, 2007 11:06:13 AM (AUS Eastern Standard Time, UTC+10:00)  #    Disclaimer  |  Comments [0]  | 
 Monday, January 22, 2007

Just back from leave this morning... Got a new personal best in email collection

 

Monday, January 22, 2007 8:01:39 AM (AUS Eastern Standard Time, UTC+10:00)  #    Disclaimer  |  Comments [4]  | 
 Friday, January 19, 2007

This is part two in a series of posts about ASP.Net Controls.

ASP.Net Controls, Part 2: Composite Custom Controls - some assembly required

Now these controls are able to be designed to have some reuse and life outside one particular project.  The up side is that you can piece together odds and ends from System.Web.Ui.WebControls just how you like them, and as per normal the actual rendering to HTML is left to ASP.Net.

The down side is you just start with a class, descend from WebControl and piece it together in code.

Here's a bare bones sample to illustrate the concept, but first some notes:

  • Import System.ComponentModel for the attributes on the properties.  This is how they display in your Visual Studio properties window
  • Use actual controls as backing variables for the properties.  You want to be holding instances of the controls you will display in your class, and then abstract their properties behind your own properties.
  • CreateChildControls is where you assemble what will eventually be rendered down to the browser by adding to the Controls collection exposed by the base class.
  • Call EnsureChildControls.  A lot.  :-) 
  • This sample control no behaviour.  Use += / AddHandler to wire up your controls to event handlers.  Omitted for clarity.
using System.Web.UI;
using System.Web.UI.WebControls;
using System.ComponentModel;

namespace MyProject.Controls
{

    public class CompositeControl : System.Web.UI.WebControls.WebControl
    {

        TextBox txtInput = new TextBox();
        Button cmdSubmit = new Button();
       
        protected override void CreateChildControls()
        {
            EnsureChildControls();

            txtInput.Text = DefaultText;
            Controls.Add(txtInput);

            cmdSubmit.Text = "Submit";
            Controls.Add(cmdSubmit);

            base.CreateChildControls();
        }

        protected override void Render(HtmlTextWriter writer)
        {
            base.Render(writer);
        }

        [Category("Appearance"), DefaultValue("Enter text here")]
        public string DefaultText
        {
            get
            {
                EnsureChildControls();
                return txtInput.Text;
            }
            set
            {
                EnsureChildControls();
                txtInput.Text = value;
            }
        }

    }
}

Friday, January 19, 2007 1:55:26 PM (AUS Eastern Standard Time, UTC+10:00)  #    Disclaimer  |  Comments [0]  | 

It occurred to me that ASP.Net has been a topic missing from my blog, so to rectify the situation I'm posting three pieces on Controls in the ASP.Net space.  Took me ages to get this straight in my own head so with any luck it will make sense here.

Part 1:  Web User Controls (ASCX files), the low hanging fruit

What better place to start.  These are the odd one out in the ASP.Net control space for a couple of reasons. 

  • While it is possible, they don't do reuse between projects well. 
  • They do have a drag and drop design time experience!
  • You drag them onto a page from the Solution Explorer, not the toolbox.

First thing to note is they have their own life cycle after Page_Load, and it feels a little like Server.Execute()

While they do have their own code behind class that inherits from System.Web.UI.UserControl, I try to not use too many properties on the class because I feel it gives a misleading impression in implementation.  Just say the thing has a text() property and in my Page_Load I set the text to something, well after Page_Load the thing can do what ever it wants to and then I have to go looking for what happened to my value for the text() property.

Re-use between projects requires some planning because they are not seperate from your web project, but re-use inside the same project is what they are best at.  Things like a navigational device, a customer lookup widget or something that makes an appearance more than once are good examples.  Pull them out, glue them together with a Web User Control, drop them back in.  Easy. 

Friday, January 19, 2007 1:00:54 PM (AUS Eastern Standard Time, UTC+10:00)  #    Disclaimer  |  Comments [0]  |