Rob Conery, the creator of SubSonic and founder of The Commerce Starter Kit, believes in open source. Both of his projects are .NET (aka Microsoft) projects and although the big guys in Redmond may never ship open source code themselves, it doesn’t mean they don’t support it and it sure doesn’t mean the .net community doesn’t believe in it. I spoke to Rob about the latest 2.0 release of his SubSonic project, Micrsoft, OSS, and big wave surfing in Hawaii.
I’ve never met Rob and I don’t know him besides a few emails. I discovered his SubSonic project somewhere along the blog trail I follow. It was just around the time where I was looking into Ruby On Rails and reading two books covering the subject. What won me over regarding Subsonic was how Rob took some of the best elements of what ROR offers and brought it to the .net world (he’s a self proclaimed ruby on rails nut). For the non-developers out there just think of SubSonic as a productivity boost, like if you came into work every day and someone had already processed your email, returned your voice messages, and left a nice warm cup of coffee on your desk. That’s what SubSonic does for .net developers.
Now I’m finding myself looking to help support other open source projects however I can because these are the projects that make software development both exciting and educational. As you can see, open source is addicting. And, as you can tell, Rob has the bug and he’s spreading like a good OSS crusader should. As I previously mentioned, in addition to SubSonic Rob also developed the Commerce Starter Kit which is an open source ecommcere web application for asp.net which allows for both PayPal and Google Checkout integration.
To find out more about SubSonic and everything else Rob is up to check out his blog. And if you want a nice introduction into SubSonic watch the latest Starterkit video tutorial and an older Introduction video tutorial.
Ok, so enough with the geek talk. Rob was nice enough to take time out of his busy schedule to discuss code, family, life, and open source. Thanks Rob.
Name, age, best thing about living in Hawaii, and when you sleep at night you dream about?
Rob Conery, 39. Best thing about living in Kauai is watching your kids play in the sand, knowing the ocean will be their playground (if they choose). There’s a lot to do here, and it’s based a lot around family (or ohana as it’s called). Who has time to sleep?
Who is Rob Conery?
As Obi Wan once said: “why, he’s ME”. If I had to sum me up I would say I’m an inspired lazy ass

. I don’t like doing things “just because” - like hiking or building model ships - I really like creating things that will save people time and energy. I love gadgets for that reason and their corpses can be found all over my house. My wife likes to roll her eyes at my “gadget obsession” but it gave her TiVo so she can watch 24 anytime she wants. Not much she can say bout that!
In 5 words describe SubSonic.
High fidelity Batman Utility Belt
Why did you create Subsonic?
95% of all applications built talk to a database in some way. For some reason 95% of all utilities built for Visual Studio and .NET deal with pulling the data from the DB and putting it in the UI. When I first saw the SqlDataSource and GridView in action I thought it was super neat, but broke every DAL convention I’d ever heard of. The ObjectDataSource is a great answer to this, but really why do I want to stick another tool in between my app and it’s data? I just didn’t get it from an architect’s perspective.
I remember reading a blog entry on Fritz Onion’s site where he used BuildProviders to work up an object model and I thought to myself “someday I’m gonna work that thing!”.
That someday came when I was refactoring the Commerce Starter Kit, trying to leverage as much Data access code into the base classes as I could. I was using generics in a way that they probably weren’t designed to be used, but in the process I stumbled on a really cool pattern for generating very little code for a full data access layer. When I first got it to work I literally jumped out of my chair, swearing to myself.
I gave it about 2 weeks and tested and tested and when it didn’t break or slow down, I remember thinking “I’ve got something here!”. I had been doing some Ruby/Rails stuff at the time, and I had the idea that much of that “love” could be brought over to the ASP world. Although the real joy of Rails is the language Ruby - but maybe someday RubyCLR will be finished (or some other dynamic language package for .NET) and that’s when I think SubSonic will come into it’s own.
What is good code?
Whatever works for your client and doesn’t crash you or your server. Egotistical coders like to trash each other on “Best Practices” and I say to hell with it all. I just remodeled my kitchen with my brother (who’s a contractor) and we faces some interesting issues regarding walls and windows in the wrong places. We ended up moving a window and bracing it with some metal brackets rather than using an extra stud (which is standard). I asked him if he thought that was a good idea and he said “the tensile strength of those metal braces is 10 times that of wood - this wall won’t ever fail. Do I like it? No - not really since it’s not what you’re ’supposed to do’ - but your wall is stronger than before and you’ll have a nice window”.
That’s how I approach things RE code. There’s usually 10 different ways to solve a problem and as long as it works (works=scalable/no crash/what the client wants) who am I to judge? You can never please the people who will inherit what you do anyway so focus on the job at hand.
How important is Open Source and why does it succeed?
It’s critical if you ask me - the community needs to be able to get away from ThinkTank philosophy that rams the latest “fashions” down our throats. Marketers get a hold of these ideas and next thing you know there are a zillion “AJAX-Enabled Web 2.0″ WhateverSite.coms out there that take 20 seconds to load and crash my browser. I used to love Live.com but it takes 20 seconds to load - what for? Really - WHY? Page Flakes is great… but not when it stalls.
If I had turned out the CSK like that, well the project would be no more. I’m held to very very rigid standards and have been forced to think through so many scenarios that what you end up with, given as good adherence to your vision, is a very nicely rounded product that does what it’s supposed to do without fad-injection.
I don’t mean to come off sounding negative against marketers really. I spose I still have a bit of a “scar” from the first .com implosion

