Hanalei, Hawaii 2010-03-16

General posts

Make BDD Your BFF

symmetry I just can’t say enough about BDD (Behavio[u]r Driven Design) and how it’s helping me with an application I’m writing (which you’ll know all about soon enough). I’ve stopped myself from soooo many stupid errors it’s unbelievable – and since I’ve been writing so many opinion posts lately, I thought I’d do an end to end BDD post for the masses.

Magical Dynamic Mystery Tour

Phil Haack is not only a good friend, he’s also a damn good writer. He has a talent for focusing sharply on a point, and then supporting it with quick wit and a fat brain – a deadly combination should you find yourself disagreeing with him or his point of view. With his last post on the new C# dynamic keyword – I found myself in just such a position – and it’s going to get ugly. Phil: you’ve been served my friend! It’s a Blog Fight – pass the popcorn! OK not really – but these discussions are fun and I was going to leave a really long comment on Phil’s blog – instead I’ll just write my own post.

My Enemy, My Self

I’m building an application which I’ll talk more about later – but this one’s different from other applications I’ve built: this one’s for me. In the same way teaching your spouse/significant other how to do X is a major pain in the ass, building your own application makes you do dumb, silly things (I think Jeff Atwood might be able to back me up on this one…). This, friends, is a story of my pain to ease your Monday blues.

I Love Reviews

I’m a bit steamed. I walked around the block, hugged my cat, infused my chakras with candles made from persimmon and sage by a monk in Kalalau… I even took a few deep breaths. It’s not working and I feel compelled to tell you why.

Temet Nosce

This post is a bit of a downer – at least for me – but it comes on the heals of this Tweet by Scott: One of those positions is mine. I’ve made the tough decision to leave Microsoft and go back to working for myself.

Be a Good Jedi: Build Your Own Blog

Every developer has a blog, and every developer bitches about it – mostly because (and this is my theory) they always think they can do better themselves. The only people who don’t bitch about their blogs are the guys who are building the engines (they just bitch about each other’s :).

Uncle Bill Never Reads Rob’s Blog

I got a comment on my post suggesting you learn ASP.NET MVC from a person whom I’ve talked to a lot over the years – Gerry Lowry: There are four nerd diner nerds, We've hear from one that's ornery, but what about the second, third, and the head honcho fourth?

You’re Not Your Data Access

Seems I touched off a bit of a “swirl” with a comment I made on my last blog post:

Jumping The 20 Fence

Before I worked at Microsoft I worked at/with/for various startups. Depending on who you talked to, I was involved in building rockets, the Next Big Thing, and a Super Whamadyne Paradigm-Shifter.

A Long, Long Day

00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 01011111 01011111 01011111 01011111 01011111 01011111 01011111 01011111 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101100 00101110 00101101 00100111 00100111 00100111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100111 00100111 01111110 00101110 00101100 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101100 00101110 00101101 00100010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100010 00101101 00101110 00101100 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101100 00101111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100010 00111010 00101100 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101100 00111111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101100 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101100 01111101 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101100 00111010 00100111 01011110 00100111 00101110 00101110 01111101 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101100 00111010 00100010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101111 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00111111 00101110 00101110 00101110 00101110 00101110 01011111 01011111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00111010 00100111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101111 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101111 01011111 01011111 00101110 00101000 00101110 00101110 00101110 00101110 00101110 00100010 01111110 00101101 00101100 01011111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101100 00111010 00100111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101111 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101111 00101000 01011111 00101110 00101110 00101110 00101110 00100010 01111110 00101100 01011111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100010 01111110 00101100 01011111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101100 00111010 00100111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 01011111 00101111 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 01111011 00101110 00101110 01011111 00100100 00111011 01011111 00101110 00101110 00101110 00101110 00101110 00101110 00100010 00111101 00101100 01011111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100010 00101101 00101100 01011111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101100 00101110 00101101 01111110 00101101 00101100 01111101 00101100 00101110 01111110 00100010 00111011 00101111 00101110 00101110 00101110 00101110 01111101 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101000 00101000 00101110 00101110 00101110 00101110 00101110 00101010 01111110 01011111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100010 00111101 00101101 00101110 01011111 00101110 00101110 00101110 00101110 00101110 00101110 00100010 00111011 00101100 00101100 00101110 00101111 00100111 00101110 00101110 00101110 00101110 00101111 00100010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101111 00001101 00001010 00101110 00101110 00101110 00101100 00101100 00101100 01011111 01011111 01011111 00101110 00100111 01111110 00101100 00101110 00101110 00101110 00101110 00101110 00101110 00100010 01111110 00101110 00101100 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100111 00101110 00101110 00101110 00101110 00101110 01111101 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101111 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101000 00101110 00101110 00101110 00101110 00100111 00111101 00101101 00101100 00101100 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101000 00101110 00101110 00101110 00101110 00101110 00101110 00111011 01011111 00101100 00101100 00101101 00100010 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101111 00101110 00100111 01111110 00101100 00101110 00101110 00101110 00101110 00101110 00101110 00100111 00101101 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101111 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100111 01111110 00101110 00101010 00101101 00101100 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 01111100 00101100 00101110 00101111 00101110 00101110 00101110 00101110 00101110 00101100 01011111 01011111 00001101 00001010 00101100 00101100 01011111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 01111101 00101110 00111110 00101101 00101110 01011111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 01111100 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100111 00111101 01111110 00101101 00101100 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00100111 00111101 01111110 00101101 00101100 01011111 01011111 00101110 00101110 00101110 00101110 00101110 00101110 00100111 00101100 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100111 00111101 01111110 00101101 00101100 00101100 00101110 00101100 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100111 00111010 00101100 00101100 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 01011111 01011111 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100111 00111101 00101101 00101100 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101100 00100101 00100111 00111110 00101101 00101101 00111101 00111101 00100111 00100111 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 01011111 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 01011111 00101100 00101101 00100101 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00100111 00001101 00001010 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101110 00101100

What Should Microsoft Do For .NET Open Source?

I've been reading a lot of old blog posts tonite regarding Microsoft and Open Source - it really reminds me of the interesting stances the company has taken over the last 5 to 10 years (I've only been working with Microsoft for just about 2 years now). For instance - I read a post from Scoble that goes over why "Web 2.

…In Which We Discuss Writing a Book on MVC

“I can’t believe you’re using your blog to pimp you’re book! You’re such a … [not a nice word]”.

I Spose I’ll Just Say It: You Should Learn MVC

I’m never shy about my opinion – why start now? I’ve been reading a lot of posts flying about on whether you should learn MVC, Summing up the differences so you can decide when to use it, I even found a post that offers a scorecard approach!

Tip: Using Full Text Search With a Table-Valued Function

I’ve been working with the SubSonic forums lately (CommunityServer) as I prep them for retirement (archiving, searchable). One thing I really need to is to be able to run accurate searches based on free text – so over the weekend I’ve been goofing around with Full Text indexing and it hit me that not a lot of people know a little trick you can pull with a Table-valued function.

Full Text Indexing SQL

This is one of those posts that’s for me to remember (cause I always forget it) and perhaps could come in handy for you too. From time to time I need to setup Full Text Indexing (yes I know there’s lots of alternative) and I hate using the IDE if I don’t have to.

Rolling a Bubble – ASP.NET MVC is Ms-PL

