Thursday, December 27, 2007

Sharepoint/MOSS: Learning the Ropes

A few years ago, my career touched on Sharepoint 2003 but I haven't worked with it in some time. My group is starting to see some traction with it so I decided to update my understanding.

First off, as Microsoft is fond of doing, there are at least five different versions of Sharepoint. This chart, while far from concise, communicates the functionality in the different offerings. I found it helpful for my breath of understanding.

Also, I'm investigating books I can read in my free time. Here's what I came up with along with some suggestions from the gurus at my firm (thanks, Leon, Steve):

Microsoft SharePoint 2007 Unleashed
Professional SharePoint 2007 Development
Pro SharePoint 2007 Development Techniques (Pro)
Inside Microsoft Windows SharePoint Services 3.0 (Pro Developer)
Real World SharePoint 2007
Microsoft SharePoint: Building Office 2007 Solutions in C# 2005
Microsoft SharePoint 2007 Technologies: Planning, Design and Implementation
Professional SharePoint 2007 Web Content Management Development

Update (1/14/2008): Good whitepaper from Chappell. It's a bit old but the concepts hold true.
Update (1/15/2008): 100-level but clear and concise roadmap from Microsoft.
Update (1/17/2008): I ended up buying Professional SharePoint 2007 Development...I'll post my thoughts.

Monday, December 24, 2007

Team Foundation Power Tools for Team Foundation Server 2008 available

Thursday, December 20, 2007

ADO.Net Entity Framework: Vendor Support

Last night we held our bi-monthly practice meeting at the office. One of the guys on my team presented LINQ. We got to talking about the ADO.Net Entity Framework and someone wondered about vendor support.

InfoQ is reporting this morning eight vendors have already jumped on board issuing their support in the near future. Beta3 of the framework released two weeks ago so I'm looking for an RTM maybe early Q2...?

Wednesday, December 19, 2007

Free Microsoft eBook: LINQ, AJAX, Silverlight

From the link...

The free e-book includes content from three recent publications from Microsoft Press:

Introducing Microsoft LINQ by Paolo Pialorsi and Marco Russo (ISBN: 9780735623910)
This practical guide covers Language Integrated Query (LINQ) syntax fundamentals, LINQ to ADO.NET, and LINQ to XML. The e-book includes the entire contents of this printed book!

Introducing Microsoft ASP.NET AJAX by Dino Esposito (ISBN: 9780735624139)
Learn about the February 2007 release of ASP.NET AJAX Extensions 1.0, including an overview and the control toolkit.

Introducing Microsoft Silverlight 1.0 by Laurence Moroney (ISBN: 9780735625396)
Learn how to use Silverlight to simplify the way you implement compelling user experiences for the Web. Discover how to support an object-oriented program model with JavaScript.

Thursday, December 13, 2007

Gated Check-ins

Our development shop [gently ;-)] ostracizes the developer who "breaks the build" as a way to encourage quality. We also deliver awards for the group who breaks the build most infrequently. Unfortunately, the carrot and the stick treatment doesn't always work.

Completing the build locally is a good first step but obviously, it doesn't replicate the server CI process identically.

Brian Harry writes of an open source solution for TFS described as "Gated Check-ins". The code is shelved until receiving the necessary sign-offs (manual or automated) and can successfully pass the build sequence. Once successful, the source is unshelved and submitted into the "real" build sequence.

Tuesday, December 11, 2007

Windows Live Writer

I'm sure there are other on/offline blogging applications but I've recently taken up using the Windows Live Writer application. It's a WISIWYG editor that enables you to draft posts, save them locally, and when connected to the Internet, post to your blog. I also like the style-import feature. This allows one to suck in the theme of your blog so even when editing locally, you know what the post will look like when posted. Finally, it supports most platforms. I use it on both TypePad and Blogger (and soon on WordPress).

My team from The Freestyle Entrepreneur constantly complains about the TypePad editor. Fine, we're switching to Live Writer! (I'm migrating off TypePad as soon as I get our WordPress site running anyway. ;-)

MSDN Event: Visual Studio 2008 - Easton

Today I'm attending the MSDN Visual Studio 2008 launch event at the AMC Theatres at Easton Town Center in Columbus, OH. William Steele, Microsoft Developer Evangelist is fielding the discussion for the entire day: Visual Studio 2008, Astoria and Silverlight in the morning and IIS7/ASP.Net in the afternoon.

I've never seen William speak but I receive his updates via MSDN emails. He's handling the crowd well and is smooth with the slides and demo. After delivering a bunch of presentations and seeing others present, I just have the greatest respect for folks who can not only pull off a big event like this but do it with comfort and a bit of humor.

Topics included:

  • Visual Studio 2008 - what's new
  • .Net 3.0/3.5: C# 3.0/VB.Net 9.0, LINQ, anonymous types, etc.
  • LINQ
  • WCF/WF/WPF
  • ADO.Net Entity Framework - abstract/extrapolate physical data model into conceptual model (Beta 3 released 12/5/2007...RTM expected Q2 2008)
  • Codename Astoria - expose entities via RESTful web services (Official Name: ASP.Net Data Services)
  • IIS7
  • ASP.Net 3.5

As I've written before, I'm still in the "live events aren't the best use of time" camp but Microsoft does a great job of extending knowledge to the community in a free, all-encompassing event such as this. Further, when there's so much that's new and different, I find this "breadth blast" format is optimal. When I get free time, I can then drill down on topics I need or want to explore further (ADO.Net Entity Framework!)

Sunday, December 09, 2007

Heartland Influencer Summit

Friday, I braved the early morning tumultuous weather in Columbus to travel to Detroit for a meeting with our Microsoft Heartland District's leaders Jeff Blankenburg (Developer Evangelist) and Josh Holmes (Architect Evangelist). Thanks again for the invitation, guys.

The topic of the day focused on how Microsoft can best help the developer community. Most of the 20 or so attendees were affiliated with the local user groups in the district. Hey, at least they [Microsoft] are asking. Microsoft may not always get it right but I've been pleased at the creation of roles such as Developer and Architect Evangelist. This alone really bridges the gap between Microsoft and the community. Now Microsoft just needs to increase the budget for these road warriors. [hint, hint]

