Tuesday, September 11, 2007

Look, I get Microsoft Office Sharepoint Services as a platform.  I get what it is, what it does, and why it's so cool.  Hell, Sleepless in NY was all about MOSS, and it was fun.  But I do need to rant about something.

At Sleepless in NY, Kurt Guenther, in his introductory Sharepoint presentation, characterized MOSS as "Microsoft's Web Platform."  Full stop.  Almost implying that that ASP.NET developers that didn't build on MOSS were an endangered species, that all .NET web development would eventually be done on MOSS.  I don't know if that's what he meant to imply, but that's what I heard.  And I don't buy that.  At least, not when MOSS has such a painful development story right now.

When I'm developing ASP.NET, I make my changes, I do a build, and I debug.  Wash, rinse, repeat.  Once I'm in that rhythm, things progress very quickly.  There's some JIT overhead here and there, but besides that, it's a very smooth process.

When I'm developing on MOSS, however, it's a lot harder.  I make my changes, deploy to my bin folder (or the GAC), sometimes IISReset, wait forever for the whole damn thing to JIT.  And then, when I debug, if I set a breakpoint and leave the code running at a break too long, the entire Sharepoint object model times out or something and turns null, locking up Sharepoint in the process and requiring another IISReset to correct.  What a huge pain in the ass.  And all that's assuming that I'm not dealing with code that requires feature activation or a new site collection to test.  And don't get me started on the cryptic exceptions.  GAH!

So yes, MOSS brings a lot to the table.  Collaboration, search, business intelligence, business forms, workflow, content management, and more.  It's an awesome product.  There's a reason why every headhunter and his brother is looking high and low for MOSS developers right now - they're in high demand.  But until the development story improves, I think I'd prefer to wait before calling myself a MOSS developer.

posted on Tuesday, September 11, 2007 7:10:32 AM (Central Daylight Time, UTC-05:00)  #    Comments [1]
 Monday, September 10, 2007

The trip was awesome.  Greg Brill and Infusion were great hosts, from picking us up to the airport, to feeding us, to keeping the training interesting and fun.  The first night, they even treated us to catered BBQ on a rooftop 17 stories above Times Square.  Yes, that was as cool as it sounds.

They weren't kidding when they called it "Sleepless in NY," though.  They started us off with a Sharepoint/MOSS overview Friday night (before the food), getting us all to bed around 1 AM for our 7 AM wake-up call.  The following day focused on a wide range of topics, including Sharepoint specifics (like the Business Data Connector and Excel Services), WPF, and Silverlight.  Then, Saturday night, they gave us the assignment:  By 10 the next morning, in groups of 3, we were to develop something intended for contribution to the open-source Community Kit for Sharepoint

While the other teams attempted projects with a fairly broad scope, my team decided to define a very narrowly-scoped project, so that we could be assured we would deliver a fully working prototype.  The additional benefit to this approach was that we were likely to finish quickly, so we'd hopefully get some sleep and be fresh for our presentation to the judges.

In around four hours, we created a simple web part that implemented Digg-style content rating using a custom site column.  This got us in bed around 2:30 AM, so we were ready with a high-energy presentation the next morning.  The judges really seemed to enjoy our idea, and Ed, the presenter from our group, did a fantastic job presenting the solution, but we didn't win.  The prize actually ended up going to a team that really did pull an all-nighter, and they certainly deserved it.

The competition for Insomniac (the laptop) was a Sharepoint quiz show.  I was actually one of the first to get eliminated, so no laptop for me.  That's cool - everyone still got a Tom Bihn Brain Bag and a couple books.

Hanging out with Carl Franklin and Richard Campbell, as well as the talent from Infusion and MVP's and Blue Badges they had as judges was a blast.  As my flight was one of the last ones out, I even got to enjoy Carl's musical talents as he jammed on an Infusion guy's guitar to pass the time waiting on his train.  I recorded a few minutes of Carl's impromptu concert on my Creative Zen Vision:M, downloadable here (not the best quality in the world, mind you.  Cheap mic, and the Zen only records 4 bit, 11 Khz PCM).