I'm sure you've seen the news: I'm excited today to announce that we are also releasing the ASP.NET MVC source code under the Microsoft Public License (MS-PL).

Cool Extension Methods for New StringOr

Eilon is a madman. If you ever get the chance to actually meet the guy you’ll see right away that part of his brain is engaged in quasi – dimensional pursuits.

Nerddinner and a Free Book!

Finally! Today we're announcing something pretty dang cool: a FREE ASP.

Patterns, Purists, and Sinkholes

Before I was a geek, I was a Geologist. A Geophysicist to be precise - but mostly I just tell people I was a Geologist.

5 Secrets To Ninja Writing

Sometimes I find myself with absolutely nothing to say and yet decide to write a post anyway. Do you ever have that problem?

Software Design Kuleana

Last year I tore apart my kitchen with a sledge hammer and a crowbar. I knocked a wall down, ripped out the old, crumbly cabinets, and tore up the 20-year old vinyl flooring that was discolored and horrifically 80's.

More OODB Crazy Talk

I listened to the Alt.NET Podcast the other day and there was a crazy guy who sounded an awful lot like me on there talking about Object Databases.

Where’s MVC Storefront?

A lot of people have been asking about the Storefront and whether I've abandoned it with all that's gone on with Oxite, etc. The short answer is no - I haven't.

Oxite Refactor, Take 1

I mentioned yesterday on Twitter that I'm helping out the Oxite team with some refactoring and tweaking of their codebase. I got started last night and people have been asking about it a LOT, so I thought that today I'd show you initially what I'm up to.

How To Spend a Day on the Islands for Christmas

Last night I was watching the sunset here at my house, watching the lightning ripple across the sky as mellow slack-key tones twanged in the other room. Work can get .

XSS Follow Up: Search Suck

I knew this would happen. I put up a post about spamming and XSS and wouldn't ya know it, within minutes I was receiving emails that my blog here had some vulnerablities :).

Some Thoughts on Oxite

Recently, the Platform D&E (developer evangelists) group released Oxite, a CMS/blog application that is summarily described thus: Oxite is an open source, standards compliant, and highly extensible content management sample that can run anything from blogs to big web sites. We know this because it runs MIX Online.

The Perfect Storm Botnet

I'm sure you've been told, numerous times no doubt, about Cross-site scripting and that it's bad. I think, for most developers, the only fear they have of XSS is looking foolish when someone hacks their site, shredding the layout of their pages and sending popups all over the screen.

SubSonic Linq Support - Help Me

I've been hammered in the past for incomplete support solutions, and for bouncing between forum solutions and project sites. There are no excuses - it's completely my fault.

Saimin: Hawaii in a Bowl

This is an off-topic Saturday post that came to mind as I was eating lunch. I haven't written an off-topic in a while, so I thought today might be the day I write about something that is very close to me: one reason I live where I do.

One Year At Microsoft

I just got my notice that it's been one year here at the Blue Monster. Interesting, that.

Please Vote

I'm no stranger to the off-topic political posts when the occasion calls for it - and this is one of those occasions. Over the last few months I've talked to a lot of people and was amazingly surprised to find out how casually people take the responsibility of voting.

Crazy Talk: Reducing ORM Friction

Let's get this out of the way: I know you're going to think I'm nuts as you read this. You may "pfft" to what you're about to read - know that I know you're "pfft"-ing me.

ASP.NET MVC DropDownList and HTML Attributes

I ran into a "weirdness" the other day while working up some sample code for this little book I'm writing and thought I would share it with the community since hit me sideways. I was using ASP.

Why The Web Application Installer Rocks

Scott beat me to it. I had been waiting a bit to talk about the new Web Application Installer from the IIS team but got scooped.

Make Visual Studio Generate Your Repository

As many of you may know, I've been goofing around with Code Generation again with SubSonic's new MVC Addin. One of the things I really wanted to try and flex is Visual Studio 2008's code generation bits - T4.

Growing Up Geek

I've been tagged by Scott Hanselman, who's asking: Did you grow up a geek? Let's see what you looked like as a young burgeoning nerd or nerdette.

MVC Storefront's Next Episode

Yes, I know this is becoming a habit - but the last bits are tough! This one's worth waiting for though, I think :).

jQuery and Visual Studio BFF

As I'm sure you know by now, jQuery is going to ship with Visual Studio in the future and will also be distributed as part of the ASP.NET MVC installation.

Storefront 21 Is On The Cutting Room Floor

It's annual review time at Microsoft and I've been a tad distracted with that and some other things that I hope to show off in the next 2 weeks. I did find time to record about 40 minutes of stuff (usable stuff) over the last 2 weeks and I've been cutting/splicing it together over the last few days.

Your Most Successful Project

Had a funny conversation with a colleague the other day where we talked about coding, project process, platform, etc. and we started talking about "Our Most Successful Project" and what it was and why.

MVC Storefront: Hang In There...

I've refactored to Preview 5 and posted the source up to CodePlex and now I'm doing some work on the Order Fulfillment piece. I'm recording all of it but there are some ... *things* ... that are inspiring me at the moment that are related to what I'm doing here (building an application). I've decided that chasing and refining those could help me to finish this faster. So hang in there. It'll be worth it! I should have another episode ready by this Friday.

Hacking Your Vote

If you were hired to create some software to count votes in an election, how would you do it? What considerations would you have and how would you implement them.

MVC Storefront: Intermission 2

I'm currently updating the site to work with Preview 5 and there have been some significant changes - as well as opportunities to upgrade the way I've been doing some things. I'm going to take a few days here to make sure all things are working correctly. Hopefully I'll be able to pop out a new episode on Friday...

Working With Linq's Expression Trees Visually

I've been working a lot with LINQ over the last few months, trying to approach it sanely with respect to SubSonic. It's not that it's terribly difficult to understand - it can simply be overwhelming at times with how much is in there.

Trying Disqus

Read Scott Watermasyk's post today on Disqus (spose to read like "discuss") and it sounds very intruiging. I've always hated the way comments are managed in ANY blog platform (although Graffiti does it pretty well).

Magically Deleted Comments

I left a comment on Chris Cyvas post today about LightSpeed and SubSonic. Turns out that I got stuck in a time warp .

One Hundred Pushups Twitter Challenge

I've been feeling like poop today and I thought I was getting sick - turns out I was just stressed out. This is both good and bad - good in that I don't have a virus, bad in that I'm THAT stressed out.

What if Kubrick Made Revenge of the Sith?

It's Friday and I feel horrible. I called in sick and for the last few hours I've been laying here, bored out of my mind, feeling flat out yucky.

How I Got Started In Software Development

I've been meme-pinged by a few people (Ryan Lanciaux and Father Damien Guard - who I got to meet at ASP Insiders and who looks remarkably like Thom Yorke) and in the spirit of wasting time and adding (extremely needed) more words to the blogosphere, here it is: stuff about me I know you desperately care about. How old were you when you first started in programming?

TDD and Fail Code

I feel like Ayende, posting little snippets of code weirdness as you write them (or see them). Today, when testing the OrderService and transactional stuff for the MVC Storefront, I wanted to write a test that would conclusively show that an order would fail if the Authorize() method of IPaymentService threw.

MVC Storefront: Progress Report for July