.
I guess you could wrap it up in “Open Source keeps you honest”.
When doesn’t Open Source succeed? What obstacles have you faced? Lessons learned?
It doesn’t succeed when the creator inserts themselves too much in the mix of it. Rails, for all its glory, has some flaws in my opinion: an OR/M model that’s a little too strict; complete reliance on MVC; no ISAPI. The latter isn’t really a Rails “flaw”, but to me it’s a symptom of the overall LAMP sentiment (a hatred of all things MS). In my opinion this all comes from its creator’s vision and “opinions”. They aren’t shy about their thoughts either - they call Rails “opinionated software” which means if I want to use it, I play by their rules.
Now that’s fine - it’s their stuff. But then you kind of lose the veneer of “Open Source” where everyone kicks in to shape and build something good.
Finally OS doesn’t succeed when a project’s creator starts losing time (has a kid, moves, new job, etc) and the community won’t kick in to help out. NDoc is one such tool (and there are many others). A lot of people complained about that but I sympathize with those guys a lot - it’s not easy supporting a community!
Subsonic is an asp.net based open source project. For many people the idea of open source and Microsoft is like oil and water. How can Microsoft curb the bad rap it’s received (if it can)?
I think they need to be a little more specific with their comments rather than use the blanket term “Open Source”. I know very well that they embrace Open Source as a concept - although not all of the OS projects out there.
Your favorite open source MS project (other than SubSonic)?
The CSK

? Geez I dunno - there have been so many great ones. Phil Haack’s SubText is really a great tool, so is DasBlog. I love DotNetNuke as well but the tools that save me the most time are (in no order) RegexDesigner and Start++. On top of all that however is the Daemon Tools project. I use that thing all the time.
What makes developing in asp.net and the .net framework enjoyable to you? Do you prefer it versus php, ruby, etc? If so, why?
I spose the number one thing I like is that I’m good at it and I make a good living from it

. It’s a business thing entirely for me, and if I did it for love I’d have to say I’d go with Ruby. To me the greatest thing will be when Ruby finally gets a place in .NET like IronPython.
I like it because it’s just so dang… simple and elegant. It works the way you think it should. Can’t tell you how many times I’ve had to write extra lines of code so that C# doesn’t barf on a null reference - why? I do understand the drawback to interpreted languages, but when a language grooves so closely to the way your brain works, your chances of getting a routine to do what you want is that much higher.
Discuss your CSK project. What was the catalyst and what’s its future? PayPal asked me to build it and Microsoft asked if they could be part of it as well in terms of guidance, best practices, and so on. It’s a great project but man, when you’re talking about selling things it goes sky-high in terms of what people want and the things that “should” be in there.
We first targeted OSCommerce in terms of functional set, but I think we surpassed them a while back. There’s only so far you can go with developing a core eCommerce toolset and I think we’re about there. I might try to broaden the “modularity” of it, but I have no plans as of yet to expand the feature set. I’m hoping the community will do that.
Greatest piece of advice ever given to you?
“You know what you sound like when you swear at your computer like that? Ignorant.”- David Nielsen. I was having a really bad time with SiteServer back in 1998 and had taken to speaking in curse-words only. It was a way for me to vent but he couldn’t believe my “shorthand”. I’ve been told things like that before but for some reason this one stuck and I really, really watch my demeanor when around other people, doing anything technical. It really says so much about you and what you’re capable of.
Best wave you ever surfed? where? what was it like and when did you know it was special?
Oh wow - this one’s easy! I was out at Hanalei Bay (The Bay) and it was about 6-10 Hawaiian, which translates to 12-25 foot on the face. I’m not a big-wave surfer by any stretch, but the break is a nice point break over a reef so you can sit off to the side, watching the Big Guys take the huge ones. I was doing just that when a nice wave rolled in, about 18-feet on the face (which is the size a two-story house) and a big guy on it. He tried to make a bottom turn and fell, and there I was, the next in line to go. The guy next to me yelled “you better go Haole!” so I turned around and started to paddle, my heart in my throat.
The placement was perfect and I was lifted up sooooo high it almost took my breath away. All I can remember thinking is “just stand! Just stand!” and up I hopped. I know enough about bigger waves to make sure I crouch quick for the drop, and down I went. I think that’s the fastest I’ve ever gone without wheels - even snow boarding. I hit the bottom, leaned into the turn dragging my hand on the wave’s face and rode back up toward the top to keep my speed. I remember being up there, so high, watching the people around me hoot as they paddled up and over, out of my way.
I rode it through to the end and couldn’t talk for about 20 seconds - literally. I just floated on my back (out of the way of the break) and stared at the blue sky, knowin I’d just had a Life Moment.
If you could kill the term web 2.0 how would you kill it?
Drown it in a bucket of AJAX-Enabled Javascript Errors.
Website you must visit every day?
Favorite new band?
Well they’re not really new: Low.
Favorite online web application (non email related)?
Google Calendar
When you’re not writing code you are…?
Playing with my girls or in the water.