Overall, I had a blast - The weekend gave me just what I wanted in terms of challenge and networking.

posted on Tuesday, September 11, 2007 6:39:48 AM (Central Daylight Time, UTC-05:00)  #    Comments [1]
 Saturday, September 01, 2007

A couple months ago I announced my departure from Commerce Bank.  I left my job as their lead developer of online banking, and joined RiverPoint Group as a contractor.

I'm not going to blog bile (see #5 on that list).  I'll just say this:  I don't think contracting is a good fit for me.  I wasn't as effective as I'm used to being, and it really hurt me to go from feeling like a leader, in control of my project and caring about its outcome as a reflection on me, to being a detached mercenary, without a whole lot of say in anything.  I also wasn't prepared to put in the time the client required of me, especially in light of my family life;  I just didn't have any time with my wife, Michelle, or our two awesome little boys, Connor and Cade.  That was the hardest thing for me to deal with:  Seeing my boys in the morning when I left for work, only to return home after they were in bed.

Be sure you understand me when I say I'm not blogging bile.  RiverPoint is a great company, and if you want to be a contractor, I think they're a great company to work for.  Our client, who has asked me not to disclose their name on this blog, is one of the best companies in the country to work for, and they deserve that reputation.  I just did not fully anticipate what my new role was and how it was going to affect me on a personal and professional level.

So I was talking with some friends of mine at Corillian (now a part of CheckFree), and I asked them if they thought I'd be a good fit there.  My friends gave me a good recommendation, then I went through a series of intense interviews, and now I've been hired.  On September 17, after taking a week off to relax, I will be joining Corillian/CheckFree as a Sr. Software Engineer/Technical Lead in their Professional Services division.  What this means is I will be doing a job very similar to my old job at Commerce, but I will be doing it for other clients of Corillian Pro Services. 

Ready for the best part?  I'll be working remotely from my home office.  This is the Holy Grail for me;  A job that suits my talents, that I enjoy doing, in a company whose values align with my own, that I can do from home.  I'm thrilled that the time I used to spend commuting can now be spent with the kids, or on open source projects, or going to Lodge meetings, or .NET user groups.  As much as I hate to leave a new job so soon, there are no words to describe how much I am looking forward to this.

posted on Sunday, September 02, 2007 2:26:58 AM (Central Daylight Time, UTC-05:00)  #    Comments [0]

I've been running Windows Home Server RC1 for two months now, and I love it. There's very little not to like about it.  I won't bother re-hashing what it is and what it does, because you can find plenty here, here, and here.