I spent a week in Redmond earlier in the month at the ASP Insiders Summit and wasn't able to get too much work done on the store. There's a lot going on, as you can imagine, and with the next screencast I want to start to tie the application up - at least from the user's perspective.

Lazy Loading With The LazyList

In one of the first few episodes of the MVC Storefront, Ayende decided to be brilliant and came up with a really cool way to handle lazy loading with Linq To Sql: The LazyList. If you're not familiar with the term, "Lazy Loading" applies to the concept of an object that has a property which is a collection of child objects - like a Category would have Products.

Challenge: Tell Me Why These Things Happen

The last few weeks has been ripe with weirdness. On three separate occasions I've been jarred into an alternate Macarena universe where I can still get Lucky Charms from WebVan.

ASP.NET MVC: Avoiding Tag Soup

Every time I do a demo or post something about MVC, I invariably get the comment: "this is Spaghetti Code from the bad old days of ASP Classic". Gimme a break.

ASP.NET MVC Preview 4: ComponentController Is Now RenderAction

I found out the other day (the hard way) that ComponentController - my beloved little prototype - was ripped mercilessly from the MVC framework in Preview 4 and cast into the Pit Of Carkoon to "be slowly digested over thousands of years". I was mortified, vaklempt, the refactor dingo ate my baby!

Kill Your Users Table

It's time to rethink how we store user information. You don't need as much as you think you do.

ASP.NET MVC: List Helper Extension Method

When I created the prototype of the MVC Toolkit (the HTML Helpers), there was a method in there that I was particularly fond of: ToFormattedList(). This Extension method would take an IEnumerable (or IEnumerable) and create a simple formatted list out of it.

Off-topic: Social Change Artists

This last week I was on vacation with some friends of mine in the Northern California foothills (Pinecrest Lake). My buddy John has a cabin up there that's been in his family for almost 80 years, and it's the perfect place for a bunch of aging dudes to act like idiots and talk politics.

ASP.NET MVC: Script Registration Helper

While building out the MVC Storefront, I find that I'm creating quite a large "Helper" library for doing common things, like registering script tags and CSS sheets. I decided to tighten this up a bit and created a helper I kind of like.

MVC Storefront: Best Episode Yet Is On It's Way Monday

I sat today with Jeremy Miller (the Shade Tree Guy - what does that mean anyway?) for 2 whole hours as we replumbed the site to work with StructureMap.

Slammed With Goodness

I've been turning up the heat in terms of getting content out for the MVC Storefront series, and it's caused a bit of an avalanche for me. I've had to "double my efforts" of late as I've been falling behind some, and in doing so I've been smothered in geeky goodness.

Alt.NET Conference In Kauai?

A late night Skype with Scott Bellware has turned into something. stange.

SubSonic: 2.1 Beta 3 is Ready

You can get it here. Eric has a great write up here. This is all Eric, Yitzock (adminjew), and Shawn Oster. I can't thank these guys enough for their work. Tremendous amount of bug fixes and optimizations... just awesome.

TDD: The Road So Far

I've had some interesting experiences on TDD Island over the last month or so, and I thought it would be a good idea to share what I think so far. Evan Hoff asked me in a comment on my last post: SOO.

My Favorite Memes

Behold, the meme (from Wikipedia): A meme (pronounced /mi?m or m?

Friday Thoughts

54 68 65 20 42 72 65 65 7a 65 20 61 74 20 64 61 77 6e 20 68 61 73 20 73 65 63 72 65 74 73 20 74 6f 20 74 65 6c 6c 20 79 6f 75 2e 0d 0a 0d 0a 44 6f 6e 27 74 20 67 6f 20 62 61 63 6b 20 74 6f 20 73 6c 65 65 70 2e 0d 0a 0d 0a 59 6f 75 20 6d 75 73 74 20 61 73 6b 20 66 6f 72 20 77 68 61 74 20 79 6f 75 20 72 65 61 6c 6c 79 20 77 61 6e 74 2e 0d 0a 0d 0a 44 6f 6e 27 74 20 67 6f 20 62 61 63 6b 20 74 6f 20 73 6c 65 65 70 2e 0d 0a 0d 0a 50 65 6f 70 6c 65 20 61 72 65 20 67 6f 69 6e 67 20 62 61 63 6b 20 61 6e 64 20 66 6f 72 74 68 20 61 63 72 6f 73 73 20 74 68 65 20 64 6f 6f 72 73 69 6c 6c 0d 0a 57 68 65 72 65 20 74 68 65 20 74 77 6f 20 77 6f 72 6c 64 73 20 74 6f 75 63 68 2e 0d 0a 0d 0a 54 68 65 20 64 6f 6f 72 20 69 73 20 72 6f 75 6e 64 20 61 6e 64 20 6f 70 65 6e 0d 0a 0d 0a 44 6f 6e 27 74 20 67 6f 20 62 61 63 6b 20 74 6f 20 73 6c 65 65 70 2e 0d 0a 0d 0a 2d 2d 52 75 6d 69

Crossing The Finish Line: Can A Software Application Ever Be Done?

Had an interesting conversation the other night with a buddy of mine wherein we were wondering if it's possible that an application can actually be "finished". By "finished" I mean it does what it's supposed to do, does it well, and delivers the value it's promised.

My Personal Lambda Crusade

I love lambdas and I'm pretty sure they solve every problem imaginable. Why just the other day my daughter painted her face with leopard spots, using a Sharpie pen, and I said to myself "Rob(x=>x.

ASP.NET MVC: Securing Your Controller Actions

Many people on the forums want to know how to best protect Actions on their Controller using Forms Authentication. The MVC Team has done a nice job introducing Filters (using Attributes) to this latest drop of MVC, and in this post I'll show you how to create a filter that can handle security.

Creating IN Queries With Linq To Sql

Props on this one go to Scott Hanselman who pulled me back from the edge of the cliff last night. I was particularly distraught in getting a MIX demo together where I had to do some queries using LINQ, and I couldn't for the life of me figure out how to fashion an IN query!

LINQ Gymnastics: Creating A Predictive Query With LINQ

As you may have guessed, I've been using LINQ a whole lot with Adventure Works lately. It's been.

Using IoC TDD To Design Tomorrow's Car

I spent Saturday with my buddy Eric, in his garage, drinking really bad Coors Light and talking about cars. He was rebuilding this Jetta of his, swapping out the gas tank to add in a Bio Diesel system.

Videos For a Friday Night

I watched two videos today that just got me rolling. The first one (kind of creepy how completely accurate it is) is Tina Wood's life at Microsoft : The second is the Channel9 interview with Scott Hanselman.

My iPhone, Six Months Later...

I bought an iPhone roughly six months ago and I thought it would be a fun thing to post my experiences with said phone. You either love em or hate em - no getting around it.

Crazy Talk: Inline Scripting Revisited (Or, 2003 Bites Back)

A few months back, right before I was hired by Microsoft, I knew people wouldn't look kindly on the forthcoming ASP.NET MVC Framework and it's support of Inline Scripting.

Off-Topic: Geek Auction

I want an XBox, wife doesn't. We finally bargained and she told me if I recycled some of my old gadgetry on eBay I could use that money to get an XBox.

Some Thoughts On Blogging

What could be more boring - a blog about blogging :). Usually when I read a post title which suggests "Blog Like Me, Today!

