Heading down to speak at the Atlanta Code Camp Tomorrow

So I'm heading down to the Atlanta Code Camp tomorrow. I'm looking forward to seeing some new friends while in town. I'll be giving my SharePoint for ASP.NET Developer presentation. Atlanta Code Camp typically fills up real quick but if you're interested in attending and haven't signed up yet checkout http://www.atlantacodecamp.com/ and see if they have any room left.

On a side note I have to apologize to quite a few folks out there that I've been making some promises to with the User Group Portal. In particular my buddy out in Charlotte :) . About a month ago the Flu started to whip through my home starting with my son, then to me, and finally to my wife. I was down for over a week and then I had take on some daddy duty while the wife was recovering. By that time I had some very good clients who have had some very good patience with me while my family dealt with the ebola virus. Needless to say I needed to give them some attention. The user group portal, likely soon to become an addition in some fashion or form to the CKS, is my top priority in getting out the door just as soon as I catch up with a couple of my clients, hey I still need to pay the bills lol. Just a little more time :)

Pee Dee Area South Carolina  .Net User Group - Next Week March 11 2008

I will be presenting at the Pee Dee Area South Carolina user group next week. If you're in the area and you're interested in how to apply your asp.net skill-set to SharePoint you might find my presentation useful.

SharePoint For ASP.NET Developers

Whether it be by choice or by company directive many traditional ASP.NET developers are being tasked to implement and support SharePoint based solutions for their company. Previous versions of SharePoint only utilized the .Net Framework but SharePoint 2007 has been rebuilt from ground up on the .Net Framework. Many have referred to SharePoint as application extensions for ASP.NET. In this session we'll cover many of the common elements found in ASP.NET and we'll compare and contrast the implementations of those elements in SharePoint in order to get a better understanding of how to leverage your skills and knowledge as an ASP.NET developer within the SharePoint context.

SharePoint User Group Portal - Sneak Peak

It seems like the only time I can find to blog and work on any of my community projects in the last month is while cruising at 30k feet above the clouds. Be that as it may I did want to provide some of my promised sneak peaks of the project for some of you folks out there who have been expressing interest in this project. Along the way you'll notice that I start touching on some of the implementation details related to different aspects of the functionality found in the SharePoint User Group Portal. In many ways this project was initially intended to be used as a learning tool as much as it was for our User Group Site and the resulting community project. I had been working with several junior SharePoint developers in the last year and I wanted to provide to them a working sample of different development techniques that I've used in my last few years as a SharePoint developer.  Because of this you'll find that I have touched on many different facets of SharePoint development ranging from feature development, custom list definitions, custom site definitions, and branding to more "hardcore" development of custom user controls, webparts, and custom site\application pages. In short you may find a lot of flavors. There are many avenues to achieve the same end results when it comes to SharePoint development and you'll certainly see this represented in the source code of this project. I've tried to make the appropriate development choices for many of the features but your mileage may very. Feedback and suggestions are always welcomed and appreciated. Finally I have made use of several aspects (and code bases) from the CKS Enhanced Blog Edition.  At first I wasn't that fond of the CKS EBE architecture but as time went on I really found the value in the flexibility it's implementation offers and chose to implement some of those features as opposed to reinventing the wheel. With that said onto the details.

General Branding Info

The theme that you'll see in the following screen shots is one that I had developed for the Triangle .Net User Group. In the case of the User Group Portal a "theme" is a combination of masterpage, css, and xslt as opposed to a traditional SharePoint Theme. This has been ripped directly from the Modular Theme Framework (MTF) found in the CKS Enhanced Blog Edition.  Additional themes will also be available at some point in time in the future and the process of building custom these will closely mirror that of the CKS Enhanced Blog Edition of which there are a few posts floating around. I think the authors of the CKS Enhanced Blog Edition implemented a very flexible "theming" system in the MTF in that it combines common branding mechanisms such as masterpages, css, and xslt driven controls into a common location.

 

The Home Page

