PrimeDigit – A Design Blog by Will Shaver

February 10, 2009

Agile Open Northwest 09

Filed under: Uncategorized — Will @ 10:13 am

I’ll be spending the next two days at a Agile Open Northwest. If you’re at the conference, come find me. :)

Otherwise I’ll be blogging about anything I find especially insightful.

February 5, 2009

Primary Keys

Filed under: Uncategorized — Will @ 12:18 pm

I’ve spent most of the past couple of days mapping a legacy database with NHibernate. Here’s how the design of this database probably went down:

Pointy Haired Boss: We’ve decided to cut costs by paying you per primary key instead of per hour.
DBA: Works for me.

Seriously. We have tables here with two varchars, one decimal, and one int ALL mapped to a primary key. So glad that I have NH to help me out here.

January 28, 2009

MVC RC1 Bug – And asp.net forums whining

Filed under: Uncategorized — Will @ 7:04 pm

Simple enough, it looks like some standards nazi went through and renamed the Login to Logon in several places for RC1. Unfortunately it did not get renamed in the Web.config for the redirect on failed login url.

    <authentication mode="Forms">
      <forms loginUrl="~/Account/Login"/>
    </authentication>

Where it needs to be:

    <authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn"/>
    </authentication>

But when I went to the asp.net forums to report this bug, I did the conscientious thing and tried to determine if it had been reported already. Searching for “RC1 logon login” yielded too many results. So I’ll wade through the tree view to only check the asp.net mvc forum. (2004 called, wants it back.) I then realized it was sorting by some kind of relavance instead of date. Where’s the date sort? Lets try going back to the “more search options” Ohh, thanks for clearing my existing search. Perhaps if I hit “back” instead? Still no luck. Ohh wait, there’s a big notice at the top of the search page:

Search will be undergoing maintenance to improve results on Tuesday, January 6, 2009 from 7pm – 10pm Eastern Time, United States.

Ohh. So this is the IMPROVED version? Sigh. I’ll post it here instead.

January 13, 2009

Stock Photos FTW

Filed under: Uncategorized — Will @ 9:29 am

Sometimes using a stock photo can help sell your product. Perhaps this one is trying to convince the buyer what not to do. Or something.

clipart.jpg

December 18, 2008

Round datetime to nearest 5 minutes

Filed under: Uncategorized — Will @ 12:01 pm

This took me forever to find online, so I’m posting it here for the next helpless soul. If you need to round datetimes coming out of sql to the nearest 5 minutes, here you go.

dateadd(mi,(datepart(mi,dateadd(mi,1,DateTimeColumn))/5)*5,dateadd(hh,datediff(hh,0,dateadd(mi,1, DateTimeColumn)),0))

December 15, 2008

Personal Blog

Filed under: Uncategorized — Will @ 2:06 pm

If you want to hear random drivel about my life, I’ve started a personal blog over at willshaver.com. I will continue to use this one for software related posts.

December 10, 2008

Headaches with ASP.MVC UI Helpers

Filed under: Uncategorized — Will @ 1:49 pm

I’ve been beating my head against the UI helpers a lot lately and wanted to share a frustration point. Say I want to do something using the DropDownList, so you map a property on your page that returns a Select List:

<%= Html.DropDownList("db", SelectList)%>

        public static SelectList SelectList
        {
            get
            {
                List<ListItem> items = new List<ListItem>
                                           {
                                               new ListItem {Selected = true, Text = "All", Value = ""},
                                            new ListItem {Text = "Apples", Value = "Ap"},
                                            new ListItem {Text = "Bananas", Value = "Bn"},
                                            new ListItem {Text = "Oranges", Value = "Or"}
                                           };
                return new SelectList(items);
            }
        }

Seems simple enough right? I’m giving the select list a list of ListItem. I’m using YOUR api. I don’t expect that THIS is what I get back:
ListItems

Looks like you’re assuming that I won’t use your list of items:

        [SuppressMessage("Microsoft.Design", "CA1024:UsePropertiesWhereAppropriate",
            Justification = "Operation performs conversions and returns a unique instance on each call.")]
        public virtual IList<ListItem> GetListItems() {
            return (!String.IsNullOrEmpty(DataValueField)) ?
                GetListItemsWithValueField() :
                GetListItemsWithoutValueField();
        }

Perhaps a check to see if the items in the enumerable ARE already LISTITEM would be appropriate?

For the record, changing it to this makes the code work:

return new SelectList(items, "Value", "Text", items[0]);

But what happened to convention over configuration?

Edit: ok, the “correct” way I posted wasn’t actually correct. You can’t put the “Selected” item in the selectedValue field, you have to put the value there, in this case “Bn” or “Ap” etc. Heaven forbit putting the actual selected item as the parameter. Or pulling the selected item automatically from request values.

December 1, 2008

JQuery In Action

Filed under: Uncategorized — Will @ 2:30 am

JQuery In Action:
347 Pages, not a single mention of the queue() method.

To be fair, they do mention “mainaining state”. (sic)

October 27, 2008

Is this the .future you were expecting?

Filed under: Uncategorized — Will @ 10:07 am

ICANN RFC for anything.* domain names. Might want to take a look. Most of you readers play in this here internets thing, this could effect you or the company you work for. :)

October 19, 2008

ActionFilter / ParameterBinder sequence

Filed under: Uncategorized — Will @ 12:23 pm

For future reference for myself and others:

1. CustomModelBinderAttribute -> GetBinder()
2. IModelBinder -> BindModel()
3. ActionFilterAttribute -> OnActionExecuting()
4. ActionFilterAttribute -> OnActionExecuted()
5. ActionFilterAttribute -> OnResultExecuting()
6. ActionFilterAttribute -> OnResultExecuted()

(As of Beta 1)

« Newer PostsOlder Posts »

Powered by WordPress