Scott Hanselman Is Not a Dick

In my write up on ASP.NET MVC, I decided to recount my conversation with Scott Hanselman on the subject of the "story" behind ASP.

A Hack's Guide To Unit Testing Generated HTML

UPDATE: Refactored and tweaked the validation method below by popular request! I know this might make some people groan - but that's OK - I'm used to it.

Source Control and Continuous Integration On The Cheap

There are many solutions out there for Source Control and Build Servers (with Continuous Integration) - most notably (and in no particular order) Team Fortress Foundation Server, Subversion, CruiseControl.NET, and CI Factory.

Ramble: ASP.NET MVC Is A Geek Chisel

Scott Hanselman and I were on the phone the other day talking about Community stuff surrounding MVC and certain ideas we had. The next thing ya know we're waving our phone arms and waxxing poetic as we try to phrase what we think the "MVC Story" is.

Riding The Geek Rewrite Wave

On the plane tonight (I'm in Redmond this week) I got to thinking about writing "Maintainable Code" and what it means in light of our fad-centric industry which churns itself every 18 months or so with a new language or platform version. We all inherit projects and are confronted with Geek Lust to rewrite everything in our own image - but what is the motivator for you when you do this?

Off-topic: The Art Of Brewing Beer

I'm an avid brewer and have been for the last 16 years. My good friend John Kirk brewed up a batch of beer in our kitchen when we were just out of college and sharing a house in Berkeley, CA.

ASP.NET MVC: Using UserControls Usefully

This post is in response to a forum user, who is wondering how to properly use a ViewUserControl: I'm sorry if this is a really silly question, but I'm having a hard time grokking what the right usage of a ViewUserControl looks like. Does one invoke the RenderView from a controller?

Me Gusta Los Angeles

Just got done reading Phil's post about Leaving LA and it made me homesick. The odd thing is, I'm in LA right now, on vacation with my family, sitting in the house I grew up in, visiting my momma and I'm still homesick, but I'm very happy because it's right outside my door, and when I get done I'm headed out into the sights, smells, and sounds of the city that I love.

ASP.NET MVC: Using Helper Classes And Services

This question has come up many times in the forums: I have an application that needs functionality X, but I need it everywhere - including my Master Page. Where should I put this stuff?

... In Which We Discuss HTML-Encoding

Having a great discussion over on the ASP.NET MVC forums about Html-Encoding and what should be done about it.

ASP.NET MVC: Choosing Your Data Access Method

I've been asked a lot over the last few weeks this question: Should I use SubSonic, LinqToSql,  or  NHibernate? And I think it's probably a good idea to go over these things in a post - so here goes.

It's Haack Season

Phil's a Forum Hound (with some great hair I might add - it does that Becks faux-hawk thing), and I'm getting cheesed off about it. He and I are in a bit of a competition up at the ASP.

ASP.NET MVC: PagedList<T>

In some of his demos, ScottGu used a method that we didn't include in the MVCToolkit called "PagedList", which basically pages a Linq query. I'm hoping to include this in the next drop of the Toolkit, but until then, I have the code for you :).

ASP.NET MVC Is Here (CTP)

The bits:

Save Your Wrists With Geek Performance Enhancers: CodeSnippets and Toolbox Items

CodeSnippets are something we use every day, and from what I know, they are severely overlooked. In this post I'll show you how to create your own to do the things you do a lot of, and also how you can use your Toolbox to store the things you seem to write over and over again.

ASP.NET MVC: Using RESTful Architecture

There's a lot of information out there on how to do specific things with ASP.NET MVC, but not much in the way of architectural approaches that you can use to leverage the new MVC option.

ASP.NET MVC Preview: Using The MVC UI Helpers

For the last month or so I've been working on the MVC UI Helpers (aka the MVC Toolkit) that will help developers work with HTML in their Views. These helper methods are primarily Extension Methods, and are designed to encapsulate UI code in much the same way that Server Controls do with Web Forms.

Hey Cool Kids - Alt.Crank is Boring

I don't like categorizations, and I "super" don't like it when people hoist a flag to identify themselves and "how they roll" in an exclusive way. When I first heard the term "Alt.

Thoughts for Thanksgiving

I've been thinking a lot today about what it means to be thankful. Truly thankful - not just "aww that's sweet" kind of thankful.

Phi-ling Up Your UI

Math isn't just for breakfast anymore. In fact, it turns out, there's a lot you can actually do with Math, aside from using it to sound like you know a lot of stuff.

This Aint No Disco

My first week at Microsoft is just about over. This is a pretty whack deal.

Geeks and Vegas: Get Your Social On

So I'm in Vegas right now at DevConnections/DotNetNuke OpenForce. I should be downstairs in the smoke-filled casino, watching friends hand over well-earned money to the Vegas machine.

New SubSonic Provider: LOLCode.NET

Just finished putting the wraps on a new provider for SubSonic using the new LOLCat.NET coding engine.

Thoughts For a Thursday

01010100 01101000 01100101 01110010 01100101 00100111 01110011 00100000 01101110 01101111 00100000 01100101 01100001 01110010 01110100 01101000 01101100 01111001 00100000 01110111 01100001 01111001 00100000 01101111 01100110 00100000 01101011 01101110 01101111 01110111 01101001 01101110 01100111 00001101 00001010 01010111 01101000 01101001 01100011 01101000 00100000 01100100 01101001 01110010 01100101 01100011 01110100 01101001 01101111 01101110 00100000 01110111 01100101 00100000 01100001 01110010 01100101 00100000 01100111 01101111 01101001 01101110 01100111 00001101 00001010 01010100 01101000 01100101 01110010 01100101 00100111 01110011 00100000 01101110 01101111 00100000 01101011 01101110 01101111 01110111 01101001 01101110 01100111 00100000 01110111 01101000 01100101 01110010 01100101 00100000 01110111 01100101 00100111 01110010 01100101 00100000 01110010 01101111 01110111 01101001 01101110 01100111 00001101 00001010 01001111 01110010 00100000 01110111 01101000 01101001 01100011 01101000 00100000 01110111 01100001 01111001 00100000 01110100 01101000 01100101 00100000 01110010 01101001 01110110 01100101 01110010 00100111 01110011 00100000 01100110 01101100 01101111 01110111 01101001 01101110 01100111 00001101 00001010 01001001 01110011 00100000 01101001 01110100 00100000 01110010 01100001 01101001 01101110 01101001 01101110 01100111 00111111 00001101 00001010 01001001 01110011 00100000 01101001 01110100 00100000 01110011 01101110 01101111 01110111 01101001 01101110 01100111 00111111 00001101 00001010 01001001 01110011 00100000 01100001 00100000 01101000 01110101 01110010 01110010 01101001 01100011 01100001 01101110 01100101 00100000 01100001 00101101 01100010 01101100 01101111 01110111 01101001 01101110 01100111 00111111 00001101 00001010 01001110 01101111 01110100 00100000 01100001 00100000 01110011 01110000 01100101 01100011 01101011 00100000 01101111 01100110 00100000 01101100 01101001 01100111 01101000 01110100 00100000 01101001 01110011 00100000 01110011 01101000 01101111 01110111 01101001 01101110 01100111 00001101 00001010 01010011 01101111 00100000 01110100 01101000 01100101 00100000 01100100 01100001 01101110 01100111 01100101 01110010 00100000 01101101 01110101 01110011 01110100 00100000 01100010 01100101 00100000 01100111 01110010 01101111 01110111 01101001 01101110 01100111 00001101 00001010 01000001 01110010 01100101 00100000 01110100 01101000 01100101 00100000 01100110 01101001 01110010 01100101 01110011 00100000 01101111 01100110 00100000 01101000 01100101 01101100 01101100 00100000 01100001 00101101 01100111 01101100 01101111 01110111 01101001 01101110 01100111 00111111 00001101 00001010 01001001 01110011 00100000 01110100 01101000 01100101 00100000 01100111 01110010 01101001 01110011 01101100 01111001 00100000 01110010 01100101 01100001 01110000 01100101 01110010 00100000 01101101 01101111 01110111 01101001 01101110 01100111 00111111 00001101 00001010 01011001 01100101 01110011 00101100 00100000 01110100 01101000 01100101 00100000 01100100 01100001 01101110 01100111 01100101 01110010 00100000 01101101 01110101 01110011 01110100 00100000 01100010 01100101 00100000 01100111 01110010 01101111 01110111 01101001 01101110 01100111 00100000 00001101 00001010 00100111 01000011 01100001 01110101 01110011 01100101 00100000 01110100 01101000 01100101 00100000 01110010 01101111 01110111 01100101 01110010 01110011 00100000 01101011 01100101 01100101 01110000 00100000 01101111 01101110 00100000 01110010 01101111 01110111 01101001 01101110 01100111 00001101 00001010 01000001 01101110 01100100 00100000 01110100 01101000 01100101 01111001 00100111 01110010 01100101 00100000 01100011 01100101 01110010 01110100 01100001 01101001 01101110 01101100 01111001 00100000 01101110 01101111 01110100 00100000 01110011 01101000 01101111 01110111 01101001 01101110 01100111 00001101 00001010 01000001 01101110 01111001 00100000 01110011 01101001 01100111 01101110 01110011 00100000 01110100 01101000 01100001 01110100 00100000 01110100 01101000 01100101 01111001 00100000 01100001 01110010 01100101 00100000 01110011 01101100 01101111 01110111 01101001 01101110 01100111 00100001 Now get back to work.