The home page is of course the default landing page for the site. The general design goal of the home page has been to give the most prominent placement to meeting announcements (typically the core offering of a user group) and use the remaining space for snippets of remaining information such as General Announcements, Sponsor Acknowledgement, job postings, community events, etc. The Landing page is composed of two webpartzones and a host of default webparts (both out of the box and custom).

image

 

Meeting Details

The meeting webpart could be considered one of the focal points of the portal.  It includes the details of the meeting including the date and time, Location (with link to details), speaker summary, sponsor summary, and registration status when appropriate.  Additionally if the meeting requires registration the registration information is included. Finally the upper right hand buttons provide a printer friendly version of the meeting and also a calendar link to add the event to your local calendar (icalendar). Meetings are managed by several SharePoint lists including  the Meetings, Sponsors, Speakers, and optionally the Event Registration list. Lookup columns to related information link the before mentioned lists together. Each list definition is implemented with Site Columns and Content Types to ease the task of introducing additional functionality in the future.

image

Event Registration

The registration engine is an internal registration engine and provides most if not all of the features of your typical external registration services but better integration with the rest of the site and makes use of the existing user credential store instead of having attendees create an additional account for registration  The meeting WebPart is intelligent enough to know the current status of the registration and display the appropriate information (Open, Full, Closed, etc). As is common with other components the registration portion of the meeting WebPart and the registration screen itself is intelligent enough to display the current availability of registration and the individual user's registration status. Members can register for the event and optionally cancel their registration as well (Canceling registration can also be managed via the members profile). Member's receive email confirmations and event registration is managed within a custom event registration list.

image

 

Meeting Details

The meeting details page can be reached by clicking on the title link of any meeting listing WebPart (home page or meetings page and provides additional information related to the event including:

  • Additional Meeting Details
  • Meeting Resources (Downloads)
  • Meeting Discussion - Discussions are driven by a discussion list and require authentication to be able to post.
  • Meeting Pictures
  • Link to Meeting Site (Optional for meetings that require additional content or a dedicated site)

The meeting detail page is implemented as a custom page along side the meetings list. It contains multiple WebPart zones along with additional default WebPart defined within the zone template. In the near future I'll be discussing some of the implementation details and specifically some of the advantages (and challenges) of this approach. In addition to the meetings list the meeting detail pages includes several other supporting lists including Meeting Resources (Document Repository), Meeting Pictures (Picture Gallery), and Meeting Discussion (Discussion List)

image

image

Meetings List

The meetings list page provides a list to all past meetings. I plan to offer additional filter criteria to the meetings WebPart (as seen on this meetings list page) to only list specific meetings based on additional meta data. For example some user groups such as TRINUG distinguish differences between general meetings, special events, special focus series, and community sponsored meetings.

image

Sponsor List

A kin to the meetings list the sponsor list provides a list of all User Group Supported Sponsors. Unlike the meetings list which required a custom WebPart implementation the sponsors listing requirements were simple enough that a custom view fit the bill. This page\list is rendered based on a CAML definition found in the schema.xml of the list definition on a custom page. Although this precludes the flexibility that is achieved with a XSLT based WebPart I have still provided a CSS based branding of this list so it should not normally be necessary to modify the view definition in the schema.xml (not an exercise for the faint of heart!) . Finally multiple WebPart zones will allow for the inclusion of additional functionality on this page down the road.

image

 

Sponsor Details

The Sponsor details provide more details related to the sponsor which includes sponsorship history and job posting history (for sponsors who are recruiters - often a large majority of sponsors for user groups). Sponsorship is probably one of the biggest categories I have for post 1.0 enhancements because they can often be the life blood of the group. .Among other things this will also soon include sponsorship self-service (Job Postings, Contact Information and additional value-add features for sponsor). Sponsors can be optionally linked with one or more accounts which will provide the association of a sponsor with accounts to trigger additional UI elements only visible for designated users (sponsors) within the system.

 

image

 

Speaker History

As with sponsor and meetings this is a listing of all past speakers for the user group. Similar to the sponsor listing implementation this screen is driven by a custom view and custom page within the list definition and rendered using CAML within the schema.xml. Beyond the speaker listing the speaker detail page (reachable from the listing page) provides some historical information on that particular speaker. Post 1.0 enhancements include the ability to upload their own speaker resources and tie in with some additional community efforts to match up speakers with user groups (more to come)

 

image

 

image

 

Summary

This list of features and samples is by no means and exhaustive list of the currently functionality or future planned functionality but is the core of what I have developed to date. Looking for some functionality you don't see or that I didn't talk about? Drop me a line and I'll let you know if its on the list. Looking to make some contributions? An avenue for community contributions will soon be made available and I'll keep you posted.

Once again for those of you who have been waiting to get your hands on this just a little more patience, I'm getting very close.

Another Raleigh Camp Behind Us - The Lounge Act

Another great Raleigh Code Camp is behind us. Seems to get better every year. I have to apologize to the folks in my second session (SharePoint for ASP.NET Developers). My VM was having some strange issues in the middle of my first presentation of the morning (Customizing MOSS Publishing) and right afterwards the VM shut down and didn't want come back up. Kind of deal breaker when the whole presentation is on the VM.  For those half dozen of you who stuck it out with me in the break room I hope you were still able to benefit from my mad ramblings about SharePoint and asp,net development. Outside my personal speaking woes Chris and Rob did a great job setting up the event and thanks to all the rest of the volunteers and speakers for putting a great show together.

One aspect that many of you may not have heard was that we had our very own lounge singer in the speaker room keeping us speakers awake and entertained between sessions. Naturally we reimbursed him for his services :)  (see video) . In all seriousness thanks to Carl Franklin for the great tunes. I have to say it was one of the high points and I'm glad he was able to shake the dust off my old guitar. I just might have been inspired enough to dust it off myself from time to time now.

 

