Archives

Archives / 2005 / November
  • Step-By-Step: Personal Web Site Starter Kit

    Okay, I've got a lot of emails from people that read my prevoius posts about using SQL 2000 (or 2005, but not Express) and are still scratching their heads about how the heck do I actually make this work. So here it is. This assumes you are going to be using the Personal Web Site Starter Kit with a remote database (2000 or 2005) and a userid and password rather than integrated security (these instructions also work for the Club Web Site and Time Tracker Starter Kits, although some names are changed to protect the innocent).

    Prequisites

    • Install Visual Studio .NET 2005
    • Install SQL Server 2000 or 2005 (any edition except Express)
    • Download and run the Personal Web Site Starter Kit from here

    Step-By-Step

    1. Launch Visual Studio
    2. Select File | New Web Site from the Visual Studio menu
    3. Choose the Personal Web Site Starter Kit from the available templates and click OK
    4. Launch SQL Server Management Studio (2005) or Enterprise Manager (2000)
    5. Create a new login using the user id and password you'll use
    6. Create a new database for your site
    7. Run "aspnet_regsql" using the export option (see my previous post here on how to do this)
    8. Execute the file exported in step #7 against the database you created (using Query Analyzer or SQL Server Management Studio). This will provision the database to support the membership provider the starter kit will use
    9. Execute the "personal-add.sql" file found in the App_Data directory in the solution against the database you created (using Query Analyzer or SQL Server Management Studio). This will create all the tables and stored procs for your personal site to use.
    10. Back in Visual Studio open up the web.config file
    11. Change the connection string called "Personal" to this: "Data Source=(local);Initial Catalog=*****;User ID=*****;Password=*****" (replacing ***** with the values you decided to use)
    12. Change the connection string called "LocalSqlServer" to the same thing
    13. Hit Ctrl+F5 to launch the site. You should now be connected to your local SQL instance.

    For a remote setup, you'll need to create the database using whatever tools your host has and run the two SQL scripts (personal-add.sql to create the site and the one you exported in step #7). If you're using a remote database, change "(local)" in both connection strings to the servername or IP address you need.

    Clear as mud now?

  • Virtual PC vs Virtual Server

    At the taping of our second podcast show (which should be hitting the airwaves shortly), we were talking about the new Service Pack 2 for Virtual Server and how wonderful it was adding new functionality (as well as how wonderful VS was). I debated switching again. I've been using Virtual PC for awhile and like it. For a short time, I had VS running and it was okay. I did a quick check and reinstalled it and tried out a few things to convince myself it was worth it. I mean, if you're going to be a virtual as I am (which is everything virtual, including myself sometimes) then having a single tool would be nice. The great thing about Virtual Server is that it can read VPC hard disk images and, in some cases, read the VMC files as well so setup was a snap.

    Okay, here's a rundown on the pros and cons I found with both. It's not much and feel free to add your own in the comments section (please don't get into quibbles about VMWare vs VPC or how you have to buy licenses for each OS you run). I'll let you make your own decisions about what's right (and if right means installing VMWare, knock yourself out):

      Pro Con
    Virtual PC Drag and drop files from desktop One icon in taskbar for each VM running
      Resizing window resizes guest desktop dynamically More memory overhead for VPC client
      Faster save state time (at least for me)  
      Sound card support  
      Shared folders from host OS  
    Virtual Server Scalability No drag and drop from host OS
      Better performance over VPC Can't resize guest desktop by resizing window
      Scripting and WMI integration Need web server running to manage VMs
      SSL connections to guest OS

    In the end, I decided to go back to Virtual PC and just keep that setup. Of course screwing around with all my VMC files I had to rebuild them, but it's a small price to pay for the exploration. The big thing is drag and drop. Of course the drag'n'drop is there in VPC because VS is meant to be running on a server, while VPC is aimed at a desktop user and provides visual things like drag and drop. Until Virtual Server add drag'n'drop for the most part, I won't be going back anytime soon. *YMMV.

    *YMMV - Your Mileage May Vary (or yellow milk makes vitamins)

  • Disparate Information Sources (aka Not Enough Cowbell)

    My previous entry about open source web parts and commercial vendors sparked an interesting response by Michael Ekegren, an IT consultant in Denmark. In it he talks about level of support you get from commercial offerings, the (hope/promise) of future enhancements, and a difficulty for end-users to embrace SharePoint as there's no mechanism to "download and play" like there is for desktop applications. All good stuff.

    However there's a bigger demon lurking under the surface that I wanted to gripe and be angry about. Namely the almost complete and utter uselessness of Microsoft's Web Component Directory (and others like it). Okay, Microsoft had a great idea out of the gates with this. A central directory where authors can upload content (components, training, documentation, etc.) for SharePoint, and consumers can search and download it. Nice and all sounds good on paper.

    I went on there to check out what's new. They have a nice feature to show you the latest entries uploaded. However of 5 latest "components", 3 of them simply redirected me to a vendor site where I had to fill out a request form to get a demo of their software. Hardly user friendly from my perspective. I mean, what would you feel like if you looked up in the web pages the name of an automobile parts shop only to find when you get there you have to fill out a bunch of forms and they'll call you to later when you can come pick it up (or have it delivered). Maybe it's the instant gratification guy in me but that just blows chunks. In other cases, I get sent to a vendor where I can "apply" to view a demo. Again, this isn't a very optimal use of anyone's time. If I wanted to see a demo of something I would have gone to the vendors site in the first place, not through some 3rd party site where I *thought* I was going to download the goods. Yes Bil, not everything can be downloaded blahdy, blahdy, blahdy, blah. Oh yeah, also there are close to 40 "components" but they're part of standard Microsoft packages (like Great Plains, etc.) so having them available in the directory is useless because they won't work without the product installed (and if I had the product installed, I wouldn't need the Web Parts because they come with the product install, sheesh).

    Recently the GotDotNet workspaces got an overhaul and they even have a dedicated area for SharePoint, however it also falls short IMHO. I mean, best of intentions and all but implementation is a little off. I mean, it's great they have a section for SharePoint, but it's almost information overload with what's presented there. Everything is on one page (albeit split up into sections) with what's new, workspaces, web parts, code samples, newsgroups, developer tours, downloads, FAQs, trials, sample sites, technical information, training, seminars, webcasts, and related sites (whew). Also it's pretty much impossible to search on GDN and get half decent results. Also there are some (many) workspaces that I have to apply for membership just to download a tool or web part. Again, not very user friendly IMHO.

    Having said all this, I just don't think it's quite there yet. There are some resources that are great (kudos to some like SharePointCommunity for setting it up) but like that automated file viewer I was looking for, it's just not what I'm after. Maybe I'm alone but I think we, as SharePoint geeks and nerds, deserve better. I believe that the SourceForge guys got it right (mostly). Easy search with results. A software map to be able to drill down and find something topically. Everything open and avaiable and a pretty simple mechanism to both create new projects and apply for membership to one, should I decide to help out. SharePointCommunity is a great resource but again, I look at things from a working perspective. What do I need to get my job done? I am working on, spinning up, and launching, something that I've talked to several people about and hopefully will come to deliver what I believe is a gap in being able to share and collaborate on what is touted as the premium collaboration platform, namely my SharePointForge project. Okay, it might fall flat on it's face coming out of the gates, but what's *YASR out there?

    *YASRS - Yet Another SharePoint Resource

  • Wrapping up ASP.NET Providers and remote setups

    Just wanted to follow up (and close off the thread) after doing some testing and working with some remote hosts that have ASP.NET 2.0 services available.

    In my previous post about the ASP.NET provider, I had pointed out that you need to override the LocalSqlServer name with whatever you wanted (if you were not using SQL Express as it was the default). At the time I was also unsure about how to setup your provider database remotely but Roger Bedell posted in the comments that you needed to run a series of scripts.

    Actually there are a few options here. The main thing is that your new best friend is going to be aspnet_regsql.exe (which lives in the C:\WINDOWS\Microsoft.NET\Framework\v2.xxx folder). In order to setup a remote database, you'll need to run this and have it generate some SQL scripts for you to execute on the remote host.

    If you run it with the -sqlexportonly option, you'll need to provide what features you want to turn on (or off). -A all will turn them all on (membership, role manager, profiles, and personalization). So run this from the command line:

    aspnet_regsql -sqlexportonly -A all

    This will create the following scripts:

    09/23/2005  06:28 AM            24,603 InstallCommon.sql
    09/23/2005  06:28 AM            55,833 InstallMembership.sql
    09/23/2005  06:28 AM            52,339 InstallPersistSqlState.sql
    09/23/2005  06:28 AM            34,950 InstallPersonalization.sql
    09/23/2005  06:28 AM            20,891 InstallProfile.SQL
    09/23/2005  06:28 AM            34,264 InstallRoles.sql
    09/23/2005  06:28 AM            52,123 InstallSqlState.sql
    09/23/2005  06:28 AM            53,895 InstallSqlStateTemplate.sql
    09/23/2005  06:28 AM             6,457 InstallWebEventSqlProvider.sql

    Like Rogers' comment, you need to run them in a particular order. However if you run the command with a filename you'll get them all in one single SQL script so run it like this:

    aspnet_regsql -sqlexportonly MyProvider.SQL -A all

    This will create a single file, MyProvider.SQL, which you can now paste in/upload and execute on your remote server. I've setup a few test systems on both GoDaddy.com and WebHost4Life and they work perfectly.

    So that's it for getting your provider model setup remotely when you don't have access to the command line on the server. Enjoy.

  • Ready to Rock now?

    Hope everyone in Calgary had a great time at the launch event yesterday. It was a blast and we had a lot of fun hanging out in the Cabana, answering questions, mocking up crazy architectures on the fly, and generally having a great time. It's always cool when so many people get together with the same interests (even if it does rank way up there on the geek meter). I got there pretty early so wandered around until things got setup. The keynote was fun (complete with various pokes at Oracle) and the day went by pretty quickly.

    Lunchtime rolled around and I swear I still don't know the intention of the whole sandwich thing. I mean, it said "Three 1/2 sandwiches per person limit". Now is that 3.5 sandwiches or 3 separate 1/2 sandwiches? It still bugs me today but I'll get over it. A few cool prizes were given out (including a "We'll mail you an XBox 360 for one lucky guy" prize as there were no units available at the show).

    Although by now you've gone through your swag and maybe need to go back and visit it again. Why? Because not only did everyone get a free copy of Visual Studio 2005 Standard Edition AND a copy of SQL Server 2005 Standard Edition you also got a certificate for a free Microsoft exam (five choices to pick from) which you can use towards a MS certification. That's a value of $150 bucks. Sweet deal.

    Anyways, it's out there. John Bristowe is off to various other places for the remainder of the month to finish off the tour. We'll be recording our second episode of the DotNetPlumbers podcast show tonight so hopefully he'll recover enough for next weeks trips.

    Like I said, it was a great time (even if we did look like WalMart employees). You can check out all the pictures from the Calgary VS 2005 Launch here.

  • Yahoo!

    No, not the mega-corp that provides home pages, search, and other goodies to millions of internet users. I'm talking about the Yahoo! that we scream when cool events take place in Calgary.

    It's launch day for the Visual Studio tour! We had our VIP reception last night. Below is Daniel C from the Calgary.NET Users Group (also a MVP) with Dan Sellers from Microsquishy and J.P. from Thoughtworks. The second pic is me with Frank from Quadrus and John "I'm gonna rock" Bristowe. I'm off to our breakfast now, ready to get outfitted in our cabana boy outfits. John was sporting a bit of cold last night, but he and Joel Semeniuk are ready to rock for today's event. Anyways, I'm off to hang out and generally pontificate about cool .NET things so drop by the Cabana and say Hi.

    Bonus Info for attendees: Besides getting a free copy of Visual Studio 2005 at the event, be sure to get your eval forms filled out and handed in because we're giving away (drumroll please) an Xbox 360! Rock on.

  • Pre-loading your VM for SharePoint Development

    Figured I would continue to bloat about using VMs with SharePoint development as some people have been reading my posting and AC's and been adjusting their environments.

    A couple of things about my setup. My machine names are all named SPSDEV. If anyone knows why this is a problem, raise your hand now. Okay, times up. Yes, if you rename a server then your SharePoint will break. This is because the names of the content databases and various other config info is kept in the database and thus a rename will break this as the name of the server won't be known. There's a quick fix (which I don't follow myself but I'm *pretty* sure it works) and that's to just add the new name in your HOSTS file and have it point to 127.0.0.1. Again, I haven't done this myself as I go through the somewhat painful steps of really renaming a server. If you're into self-abuse, here are the instructions on doing this courtesy of Microsquishy.

    The next thing is to get your image ready for copying and set everything up *before* you copy it. This is so when you launch it you won't have to install software and configure things that are important. So a few key things to do:

    Desktop
    The default desktop on servers is boring and I usually go in and add My Computer to it so I can quickly get to the Manage and Properties options. Your choice but it saves time.

    Environment Variables
    Personally I'm a kinda command line guy so when you launch the command prompt and type STSADM it should work. Well, this isn't a normally pathed location so add it. Right click on My Computer, choose the Advanced Tab, click on the Environment Variables button and add the bin folder of the 60 hive (you really don't want me to type that out do you?) to your path.

    Shortcuts
    I also put a couple of shortcuts on my desktop like a shortcut to the 60 hive folder. Handy for dragging files there and generally doing quick little tasks.

    Tools
    My favorite thing is tools so a few that you should include on every single solitary SharePoint setup you have:

    • SharePoint Explorer. The best thing since sliced bread as you can look at sites, see what is there and dig around in the properties that you can't get at through the Web UI. Invaluable. Best of all, it's free!
    • InstallAssemblies. Great tool from Blue Dog that you can launch and just add your SafeControl entries for your Web Parts and copy the files to the bin directory. Beats the heck out of running a CAB project and doing things by hand. Will also create a CAB file for you so...
    • SharePoint Configuration Analyzer. Nice tool that will tell you pretty much everything about your SharePoint setup and point out anything that's amiss (like assemblies not signed, missing templates, etc.)
    • CAML Builder. From U2U. A great tool to help you decipher CAML and do queries against your lists to see if what you're writing will work. Also contains an assembly that you can save your queries in Xml format and launch from your applications or Web Parts.

    There are others (and people have huge lists of tools to have). These are just ones that I never leave home without. So remember to load up your image with your tools you need (Visual Studio 2003 and the Web Part Templates if you're going that route) and when you launch your VM for the first time, you'll be all set to go.

    Enjoy.

  • Open Source Web Parts, XBox 360, and VS2005 Launch

    A bit of a mish mash (miss mash? miss match? Alicia Silverstone?) today as my brain recovers from an incredibly boring orientation session yesterday that I was forced to attend. Note to HR peoople, even though I got paid for my time, I would like those 4 hours of my life back somehow. The thought of reading through another policy manual in a class just sends shivers down my spine.

    I'm thinking about dropping by the local Future Shop/Best Buy/etc. to see if there are any 360s for sale. They hit the stores today but I'm the type that would never pre-order something (instant gratification is key). So I'm wondering if I'll be able to find one in Calgary? Is the "shortage" all hype or would all outlets really be sold out? If you're in Calgary let me know.

    Next up is about Web Parts (and SharePoint tools). I have amassed in my little collection about a dozen little tools that I've put together for doing various SharePointy stuff (like applying themes across an already themed farm) and other goodies like Web Parts. For example I have a Web Part that I built after being inspired by the FabriKam Multi-Doc Viewer so it rolls up multiple documents on multiple document libraries on multiple WSS sites.

    Anyways, while sitting on a gigabyte of code might be a cool thing to boast about (I wouldn't know because I think it's a little too over the top in the geek factor to do this), I'm trying to gauge what would happen if I release this stuff into the wild. These are things that I've put together on my own time as I found gaps in what SharePoint does, wanted to try out a new control, or in response to a quip in a newsgroup where someone spouts the magical words "does anyone have a web part that...". The Visual Xml SharePoint Builder tool is one of these.

    The dilemma is that I'm not sure the response that might result from some established vendors who have similar products out there where they are making revenue from it. Far from me to step on anyone toes (commercial product or otherwise) and I'm not saying my simple little things are something an Enterprise should bet the farm on (for example, I'm not in any position to provide support for this stuff). It's just that as I look across the "commercial" SharePoint Land I can see a lot of vendors that might be peeved if Bil opened up the flood gates and unleashed the hounds.

    Maybe I'm just overthinking all this so looking for some feedback from you on this. If you sell a SharePoint Web Part or tool, what would your reaction be if a similar (or better) tool shows up, for free, on the wub wub web? Or a Web Part that did pretty much the same as one that's making you money? Should I expect a nasty email or would you just ignore it? Inquiring minds want to know.

    Finally the VS2005 Canadian Launch in Calgary is coming up on Thursday. From the rest of the Canadian events, John Bristowe and co. have been doing a killer job on the launch and it just gets better with each city. Having Calgary later rather than sooner and after a few other big cities like Toronto and Vancouver just provides us with more cool factor (take that T.O.). Hope you have your tickets and we'll see you at the Cabana (remember to bring any extra organs you might have).

  • ASP.NET 2.0 and the Provider Model, without SQL Express

    By now, a lot of people have got Visual Studio 2005 installed (or maybe Visual Web Developer Express which is free for a year so grab your copy now) and are building web apps like there's no tommorow. When you install VS2005, you end up getting a bonus. SQL 2005 Express (or is it SQL Server 2005 Express? I can never remember names.) which is basically a new 2.0 version of MSDE. This is again very cool and an easy to use tool. Problem is that for some of us (and maybe I'm the only one) a lot of things people will be telling you (and tools you download) are setup for the VS2005 and SQL 2005 Express installs. For those of us that have a copy of SQL Server 2005 Developer Edition, there are some extra steps to get things working, namely in using the new ASP.NET 2.0 Provider Model.

    Take for example the Starter Kits that Microsoft was touting at the launch (complete with straight-A college student building her website for a rock band called "The Windows"). These are great samples of code that you can run and create a new site with. In fact when you install them and create a new site one of the things the Welcome page in the IDE will tell you is "This site is ready to run! No changes are needed. Press CTRL+F5 to run the site". Ummm. Not quite for those of us, again, without the SQL Express setup.

    The Starter Kits (and something your own apps should leverage if you're wise) use the ASP.NET Provider Model, a fancy way of handling security for your application by letting you setup roles, users, etc. Of course, all this information needs to live somewhere like, hmm, a database? (There are other providers you can hook up to things like ActiveDirectory). For the database method, you need to provision your database using a tool called aspnet_setsql.exe. This tool will create a series of tables in the database you specify so you just call some simple methods in your code (or through web.config) to restrict areas of your web application. Very slick and very handy. Get to know the Provider Model if you haven't looked at it yet.

    Two things these starter kits will do is to use a local MDF file in the App_Data folder (another really cool thing ASP.NET does BTW, creating databases on the fly) and will tie you to the SQLEXPRESS instance name. Fine if you did the brain dead install but if you need a bit of a shove in the right direction (aka using SQL Server 2000 or 2005, not Express) then you need to do a couple of things. First, let's fix the connection string in web.config. By default (for the starter kits) here's the connection string it uses (this is from the Club Starter Kit):

    <connectionStrings>
       <add name="ClubSiteDB" connectionString="Data Source=.\SQLExpress;Integrated Security=true;AttachDBFileName=|DataDirectory|Club.mdf;User Instance=True" providerName="System.Data.SqlClient"/>
    </connectionStrings>

    So this creates a connection string named "ClubSiteDB" with a data source (much like a regular connection string) but then uses a features of ASP.NET "AttachDBFileName" which will look for a database file called Club.mdf in the DataDirectory (App_Data by default). So let's change this to use a typical connection string you would use if the database was in SQL Server:

    <connectionStrings>
       <add name="ClubSiteDB" connectionString="Data Source=(local);Initial Catalog=ClubSiteDB;Integrated Security=true" providerName="System.Data.SqlClient"/>
    </connectionStrings>

    Okay, so now it's connecting to our local SQL Server (this could be a remote name or IP address) and selecting the ClubSiteDB database. Next you need to provision your database to handle the membership and role provider. You do this by running the aspnet_regsql.exe program (from your C:\WINDOWS\Microsoft.NET\Framework\2.0\blah blah blah directory). This launches a little GUI to select the database and set it up. It's fine to set it up into the same database for your site, unless you prefer to have a separate one. Some remote hosts only let you have one database file so you decide, just be cautious of the table names and such).

    Once this is setup two things are going to happen. First, you'll be able to selected the Security tab from the ASP.NET Configuration page now (previously it would give all kinds of errors like not being able to register stored procs and such). Second, you can use the Provider model in your app. You'll need to do two small modifications to your web.config to finish this off.

    Add the following just below your modified connection string (still inside the connectionStrings tag):

       <remove name="LocalSqlServer"/>
       <
    add name="LocalSqlServer" connectionString="Data Source=(local);Initial Catalog=ClubSiteDB;Integrated Security=true" providerName="System.Data.SqlClient"/>

    This name LocalSqlServer isn't just something I made up because it sounds cool, it's the name that ASP.NET will be looking for and one that's hard wired into your machine.config (thanks Microsoft!) if you had installed SQL Express (even if you didn't install it, the setting is there, yeah, very zen like). Second, you can override the Membership tag with your own personal preferences and take it from this:

    <membership defaultProvider="AspNetSqlMembershipProvider"/>

    To something like this:

    <membership>
       <providers>
        <remove name="AspNetSqlMembershipProvider"/>
        <add name="AspNetSqlMembershipProvider"
         type="System.Web.Security.SqlMembershipProvider, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
         connectionStringName="LocalSqlServer"
         applicationName="/"
         enablePasswordReset="true"
         enablePasswordRetrieval="false"
         maxInvalidPasswordAttempts="10"
         minRequiredPasswordLength="1"
         minRequiredNonalphanumericCharacters="0"
         passwordAttemptWindow="10"
         passwordStrengthRegularExpression=""
         passwordFormat="Hashed"
         requiresQuestionAndAnswer="true"
         requiresUniqueEmail="true"/>
       </providers>
    </membership>

    Key here is to use the LocalSqlServer name for the connection string. This will allow you to tweak the way your provider works. If you're using SQL Server 2005, things are a little secured down (by default) so if you don't set values like minRequiredPasswordLength you'll end up having to sucumb to the big, bad security settings and come up with a 215 character strong-password that isn't the same as your last 1024 ones. This just makes it a little easier for newbs, but feel free to use the default values.

    That's about it and should hopefully get you building things rather than scratching your head wondering why you don't have access to your local machine. The Provider Model is probably one of the coolest features of ASP.NET because, with it, you can build secure web sites with various roles tied to security trimming the user sees. Hook that into using Master Pages and Web Parts (not SharePoint) and you can create a very dynamic site that's secure and fun. This information can be used for any ASP.NET 2.0 web app if you're trying to use your SQL setup and ASP.NET membership and role providers. Just remember:

    1. Make sure you have the connection string setup correctly
    2. Run the aspnet_setsql.exe program to setup your membership and role data in the database
    3. Add a LocalSqlServer connection to your web.config

    The only trick I'm working on now is how to do this remotely where you can't access the command line to run aspnet_setsql.exe (like where your hosting is remote). If someone has an answer let me know in the comments.

    PS Scott Guthrie has an MSDN article on this that I found which explains some/most of what is here. Of course I discovered this while I was writing this post, but hey, what's another blog entry anyways. You can see Scott's article here.

  • Looking for something

    I'm stumped. Yes, the Google whore that I am cannot find something. For years I've been using Midnight Commander on my system to view text files (code) and generally move around (grown up from my days with Xtree-Pro in DOS). Now I'm finding that I'm actually becoming just as (if not more) productive using Windows Explorer (plus the fact that half the time I can't do something with MC so I end up typing "start ." and do it in Explorer).

    However for the life of me I cannot find an Explorer add-in that will do something what I think is simple. Autodisplay the file in the big bottom right corner of the Explorer window. Just something simple. If it's a text file, just show it to me. If not, then the file details would be fine (bonus points if it could view image files). Yes I know there are goobers of Windows Explorer replacements but I don't want that. I'm looking for some shell integration that will just be there.

    Anyone know of such a beast?

  • A different take on organizing virtual disks

    Recently Andrew Connell came out with a pretty lengthy article on how he organizes his work with Virtual PC and differencing disks. It's a good article and goes quite in depth into his setup. For me, I live, die, and otherwise breathe by my VPC images so it's something I'm always interested in. I'm not going to get into a "My Virtual environment is bigger than yours" discussion but the thing that I don't use is differencing disks like AC does.

    My setup starts with installing a core OS (Windows Server 2003) to which I add on a web server role (IIS 6.0) and all the latest patches and service packs. This machine is called "BASE" and not joined to any domain. Anytime I need a setup, I copy the VHD and create a new image. Yes, this chews up disk space unlike differencing disks however the problem with differencing disks is that once you change the base disks you invalidate the entire tree of child images. AC gets around this by applying patches to his child disks but then I have to wonder how much effort that is to keep everything up to date? Personally I use SMS and my own update server that has all the latest patches and fire up the VMs to connect to it locally every 2-3 weeks.

    I also take each image and add some common tools (like BGInfo from Sysinternals which is a great tool to show you information about your server as a background wallpaper, get it if you don't have it already) and bake that into the image so it's ready for the next copy. I also take the base image and add in Active Directory service and DNS to make a domain controller (zombiebrains.com) which I run with 256MB of RAM in case I want to attach any of my SharePoint images to it for domain type work (complete with a VBS file that builds my AD tree and adds about 100 people to the domain in various roles, all taken from zombie movies on IMDB.com).

    Finally any servers that I want to do development on I just install the tools I need. I do have child disks (just a copy) of Windows 2003 Server with SharePoint, SQL, and Visual Studio installed for development as it's a 2-3 hour install for this setup. So for new SharePoint projects I just copy this image instead of the empty 2003 Server one (and optionally connect to the domain if needed using sysprep) and I'm ready for Web Part or tool development. How many portals and SharePoint type environments do I use? One Windows 2003 Server/SharePoint/VS2003/SQL dedicated image for each unique client I have and my own personal sandbox image for doing community work, pet projects, etc.

    For some work (like Office 12 client or Windows XP) that I don't want to mess with on my desktop I have a Windows XP client that I kick around. All of these are connected to a virtual network that VPC creates and manages so they can talk to each other. For the most part I only ever have 1 or sometimes 2 VMs running at once (in the case of running the domain controller) with XP running sometimes if I'm doing client development or don't want to use IE on my SharePoint server to view the site (sometimes it's a pain when connecting as IE on the server always complains about security, blah, blah, blah). On my laptop I have 2GB of RAM so I give 1GB to any SharePoint/VS 2005 setups and end up leaving about 512 for my host OS. It can get tight, but I've never had a problem. All of my desktops run at 4GB so I usually give the SharePoint dev 2GB (or more) as I'll be doing debugging on this and these are usually running SQL Server Developer Edition so chew up a lot of RAM.

    Currently I use external Iomega Hi-Speed 80GB Desktop Hard Drives for my VHDs and keep about 30 of them stored, ranging from the base image files that I copy whenever I need a new server to my working environments (SharePoint, VS2005, etc.). The main thing is that you really need to keep the images separate from your physical disk that your host OS runs on for performance. I also keep all my development code on this external drive so wherever I am and whatever machine I'm using (desktop, laptop, etc.) I have all my code with me (which is backed up on a daily basis as external drives has been known to fail). This folder is shared on all Virtual PC setups as Z: so it's easy to access in any virtual server.

    It's a lot of images to maintain and maybe I don't make best use of disk space but at less than $1 a GB who cares? Whatever works for you.

  • Grrrr. Argh.

    Okay, it's been a week since I blogged. Bless me readers, it's been a tough week.

    Anyways, a couple of updates. The closed beta for SharePoint Builder (my visual xml tool) is launching shortly. If you're in the beta then hang on to your hats. If you're not in, please stop sending me emails asking to get in. Closed means closed. Thanks.

    Beta 1 is "officialy" released for Office 12 but this really irks me. Here's the news on BetaNews which is appropriate, however the announcement also hits the front page of Slashdot. This is a closed beta not a public one so why are so many places reporting it? If you're not one of the lucky 10,000 winners of the golden ticket, then you'll have to wait until March or so when the public beta comes out. It's like a slap in the face as people say "nyah, nyah, you can't have it" but then titilate your senses with these full blown reviews. Anyways, BetaNews has a good summary of what's included and the size of all the tools (which is handy for those that are planning their downloads).

    John Bristowe and co. are pretty busy with the VS2005 launch so we haven't got together for a new podcast yet, but from the 2 listeners we had we'll probably get together and give it another kick at the cat. Watch for Episode II shortly (you can totally see where this naming convention is going). Also I will be at the VS2005 launch tour in Calgary (sorry folks, it's sold out now and even Bill G. himself can't get you in) so drop by the cabana and watch as we perform live organ transplants with James Kovacs and any unwilling MVPs.

    Finally I have a new site launching this weekend (or early next week) that I'll blog about shortly. It's my pet site project for hosting SharePoint oriented projects. I think it's going to be pretty slick but we'll see how things go.

  • Buy the Ticket. Take the Ride.

    Hope everyone is geared up for the VS2005 launch! Steve B is about to go onstage in San Francisco in a minute or two with the keynote speech (Developers, Developers, Developers, anyone?). It's going to be blast!

    The Canadian Launch starts tommorow with my good friend John Bristowe doing the honors of presenting all kinds of crazy stuff on centre stage. The launch starts in Toronto tommorow (November 8th) with it continuing throughout most of the month (John's in for a lot of airtime).

    If you had the opportunity to check out TechEd the concept of Cabana's was flying about like a wild ride. You stop in, talk to some softies, MVPs, and otherwise knowledgable gentlemen about anything you want. Something you saw at the main presentation. Something you want to do with Visual Studio but can't. Something that bugs you about SQL Server 2005. Whatever. Anyways, it's a more relaxed atmosphere and we have some whiteboards and whatnot for you to sit back, relax, and have some fun. So drop by the Cabana's for some cool fun or just to talk. The Calgary launch is November 24th so hopefully you're hooked up already. I'm also at the Edmonton Launch on the 15th and there are some VIP dinners the night before each launch so if you're going to be at those, keep a clear line between me and the cheesecake if you want to make it to your next birthday.

    BTW, if you're registered for the event you're going home with a special copy of VS2005. Yup. Free. This is not the current free Express edition, but a real, full blown (non-expiring) edition of the IDE. So after you get home from the event you'll be able to start building 2.0 apps immediately. How cool is that?

  • Like the World Needs Another Podcast

    Well actually, for you it's start up your favorite MP3 player. Yes, I've dived into the deep, dark quagmire called podcasting. Together with Dan Sellers, John Bristowe, and James Kovacs we've launched a new podcast on .NET (like the world needs another podcast). John pitched the idea to us about doing a podcast (similar to .NET Rocks! but more techy and laid back) a couple of months ago. A few weeks ago we gathered in John's abode to commit our voices to the airwaves and a legend was born. Uhh, yeah.

    It was a fun time and I'm hoping the podcast will be entertaining or informative to some. Be kind as it's our first foray into podcasting so other than the various technical glitches in the podcast I think it came out okay (as okay as one can sound without being completely boring). There was some discussion on SharePoint (briefly) but most of the podcast was focused on the VS2005 launch and the .NET 2.0 framework (with some bad Xbox 360 and Microsoft Bob jokes thrown in for good measure). If there's interest (and we hope there is) we'll continue this on a somewhat regular basis so feel free to leave your feedback in the forums and subscribe to the feeds to stay updated (yes, yet another userid/password you'll have to remember).

    You can check out our Plumbers @ Work site here and try to live through the first episode here. This should be available on the MSDN audio site shortly as well.