Have We ASP.NET Geeks Lost Something?

When I was in Redmond a few weeks ago I begged ScottGu for a copy of the MVC bits so I could "muse" over how SubSonic would fit in. Scott's a big supporter of what we've been doing with SubSonic, and he gave me his "demo proto bits", which, as Hanselman put it, are but shades of the real thing.

Bit Rot

Well, that was a record. It's been 5 and a half months since I've needed to re-image my machine, and I think today is "pay the piper" day.

TextMate Theme For Visual Studio, Take 2

Previously I posted my modified version of Jon Lam's Vibrant Ink theme (which is a copy of the TextMate/Rails theme), and I've received a lot of queries about it, including some tips and changes.

More Crazy Talk: Inline Scripting and Slinging Text

As I've been reading through the comments to my last post itoccurred to me that .NET has been around for about 7 years now, and for a lot of developers, that's all they know.

Crazy Talk: Inline Scripting and Code-Behind

As if I haven't been flamed enough in the last few days (and I still have a few minutes left on my Fire Ward),I'm going to challenge the notion that Inline Scripting is a relic of Web 1.0, and that it has no place in today's ASP apps.

Imploding Rails, Jesus DHH, and The Uncle Ben Principle

Update: I've responded to many of the comments below here I love Rails - let me just get that out of the way right now. As many who've read my blog know, I think it's the Dog's Bollucks in terms of a developer's framework.

Unleashing Elmer FUDd

Over the last 3 weeks I've found myself engaging with people who are FUD Poster Children. FUD, if you're not aware, stands for Fear, Uncertainty, and Doubt: "Fear, uncertainty, and doubt (FUD) is a tactic of rhetoric used in sales, marketing and public relations.

Blog Trickery and The Isolated Geek

While I was in Redmond last week I got to talking to a few people, and was surprised when a few of them said "Yah, I saw your post on [thingX]". It's strange - those MS guys seem to just know when you blog about things they're working on.

Text Mining and Analysis With LinqToSql, Part 2

In my last post I talked about some simple approaches to mining text using Full Text Indexing in SQL Server 2005 and LinqToSql . Admittedly, the LinqToSql bits we pretty light and some even asked "why is Linq even in the title?

Text Mining and Analysis With LinqToSql, Part 1

Prolog and Teaser This is going to be a long post. More than that, this post is going to show you something (if you don't already know it) that could have very easily netted you $20 - $50 Million in funding just 4 years ago (who knows - maybe this stuff might even be worth this today).

LINQ and GeoCode, Part 2

I feel it's appropriate to start this post off this way:

LINQ and Geocoding

There's a lot you can do with LINQ and the new C# goodies that are coming up in .NET 3.

Dork Fights

I just got my rear handed to me today. I tried to make fun of Jon Galloway for being a dork, and I got dork-served: Don't mess with Jon.

The C# Makeover

This post was supposed to be all about Lambda Expressions and how you can use these to strip some serious lines of code from your application. As I started working with some examples it became clear to me that Scott Guthrie already said pretty much all that needs to be said about that.

LINQ: Understanding LINQ, Vars, and Lambdas

I've been working lately with LINQ and LinqToSql in an effort to see how SubSonic can "play nice" with the emerging framework. In my previous posts I discussed the DataContext in LinqToSql and what it means from an architectural point of view.

LinqToSql: Momma Said Knock You Out

Why don't you rip with me, the maniac psycho

Chicken Butt, Potty Face, and Firecrackin Flapjacks…

are the things you say when screaming at your monitor when young ears are in the next room. Yes, it's silly.

LinqToSql: Ranch Dressing for your Database Pizza

Lots to read lately on LINQ and Linq2Sql, and for the last couple of days I've been tits-deep in code, trying to figure out neat and fun ways to clamp LINQ to my Database's privates while not causing offense. Let's start this post again.

Movin My Blog

I know that Scott says not to do this, but I have to. I'm having a hard time managing my servers as it is, and my new thing is to "service out" whatever I can. My feed is the same (it's why I use feedburner!) so most of you shouldn't even see this post. I love SubText and only wish Phil had a hosted thing going :(:(:(.

Rails-y TextMate Theme For Visual Studio

I get eye-strain headaches sometimes, and it really sucks. A lot of this has to do with the black-on-white default settings that VS uses.

More Rails Fun: Beyond The Silly Examples

It's late in the day, my IPA that's been fermenting now for 10 days has a wonderful sour/bandaid taste (the yeast was crap evidently), and a hurricane is making it's way slowly towards us. Not really conducive to work so I thought I'd muck around with Rails a bit and make y'all a screencast that "goes beyond" the sticky sweet stuff and shows you how easy it is to extend and build out your application.

