Planning Poker

Because I know I’ll forget where I found these things (despite having added them to Delicious), I figure I should add them here.

A hand of Planning poker cards

For those who are unfamiliar with the concept, Planning poker is a consensus-based technique for estimating, mostly used to estimate effort or relative size of user stories in software development. In Planning poker, members of the group make estimates by playing numbered cards face-down to the table instead of speaking them aloud.

Once everyone has played a card, the cards are revealed and the estimates are discussed. By hiding the figures in this way, the group can avoid the cognitive bias of anchoring, where the first number spoken aloud sets a precedent for subsequent estimates.

I’ve just mailed round my team and asked them to install the Android or iPhone app, so we can use Planning poker in an estimating session I need to run soon.

The photo of a Planning poker set used in this article is taken from the Wikimedia Commons and was released into the public domain by its author, Wikipedia user Hkniberg.
Advertisements

Graphics.DrawString

I’m getting very frustrated with trying to generate text on images in .Net. Whilst the process to do so is pretty simple, the results one gets simply aren’t that satisfactory.

I have the following code (really very simple, as you can see) in an IHttpHandler, which I call in a loop to iterate through some of the fonts on my system as a proof-of-concept:

Far more detail here, behind a cut so as not to confuse / irritate all my non-techy friends

Accessing an XML-RPC service

I’m trying to access an XML-RPC service from C# that I’m building. I’ve had absolutely no response from my message on the XML-RPC.net YahooGroup, so I started looking at the only other .Net XML-RPC class library out there: XmlRpcCS, which is only confusing me further.

The cause of my problems appears to be that XML-RPC.Net seems to require all its proxy objects to be structs. I, however, would like to use class objects, so I can add other functionality into the classes (constructors, the ability to have properties that are masked from the XML-RPC output and so on).

Now if this were XML serialisation, I would use the attributes that control XML serialisation, such as [XmlIgnore]. Without rewriting half of the class library, though (which would seem to defeat the purpose of using it!), I can’t do something like that.

Does anyone here have any experience of using an XML-RPC library for .Net?

(Cross-posted to csharp and ms_dot_net.)

Possible .Net regex bug?

For reasons too dull to explain, I’m trying to use regular expressions to postprocess an HTML-stream. I want to find all anchor (<a/>) tags that link within our site, in this case using the domain name.

My regular expression looks right to me, but .Net is convinced I don’t have enough close-parentheses. I’ve added line breaks for clarity:

   (?<=<a[^>]* href=['"]?)
   (?<before>https?://[a-z0-9.-]*uswitch\.[a-z]+/[-\w_,.%/~]+)
   (?<querystring>\??[-\w&=~]*)
   (?<fragment>#?[-\w&=~]*)
   (?=['"]?[^>]*>)

I’ve tested both the above code with the line breaks removed and the original code (which is compiled with RegexOptions.IgnorePatternWhitespace and has embedded comments for ease of maintenance. Each time, I get a System.ArgumentException: parsing "..." - Not enough )'s.

Despite that I’m quite certain they’re perfectly matched.

Anyone?

Cross-posted to ms_dot_net and regexp.

Databinding methods such as Eval(), XPath(), and Bind() …

I’ve spent loads of time Googling to try to work this one out and I’m
sure it’s something obvious.

I get an InvalidOperationException reading “Databinding methods such as Eval(), XPath(), and Bind() can only be used in the context of a databound control” when I start my page. Unless I’m missing something obvious, this is not the same issue as the “2-way databinding cascading lists” issue (which is linked from everywhere; I kinda wish that were my problem ;o)

I have a templated databound custom server control, that I’ve built with a great deal of help from the two articles by 4GuysFromRolla‘s Scott Mitchell (1, 2).

I don’t seem to be able to use databinding syntax, however:

   <ItemTemplate>
      <asp:TableCell runat="server"><%# Eval("First") %></asp:TableCell>
      ...
   </ItemTemplate>

bound to a List<Pair> gives me an exception:

[InvalidOperationException: Databinding methods such as Eval(), XPath(),
and Bind() can only be used in the context of a databound control.]
   System.Web.UI.Page.GetDataItem() +90
   System.Web.UI.TemplateControl.Eval(String expression) +110
   ASP.owentest_aspx.__DataBind__control8(Object sender, EventArgs e) in
      c:\Projects\Customisation\RedesignProtoTypeWeb\Owentest.aspx:13
   System.Web.UI.Control.OnDataBinding(EventArgs e) +80
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +198
   System.Web.UI.Control.DataBind() +12
   System.Web.UI.Control.DataBindChildren() +214
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +208
   System.Web.UI.Control.DataBind() +12
   System.Web.UI.Control.DataBindChildren() +214
   System.Web.UI.Control.DataBind(Boolean raiseOnDataBinding) +208
   System.Web.UI.Control.DataBind() +12
   uSwitch.Web.UI.Lego.RepeatingInputRow.CreateItem(Int32 rowIndex,
      Table container, Boolean useDataBinding, Object rowData) in
      C:\Projects\uSwitch.Web\UI.Lego\InputModule\RepeatingInputRow.cs:361
   uSwitch.Web.UI.Lego.RepeatingInputRow.CreateControlHierarchy(Boolean
      useDataBinding) in
      C:\Projects\uSwitch.Web\UI.Lego\InputModule\RepeatingInputRow.cs:452
   uSwitch.Web.UI.Lego.RepeatingInputRow.DataBind() in
      C:\Projects\uSwitch.Web\UI.Lego\InputModule\RepeatingInputRow.cs:643
   Owentest.Page_Load(Object sender, EventArgs e) in
      c:\Projects\Customisation\RedesignProtoTypeWeb\Owentest.aspx.cs:20
   System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object
      o, Object t, EventArgs e) +13
   System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object
      sender, EventArgs e) +45
   System.Web.UI.Control.OnLoad(EventArgs e) +80
   System.Web.UI.Control.LoadRecursive() +49
   System.Web.UI.Page.ProcessRequestMain(Boolean
      includeStagesBeforeAsyncPoint, Boolean
      includeStagesAfterAsyncPoint) +3716

I don’t get the exception if my databinding control is outside the table cell but, for a handful of other reasons, including that my ItemTemplate is being instantiated inside a TableRow, that won’t work for me.

Any ideas gratefully received, as I’m completely lost. If you don’t want to leave thoughts as a comment on here, feel free to email me (owenblacker at uswitch dot com). Cross-posted to and .