Sneak Peak Part 1 - SharePoint User Group Portal

If you've attended any of my talks in the last 6 months you'll likely have heard me talk about a SharePoint User Group Portal that I had been working on in conjunction with some upgrades to the Triangle .Net User Group Site. I'm happy to announce that in the next couple weeks I'm going to be offering up some earlier bits (not for production use) of this project along with a demonstration site. Additionally you'll be able to see the site in action after some time next week at http://www.trinug.org.

The following are some answers to some common questions:

What is the history behind this project:
This project was started as a one-off solution for the Raleigh .Net User Group site. As other local user groups expressed some interest in the site it has slowly morphed into reusable prepackaged solution. It has been a side project of mine for the last 6 months as I've worked towards achieving a minimum subset of requirements..

Is this project related to any other SharePoint community portal projects?
Currently No. This has been an independent project of mine from the start. There has been some very informal discussions with the contributors of other community projects about the inclusion of this project into one of the larger community projects but nothing formal has been established.

Isn't there already a User Group Portal as part of the CKS?
Yes. This solution targets a different install base. The CKS User Group Edition is a site template that is very friendly for hosted environments that do not allow local installations of custom binaries, features, and site definitions. The SharePoint User Group Portal is deployed as a SharePoint Solution Package and requires administrator access on the server. In return it contains a richer subset of features and functionality.

Speaking of Functionality what does the User Group Portal provide?
Much of the functionality for the SharePoint User Group Portal has been driven by the needs of our local user groups. Many if not all of these needs are not specific to our User Group and are shared between most user groups. A few of these include:

  • Member Registration
  • Meeting Management
  • Local Meeting Registration and Management (Signups, Waiting Lists, etc)
  • Speaker Management
  • Sponsor Management
  • Linking Meetings to Sponsors & Speakers
  • Sponsorship Request Opportunities
  • Meeting Discussion Feedback
  • Meeting Resources (Downloads, slide decks etc, pictures, etc)
  • Job Posting (community and sponsor)
  • Member Communications (Newsletters)
  • Branding\Unique Look & Feel (Themes, CSS, XSLT)
  • Private Management\Leadership\planning sites

Additionally its likely that depending on the type of user group (currently SharePoint) there may be free hosting available for this solution in the near future. More to come on this very soon.

When is this going to be generally available?
Its likely that I need a couple more weeks before I start publicly releasing some early bits. Of that list above its about 90% complete. I am still working on some of the discussion and newsletter modules and fine tuning some of the branding to decouple a couple last modules from my user group specifics.