As a thank you for attending the meeting, Jeff handed out USB Rocket Launchers. Somehow, he scored them from Micro Center for around $10. Nice work, Jeff, they're $35 on Think Geek! Anyway, my 3-year-old couldn't be more enamored with this toy. I hooked it up to the laptop in the kitchen and he has already mastered it! This kid loses interest approximately every 36 seconds but he played with this launcher for over an hour the first night. Good times.

Recommendation: Attend CodeMash

If you're anything like me, your responsibilities pull you in about 50 directions--all at once. This is especially true if you're in a technology career. For me, I maintain a list of goals surrounding my career which average around 10-12: figure out Oslo, get stronger with TFS...particularly Rosario, learn ASP.Net/C# 3.5, present technical topics often, maintain my certifications, keep my team happy and growing, etc.

Typically, it has been my experience during my 12+ year career that conferences--especially non-vendor-managed conferences are not a good use of my time. One ends up burning a day or two with travel ('cause they don't do conferences in the mid-west), the topics and sessions are hit-or-miss, and they're expensive.

CodeMash alleviates all of these shortcomings. Hosted right here in Ohio, the independent founders of CodeMash knocked one out of the park last year in their inaugural offering: logistics, price, content, speakers, SWAG, and organization. Overall, this 2-day regional conference delivered more value than most of the national or coastal events I've attended.

Living in Columbus, the 2.5 hour drive to Sandusky, OH and the Kalahari Water Resort is a piece of cake. Somehow, CodeMash charges under $200 negotiated an under-$100/night rate, and the food is sponsored. There are 42 sessions delivered by the best and brightest (ok, so they didn't pick me...one exception ;-) folks in Michigan/Ohio (predominately) we all know and enjoy: Jim Holmes, Dave Donaldson, Bill Wagner, Josh Holmes, etc. AND, they managed to pull in some heavy weight out-of-state talent such as Bruce Eckel, Neal Ford, and Scott Hanselman. (Last year they paraded in Scott Guthrie...wow. I'll miss his presence at the conference this year. I'm sure there'll be no shortage of greatness this year though...)

So, get yourself registered already! All the cool kids will be there.

My firm, Cardinal Solutions is a Gold Sponsor. If you're nice, I might even share our discount code. ;-)

Monday, December 03, 2007

Tools: Free Download Manager, Magic ISO Maker

I've been downloading and installing lots of software lately with the release of VSTS 2008 and the CTPs of Rosario. Downloading through a browser is mediocre at best. I started using Free Download Manager for the downloads and Magic ISO Maker to expand the ISOs.

Check them out. First, they're both free but more importantly, they work great. FDM has built-in restart support and integrates seamlessly with browser downloads. Magic expanded my ISOs quickly and correctly.

Friday, November 30, 2007

Agile with TFS Slide Deck

Thanks to everyone who came out Wednesday at lunch to see my Agile with TFS presentation at OCLC for the XP Columbus user group. Here are the slides.

Thursday, November 29, 2007

Microsoft Visual Studio Team System Code Name "Rosario" November 2007 CTP is Available

Yea! I've been producing demos using August's CTP. It seems quite solid but hey, I like the new and improved whenever available!

Check out the new scenarios outlined on Jeff Beehler's blog.

Wednesday, November 21, 2007

The Definitive Guide to the Microsoft Enterprise Library

Cool!

XSS Detect in Beta

XSSDetect: a new, free add-on tool from Microsoft executes static code analysis searching for .Net managed code vulnerable to cross site scripting (XSS) attacks...in beta now.

Monday, November 19, 2007

Presenting on TFS Wed. Nov. 28th at Columbus XP User Group

Stop by and see me present on Agile using VSTS and TFS 2008 Wed. Nov. 28th at Columbus XP User Group. Go easy if you attend...no hecklers. ;-)


Meeting Topic: Agile with Team Foundation Server (TFS)
Do you expend lots of time and effort inquiring about the status of your projects and setting up infrastructure rather than delivering value? Is it almost impossible to determine progress and velocity using your current process? Do developers constantly tell you, "Hey, no worries...I'm about 80% done"? Well kiss those days goodbye with the introduction of Microsoft's Team Foundation Server (TFS).

TFS coupled with Visual Studio Team System (VSTS) delivers a complete SDLC management, development, testing, and release solution. Targeted to all the roles involved with the SDLC (developers, testers, PMs, BAs, stakeholders, architects, build masters, etc.), TFS assists you in managing requirements, tracking traceability and defects, improving code quality, and most importantly, facilitating communication amongst all members of the team. TFS supplies process templates but by modifying those processes and extending TFS functionality, you can assuage TFS to accommodate the unique aspects of your process.

TFS is a software product but its features bring about the potential for a strong agile-based solution for your custom software development. In this session, we'll
quickly review the agile principles, cover some of TFS and VSTS's features, map those features to agile principles, and finally, investigate a typical agile software development process as executed leveraging TFS.

About the Speaker: Jeff Hunsaker
Developing and architecting solutions and leading teams for over 12 years, Jeff Hunsaker grew tired of failed projects due to flawed processes. Eager to meet with success, he began to investigate more agile methodologies. While still far from expert rankings, agile principles of software development restored Jeff's faith in effectively and efficiently producing custom business software. He considers learning the agile principles an ongoing endeavor.

Jeff works for Cardinal Solutions as a Managing Consultant and lead for Cardinal's Columbus Microsoft practice. His career thus far includes exposure to industries
including: interactive marketing, e-commerce, military, finance, transportation/logistics, and software products. Jeff likes to relive the glory days remembering leading the
team to build art.com in the late 90's. His biggest responsibility though, is raising his two sons aged 3 and 4 months. In his spare time (with two kids...are
you kidding?), Jeff enjoys reading, online marketing, writing, and taking his sons to the zoo.

Meeting Info:

The meeting will be held on Wednesday, Nov. 28th in the Smith Private Dining Room from 11:30am to 1pm. Please mark this date on your calendars. You can bring your lunch or purchase lunch in the OCLC cafeteria. To register for this meeting, send email to lfarrenkopf@earthlink.net . For directions to OCLC, please visit our website at www.cardinalsolutions.com/XP