Orcas Beta 2: Silverlight Framework Is Not Installed (Yes It Is... No It Isn't... Yes It Is)

I'm getting a complex. I think my PC hates me, I smell bad and maybe, just maybe I'm getting a little paunchy round the midsection as the surf sticks to the other side of the island.

Webcast: Unit Testing With Rails

A lot people keep emailing me and letting me know how much they like the Rails webcasts I've been doing so I thought I'd continue today with a webcast all about their Unit Testing framework.

Dr. Nice Guy and Mr. Consultant

I've been a consultant for a long time now (22 years!) and sometimes I really hate the CYA part of it all.

My Saturday Night

I took a stand for All The Geeks tonite. Took one on the chin (and the ribs/teeth/forehead) but I stood strong in the face of venomous anti-gadgetry and stood up for the Little Man (like the guy in Oh Brother Where Art Though).

Commerce Starter Kit Changes

I had to make a tough decision a month or so ago, and that was to give up control of the Commerce Starter Kit, and hand it over to someone more capable of giving it the time it needs. I don't like the idea of "giving up", but at the same time everything cycles through some sort of organic change process.

Need a Good Book To Read?

I've been reading The Name of the Wind by Patrick Rothfuss and I have to say it's as close to perfect as a book can be. It keeps me up way too late, I read it when I have 10 minutes to myself, and overall I just can't put it down.

Silverlight: How To Avoid The Dreaded AG_E_INVALID_ARGUMENT 2210 Error

The sun shines outsideMy eyes strain to see clearlyAlpha means patience If you haven't seen this error when working with Silverlight, you will. I promise.

How Not To Be a Slave To The Wiggles

I'm sure that those of you who have 3-7 year-olds know exactly what the title is referring to. For those of you who don't have kids, you may want to skip this post - or not if you're planning to have kids soon!

Fourth Of July Thoughts: Remember, Remember The Fifth of November

Three Things Scott Hanselman Learned Me

Dare wrote an interesting post on Three Things he learned in college, then Scott Hanselman wrote up Three things he didn't learn in college, and that's spun people off to writing what they've learned (and not learned) etc in college, and they told two friends, and so on, and so on. It's all so terribly exciting and it's filled up my reader all of this excitement has.

LINQ: How To Use LINQ To Query Just About Anything

Recently I have been asked by a client to use LINQ for some interesting stuff (which I'll blog about later), and one of the things I needed to do was to use it to query a REST service. Step 1 was to query Amazon (since there is an existing sample out there on how to do this), and I just wrapped up that part of it and thought I would share with you how I dove nose-first into refactoring the existing sample to work with .

Incubator Update: SubSonic Forums Project

It's been a while sinceI asked for help with the SubSonic forums, and a lot of good people asked to take the project on. Also, we had a nice contribution from Microsoft AND MaximumASP to support the effort!

Silverlight: "Error Invoking Service" When Using Web Services

I posted about this the other day with the Login Control example, but it really is worth having it's own post since I, once again today, pounded my head trying to figure this out (duh). Anyway - if you're going to allow script components (like AJAX and Silverlight) to access your web service, you need to make sure you mark the class with the "System.

Silverlight: Creating a Twitter Client (Part 1)

This is going to be a big post, but I'll do my best to be as succinct as I can. This wasn't easy - mostly since the controls I needed the most were not easy to understand, and Twitter likes to crash every 15 minutes (I'm not kidding, that's what I ran into - completely non-responsive every 15 minutes).

Silverlight: Day 3 - Creating a Web Service-Enabled Login Control

In previous days writing about my journey down Silverlight lane, I focused on what Siverlight is and also some architectural approaches when using it (Eric Kemp has dubbed me the "Siverlight Surfer". too funny).

Meditation On a Burnt Crotch

So my wife and I are having a nice dinner together the other night at Bar-Acuda, a great local tapas restaurant here in town that our friends own. The guy who owns it used to own the Slo Club in San Francisco, and the environment is really wonderful - sort of a little mainland escape for us.

The ORM Swarm

So I managed to ruffle a few feathers with my comments on ORM the other day. While I stand squarely behind what I said (which is that ORM lends itself to abuse), I think it might be a good time to clarify a few things since I seem to have landed on someone's bad side and I certainly didn't mean to - Ayende is one of my hero's and inspirations.

Silverlight Day 2: Creating A Data-driven Control

This is going to be one of those "silly" examples, but I hope it illuminates the Silverlight landscape a little. In this post I'll work up an ASP.

Silverlight: The Road Begins

For the last 2 weeks I've been getting my feet wet with Silverlight. Actually that's not true - I've been getting wet everywhere with Silverlight.

The 411: Stored Procedures, Views, and ORM

PrologThink back to your high school/early college days. It's Friday night and you call your buddy Jimmer wondering what's happening.

Tips: Getting Setup As An Independent Contractor

I've been asked a few times by friends and people I've worked with how "I'm setup". A lot of people work for themselves and some make a really good living at it.

Needed: An Open Source Rock Star

I've been working a lot with Sam Ramji (Microsoft), Phil Haack, Jon Galloway, and Scott Hanselman over the last few months on various ways that, together with Microsoft, we can help expand the Open Source landscape for .NET.

Subversion and Codeplex? Not So Fast...

Jon Galloway posted today (based on some "info" that I turned him onto) that CodePlex appears to be launching Subversion. The notion arose from this workitem, posted at CodePlex, which clearly shows a "Release Date" of June 5, 2007.

SubSonic: A Day In The Life Webcast Part 1 Is Ready

Previously I posted a request for ideas RE a SubSonic "Green Screen" challenge, wherein y'all give me some ideas on an application I could work up and I would do a series of webcasts, showing me do just that. Lots of ideas were presented and they varied between CMS and Forums, and since our new Starter Site has a lot of CMS in it, I figured I'd go with forums.

Interviewed On Juxtaviews

Kevin Fricovsky was nice enough to contact me a month or so back and ask me some thoughts about Open Source, Big Waves, and Life In General. The interview was just published if you're interested - he asks me questions about SubSonic and other random things. Very fun :).

SubSonic Starter Site Update

Well, that didn't take long :). Phil was commenting on the cool SP we use(d) to load up a tree-view of the Pages, and asked the pivotal question: Does it work in MySQL and [all the other databases that aren't SQL 2005]?

Have A Beer In Lahaina

I'm on vacation. And it's good.

SubSonic: Beta 1 in the next 3 days

Eric and I are feverishly polishing and tweaking as we try to nail version 2.0 down as best we can.

Google Gives Out Free Wireless! Everywhere!

These guys never stop... http://www.google.com/tisp/

Rails for IIS: Always Have Friend Named "Mike"

I dabble in Rails for fun - it inspires me to do what I do for SubSonic. The one MAJOR PITA however is running it on a Windows 2003 Server box (I have a nice, big, PHAT hosted box with MaximumASP.

SubSonic: VB Translator Needed

Keegan's gone and got himself all sorts of busy lately and so I'm finding myself a tad shorthanded in the VB department. We've rolled a new code scripter out and we need to make it work for the VB'ers out there.

Monday Distractions

Most of the day I have some kind of music or other playing while I'm trying to get work done (or get my kids off my lap). My musical taste varies, and more than once I've had someone on Skype message me wondering why I was listening to Xymox (curse that LastFM plugin!

Vista And Ruby: Sleep Doesn't Come Easy

My youngest daughter, Ruby, doesn't like to sleep. Neither does Vista running an NVidia GeForce 7900 GT for that matter.

Google Checkout For the CSK

I am happy to announce our first "beta" of Google Checkout for the Commerce Starter Kit. We took our time with this one, and were fortunate enough to get to work with Martin and the gang at Google on how to provide the best experience possible.

Channeling Charlie Chan

I was watching OC-16 the other day (our local "variety channel") and saw a cool piece on Charlie Chan. He's a bit of a cult hero over here in Hawaii and was inspired by a guy named Chang Apana, who worked as a detective for the Honlulu police department back at the turn of the century.

Spring Break's Here

I seem drawn to living in highly-touristed spots. I think it's from growing up in the land of Edward Scissorshands (props to anyone who can figure out where that is.

Auto-complete THIS

I'm interested to know what people think about auto-complete AJAX "stuff" that's out there . I think I like autocomplete, but then again I think I might not.

Is Your Page Down With OPP?

Phil wrote a great post today on ControlState and ViewState for ASP.NET pages.

See The Love In XML: Using XmlSerialization and the XmlDataType

I paddle outrigger canoe during the spring summer months and along with being a great workout, it's a perfect time to slip into Alpha-wave state and let my creative side take over, solving work issues of the day or thinking about a better PvP build for my Rogue. In fact you could attribute SubSonic's existence to the fact that I paddle :).

CSK: Here Comes Google Checkout

I've been working lately with the GoogleCheckout guys (Martin Omander in particular) on how we can integrate GoogleCheckout nicely into the Commerce Starter Kit. The architecture of the Commerce Starter Kit is such that it's not totally straightforward on how this should work - but I think we're really close :).

Use Google As Your Blog's Search Engine

On the heals of Jon's super-groovy Kick-it post, I thought I would add another tweak that I put up for my blog: using Google as my search engine. 

Speaking At MIX '07

Just got an invite today from the MIX '07 Content Crew to participate in a panel discussion about Open Source and .NET: Open Source Applications Using the .

Collection Sorting Brain-Twister

So yesterday I wrote about the latest SubSonic checkin and Kevin Dente left me a great comment that got me thinking a lot about collection sorting and how to do it properly. One of the things Kevin brought up was that the boolean argument for sort direction was limiting - it really should be an enum for readability and also in the case where you might want to support a third sorting direction option (aside from ascending and descending): unsorted.

Jeff Atwood wrote an outstanding blog entry today:Why Can't Programmer's Program? It's an interesting read and revolves around the problems developers have writing an answer to this problem:

Vista and NVidia - WTF?

I've been pretty happy with Vista - I've played by it's rules and I haven't gotten hurt. Well at least not as much as I'd like to have been.

I've Been SubTextuamalated

I moved my blog to SubText completely today, and I couldn't be happier. Mostly because of the UI options that I have now (some really groovy styles and a great editor) and also because I think this thing will scale happily.

I'm Moving To SubText

I have a the very typical developer disorder:  Magpie Syndrome, where shiney things attract my attention (and make me fly face first into reflective surfaces). I'm usually the first kid on the blog to upgrade to the alpha-release of a new OS, or to say "sure why not" when a major software company asks me to build up a Starter Kit based on a first beta of a new development platform (for example).

Auto-complete AJAX Hack

Yes, I know that you can download all sorts of Auto-completion stuff using the Atlas Toolkit. But let's pretend that you client hates Atlas.

My New Bi-Polar Laptop

So I'm in San Francisco last week, getting ready for the Bay.NET user group and going over the presentation when my lovely, hateful, major POS Alienware Area 51m (that cost me $3500) decides to take a dirt nap.

In Which We Discuss Our Favorite Books

I was talking to some friends the other day about books that I love (and there's a lot of em) and I kind of went off on all the great things out there to read. I love talking about books, sharing favorites, and discovering new authors; so in the spirit of a Virtual Book Club - I thought it would be fun to share some of my most favorite books with you, dear reader.

More Lotion in The Basket

So Vista called me last week. I know, I know.

I've Been Tagged: My Hi-Five Remix

Phil Haack has tagged me and so, being the nice type that I am (and I'm afraid of Phil) I'll play along. I'm not sure if anyone cares about me and my Five, but it's my obligation.

Who You Codin For?

Had a very interesting discussion over lunch today, and being the "challenging personality" that I can be, I was questioning my compatriot (the ever-popular nameless one) at every turn. He took it in stride and after a while we acknowledged each other's points by ordering a beer and declaring we were each full of #$@#.

Using FCKEditor With ASP.NET

I recently started to use FCKEditor and it's the Dog's Bollocks I must say. The editor is peaches but the additional file manager is rockin!

Recursive Queries in SQL 2005

Recursion is one of those geek Camaro-qualities, where Big Guy Geek might say "well you know MY recursive method only uses the stack and has 16-inch centerlines" (or something like that). I remember sitting in my Pascal class and our class was on outputting an org chart.

How To Be a Star: Make Marketers Happy

I hate MarketSpeak. Words like "Paradigm", "Dogfooding", "PowerChat", and "Virtual Marketplace" all make me turn green :).

Upload an Excel File and Display In a Grid

Here's one for the Utility Belt - how to upload an Excel workbook and display in a Gridview. This comes in handy when user's want to import bulk data data to your site (admin function, etc).

I recently had to repave - no - reincarnate my PC and so installed everything from scratch. In doing so, I:

SQL Zen: Only In Nothing Is There Something

In re-installing my box, I had to run SQL Express a few times to get the Business Intelligence toolset up and running. Long story short - I had to install SQL Manager Express twice: once using SQL Advanced Toolset and once using the SQL Toolkit.

Vista RTM Day 3: Cut Me Mick... Cut Me...

I'm cut. Bruised.

Vista RTM Day 4: RIP

I'm writing to you from my laptop, dear reader, as my PC is a steaming slag heap on the floor here. Long story short: It's too soon to be using Vista.

Vista RTM - Put the Lotion in the #$%#ing Basket!

For some reason I have Buffalo Bill from Silence of the Lambs in my head: "It puts the lotion on its skin, or else it gets the hose again. It puts the lotion in the basket.

Moving My Main Box To Vista RTM

Vista RTM was pushed to the MSDN downloads yesterday and being the Magpie geek that I am, I frantically logged in and began the download. It took a while to pull down all 2.

CommerceStarterKit.org Issues

The domain CommerceStarterKit.org expired 5 days ago and for some reason they decided not to let me know about it.

Puttin The Wraps on CSK 2.0

I am in the process of cleaning up, formatting, and generally "spit-polishing" the second version of the Commerce Starter Kit. It's been in beta for about 17 years now, and I think we're about done :).

Take a Second... Better Yet Take Two

I grew up in LA and I'm used to quakes so when the quake hit the other morning I sort of smiled my way through it, remembering my years growing up near the intersection of the San Gabriel and San Andreas faults. All's well with us (thanks for thoughts to all who sent an email!

In which Visual Studio Hates On Me

I have a fast box. Luke had to roll his own lightsaber before he could be a Jedi, I had to build my own Computer before I (or so I thought) I could properly run Visual Studio.

It's Curb-Kickin Day

First, if you haven't watched the World of Warcraft Southpark Episode, you must. It's disturbing, humbling, painful, hysterical, and basically made a bunch of MMO players (myself included) squirm.

Those Evil Starter Kits!

Just got my copy of ASPNET Pro magazine and I skipped ahead to the back flap to read what Jon Goodyear has to say about stuff. Normally I read this kind of thing lightly cause, well you know, it's opinion and it needs to be strong if it's to be entertaining (and let's just say Jon has a lot of "interesting" opinions).

Smart Web Reporting: Use Excel and Save Your Server

I am always asked by clients, at the end of a project, to generate a whole mess of reports. Usually they are within scope (I am a hound about reporting and making sure that all data needed is put in there during initial design) but often, too often, a client can't think of all the reports they'll need when the site is up and rolling.

Care and Handling for Non-Creatives

I live in a very small place (Kauai, Hawaii), and I am reminded of it every week. The power goes out at least once a month for at least 2 hours a shot, right in the middle of the day.

Steal This Site!

I'm working for a client right now who needs to scrape some public data from the web. It's all very legal and they have the

In which we learn about swearing and happiness

ForwardA  bit of warning: this is a little zen thing about my kids, so if you're not a parent you probably won't care. Though I'll do my best to entertain you "0-drag coefficient" types out there too.

Let's face it - Ruby is seductive. From your first read of Ruby code, your hooked:

Boxers or Briefs: CoH or Wow?

I'm a vid geek, plain and simple. There, I admitted it which is supposed to help matters but.

TRON: What I Learned At Evil Programmer Camp

Team Foundation and Team Build: Resolving Dependencies Between Projects

Recently I was asked by a client to help out with a dependency issue they were having with Team Foundation. They have two Team Foundation projects going (each it's own solution) and one of the projects (Project A) had a dependency on the other (Project B).

Google Checkout API for C# - Part 1

I decided to get my hands dirty today with Google's new checkout system. It's remarkable, silly, scarey - kind of all the things you thought when Bubble Yum first came out and those huge pink blobs erupted from people's mouths.

Team Build, Web Applications, Lemon Juice and Paper Cuts

I have just, this very minute, FINALLY made my Website Project (not ScottGu's WebProject, but the plain old ASP.NET website) build inside Team Build (Team Foundation Services).

We're making extraordinary progress here and are sooo very close to getting beta 2 out the door. Here's what's going on:

SQL Server 2005 SP1 Rocks

For those of you using SQL 2005 Express, you really owe it to yourself to upgrade to SP1. In addition you can now get Express Edition with "Advanced Tools" - which include Full Text Indexing and other fun things.

CSK Announcement: CodePlex is Live, and We're There!

I mentioned in one of my previous posts that I had a big announcement coming, and here it is:

MIX06 CSK Webcast is online

Watching yourself is not easy - especially when you're sort of terrified :). The MIX people (the MS conference this last March) put a really cool webcast up of my talk at the MIX - introducing the CSK etc.

Math.Round(), Sanbox Credit Cards, and other PayPal headaches

So in the last month or so, PayPal has tightened the screws on it's calculator. Now before I get too far along here, I need to apologize to everyone who has been receiving the "RedirectURI Cannot Contain " error, and the "Order Total is invalid" error.

Beta 2 update - CSK 2.0?

Long overdue post - sorry for the delay. Wanted to update everyone on some changes coming in for beta 2, the feature list we're woring with, etc.

PayPal API Update - We Have Been Heard!

This just in from PayPal: PFX/CER files are no longer required to access the API. Instead they are moving to using a second password in the form of a signature!

Code Vietnam - How Code Generators Can Really Help/Hurt

J Sawyer (aka JEclipse from the CSK Forums) and I were talking about OR/M (Object Relational Mapping) and the goods/bads about it. He told me a funny line that i borrowed for this post, which he heard from a colleague at Microsoft: "OR/M is coding Vietnam".

Killer Cookies (CSK forum login woes...)

The forums have not been logging IE users in, and I had no idea. If you use FireFox however, you've had no problem logging into the CSK forums.

CSK Beta 2 Progress Update

We're heavy into our next build phase, on target for our late spring release. Our goal is to announce the release of 1.

Ruby's Back, and Javascript you'll really want to have...

So I'm back on my Ruby thing again. I don't know why but it's got ahold of me.

Dude you ate my cookie...

I was thinking this server switch thing went too well. for some reason all the apps that we use (CommunityServer, DNN, my DasBlog) are now "forgetting" cookies.

OLAP Drillthrough To Multiple Reports Using Office Web Components

I am not really a big fan of OWC since they are ActiveX controls, which are a major no-no for web design. However, if you have a client like I do who has a locked-down desktop, then you can have a little fun.

ASP.NET 2.0 Commerce Starter Kit InventoryProvider

David Hayden has been kind enough to extend the CSK with an InventoryProvider that does a little bit more than the existing "AmountOnHand" field. Check it out:

ASP.NET 2.0 Commerce Starter Kit 1.1 feature set

I have been talking to the MS and PayPal folks and have narrowed down a pretty good release strategy for some interim fixes as well as added functionality.

ASP.NET 2.0 Commerce Starter Kit Pluggable Architecture

I watched the VS/SQL/BizTalk 2005 Launch Party yesterday online and it was pretty hilarious - Cheap Trick? I dunno.

CommerceStarterKit.org - The ASP.NET 2.0 Commerce Starter Kit OpenSource home

We are readying the launch of the ASP.NET 2.0 Commerce Starter KIt and have just loaded up the support and download sites. You can check em out at http://www.commercestarterkit.org. This has been a lot of work by some very fine people and I am proud to be part of this effort! Give it a spin!

SQL Server SSL Error: ConnectionOpen (SECDoClientHandShake())

Wow, this one sucked! It dropped my SQL Service completely and ALL of my sites went offline (except for my blog here, which runs on XML - good job guys!

Outlook... outta here! How to move from Outlook to GMail

I like Outlook, it's been the killer app of killer apps forever. But eventually all good things get bulky and slow (?

PayPal API Invalid Version Number Error

Recently, the good folks at PayPal updated their API routines and added not only a new "version", but a whole new service call. I don't know why they needed a whole new service, but suffice it to say that it's there, and you have to know which service to use when calling the API.

CSS Layout and DIVs

I don't really do layout - or at least I should say that I don't

ASP 2.0 Commerce Starter Kit

I have had the priviledge of working with PayPal and Microsoft over the last 6 months developing the new Commerce Starter Kit for ASP 2.0

Please Give...

This tragedy is beyond belief. Blame and outrage come later - for now, please give what you can. I used PayPal to give to the UnitedWay (http://www.paypal.com) and also donated through the Red Cross.

Server Unavailable Error with .NET 2.0 Beta 2

I have recently been trying to get a beta 2 ASP.NET app running alongside other 1.

Using SSL with Web Services in ASP 2.0

It used to be, with ASP 1.1 (if you have been reading any of the posts below about the PayPal API) that the SSL certificate you were trying to send to a remote web service needed to be located in your Computer's personal store.

SSL and Development

One of the silly things that comes up from time to time is the need to test your site using SSL. If you're like me and you work on your own, often your development sites exist on your laptop, home server, or right on your dev box.

The SSL plot thickens. as I was installing the Transactor for a client today, I ran accross this little gem when I tried to import the certificate into the Computer Store:

How to setup your SSL Certificate with the PayPal API

Profile Manager for ASP.NET MemberRole

ASP.NET MemberRole (1.1 Membership)

Cursed Recursiveness: Querying a Recursive Join

Excel OLAP Drillthrough - Web Services