I'm interested in using/contributing/downloading, when can I?

Generally speaking it won't be for general consumption for a couple weeks BUT if you are one of those folks who I've communicated with over the last few weeks look for a email very soon here on some early private releases.  

I bet this is just vaporware... really can I see some actual sneak peaks?
For Sure! My next post coming this evening are some sample out of the box pages that have been branded for the TRINUG (Raleigh .Net User Group) site. I am far from a design & graphics expert so please be gentle on the look & feel :)
Heading to the Office Developer Conference in San Jose

devconf

I was lucky enough recently to get my hands on some tickets to the Office Developer Conference. I chose that conference over the SharePoint Conference based on its focus on the development side vs the IT side. I'd love to go to both but unfortunately I don't think I can budget for both and hell we have Bill Gates doing the keynote. I'd like to see who else is going. If you happen to be going drop me a line.

Spring RDU Code Camp - Grab a seat while you can.

I just opened up registration on the TRINUG site for the RDU Code Camp. Kudos to Chris Love and Rob Zelt among others for putting together an outstanding code camp this year. I would highly suggest getting registered early as possible as our attendance will likely fill up once we start announcing our speaker lineup.

I have a couple of new sessions that I will be presenting on at our Raleigh Code Camp this year:

  • Customizing MOSS Publishing - MOSS Publishing is packed full of great features but sometimes it can fall short for very specific client sceneries. Lucky for us, just like the rest of SharePoint, MOSS Publishing is built on a very extensible framework. In this session I will be going over a specific solution that I will be releasing to the CodePlex community that provides support for multiple paged articles within a MOSS Publishing Site. This allows for the publishing management of a group of pages as a single entity and also provides navigational support for these articles within the article page . Although this is a specific, albeit more common scenario, it represents some common elements found in MOSS Publishing customizations and should help you on your way to making customizations of your own.
  • SharePoint for ASP.NET Developers - Whether it be by choice or by company directive many traditional ASP.NET developers are being asked to implement and support SharePoint based solutions for their company. Previous versions of SharePoint only utilized the .Net Framework but SharePoint 2007 has been rebuilt from ground up on the .Net Framework. Many have referred to SharePoint as application extensions for ASP.NET. In this session we'll cover many of the common elements found in ASP.NET and we'll compare and contrast the implementations of those elements in SharePoint in order to get a better understanding of how to leverage your skills and knowledge as an asp.net developer within the SharePoint context.

If you live near or around the Raleigh Durham NC area I would highly recommend registering for the code camp event, with many great speakers including 3 Regional Directors and 11 MVPs there should something great for everyone .

Bob Fox 2.0 - The Man Beyond the Myth

While many in the SharePoint community have been working on Bob 2.0 for the last year many aren't aware of Bob Fox's previous life as Bob Beta 1. The year was 1995, grunge was on its way out, the Internet was a new frontier,  and  Windows NT and the desktop were king. In an effort to appeal to the average uninitiated novice computer user Microsoft secretly started work on a Top Secret consumer friendly OS that would revolutionize the industry.   To better understand the needs of the average consumer a far reaching search was undertaken to find the perfect person who's thought patterns would act as the basis for the end user experience on the new and innovative operating system. Microsoft marketing researched the best locations in which to advertise for this perfect individual.  Advertisements were placed in every beer distributor, state liquor store, strip club, and casino from coast to coast. One fateful Thursday morning Bob, rumor was a newly unemployed VMS administrator, entered a liquor store to drown his sorrows in the bottle. Instead he stepped through the door and into infamy ....

Real_Bob

Some blamed it on Microsoft marketing while others felt the world wasn't quite ready. As for me my 47 beta floppies of MS Bob Beta1 will always hold a special place close to my heart with the hopes that some day the world will be ready...

Joel Oleson talks about my recent project with AMD on the SharePoint Team Blog

