Archives / 2009 / March
  • Favorite CodePlex SharePoint Projects

    You could visit CodePlex, type in SharePoint in the search box and sort by popularity to get the "top" projects, but here's a list of the top projects picked by the SharePoint MVPs which I find to be a little more value-added than CodePlex's popularity ranking. YMMV.

    SharePoint 2007 Features

    This is probably the biggest and baddest and bestest project in my list (excluding the obvious below). Scot Hillier has gathered together an awesome collection of useful little deficiencies in SharePoint and delivered them as a package of new features. This is what SharePoint should have in it and what I call the content that Microsoft missed (much like how they should just buy Paint.NET and get rid of MS Paint, but that's another blog entry). Scot personally goes over all the features (he's not the original author of all of them) and validates them and packages them together into an installable solution package. Some of the more popular parts of this package include the ability to print out the contents of a list, view the heirarchy for content types, add regular expressions to field validation, reset a theme across the farm (and apply a custom theme whenever a new site is provisioned), and enforce unique columns in a list. Awesome!


    This is my #1 tool (next to Visual Studio) for building new features in SharePoint 2007. Esentially it takes the grunt work out of creating WSP files and editing xml/ddf files manually. You can use it to first create the 12 hive structure (sorry, I get blasted for calling it the "hive", old habits die hard) then you plop your features, web parts, receivers, etc. in the structure and run WSPBuilder to package it all up into one simple solution that can be handed over to your SharePoint admin to add to your farm. You can also use the excellent SharePoint Solution Installer to take that WSP file and create an MSI. I highly recommend it to be in any SharePoint developers toolbox.


    The Community Kit for SharePoint was started as an initiative by Lawrence Liu when he was at Microsoft. It always rates high on the popularity rating and while it does suffer from a lot of issues (being a fairly complex set of projects, not just one) there are a lot of great nuggets in the chaos. CKS provides several "editions" which are focused on a particular community or feature of SharePoint. The popular editions are the Enhanced Blog Edition (basically anyone running a public facing blog on SharePoint should be using this), User Group Edition (great for SharePoint user group sites!) and Forms Based Authentication (which provides much better web parts for managing users on FBA sites). Many, many people have put a lot of effort into the various editions and some companies have donated web parts to make this a reality so check it out.

    SharePoint Manager 2007

    There's been a lot of these type of tools out since SharePoint began (I seem to recall SharePoint Explorer for 2003). SPM lets you explore every site on the local farm (it must be run from the SharePoint box) and view pretty much everything including features, lists, sites, users, timer jobs, etc. If it's in your farm, it's here and this is a much easier way to browse your configuration than going through dozens of screens in Central admin. 

    WSS3 WorkFlow Tools

    This was recommended by Andrew Connell but I haven't personally used it. It's a sets of workflow tools, comparable to an InfoPath design methodology that lets you easily create new workflow forms. Think of it as having some buiding blocks for creating workflows that a) doesn't require SharePoint Designer and b) isn't as complex as building workflows from scratch in Visual Studio. There are videos and documentation on the site as well as some good discussions around using the tools.

    SPD Activities

    This is a set of activities that can be wired up to workflows (using SharePoint Designer) to hit the ground running when it comes to building solutions in SharePoint. Activities include managing permissions on lists, copying items in lists, and getting data from InfoPath (which can *always* be a chore and a half at the best of times).

    SharePoint Tool Basket

    The Tool Basket is a collection of projects, similar to CKS, that provide a set of new tools for SharePoint. There's an awesome document rating system that pllugs into almost any content, feature and content explorers, and a forms designer that lets you customize the new/edit/display forms that are associated with lists. This lets you customize those boring old SharePoint forms and create new ones in your SharePoint site (no SPD required!) using a drag and drop interface. The forms still respect whatever theme or look and feel you've applied but allow you to create multi-column setups easily. There's also a nice set of PowerShell scripts that will make your SharePoint experience more palletable and other goodies so check the basket out. Like the Features project, you can pick and choose what you want to add to your site.

    Search Community Toolkit

    Much along the lines of the Community Kit for SharePoint, SCT is a collection of features, web parts, and tools that enhance the search experience on SharePoint (includes MOSS 2007 search, Search Server 2008, and Search Server 2008 Express). Basically if you want to spice up your search center this is the place to go. Ever get the "make it like Google" request from your users? Then this is project to check out (it's really over 20 different projects but SCT serves as a hub to access all of them).

    Hopefully that will get you going if you're lost in a sea of SharePoint on CodePlex. Feel free to add your own personal favs in the comments section.

    Of course I should include SharePoint Forums here along with some other projects to be named later but the developer of these projects is really behind and should get his act together with an update.

  • The Girl Next Door

    It’s funny how life sometimes throws you little curveballs just to see how you deal with things.  My daughter, Vista, went in for a MRI (Magnetic Resonance Imaging) recently. The MRI might help us understand what is causing some of her developmental problems (she has what are termed ‘global delays’ that affect her movement and speech) as well as perhaps finding the source of her seizures. This was her first MRI, but we’ve been living with tests, specialist appointments, and questions for the past 2 years, ever since she was born. A lot of friends and family comment that we almost have a blasé attitude towards the whole thing, but that’s not it at all.  We take the position that while we do have our own struggles on a daily basis, there’s always someone out there that’s worse off so we choose to (a la Monty Python) ‘always look on the bright side of life’.

    We don’t have far to look to find a family that makes our life look like a walk in the park. Our good friends, Mark and Lee, live right next door to us. They’ve got three wonderful kids (you know, the type of kids that you actually like to be around). But last summer their world was blown apart when their middle daughter, Nathalie was diagnosed with cancer.  And not just any cancer… a brain tumor. She’s only seven years old. So they’ve spent the last year learning the ins and outs of chemotherapy, radiation treatment, and multiple daily doses of drugs that us mere mortals can only try to pronounce, let alone comprehend.

    But through it all, Nat’s parents have maintained a similar outlook on life when it comes to their daughter. No matter how dark things may seem, there’s always someone out there who’s worse off than you. You roll with the punches and you celebrate the good times.

    Thankfully, Nat is finally back home and now trying to get back to what we might consider a “normal” life, complete with attending school.  Unfortunately, the brain tumor has affected Nat’s life in very profound ways.  For example, she can no longer perform certain simple movements.  Like holding a pencil.  Makes it hard to go to school if you can’t write. But getting to the real point of my post…

    Throughout Natalie’s treatment we’ve been able to glean little tidbits of information from our friends (they’re not the type to complain, so sometimes you only get the real story when they let something slip).  Information like the fact it costs them $600 - $700 a week in out-of-pocket costs (for drugs and various other medical supplies) to have Nat out of the hospital.  That’s after their drug plan covers most of the cost.  That’s an additional $2400 they have to come up with each month to have their daughter at home while they slowly wean her off all the medications she’s on.  Contrary to popular opinion, Health Care in Canada, doesn’t cover everything. 

    So in addition to that $2400 a month, they’re now trying to find the money to purchase Nat a laptop with Dragon Naturally Speaking on it, so that she can begin her return to school and still be able to keep up with the class.

    After much thought, I decided to throw this out to my readers.  I’m hoping someone out there knows a way for us to try to get the laptop and software for Nat. While it might not seem like a huge expenditure to some, for a family that has to deal with the medication and out of pocket expenses Nat’s family have gone through for the past year, it’s a luxury priced necessity that’s hard to come by. If you can help in some way, or know of a company who would act as a corporate sponsor for this, we would like to try to get Nat up and running with her schoolwork. She’s a bright kid with an even brighter future who looks forward to every day she has with amazing passion and tenacity. Here’s hoping we can make things a little easier for her.

    Feel free to contact me directly by phone (403.399.9375), email, or in the comments section of this blog entry if would like to help Nat and her family specifically. I know there are many ways and channels an individual can express their charity, so if you are unable to help, please do not feel obligated. I recognize times are tough for everyone these days. If you do want to help globally rather than individually, you can always make a donation to the Canadian Cancer Society or Ronald McDonald House who are the true leaders in the fight against Cancer and helping kids and their families get through difficult times.

    Update: Someone asked if they could donate money for Nat and suggested I put up a Donate PayPal button so here is it. All money raised will go directly to Nat and her family. Thanks for your generous donations and help!

    Update #2: Through kind and generous donations, we've been able to secure a laptop for Nat. As a result of the PayPal donation button that we put up, we've also been able to raise over $1000 for the family. This is way beyond my original hope and a great gift for the family. I really am amazed at the power of the Internet and so grateful for everyone who has contributed to the family. I'll be posting a follow-up blog entry once we give Nat her new laptop and the family the money. If you still want to donate to the family that would be awesome as we didn't even originally put that up as part of this blog entry (it was added as a result of a note from Paul Jackson).

    Update #3: We have the laptop now (thanks to an awesome donation by Dave Woods!) a copy of Dragon Professional (courtesy of the Dragon folks) and a large donation of $$$ for the family. We're presenting this to the family on Nat's birthday on Tuesday. Going to be a heck of a party. Followup blog and pics coming shortly.

    PayPal - The safer, easier way to pay online! 


  • Aging Calculated Fields in SharePoint

    A common question I get and SharePoint challenge is to show the age of something in SharePoint. A typical example is to show the age of a document in days, months, years, etc. Or you might want to keep track of some item (say a coin in a coin collection, or a server in your network). Here we’ll display the age of comic books in a collection in years from the current date. BTW, this isn’t really new as we’ve been doing these tricks for a few years now. I just thought I would share my take on it with the rest of the class.


    First we need a list to keep track of our comic books. Create a new custom list and create a field called “Year Issued”. This should be a numeric field and will be the year the comic book was issued. Add a few entries to the list so you have something like this:


    Notice that the Year Issued shows 1,962 rather than 1962. This is the default behaviour of a number field so you can either a) use a DataView web part and format this later or b) use a text field instead. We only have this problem because we’re trying to capture the year. While there is the Date field, it requires a date to be picked and it’s not quick to enter a year using the calendar control (especially if it’s old) so a text field might be more appropriate for this case, YMMV.


    Now comes the magic. Create a new field called “Today”. Don’t worry about the type, just use the default but make sure you name it “Today” (without the quotes). Then create a new field called “Age” and make it a calculated field. Down in the calculation column, here’s the formula you use:


    Notice the use of [Today] in the calculation formula. This is referencing our “placeholder” column we created earlier. Save the calculated column and back at the column list, find the Today column and click on it to edit it. Now in the edit screen, delete it. Yup, get rid of it. We don’t need it anymore.


    Now take a look at the list, complete with our calculated field showing us the age of our comic books. Cool huh?


    The Secret

    Don’t believe the magicians trick that they won’t tell you how they did it. I’m going to. Built into SharePoint are some pre-determined names. [Today] happens to be one of them. For example, if you want a field to have a value of the current date when something is added to a list, just enter [Today] in the default value. This is great, however if you try to use [Today] in a calculated field you’ll get this message:


    The secret is to create a placeholder field with same name of [Today]. When the column is validated and saved, it works because it thinks it’s using the column reference you added called [Today] (which you are, at creation of the calculated field). When you removed the column called [Today] the calculated field just used the internal [Today] reference which is that volatile function it couldn’t use before.

    You might have noticed after you had the Age column and the placeholder Today column your list might have looked like this:


    The calculation isn’t quite right here. That’s because the calculated column was using the existing Today field (a blank field) so the calculation was YEAR([Today])-[Year Issued] which translated to YEAR(0)-1962 and produced –63. YEAR(0) (or YEAR(“”) will result in 1899 as it’s value. Once you removed the blank Today column the calculation used the built-in [Today] value which is the current date and voila!

    I know. Silly huh? One note about this “workaround”. If you ever need to edit that calculated field again, you’ll need to create the placeholder [Today] column again, otherwise you won’t be able to save it. Again, just create it, edit your calculated field, then delete it. No harm, no foul.


    There are a lot of variations you can do with this, now that you know the trick. For example, rather than getting the information from the user in a text or numeric field, you can use a date field and then show the age in years, months, and days. Or you can use the built-in creation date compared against the Today trick to show you the age of a document in a document library.

    Like I said, this isn’t new and ground shattering. Mark Kruger documented something like this here with a more complicated formula (for displaying the text “Post is X days old”). Chris Johnson has it documented here and Dessie Lunsform has a good post on it here along with links to some calculation formula references.

    So be creative, experiment, and have fun!

  • SharePoint Designer, Free as in Beer

    freeasinbeer I caught a couple of blog posts from here and here that had to make me do a double take. I’m not one for relaying gossip, but this information seems to be legit. As of April 1, 2009 SharePoint Designer will be free. Now if you go to the “official” site there’s no mention of it however I’m hearing through the grapevine it’s true. The official site even has a “buy it today” option, so you might want to hold off on that.

    Of course April 1st is always a fun time for me and the blog-o-sphere so the fact this announcement is targeted for that particular date has to make you think. Like I said, every indication I have says it’s true. It’s a wee bit confusing because David McNamee mentioned it in Michael Ganotti's Webcast saying it would be available in April for free from the MS Download site, and the next version will be free for people who purchase the next version of SharePoint. Huh? To me that doesn’t mean “free” but rather “buy one, get one free”.

    In any case watch the skies and keep an eye out on April 1st for the download. This doesn’t mean it’s killing off SharePoint Designer like it did with FoxPro. Rather just making it more accessible for everyone and hey, the more tools the better right?

  • Stop Blaming Technology and Own Up to Responsibility

    spiderman I came across a blog article entitled “SharePoint 2007: Gateway Drug to Enterprise Social Tools” which has caused me to shake my head in disbelief (and write this entry). Not necessarily for the article itself as it really wasn’t making much of a statement but rather the retelling of IT horror stories from SharePoint.

    SharePoint is a lot of things and like a lot of “suites” it does a lot of things pretty good. Some pretty good, some great, some not so great. I liken it to the analogy of buying stuff for your home and lifestyle. You go out and buy the best car, the best house, the best home theatre system, the best wife, whatever. So great, you have the “best of the best of the best” of everything. It’s only cost you your life savings and now it’s time to integrate everything. Try hooking that futuristic plasma touch screen to your uber-sophisticated Bose home theatre amplifier, or your state-of-the-art computer, or get your shiny new sports car to interact with the new $8,000 garage door opener.

    Having problems with integration? I thought so.

    While you can own the best of the best these things are the best but mostly on their own. In the grand scheme of things and how everything fits together is where you’re really up the creek.

    SharePoint is probably, as a whole, mediocre. Egads, the SharePoint guy is saying SharePoint sucks. No, I did not say that and mediocre is a term that needs to be taken in context. It does some things well and others not so well but taken as a complete unit and integrated with your desktop client tools (i.e. Office) it works pretty darn well. When users are informed and empowered to work their sites rather than relying on IT to modify permissions for them on their own lists, it works pretty well. When you stop comparing the less-than-stellar features of the SharePoint Wiki markup language with MediaWiki, it does the job.

    The point here is that take it as it was meant to be used and stop bastardizing it. It is not a source control system. It is not a drop-in-walk-away replacement for file shares. You pay one price for the whole enchilada and there are a whack of features there for you to use but you have to accept it’s not a 9 course prime rib meal. It’s also not 9 boxes of Kraft Dinner either. It’s something in between. It’s the typical compromise of unlimited time, resources, and money versus the pragmatic spending on projects that happens in every organization on the planet, Microsoft is no exception.

    I’m starting a position as a SharePoint advisor next week with an energy firm that has truly shown me there are still sane and intelligent IT people in the world that use SharePoint. They haven’t turned on every feature known to man just because it was there and only turned things on and provided capabilities to users when they themselves got the technology wrapped around their head and had a business driver to use the feature. They’ve also empowered their users to take responsibility of their own content and sites, from the office assistant up to the CTO. They’ve made me believe that SharePoint isn’t completely and absolute evil as one would think it is and re-confirmed my believe that, while it has it’s flaws and will continue to do so, it’s a powerful tool when used appropriately.

    Another theme that seems to be coming up is around governance and more directly, information architecture (or the lack of it). The article keeps harping on the fact that SharePoint isn’t ready for “Enterprise 2.0” yet was marketed that way. Frankly, I don’t know what this “Enterprise 2.0” crap is before I read the article, thinking it was some Internet meme (like Web 2.0). I found a conference on Ent2.0 which says “Enterprise 2.0 is social software and tools for businesses.” The rest is marketing crap (do more with less, agile, buzz, buzz, buzz). I don’t recall SharePoint being marketed as anything like this and frankly, I don’t think *anyone* has really nailed down any kind of business need or definition or desire for “social software and tools”. We can barely describe the difference between Facebook and Twitter these days and the only explanation anyone has for “Web 2.0” is flashy ajax-like sites that have big rounded corners and pastel colours.

    I know there’s a big push for “social networking in the Enterprise”. I’ve been watching the movement for a few years now, trying to figure out what we’re actually trying to achieve. Communities are not built up overnight and neither will yours in your company, SharePoint or no SharePoint. Facebook happened because there was nothing else (well, unless you count MySpace) and it was pretty good at what it did. Still is to this day. Pretty good. Not stellar, there are places it could be improved and frankly the fact there are over 12,000 applications on Facebook shows this. Facebook is the SharePoint of the Internet. It does a lot of things pretty good but nothing that you would want to write home about. Some people love it, some people hate it and there are many people (like myself) that bitch and complain about the lack of features the platform has for application development, just like SharePoint! Facebook has a purpose and fills that niche pretty well.

    Communication and Collaboration (two things SharePoint *did* market) is a huge and important thing. Business users do need to talk to colleagues, customers, and vendors and need to be effective and efficient in those goings on. SharePoint does provide a good infrastructure and set of tools for this OOTB. Alerts, presence information, Live Meeting and meeting space integration, Outlook connectivity. It’s all there and doesn’t need some additional vendor product to make it work. The Enterprise 2.0 blog just seems like a giant vendor site to me.

    Does SharePoint get it right? Or complete? Is there room for additional tools. Sure, there always is. Again, how much are you willing to spend for something you can already work with. Is it painful to collaborate in SharePoint? Hey, it’s not the cats meow as I’ve seen with some “live document exchange” systems but it works and gets better with each version. You could go back to buying the best of the best of the best, then get out your big ball of twine and try to get everything working with each other. You might even be successful at it. Bully for you. I’ve been exposed to places that tried that and involved in a few failures of patching things together with bubble gum and bailing wire and it’s not pretty and it’s pretty expensive. So go for it.

    There is a silver bullet here for you to take away. Ready? Here it is:

    There is no silver bullet.

    Stop trying to fit a square peg in a round hole and stop trying to make SharePoint do what it wasn’t meant to do well. If you’re entertaining a relationship with SharePoint, like any relationship, you wouldn’t want your partner to change for you to match your wants. If SharePoint isn’t Mr. Right for you, move on and get over it. It’s not the be-all and end-all for everyone and every situation. You need to determine that, and not through a marketing session with a bunch of glossy brochures.

    Like Uncle Ben (smart man, shot in the back, very sad), said “With great power comes great responsibility”. I take it you will do the same with your own SharePoint solutions.

  • Coffee, Code, or Me?

    The gauntlet has been thrown down. It's duelling laptops as John Bristowe and I square off at the Kawa Expresso Bar in Calgary this Friday and bring you the Cowtown version of Coffee and Code (with a little Ultimate Fighter Championship thrown in for good measure).

    Last month Joey “Accordion Guy” deVilla, a Microsoft Canada Developer Evangelist, realized his vision. It’s called Coffee and Code and basically you sit around a coffee shop, outfitted with computers and a wireless connection, and work all day. Yeah, that’s right. Work all day in a coffee shop always connected to the big series of tubes, never having to serve an double chai latte mocha half fat with whipped cream to anyone.

    My good buddy John Bristowe is hosting the first Calgary Coffee and Code at the Kawa Expresso Bar on Friday, March 13. He’ll spend the day lounging around while James Kovacs and I actually provide the code. I’m sure John has some purpose. Maybe we’ll get him to show off his Barista skills or drag and drop some demo for onlookers. In any case it’s going to be blast. John will be there most of the day (9AM to 4PM) and I’ll hang out for as much as I can bear. I’m bringing a few goodies to help answer any questions and perform geek tricks including one of my virtual SharePoint rigs, my XNA development setup (sorry, no XBox), and my Facebook development in case anyone wants to look at icky PHP code.

    Basically come on down, hang out, have some coffee, bring your laptops and chat it up. James has promised to be the ALT.NET guy (although I’ll be there as his understudy in case he breaks another wrist) and John, well, John will have pretty PowerPoint slides to show you about Windows 7 and other mythical products from Microsoft.

    Also, be sure to get there early to see our Interpretive Dance version of “Watchmen, The Live Motion Comic”. John will be playing The Night Owl, James will take on Rorschach, and I’ll be doing all the other roles.

    Check out this link for a map to the Expresso Bar and see you there!

  • ASPInsiders, now with more me!

    I’m pleased to say that I’ve recently been coerced accepted into the ASPInsiders group. The ASPInsiders is a group of a hundred or so propeller head geeks and geekettes that are dedicated in helping out the ASP.NET community through books, forums, blogs, and other community events. They also provide feedback to the ASP.NET team on developing technologies and will occasionally go out and have a good time at a bar (or two).


    I feel honoured to be part of the group as it contains a whos-who list of top guns in the ASP.NET world and gobs of people I know and respect like Eli Robillard, Ben Scheirman, Rick Strahl, Julie Lerman, James Kovacs, Rachel Appel, and many many others.

    Thanks guys for letting me into the cool kids club. I’m sure there’s some bathrooms that need cleaning up or something!