Wednesday, November 14, 2007

Good C# Learning and Interviewing Links

C# Learning
http://www.codeproject.com/csharp/quickcsharp.asp
http://msdn2.microsoft.com/en-us/vcsharp/aa336766.aspx
http://msdn2.microsoft.com/en-us/vcsharp/aa336809.aspx
http://www.oreilly.com/catalog/learncsharp2/

C# Interviewing
http://rileyperry.blogspot.com/2005/05/c-interview-questions.html
http://blogs.crsw.com/mark/articles/252.aspx
http://www.hanselman.com/blog/WhatGreatNETDevelopersOughtToKnowMoreNETInterviewQuestions.aspx
http://spellcoder.com/blogs/bashmohandes/archive/2007/02/26/5991.aspx
http://www.geekinterview.com/Interview-Questions/Microsoft-NET

Tuesday, November 13, 2007

Bonehead: Headlight Replacement

Isn't pride a sin? I think so. Anyway, I take great pride in keeping my 12 year old Honda Accord in working condition. I'm gonna drive that POS until the wheels fall off. Except for a ton of dings and a few quarks, it's actually in good shape. As long as it gets me where I'm going, I'm happy.

A few days ago, my headlight burned out. Ugh. I replaced them once before (I told you, I've had this car for a long, long time) so I figured, "no problem". I went to Advanced Auto, got the right bulb, and scooted home...again proud of myself for only spending $8.

I get home, pop open the hood, move the radiator overflow tank out of the way and get to work. First off, the cap/gasket-like ring is jammed. After a half hour, I get out the serious tools: screwdriver and hammer. That's right...it's wrecking time! Even after bloodying myself, the gasket won't budge. Ok, time to call in the big guns: Lockjaw Pliers! I locked on to the old socket and just started yanking. Yeehaww!

Finally, after some dreadful sounding cracking and breaking, the gasket moves and I get the old
bulb out. Seemingly, nothing is irreparably broken. I bust out the shiny replacement bulb...ugh...not fitting. (I even consulted my owners manual...the shame.) After triple checking the part number and trying every way from Sunday to get this guy in, I give up. 1.5 hours expended--still a pidittle.

At the end of my rope, the following day, I plead mercy with Advanced Auto, "...anything you can think of?" There's a pause on the other end, "Well, sir, I hate to insult your intelligence but perhaps are you attempting to replace the high beam instead of the low beam?" Crap. I'm an idiot. I sheepishly thank him for the advice--knowing for sure that's the issue.

On the way home, I buy a second low beam (don't want to do this again for a while) and a high beam bulb to replace the one I mistakenly murdered with the Lockjaws. Sure enough, the high beam bulb drops right into the hole. All told, it takes me 5 minutes (tops) to replace three bulbs.

Moral of the story: always make sure you're working with the right beam when replacing headlights!

Props to Advanced Auto...thanks for helping me through my bonehead move. BTW, I really like this store--only auto store I'll visit. They came out to the parking lot to test and replace my wife's car battery for her--no extra charge. Nice.

Thursday, October 04, 2007

Balmer Doesn't Get Social Networking...Few People Do

Web 2.0 is about community. Web 2.0 is about relationships. Web 2.0 is NOT about Ruby on Rails. Web 2.0 is NOT about building a "better" MySpace.

Robert Scoble posted an interesting tirade yesterday about Steve Balmer misinterpreting social networking. Scoble cites Balmer's propensity to respond with the Microsoft insular comment about Web 2.0 "We could build [fill in the blank with Web 2.0 technology] in a matter of [short period of time]" as wildly off base. I couldn't agree more.

Scoble's most compelling argument focuses on Ebay. Ebay isn't successful because of its technology. It's successful because it surpassed the tipping point. Everyone uses it for auctions. Why would I want to use another service to buy or sell something when everyone is on Ebay?

Every time I see a job-board listing needing a Ruby/PHP/whatever developer to "build a Facebook-like" application or a "Monster-like job board", I cringe. So some engaging entrepreneur has orchestrated a way to build a better mouse-trap. So what? You're wasting your time and money.

Of course you could build a better [fill in the blank with Web 2.0 technology] given adequate resources--but it doesn't matter because the social network has already formed around Ebay, Facebook, MySpace, LinkedIn, YouTube, etc. Have you looked at Craig's List lately? It's difficult to look at it's so ugly...and yet, it's the destination for local people-centric, one-time commerce.

So, my advice to you aspiring entrepreneurs: innovate horizontally; not vertically. Come up with the next social or community offering--don't simply repeat what's already there but with a better [interface|design|API|etc]. Can you say Ubid.com? 'Nuf said.

Friday, September 21, 2007

Monday, August 13, 2007

Judge Lowers the Boom on SCO. Hasta la vista, baby.

It's about time this non-innovator, tort-exploiter got what was coming to it (although I feel for their shareholders):

Wednesday, August 08, 2007

Mount an ISO

Working with ISO images is a PITA! Typically, I download ISOMagic or ISOBuster and extract the image to my hard drive. However, apparently, this functionality is no longer accessible with the free download. ;-(

I then discovered "Virtual CD-ROM Control Panel for Windows XP". Works under Win2K3 as well. The interface is clunky and I needed to start the "IMAPI CD-Burning COM Service" service but it provided exactly what I needed. I'm surprised this isn't just built into the OS...?

Tuesday, July 03, 2007

How to Spot the Dreaded Non-Coding Architect

This article from Frank Kelly really cracked me up...but I think he's fairly accurate. His perspective is from Java but it's applicable to all 'architects'. Don't become the Non-Coding Architect!

Monday, June 11, 2007

Top Ten of Programming Advice NOT to follow

I still prefer properties to accessors/fields...and underscores within method names annoy me. Great list!

Thursday, May 24, 2007

Morphing from Developer to the Coveted 'Architect'

I'm asked this all the time by developers: "how do I become an architect?" There's no right answer...and there's no book to read! However, here are several MS sites which will help get you pointed in the right direction.

Friday, May 18, 2007

Making Money Online with Content

Over at my other blog, The Freestyle Entrepreneur, we're brainstorming how to actually turn a profit. I think we produce outstanding, compelling content. It's a really good read. But, as much as I like learning about blogging, the technology, and interactive marketing, admittedly, I'd also like to turn a profit on this investment (of my time).

To this end, I compiled a list of online resources we'll experiment with over the coming weeks. I thought I'd share my research here:

Best of luck with your blog!

What's New in C# 3.0?

Wednesday, May 02, 2007

Historic Social Online Uprising over HD-DVD Decryption Key

Yesterday, the social networking site Digg community vehemently refused a cease and desist / take-down order on a user posting an HD-DVD decryption key (granting a very technical user the ability to copy DRM-protected movies) online.

Interestingly, Digg management/owners pulled the user post down. However, the community revolted and "forced" the post back online (by repeatedly re-posting the decryption key). This event should prove historic because a social / community uprising "won". The "protesters" may not have been right (as in law-abiding) but I think digital freedom is right (as in morally).

This looks a lot like the Boston Tea Party to me. No one likes DRM: it's intrusive and it interferes with my right to use the content. If I paid for Spiderman II on DVD, then it should damn well play on every single DVD player I own--including my laptop. Therefore, these protesters dumped the tea overboard by providing the entire Internet with the keys to the castle.

With the recent legal setbacks to the RIAA campaign of fear, I think the tide has swung toward free content (as in liberty...not as in beer). I don't believe in stealing and I don't believe in giving content to those who haven't paid for it (should it cost). However, the RIAA is incorrectly pursuing a social and marketing problem with a technology and legal solution.

Here's an idea: stop shoving discs full of 9-I'd-rather-poke-a-pencil-in-my-eye songs coupled with one good song. If I like a song, I'll download it onto an MP3 player...and yes, I'll pay for it. And stop releasing crummy movies you know will flop only to up prices to cover these failures. Make better bets! (C'mon, Snakes on a Plane? Please.)

My advice for the RIAA: (1) create better content. [Most] People will pay for great content. Lexus Nexus...The WSJ... (2) drop all forms of DRM--it just ticks off consumers and presents a barrier to your content and (3) drop all legal pursuit of DRM "violations". Ok, yes, Suzie Smith is violating the law by downloading Hannah Montana without paying for the MP3 but your Draconian Gestapo storming her bedroom with flash-bangs isn't the kind of country I want to live in.

Update (5/3/2007): Looks like there could be some scary legal repercussions for Digg...

Monday, April 23, 2007

Increasing Blog Traffic

Over on my other blog, The Freestyle Entrepreneur, I'm constantly trying to increase traffic. We have, IMO, great content...it's just a matter of getting it in front of folks. I pride myself on being aware of most online marketing venues but Achieve-It alerted me to one I wasn't aware of: ezinearticles.com. I'll be investigating this...submitting to the blog carnivals is effective but not quite yielding the desired results.

Tuesday, April 17, 2007

Windows Installer XML (WiX)

I've used a lot of installer tools over the years and...now I'm adding another! I'm embarking on the WiX journey. WiX is the Windows Installer XML open source project. Getting started:

Project
SourceForge
Introducing WiX (old but Mike Gunderloy is one of the best in installer technologies)
Google Group
WiX v3 Roadmap Draft

I downloaded WiX v3.0 and got the integration working with VS.Net 2005. Instructions:
Automate Releases With MSBuild And Windows Installer XML
System Folder Properties

Sunday, April 15, 2007

PowerShell: Alternative to VBScript and DOS Scripts

Most developers I know still use VBScript and DOS to compose reusable and one-time scripts. I was one of these people until I discovered PowerShell. It's a bit tricky to pick up but far more powerful than the legacy alternatives.

My favorite feature is the "-whatIf" flag found on most (if not all) operations. One can set this flag to understand exactly what would happen if you were to execute the command as it is written. It's almost like having a unit test harness for scripting operations. No more accidental hard drive formatting.

So, for your next scripting task, check out PowerShell instead of writing some hard-to-maintain/author legacy script.

Cube Farms Brought to you by Uncle Sam?

Joel Spolsky wrote recently on building out additional office space. They're choosing to leverage portable walls instead of drywall construction. They took this direction because permanent space improvements depreciate much slower than office equipment expenses.

In this regard, do we really have the IRS to thank for the proliferation of cube farms as opposed to the traditional thinking: mega-corporation? (PS. I'm a firm believer cube farms kill productivity and stifle creativity...I'm not a cow. However, they're much better than a big table housing 11 shoulder-to-shoulder consultants.)
Office furniture can be depreciated much faster than leasehold improvements, over 7 years. So for $20 of office furniture you can deduct about $3 a year: better than nothing. Even better, office furniture is a real asset, so you can lease it. Now you're not out any cash, just a convenient monthly payment, which is 100% deductible.

This is why companies build cubicle farms instead of walls, even though the dollar cost is comparable.

Turn off Email Notifications

Steven Borg writes a post that hits home for me. He suggests turning off email notifications while developing (or trying to focus on an intense task). I am so guilty of this. I'm all the time flipping into Outlook, Gmail, or OWA to check email (client, personal, and employer/firm). I'd probably be twice as productive if I followed his advice of only checking once an hour.

I'm going to work on this...

BTW, I took Steven's 3-day intense Team System training. I don't attend training often but his was some of the best I've seen delivered. His blog is a great resource for SCM, Team System, and just good overall development guidance.

Saturday, April 14, 2007

DotNetNuke 4.5.0 Install

Struggled with this one. I have two sites to build so I downloaded the DNN 4.5.0 source and copied it into two separate directories within Inetpub. I downloaded and installed Visual Studio Web Express Edition.

I pulled up the first site (VS Web Express uses Web Sites vs. Web Applications), built it, and browsed to the site. I walked through the straightforward install wizard getting to the last step where the database scripts install. And it just scrolled the progress bar endlessly. I even let it run overnight. Nothing.

Finally, I bypassed the install wizard setting the UseInstallWizard to false within the web.config file. Afterwards, I browsed to the default page again and an pragmatic but successful script informed me the site had executed the scripts successfully and my portal was available!

Other than this hiccup, I'm impressed with the installation mechanism and functionality.

Thursday, April 12, 2007

WCF Presentation Coming

I have a .Net Windows Communication Foundation (WCF) presentation due in a few weeks. So, I'm going to collect my travels here on Effective Thoughts.

To start off, how do I obtain and install WCF?
(...assuming you have Visual Studio 2005 w/ SP1 installed)
Visit the Windows Vista Developer Center and download:
.Net Framework 3.0 Redistributable
VS.Net 2005 Extensions for WCF, WPF (Nov. 2006 CTP)
Windows Vista SDK

Resources
.Net WCF home page
.Net 3.0 Virtual Labs
MSDN WCF home page
.Net Framwork WCF home page
Vista Series on SearchVB

More to come!

eMoms Birthday Party Contest

There's a cool blog makeover / SEO contest going on over at eMoms to celebrate their 1 year anniversary. So, I thought I'd enter by posting a link to their site. If I win, I'll use the resources on my other blog The Freestyle Entrepreneur. (and before you laugh, the folks at eMoms are experts at SEO/M and...I have a wife who's most certainly a mom!)

Sunday, April 08, 2007

Freestyle Entrepreneur Outgrows TypePad...DotNetNuke Here we Come

In my spare time, I operate a small business / entrepreneur blog called The Freestyle Entrepreneur (affectionately known as TFE) with my cousin. We started it about 6 months ago to help entrepreneurs and to try and make a profit. I'm handling the technology, the marketing, and a bit of the content. Other than this personal blog on Blogger, TFE was my first foray into serious blogging.

After much investigation, I placed us on TypePad using their top-tier offering. It's a very reasonable $15/month given the value of what TypePad (or SixApart...also makers of Moveable Type) provides. To be clear, TFE isn't really outgrowing TypePad, we've outgrown blogging.

This isn't to say, "Pfffft, blogging? We mastered that in 6 months! Whatever!". Quite the contrary. We've refined our approach and identified blogging is just one piece of what we're about. We're taking a more holistic approach with a more newspaper/portal feel with blogging assuming just one piece of our offering.

With this new goal/approach in mind, the technology department (me), set off to find a new, more appropriate platform. After much research, I've decided on DotNetNuke 4.5 (just released) with a SQL Server Express 2005 backend and a stock template presentation. My criteria focused around:
  • Clean, easy to navigate, easy to administer/maintain
  • Comfortable, mainstream technology with a large developer community
  • Readily available, reasonably-priced hosting
  • Broad functionality and flexibility
Given this criteria, I narrowed it down to OpenPHPNuke, Joomla, Mambo, Moveable Type, and DotNetNuke. All met my criteria with Moveable Type bringing up the rear (no cut to MT but it's really more of a blogging tool than a portal/CMS platform and it takes a good deal of tweaking to make it do CMS).

The site CMS Matrix won me over to DotNetNuke. Someone put serious effort into this site. It's excellent! One can choose from dozens of CMS platforms and compare them side-by-side against dozens of features. Seeing a "Yes" next to almost all features for DotNetNuke won me over. Additionally, I've been using the .Net platform since before Beta 2 of version 1.0 (2000).

This isn't to say we're dumping TypePad either. Their blogging tool works great and we may just keep the blog there but build up a bigger site around it. Not sure yet.

I'll post soon with background on setting up the platform and our progress...

Monday, April 02, 2007

Mom has Ubuntu Now

You're probably thinking I abandoned the effort of repairing my Mom's ancient Dell workstation with the failed hard drive previously running Windows 98, right? Well not so fast my friend!

After about 80 hours of struggling to get Ubuntu to a usable and consistent state (yes, I feel less than brilliant about that), I finally concluded the hard drive I'd dug out of my box of obscure, random computer parts was bad itself. Way to go Einstein.

I found a deal on an 80GB, 7200RPM drive at Microcenter for $50, purchased it for pick-up on their web site, pulled the jumper, attached the 40-pin, mounted it to the chassis, booted into and installed Ubuntu, updated the distro, and wala: Ubuntu lives! Insultingly, this entire effort, including time spent retrieving the hard drive from Microcenter consumed a whopping 2 hours.

Mom visited this weekend. I spent 10 minutes walking her through the interface, how to configure the wireless card when returning home, and using OpenOffice.

So, the easy ;-) part is through and now we move into the support phase of our experiment...

Tuesday, March 27, 2007

MSBuild Always Rebuilding

Some of the brilliance of MSBuild includes recognizing when source files have not changed and therefore avoiding a re-compile. However, despite possessing an OutDir property, MSBuild always uses the /obj/Debug (or /obj/Release) directory to perform the comparison. MSBuild uses this directory as a temporary folder to avoid contention issues.

In our case, our compiled DLLs reside in a separate directory named /build. Thus, with MSBuild writing DLLs into the /obj/Debug directory, it would always rebuild the DLL (thinking it didn't even exist). These "modified" DLLs would be checked into source erroneously.

To overcome this, I interrogated the Microsoft.Common.targets file to see what the MSBuild team was doing. (This file sits in [Windows]\Microsoft.NET\Framework\v2.0.50727) To truly override the output directory, I'm using the IntermediateOutputPath and BaseIntermediateOutputPath properties. My MSBuild looks something like this:



Microsoft Acquires TeamPlain

Sharepoint offers a rich non-Visual Studio interface to TFS but TeamPlain is even stronger. Your teams will benefit from this acquisition. Download TeamPlain...for free!

Sunday, March 25, 2007

Named to TeamFB (FinalBuilder)!

I'm excited to be named to TeamFB for FinalBuilder! This is similar to Microsoft's MVP program. I suppose I bugged them with enough questions they figured, "Give him some work to do". Anyway, I think this is a great product and look forward to helping other developers implement this technology.

Thursday, March 22, 2007

FinalBuilder

My latest project involves creating an automated build solution for .Net 2.0 source code. For the solution, we're using MSBuild, Cruise Control.Net, and a commercial product called FinalBuilder. I'll write up a later post outlining the approach/solution but I just wanted to recommend FinalBuilder. It's a great build orchestration solution both on the desktop and the server. It also integrates with CruiseControl.Net, extends via Java/VBScript, COM components, or .Net assemblies (called Custom Actions), and their support rocks.

I've been active on their newsgroups while constructing my client's solution. My FinalBuilder posts.

Sunday, March 11, 2007

TFS Service Pack 1 Features

A bit dated but an overview of what's new in TFS SP1.

TFS: "Unable to connect to the Windows SharePoint Services"

Whew. I'm finally past this troublesome TFS project creation error.

At first in my research, I discovered TFS is (somewhere...RegProxyFileCache.xml I think) configured to look for WSS (Sharepoint) Admin at port 17012. Some folks identified a second install of WSS leads to the incorrect port for WSS...thus causing a TFS project creation error. This was not the case for me.

Finally, upon highly scrutinizing the project creation log file, I found an inner, inner, inner exception reading:
Exception Message: The request failed with HTTP status 403: Forbidden.
Checking IIS on the TFS instance for the "Sharepoint Central Administration" site, I opened the Directory Security tab. Sure enough, the "IP address and domain name restrictions" option was set to default deny and only granted to localhost (127.0.0.1). Ugh. Security. ;-)

To resolve, I simply set the option to default grant. Project creation successful! I hope this helps someone avoid this issue.

Thursday, March 08, 2007

What is Visual Studio Team System?

Microsoft's marketing engine IMO, missed the mark branding and naming Team System. (To their defense, it's tough to understand this product line and communicate its vast functionality.) I've seen these products referred to as Team System, Team Suite, Team Edition, and a host of other monikers. To help clear up the confusion, here's a brief write-up and a link to Wikipedia which [I hope] offers a clear explanation.

Visual Studio 2005 Team Edition - The Integrated Development Environment (IDE) technology workers use to accomplish work. There are five "editions", each targeted to a particular role:
  • Visual Studio 2005 Team Edition for Software Developers
  • Visual Studio 2005 Team Edition for Software Testers
  • Visual Studio 2005 Team Edition for Database Professionals
  • Visual Studio 2005 Team Edition for Software Architects
  • Visual Studio 2005 Team Suite - This edition encompasses the functionality of the other four. It's an extra $1200 but I recommend it. The crossover value is well worth the money.
Team Foundation Server - This server-based product enables the collaboration amongst members of the software project team (presumably using Visual Studio 2005 Team Edition). Known as simply TFS (sometimes prefixed with Visual Studio), it provides functionality such as version control, automated building of source, task (or Work Item) tracking, collaboration and project management through Sharepoint, reporting, and data analysis.

Visual Studio 2005 Team Test Load Agent - This add-on module leveraged by Visual Studio simulates virtual users against a web site. It is used in conjunction with the Web Test functionality within Visual Studio 2005 Team Edition for Software Testers.

Visual Studio Team System - This moniker refers to the entire line of products...including all of the above: Visual Studio Team Edition, TFS, and the Load Agent. It is not a product per se but a line. I.e. one cannot purchase Team System, one purchases the individual components of Team System.

Wikipedia Team System Entry

Friday, February 23, 2007

I am Green Lantern

Your results:
You are Green Lantern
























Green Lantern
70%
Spider-Man
70%
Hulk
70%
Robin
68%
Superman
60%
Iron Man
50%
The Flash
50%
Batman
50%
Supergirl
48%
Wonder Woman
43%
Catwoman
25%
Hot-headed. You have strong
will power and a good imagination.


Click here to take the "Which Superhero are you?" quiz...

Sunday, February 18, 2007

TFS Links, Tools, Blogs, Books, etc.

Update 03/25/2008: I've begun managing this list in del.icio.us tagged under TFS.

Some of my favorite Team Foundation Server / VS.Net Team Edition tools and links:

Value-add, Marketing
Best Practices
Tools

Links

Guidance
Learning
Overviews
How Tos
Blogs

Testing
Books
Methodologies
Source Structure / Branching

Friday, February 16, 2007

Team System Case Studies

Team System Book Listing

I'm reading Pro VS 2005 Team System from APress. It's very good but definitely targeted to the manager...although, there is some customization and extention with custom code. Overall, a helpful book.

Monday, February 12, 2007

Favorite C#.Net Interview Question: Numeric Conversions

I like to ask a wide variety of technical questions targeted to the candidate's seniority during interviews. My favorite C# question focuses on converting an Int64 into an Int32. Hopefully, this isn't something you need to perform often (poor design) but occasionally we have to clean up after the other guy, right? ;-) (If you interview with me and are reading this post-consider it a gimme...and hopefully you learned something anyway.)

Situation: We have an Int64 "b" I need to convert into an Int32 "a". How should we set a = b in the safest manner (i.e. no data loss)? Here are some options:



  • Line 15 does not compile throwing a "Cannot implicitly convert type 'long' to 'int'. " exception.
  • Line 17 properly raises an OverflowException.
  • Line 19 does _not_ throw an exception. a's value incorrectly becomes 1569325055.
  • Line 21 properly raises an OverflowException.
In my opinion, the style in Line 17 is the best because it leverages the Framework to do most of the work. This way, if the Framework implementation ever changes, my code will automatically benefit. Also, most developers aren't familiar with the checked construct (2nd best option, IMO) so it looks a bit out of place.

Many developers unknowingly choose Line 19. Bugs introduced with this code can be some of the nastiest to track down. Be safe out there! Convert explicitly using the Framework.

Good web links for conversion:
Jeff Adkin's Data Conversion posting
Explicit Numeric Conversions Table (C# Reference)

Friday, February 09, 2007

Online Regular Expression Evaluator

I don't use regular expressions daily but when I do I always find myself starting from scratch-trying to download some tool. And it's never the same one I used the last time so I have to re-learn an interface. Here's an excellent regular expression tool leveraging AJAX...it even includes a nice cheat sheet.

Tuesday, February 06, 2007

Death to DRM

Props to Steve Jobs for finally calling a spade a spade and dismissing DRM as an ineffective solution to rights management. I'm all for protection of author/artist rights but DRM just isn't getting the job done. DRM is simply the major record/movie houses trying to solve the problem with technology. We see this all the time in business. It's easy to treat everything like a nail if all you have is a hammer. Get creative. Come up with a solution that works-hint: it's not technology.

Saturday, January 20, 2007

Defeating Cancer: Lance Armstrong starts Lobby

Most fortunately, no one in my family has battled cancer. Hopefully, this will continue. However, we must become more vigilant in this fight. I'm encouraged by Lance Armstrong's renewed push to conquer this silent foe. It is truly an abomination that a people so rich in knowledge and experience have yet to defeat cancer. We put men on the moon...almost 40 years ago! How is cancer anything but a footnote from the 1990's?

I urge you to join in with Lance's army. The V Foundation and the American Cancer Society are also responsible agents in the fight against cancer.

CodeMash: Day 2

Well done! Well done. CodeMash really delivered. Day 2, for me, could be summed up as Scott Guthrie Day. I'm not sure how he pulled off 3 knowledge-laden, engaging presentations...all while on Redmond time. I kept noticing the clock on his laptop. During his keynote at 9am, his clock read 6am. And he was still going strong during his 3-4:15 discussion. Impressive. I hope he gets/got a few hours of nap time on the flight to SeaTac.

Highlights:
  • Dave Donaldson's review of NHibernate. This guy just impresses me. He's not a rock star (as in unapproachable, full of himself) but more like the people's developer. Down to earth. Human. Wants to help. I'm excited about the prospect of NHibernate. I've used NetTiers with good success but never really pushed the limits. Although, LINQ may trump NHibernate...
  • LINQ. This Object-Relational Mapper (ORM) will revolutionize traditional data access tier development. The Microsoft developer community made solid progress in recent times through leveraging shared source tools such as Enterprise Library/Patterns & Practices and FxCop and open source tools like NUnit. Embracing agile and TDD also helps. But, I think LINQ will finally bring ORM to a place where developers feel comfortable implementing it and enterprises feel comfortable allowing it into their shops (there's still a reluctance to accept OSS in a lot of the bigger shops). Guthrie's demos and information nailed it on LINQ.
Overall, CodeMash delivered great value in a short period of time for a very reasonable price. Great work, guys. I look forward to next year.

Friday, January 19, 2007

CodeMash: Day 1

I'm so impressed with the organizers of this conference. In some ways, the "grass roots" effort exceeded the effectiveness of "professionally" organized conferences. Some of the highlights:
  • Bruce Eckle - Listen to him speak if you get the chance. Abstract but a good message: we must experiment to learn; your assumptions are probably wrong; designing up front will likely miss the mark
  • Ted Neward - I love it when people break through the religion and the BS to tell it like it is. Ted discussed embracing both Java and .Net to create the best solution to a business problem.
  • Pillar programming problem contest - I spent about an hour trying to figure this one out on a spreadsheet and failed miserably. ;-) (I think I'm missing some constraints...) Regardless, it was a fun exercise and likely, a great way to attract solid developer candidates.
  • Video games - I've never been a gamer but I find the innovation intriguing. The Wii over at Quick Solutions seems to be the biggest draw. XBox 360 at Microsoft was a close 2nd.
  • Booth babes at Compuware - Enough said. (Note to Compuware: guys, this just won't yield candidates...we're not that shallow)
  • Free pop - I don't drink pop but a lot of developers do. Props to Pillar for dropping $1000 on pop Thursday
  • Open Spaces - A concept from Bruce Eckle and Martin Fowler for informal, engaging gatherings to experience ____ (fill in the blank). A neat idea.
  • Wireless access (free!)
Overall, day 1 was great. I learned a lot and experienced some coming technologies as well as some topics outside my normal realm. Good work, guys.

Sunday, January 07, 2007

Installing Team Foundation Server Workgroup Edition

It's not rocket science but I found the Team Foundation Server (TFS) installation process a bit tedious and tricky. The install MSI will reactively inform you of what you're missing (with System Health Check) but something more proactive would help. Also, an error within the System Health Check necessitates re-starting the TFS install from scratch. ;-( Regardless, I wanted to share my experience.

My purpose in installing TFS is learn the product and prepare to share with others through demos and presentations. So, I'm working off a Dell Inspiron 6000 laptop running Windows XP. Also, I chose Workgroup Edition because I don't want to mess with CALs and I don't intend to upgrade to Standard or Enterprise Edition. Workgroup and Standard are the same except Workgroup limits to 5 users.

TFS doesn't support Windows XP and I don't want to run Win2k3 Server so I'm using Virutal PC to host my TFS instance. This, BTW, is an amazingly effective and safe way to install beta or stuff you just want to try out without horking your base OS.

Of further difficulty, Virtual PC (and TFS) want a lot of memory. I only had 1GB so I had to upgrade to the max 2GB.

My process:
  • Install and configure a Virtual PC instance with Win2k3 SP1
  • This should install the .Net Framework 2.0 but double check...
  • Install IIS (enable ASP.Net) and SMTP
  • Create two accounts for TFS services. I named them TFSService and TFSReporting. I added them to the local Administrators group
  • Install SQL Server 2005 Standard Edition (Developer is not supported). I installed under a separate local account I created named SQLService. I added this to the local Administrators group.
  • I logged in as TFSService from here on out to install the remaining software.
  • Important: Before installing WSS in the next step, read "How to: Install Microsoft Windows SharePoint Services for Team Foundation Server". You *must* install WSS to leverage SQL Server instead of the default MSDE database installed with WSS. You can do this by selecting the Server Farm option during WSS's installation. Otherwise, you'll need to uninstall WSS and re-install from scratch. Unfortunately, the TFS install doesn't enlighten you to your mistake until well into the install. (Oh yes, I'm speaking from experience...) If you accidentally skipped this step, make sure to uninstall both WSS and the Sharepoint instance of MSDE. Otherwise, the Server Farm option will not appear on the WSS install.
  • Install WSS 2.0 with SP2...not 3.0. Sharepoint 3.0 and WSS 3.0 is not yet supported for TFS...even TFS SP1. I did not have to install Sharepoint Portal Server...just WSS.
  • When WSS prompted for the IIS Application Pool, I chose StsAdminAppPool from the drop-down.
  • Important: When WSS prompted for the Configuration Database, I chose "." for the Database Server, "STS_Config_TFS" (you *must* use this name) as the name of the database, recall I'm logged in as TFSService so I kept the Windows Auth option,
  • Install SQL Server 2005 KB914595 Hotfix (x86)
  • Install ASP.Net 2.0 QFE KB913393. I don't believe the KB ever actually got published but the install is included on the TFS media.
  • Install TFS using the Single-Server option. On a non-server class machine and/or virtual instance, you may get a processor or disk space nasty-gram but these were just warnings. I used the two accounts I created earlier, enabled SMTP alerts, and accepted the default install location.
  • Install Team Explorer.
  • Install KB919156
  • Install TFS SP1.
After a very long day of trial and error, I got TFS Workgroup installed onto a Virtual PC instance. I hope your experience consumes far less of your weekend!

Some final links applicable to the process:
New TFS Install and Sharepoint versions
Upgrading to Team Foundation Server SP1 – Workgroup Version and a Gotcha!!

Is it safe to install VS2005 SP1 on client machine without updating the TFS server?

TFS and Sharepoint 2007 (now that would be cool)
Warning about upgrading WSS to v3.0 on Team Foundation Server


Update 01/22/2007: When attempting to create a new team project, I kept receiving an HTTP 403 error. This post resolved the issue.

Update 01/22/2007: After resolving the 403 error, I experienced a 503 permissions error. I checked the NT Event log noticing a web service permission issue accessing the database. Checking SQL Management Studio, I noticed several databases were in single user mode. I switched them to multiple, shut down, and restarted Visual Studio. I also needed to restart IIS. All was well. Some helpful posts:
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=848511&SiteID=1
http://forums.microsoft.com/MSDN/ShowPost.aspx?PostID=1026766&SiteID=1

Update 02/10/2007: Insightful post regarding issues with TFS SP1; Updated TFS SP1 Install Guide

Update 03/11/2007: I discovered Team Explorer is not installed by default with VS.Net Team Edition. The Team Explorer setup resides within the TFS install media under a folder named "tfc".

Update 03/11/2007: Finally overcame the "Unable to connect to the Windows SharePoint Services" error. Solution.

Friday, January 05, 2007

Converting .Net 1.1 Applications to 2.0

This post outlines my approach and findings from converting several hundred .Net 1.1 projects (300+) from .Net 1.1 to .Net 2.0.

Approach
Retrieve all .Net 1.1 source code from source code control repository

At the root directory, use “DIR /C /B *.csproj >> projects.txt” at a command line to dump the full path of each C#.Net project into a file

Use the /upgrade option with devenv to convert the .Net projects to 2.0 (devenv "MyProject.sln" /upgrade)

  1. Open a new worksheet in Excel
  2. Type devenv in the A1 cell; copy it down into the next several hundred rows
  3. Open the projects.txt file, select all, and copy
  4. Placing the cursor in cell B1 in Excel, paste
  5. Type /upgrade in the C1 cell; copy it down into the next several hundred rows
  6. In the D1 cell, paste in the following formula =A1& " " & B1& " " & C1; copy it down into the next several hundred rows
  7. Select the D column and copy
  8. Create a new file called convert.bat
  9. convert.bat and paste the clipboard from Excel into the file and save
  10. From a VS.Net 2005 command line, execute the convert.bat file piping it to convert.log: convert.bat >> convert.log

This process will upgrade the projects to .Net 2.0, create a backup of the original files, and output an upgrade report in XML format (UpgradeLog.xml).

Using Windows Explorer or your favorite searching tool (RegEx, FindStr, etc.), find all the UpgradeLog.xml files possessing the string “

Resolve all upgrade / conversion issues. Likely, this will be a manual process. (i.e. open up the project and resolve issues)

Use MSBuild to compile the newly-converted .Net 2.0 projects

  1. In Excel, copy the column containing all project files (B)
  2. Open a second worksheet; paste into column B
  3. Type msbuild in the A1 cell; copy it down into the next several hundred rows
  4. In the C1 cell, paste in the following formula =A1& " " & B1; copy it down into the next several hundred rows
  5. Select the C column and copy
  6. Create a new file called compile.bat
  7. Open compile.bat and paste the clipboard from Excel into the file and save
  8. From a VS.Net 2005 command line, execute the compile.bat file piping it to compile.log: compile.bat >> compile.log

Resolve all compilation issues. Likely, this will be a manual process. (i.e. open up the project and resolve issues)

Issues Encountered
  • Broken references
  • System.Diagnostics.Assert no longer supported. Use System.Diagnostics.Trace.Assert()
  • Post Build Events e.g. GAC’ing using hard-coded gacutil.exe path (e.g. call "c:\program files\Microsoft Visual Studio .NET 2003\common7\tools\vsvars32.bat")
  • Broken pre/post-build event scripting
  • Enterprise Library hard-coded paths (e.g. C:\Program Files\Microsoft Enterprise Instrumentation\Bin\Microsoft.EnterpriseInstrumentation.dll)
  • C:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Lib\' specified in 'LIB environment variable' -- 'The system cannot find the path specified. ' à Resolution: remove all vc98 references from LIB path, reboot
  • Use project properties dialog to set keyfile instead of within AssemblyInfo.cs ([assembly: AssemblyKeyFile(@"W:\ServiceFramework\_setup\key.snk")]) – could be scripted
  • Many events and methods unavailable in Enterprise Library 2.0
  • NUnit 2.0 implementation different / incompatible from 1.0 (Broken/missing test harness projects)
  • Missing framework references
  • Missing web.config files
  • 'System.Xml.Xsl.XslTransform' is obsolete: 'This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202'
  • Devenv /upgrade converts .Net 1.1 web applications to .Net 2.0 Web Site Projects instead of Web Application Projects. These projects must be individually converted from WSP to WAP.

Happy upgrading!

Microsoft MCPD Certification Preparation

While I likely won't pursue it (probably not the best use of my time...), I'm starting to point some of my folks down the .Net 2.0 certification route and I wanted to clear up some confusion as well as share some of what I've learned. There are three MS Certified Professional Developer (MCPD) "tracks" one can pursue: windows, web, and enterprise applications (EA). Due to the exam matrix (below), I would recommend developers pursue the EA because it's a combination of web and windows requiring only 5 exams. In contrast, pursuing the web and windows tracks individually requires 7 exams.