I had a good discussion with Joel, an MS SharePoint product manager, the other evening regarding one of my latest development projects I've completed with the great folks over at B&R Business Solutions. You can read more details at http://blogs.msdn.com/sharepoint/archive/2008/01/25/case-study-amd-deployment-on-windows-server-2008-and-sharepoint-server-2007-is-faster-and-more-manageable.aspx .  Although this project has largely consumed my time since November its a real testament to MOSS that we could replace a system that was developed in Java\MySql over a considerably longer period of time, fewer features, more developers within a couple short months (lots of holidays in nov,dec,jan) and only one full time developer to boot!

The focus of Joel's post was largely around our choice to use Windows Server 2008. AMD was very much interested in being an early adopter and several of us on the team had been working with the beta bits and we felt comfortable going forward based on our experiences. Even early betas were showing a lot of promise from a management and performance standpoint and the fact that much of Microsoft's production environment is already running Windows Server 2008 just reinforced that. That being said I still had my doubts. I've spent the last couple of years developing against a lot of betas and its typically a painful experience for developers so I was expecting some issues. To my surprise the initial install and deployment was very smooth. I ran into no significant compatibility issues. One minor issue related to MOSS & Windows Server 2008 is to remember to install the II6 compatibility options. MOSS works against the IIS6 object model for site creation and automation and isn't aware of IIS7 specifically. Now for you Vista fans it has a very similar user interface experience and the beloved User Access Controls are present, royal pain but a good thing on your production servers (don't you love that apple commercial hehe). From the management perspective I enjoyed some of the new dashboards for management and event filtering which comes in handy when MOSS is having a bad day. One thing I'd still like to see is some better integration with SharePoint logging, those text files will make your eyes bug out after a while. I have a feeling that as I spend more time in the next couple months on the production support side of the house that I'll probably be singing even more praise.

So although Joel's article was focused on Windows Server 2008 (an obvious focus for MS atm) there was still some interesting things going on with the dev side. Of particular interest was the requirement to manage multiple paged articles. Much of AMD Developer Central relates to technical articles.  Generally speaking most implementation you'll see for this pattern on the web involve template pages that are driven by query string parameters such as http://www.example.com/articles.jsp?ID=3&Page=4 (as was the previous AMD Developer Central site). In our case we wanted to take advantage of all the features of MOSS publishing pages but also be able to tie multiple pages together and deal with them as a unit when it comes to scheduling and publishing and additionally dealing with some controls that are aware of these relationships and render the appropriate navigation. We wanted to avoid a scenario where we had articles containing a couple dozen pages having to be managed independently of each other.  Fortunately this was an issue I was addressing prior to the project and I was able to use some early bits in a community project of mine that I'll be releasing for public consumption (and likely abuse lol) in the next couple weeks.

All in all it was a great project. B&R has a great knack for keeping me busy with interesting projects that keep my on my toes and this is one for the books. Look more for some of my experiences on this project coming soon.

My Experiences with VMware

I've been running VMWare Workstation 6.0 now for about 6 months. A common question I get following my presentations is why I chose VMWare over Microsoft's Virtual PC software. Historically for the last couple years I've run with Virtual PC on my laptop and Virtual Server running on my server environments. I enjoyed the ability to  copy my virtual environments from local development to a published QA development server with minimal difficulties and both Microsoft's server and client tools met that need nicely. Recently I encountered a client that was requesting MOSS on a Windows Server 2008 64 bit environment. Now typically I do all my development on my 32bit OS virtual machines regardless of the target environment as I've found few differences in developing in 32bit vs 64bit for most of my sceneries. Additionally VPC and Virtual Server do not support a 64bit guest OS so I've had little choice in the matter. Unfortunately in this case I was concerned that I was working under the beta of Windows Server 2008 and also the beta (at the time) of MOSS SP1 and I didn't want to introduce more variables into the equation and I needed to make reasonable assurances that my development would deploy to that environment. To do this I needed a 64bit guest OS. From there I downloaded the trial version of VMware Workstation 6.0 and tested the waters. Based on my experiences while working with VMware's free server product and the workstation product I decided to move entirely over to VMware.

There were a few elements of functionality that won me over:

  • User Interface - Microsoft has a very minimal UI experience. I found that the UI for working in VMware workstation (and server as well) struck a nice balance between managing your guest OS and also providing options to hide everything and go very minimal. In short it gave you the best of both worlds not just one.
  • 64bit Guest OS Support - This was the key element for one of my projects that led me to use VMware in the first place and with most of my clients now targeting 64bit environments its always a good idea to be as close to your target environment during development as possible. Although I've not run into any major issues to date developing on 32bit and deploying on 64bit its no longer a decision I'm forced into making. It also likely come in handy in an upcoming Exchange 2007 migration as Exchange now requires a 64bit OS (I run many of my production servers as virtual machines).
  • SnapShots - Man do I love this functionality. In the past with VPC I made use of differencing disks to create baseline images and build on them. I would spend a lot of time managing dependencies all in the goal of saving a lot of disk space.
                                    snapshot
  • SnapShots are what dependencies should have been. I can create a hierarchy of my image at any point in time creating branches or even branches of branches. Additionally I can then turn any branch into a free standing "clone" and deploy it to another environment without worrying about all the file dependencies.  The image to the left is a simple example of a VM without much hierarchy but you can imagine the possibilities. I have yet to find any real restrictions or performance issues with snapshots. It's worth noting that this support for snapshots with this amount of depth is only supported in vmware workstation (I believe VMware Server only permits a single snapshot).

 

 


 


  • Dual Monitor and USB Support - I haven't had the opportunity to make use of the USB support but I'm sure it will come in handy at some point in the future. More importantly I love the Dual Monitor support. If you do SharePoint development you know that you live in VMs most of the day. Its great to actually be able to make use of both of my 24 inch monitors. This is a big win for developer efficiency.
  • Managing Multiple Running Virtual Machines (Teams) - Although its always been possible to run multiple virtual machines with both VMware and VPC the management window and tool for multiple virtual machines makes it very handy to set boot orders and to switch back and forth for demos and presentations. The Team functionality allows you to manage many aspects of virtual machines that need to work together.
  • VMware Player - If you already have something like Camtasia you don't need this tool but its great for recording presentations for webcasts or training. eek This is what I get for blogging too late at night lol. VMware Player allows you to distribute your virtual machines and have anyone make use of that virtual machine (you just can't modify or create new virtual machines with VMware player).  Great for sharing your virtual machines with others.