My experience with it has been awesome.  So far, the only things I can complain about are:

  • It doesn't support the scanner function on my HP all-in-one printer. HP never released a Windows 2003 driver for it. So I can use it as a print server, but I have to pass the scanner through to a Windows XP VM to use it.
  • Mozy's consumer offering doesn't support it. Admittedly, duplication puts my mind at ease regarding losing data to a hardware issue, but there's always that need in the back of my mind for off-site backup. The way I've worked around it, for the short term anyway, is to run Mozy on a Windows XP VM inside my WHS and do an hourly mirror of the most important 4 or 5 gigs worth of data (pix mostly) to the virtual machine so Mozy can back it up from there. I did try the one consumer-oriented online backup solution that supports Win2K3 (I think it's i-Drive), but I couldn't get it to reliably map the drives to backup if I wasn't physically logged in on the WHS box. Honestly, I'm thinking I may just revert to a semi-annual DVD going to the safe deposit box for my offsite backup.
  • I had a motherboard die on me, and I tried simply replacing the motherboard with a new one (and upgraded to a dual-core CPU, too). WHS booted up, but, long story short, it left me in a less-than-satisfactory place (as I expected) so I went ahead and did the reinstall option. This went well, and recovered all of my shared folders nicely, but I had to recreate all my users, and for some reason, I can't set up the dynamic host name function anymore. As soon as I put in my Windows Live ID, it bombs out with unknown error "80072F19," which is apparently related to some sort of untrusted certificate coming from the Windows Live servers. I've tweaked some IE security settings, and added some IP addresses to the trusted sites, and still no dice. Weird.
  • Up until today, I didn't realize that the shared folders had file versioning. It never really occurred to me to check the file properties for a previous version tab, and that this would only be viewable from a connected client (not the server), and then only if you're running XP, Vista Business, or Vista Ultimate. But I did stumble upon that today, and was very happy I found it. That's half the reason I use Mozy - so I can fix a "whoops."

I did have one moment of WHS-related sheer terror today. I noticed that about half of my 30 GB library of MP3s seemed to be unreadable. My pictures and documents are backed up via my XP VM running Mozy, but my backup strategy for music and videos relies on WHS.

So, as I was freaking out, seeing if my Creative Zen Vision:M supported copying my music off of it back onto the server, I rebooted the WHS box. When it came back up, everything was fine.

The best I can figure is that it has something to do with the extra external hard drive I added yesterday. I have a 120 GB external drive I was using to take work home, and, since I'm quitting that job this week, I decided to put that drive to better use as a member of my WHS storage pool. So I plugged it in, formatted, added it to the storage pool, and left it alone. I'm wondering if there was some kind of a hiccup or something in the file duplication process the next time it balanced storage (hence, why only some of the MP3s were hosed).

At any rate, I'm buying this as soon as NewEgg lists it.  It's 100% pure awesome, and worth every penny.

(Full disclosure: This post is made up primarily of snippets of forum postings I made on Scott Hanselman's forum...)

posted on Sunday, September 02, 2007 1:39:58 AM (Central Daylight Time, UTC-05:00)  #    Comments [2]
 Friday, August 24, 2007

I've been invited to Infusion's Sleepless in NY training weekend

This sounds like a fun little trip, getting to hang out with some geeks, including one of my personal heroes, Carl Franklin.  SharePoint is a good technology, and while I'm not personally overly excited about it compared to other technologies (like Silverlight), this is free training, and it's a great opportunity to network and get my name out there a little. 

And who knows?  Maybe I'll bring home the grand prize, "Insomniac, the developer's machine that never sleeps..."

posted on Friday, August 24, 2007 10:42:08 PM (Central Daylight Time, UTC-05:00)  #    Comments [0]
 Tuesday, August 14, 2007

Today I'm 1D in hexadecimal, which I prefer because it makes me look like I'm still a teenager.  Or 11101 if you prefer binary.  Let's just not talk about how old I am in decimal, okay?

Alright, I'll put it this way...  The hippie adage is "Never trust anyone over 30."  Which means you can only trust me for another 366 days.

posted on Tuesday, August 14, 2007 7:40:19 PM (Central Daylight Time, UTC-05:00)  #    Comments [1]
 Friday, August 03, 2007

This is my first post since starting my new job.  I've been a smidge busy, as they threw me in immediately on a high-profile project utilizing Microsoft Office SharePoint Services, and, well, my working knowledge of MOSS was somewhere between zip and zilch.  That's changed significantly over the past few weeks, and while I've been hesitant to call myself a MOSS developer, I'm certainly getting my bearings and starting to kick much ass.

One problem our team has run into several times is source code control.  Pretty much everybody on the team was a SourceSafe user and didn't have any experience with SVN.  I initially balked at this, because, well, SourceSafe sucks.  I advocated SVN every chance I got, particularly when SourceSafe would eat somebody's changes or we fought over file contention. 

As luck would have it, the company is in the process of standardizing on SVN, and, when our VSS repository became obviously too corrupt to be much use, the technical architect on this project caved to my requests and we switched to SVN.

The problem with this is, SVN's Copy-Modify-Merge paradigm can be confusing for developers who are used to Lock-Modify-Unlock.  We've had several occurrences of changes mysteriously disappearing, and, since I'm the de facto SVN expert on the team, it was left to me to reconstruct exactly what happened.  To avoid naming names and pointing fingers, I’ll illustrate with Alice and Bob…

Let’s start with a file.  We’ll call it Text.txt.  Text.txt looks like this:

Revision 1

Foo
Bar
Baz

Alice and Bob both did an update and now have Revision 1 as their working copy.

Alice makes some changes and commits them.  She removes the line “Baz” and adds “42” and “Don’t Panic”.  She commits her changes as Revision 2.

Revision 2

Foo
Bar
42
Don't Panic

Bob, meanwhile, makes some changes of his own.  Working with Revision 1 as his base, he adds “Quux”

Bob’s Working Copy

Foo
Bar
Baz
Quux

Before committing, Bob does an update and realizes he has conflicts.

Revision 2

Foo
Bar
42
Don't Panic

Bob’s Working Copy

Foo
Bar
Baz
Quux

Merged Output

Foo
Bar
Conflict
Conflict

Now, what I think happened, is Bob made a mistake while merging, and chose to accept his entire conflict block as the merge output…

Merged Output

Foo
Bar
Baz
Quux

Bob then marked his conflicts as resolved and committed this as Revision 3.

The problem with this is that it negates Alice’s changes – She removed “Baz”, and she added “42” and “Don’t Panic”.  The next time Alice did an update, she updated to Revision 3 and the changes she previously made in Revision 2 were missing.  SVN gets blamed, making Cam look bad for being such a vocal SVN supporter, when it was really Bob’s fault.  (The “making Cam look bad” part was a joke.  Smile.)

What Bob should have done was take a good look at the differences between Revision 2 and his working copy…

Revision 2

Foo
Bar
42
Don't Panic

Bob’s Working Copy

Foo
Bar
Baz
Quux

…and asked himself, “what exactly did I change in my working copy?”  In this case, Bob did one thing and one thing only: He added “Quux”.  So Bob has to assume that any other changes to the file were done for a reason.  Somebody wanted “Baz” removed, and “42” and “Don’t Panic” added.  It’s then incumbent upon Bob to ensure that only his valid changes are included in the merge.  The resulting file could have looked like this:

Merged Output

Foo
Bar
42
Don't Panic
Quux

The moral of the story:

Copy-Modify-Merge (like SVN) is more powerful than Lock-Modify-Unlock (like SourceSafe), but, as Uncle Ben Parker told Peter Parker, “With great power comes great responsibility.”  When you merge and commit, you have some responsibilities to live up to:

Update frequently.

When you merge, be sure you are not removing someone else’s important changes, and that you are only merging in the changes that you made that are relevant

When you commit, always read the file list to ensure you are not inadvertently committing changes to a file you did not mean to modify.  Also, it helps to do a diff of each file in the file list to be sure you are only committing code changes you mean to commit.

Good luck!

posted on Friday, August 03, 2007 9:01:47 PM (Central Daylight Time, UTC-05:00)  #    Comments [3]
 Wednesday, July 11, 2007

Well, not really.  Not in the flesh, anyway.

A few months ago he and I exchanged Wii Friend codes.  Nothing happened.  Months went by, and I spent less time with my Wii and more time with my Xbox 360.  Then my wife turned on the Wii to play Twilight Princess, and, lo and behold, we have a visitor.  Here's a shot of my Mii hanging out on Mii Plaza with Scott Hanselman's Mii.

Scott in Mii Form 

Not a bad Mii, Scott.  But which is the better likeness;  Your Mii, or your avatar from A Conversation with Scott Hanselman?

posted on Thursday, July 12, 2007 3:31:07 AM (Central Daylight Time, UTC-05:00)  #    Comments [3]

I just got my first greenlit article on the social news site, Fark.com.  For those of you unfamiliar with Fark, what this means is I submitted a link to a news article, including a self-written funny headline, and the users of the pay version of the site (TotalFark) gave it sufficient votes to have it show on the front page of Fark.

I guess you'd have to be there to appreciate it.

Yay, me.

posted on Wednesday, July 11, 2007 9:17:42 PM (Central Daylight Time, UTC-05:00)  #    Comments [0]