It's very obvious to me that VMware's core business has been virtualization as they just seem to have a better understanding of the tools that developers (and IT) need that spend a lot of time in virtual environments.I have not experienced the dramatic performance difference that others have mentioned.  In my experience both vmware's and vpc's performance have been very similar.

Saying that there have been a couple issues that have caused me grief:

  • If you often switch displays as can be the case if you work from a laptop then be careful about resolution dependencies. A saved session won't restore on a smaller supportable resolution then it was created in. For example moving from a 24 inch display to your 12 inch display. You have to remember to shutdown or delete your state to start the machine. Hopefully they have a fix for this soon.
  • I initially tested VMWare Workstation 6, loved it, and commenced to move my virtual machines to my server environment and I was in for a rude surprise. VMware Workstation 6 is not compatible with  VMware Server 1.0. Now I know this falls into a little bit of a RTFM scenario but the default vm creation wizard does not indicate compatibility restrictions, only the alternate wizard option does. Being a first time user I created my first vm environments with the default options.. The latest version of VMware Server 2.0 is currently in beta and will likely support the latest workstation version. We'll see how that goes.
  • Can't convert virtual machines created in the latest version of VPC for Windows Vista. I could get around this by launching the virtual machine and using another vmware tool to import it as you would a physical server. Not the end of the world but an annoyance non the less.

In short I don't have a lot of bad things to say about VPC or Virtual Server just better things to say about vmware. If you're finding Microsoft's virtualization products somewhat wanting in some areas then I'd recommend checking out wmware. Now saying that I'm also keeping my eye on Windows Server 2008 and the virtualization offerings coming our way from that release as there are some interesting things going on there.  I'm curious to see what others experience is with vmware, any other gotchas I haven't hit yet?

1 - 10 Next
Josh Carlisle

 ‭(Hidden)‬ Admin Links