Monday 22 December 2008

Scrum and eScrum/TFS Feedback

We adopted Scrum and eScrum/TFS (Team Foundation Server 2008) back in June this year for a pilot project. As we are a few days before Xmas, when all is beginning to quieten down, now seems a suitable point to dot down a few observations. Here we go.

The Scrum Method

First of all, I'm converted! Scrum is one of the few processes/methods (I'm not a big process person myself generally) that excites me, in that it focuses the team on delivering good working software and encourages a good relationship between the IT Team and the business. Since adopting it on a small project, I can happily [subjectively] report back that it works, and it works well. We used 3 or 4 week sprints, monthly sprint review/planning meetings, and daily scrums (sometimes missing a day if one was not felt necessary, but we still touched base to confirm this). We also had scheduled weekly "product owner update meetings" to ensure we had a regular slot in a busy "product owner's life", where we always scanned down the sprint backlog to see how things were progressing.

Here's are some observations.

1) The business loved it because:
  • Transparency and business ownership. They enjoyed being a big part of the project, seeing the parts that went well as well as those that did not!
  • Focus on delivery of key features. Having the control of what goes in and what does not, via strict prioritisation
  • Explicitly clear what is being delivered in each iteration and by when
  • Productivity. Business often surprised by the "amount" delivered
  • Regular releases. This often resulted in less impact on the business at go live time ("little and often" approach)
  • Gets everyone focused, especially on testing!
2) The development team liked it because:
  • Clear whom is doing what
  • Regular daily Scrums picked up any niggling issues very early
  • Test earlier and focus on producing tested, “packaged up” work. Although we are not yet adopting TDD (test driven development), as we are doing shorter development cycles, this necessitates earlier testing to ensure all is tested before the end of a sprint. What we did find though was that during the final few days of each sprint, we found it beneficial to focus purely on wrapping up what we had done and "test/fix only" in order to deliver a fully tested product even if it meant removing a sprint item or two in order to achieve this.
  • System deliverables improved. Smaller increments and closer links with business definitely has resulted in better work being produced ('better' being a system that matches what the business wants).
  • All OK so far. Any problems?
    3) A few Issues:
    • Multiple product owners (we had three distinct areas thus 3 owners). Needed a gatekeeper PO to help manage this
    • Trying to fit too much into a sprint. Call it eager to please, naivety or lack of experience, but the first couple of sprints resulted in the development team working their socks off to finish the sprints on time. Looking back, this was purely due to underestimating effort and not allowing enough time for feedback/testing.
    • New requirements coming in during a sprint. This is something we are now getting better at but early on we were drawn by the temptation of squeezing in "important" new requirements into an existing sprint (slapped hands I know!). We live and learn.
    • Some requirements not clear during sprint. We tried to start development on requirements that were changing or not really known. Ouch.
    • Keep control of the number of meetings. With 3 product owners we found we had quite a few meetings each week, some of which the development team did not always need to attend.
    • Keep eScrum work items up to date. Whichever tool you use, it is only as good as the information in it. Hence encourage your team to keep it up to date.

    eScrum and TFS

    As mentioned in an earlier TFS/eScrum post, not only did we switch to Scrum for this pilot project, but we also adopted some new tools namely:

    • TFS 2008 for source control and work item tracking
    • eScrum Process Template.

    Here's my brief thoughts:

    1) TFS Generally

    I like it. Once you get over the clunky, heavyweight feeling of the various MS products working together to give you what you want (SQL Server, Sharepoint, Reporting Services, TFS Web Services) and sorted out all the security goings on (you've essentially 3 products to set up security for), then you are away. The customisation is very flexible (especially once you have installed various power tools) and adopting a VM as a backup strategy has served us well. Well worth the move from VSS!

    2) eScrum 1.0 Process Template

    I looked at a few templates for managing the Scrum project (including Conchango's SFTS and MSFAgile) but in the end, eScrum had the best web interface for us. It is not without its short comings though.

    Here's some of my thoughts on the eScrum web interface:

    • The interface is fixed and "hard coded" as it runs as a separate web site (it does not use the generic Team System Web Access). The advantage of this is that is gives a focused interface, geared towards the eScrum template, but its drawback is that if you customise the template, add new fields etc, although they appear in TSWA and in Team Explorer on the client, they will not be seen in the eScrum web site. Shame.
    • You cannot add attachments through the web interface. Not a deal breaker for me, but as users often submit bugs in the form of "screen shots" this would make a useful addition.
    • No "show history of changes" option on a product backlog or sprint backlog item.
    • The "all items disappearing in sprint backlog" bug needs fixing. Opening a new browser session or switching projects brings them back for now.
    • The AJAX driven web interface is pretty lightweight/quick, especially compared to TSWA. Updating work items is fast and slick.
    • PBI and Sprint pages have too big a header and section at the top. I would like to be able to fit more viewable item lines per page. e.g. with the product backlog page, 2 thirds of the screen is taken up with a header, menu tabs, and first three sections which are rarely expanded once product set up. The bottom third is the bit we use all the time!

    Overall,  a nice interface but we are getting to a point where a version 2.0 is long overdue. I can't see this happening for a while though.... maybe MS should make it open source ;-)

    Merry Xmas
    Clarkey

     

  • Friday 28 November 2008

    Clone Detective

    Ever had that deja vu feeling when coding in a project? Ever thought, hang on, I've seen something similar to this code block before? Are you keen to factor out duplicate code from your systems? Of course you are, so take a peek at this:

    http://www.codeplex.com/CloneDetectiveVS

    Clone Detective is a free add-in (built on ConQAT) for Visual Studio that analyses your C# projects for 'duplicate source', that is, similar code once any 'noise' has been removed (normalisation) and tokenised. Whether this is from sloppy copy & paste activities in your team or simply properties in N-Tier DTOs, BDOs etc, as professional software engineers (eh?!) we want to know about such things. It's then up to you to decide if the clones are ok or if further action is required, considering any refactoring costs involved.

    Watch the 10min video as a starting point to see if this tickles you in the right places. It did me :-)

    I ran it past one of my projects:

    The figures in brackets are the percentages of code cloned. The coloured bars indicate where in the file the potentially pikey coding is. Some of the source identified in this case was simply properties in my BDOs but there were other cases where it did point out areas of my code where some refactoring could take place. Nice (the add-in that is, not my coding).

    _mrC

    Friday 26 September 2008

    TFS 2008 - Installing SP1

    Here's what i did:

    1) Installed Visual Studio 2008 SP1 first, as we have team explorer on the TFS server (useful for admin use). Remember for our relatively small setup we've put both the app tier and data tier on the same VM. SP1 install time 1hr 15mins (Oooh!). Reboot required.

    2) then installed Team Foundation Server SP1. Install time 15 mins. No reboot needed but I did one anyway, just to see those services start up nice and cleanly :-)

    If you do it in this order you should be assured of a pain free installation. Well OK then... at least a 'reduced risk' one anyway.

    What do you gain by installing SP1?

    Here's two useful links showing what you get with this upgrade:

    If I come across any issues I'll post them here.

    Useful Links

    Visual Studio 2008 SP1

    Team Foundation Server SP1

    Wednesday 3 September 2008

    Upgrading TFS 2008 Workgroup Edition to the full version

    We've been evaluating TFS 2008 workgroup edition the last couple of months, are pretty happy with it and have hence now purchased a license for the full version (thus unlocking the 5 user limit).

    Upgrading is pretty straightforward, see http://msdn.microsoft.com/en-us/library/ms404848.aspx

    Basically you run the TFS installer in maintenance mode by going to add/remove programs, locating TFS and selecting Change/Remove:

     

    You should then get the maintenance mode page. Great I thought, I simply need to copy/paste in the sparkling new product key I'd been given... umm, wait a minute, the boxes appear to be disabled...

     

    My heart sank... so much for the 5 mins upgrade then. Of course, after digging around on various forums, there was a workaround. The problem is down to the fact that the MSDN version I'd downloaded and originally installed, pre-fills the key with a work group ed key and makes them read only. Nice, thanks, a great feature. The solution is to find where the key is stored in setup.stb and remove it. Go to:

    C:\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Microsoft Visual Studio 2008 Team Foundation Server - ENU\Setup.stb

    edit it in notepad (backup up the file first) and remove the offending lines:

    Save it. Re-run maintenance mode via "change/remove" and the fields are enabled:

     

    Paste in your full product key, click next, some services are restarted and hey presto, you have now transformed workgroup edition into the full version.

    Clarkey

    Friday 1 August 2008

    Browsershots.org

    Ever wanted to see what your web site looks like in over 60 different browser versions/platforms? Of course you have ;-)

    "Browsershots makes screenshots of your Web design in different browsers. It is a free open-source online service created by Johann C. Rocholl. When you submit your Web address, it will be added to the job queue. A number of distributed computers will open your Web site in their browser. Then they will make screenshots and upload them to the central server here."

    browsershots.org

    Simply enter your web address and tick the browsers you are interested in:

    and within a few mins you get your screenshots:

    You can then drill down into each screenshot and take a peek. Nice.

    Obviously this won't work for Intranet pages (inside the firewall) but useful for Internet sites.

    Clarkey

    Wednesday 30 July 2008

    Mojave - the next "better" OS after Vista

    If you think Vista is slow and love to moan about its shortcomings then you'll be glad to know Microsoft are gathering feedback on its 'next' OS, code named Mojave. Some users have been shown an early version - to hear what they think, headphones on and have a listen to some of the short video clips:

    The Mojave Experiment

    :-)

    Mr C

    Thursday 24 July 2008

    TFS 2008/eScrum: adding new categories to a product backlog item

    Further to this post on installing TFS 2008 and eScrum, here's how you add new "product backlog item" categories to the TFS process template (which can then be chosen for a "product backlog item" in eScrum).

    Open up Team Explorer and choose Process Template Manager:

    Choose the eScrum process template and select download. Choose a local folder and this will create a tree of folders containing all the template information. Go to eScrum\WorkItemTracking\TypeDefinitions\

    Edit ProductBacklogItem.xml and modify the FIELD name="category" section. We added two new items.

    <FIELD name="Category" refname="Microsoft.eScrum.Common.Category" type="String" reportable="dimension">
        <HELPTEXT>Category of the Product Backlog Item</HELPTEXT>
        <ALLOWEDVALUES expanditems="true">
            <LISTITEM value="Overhead" />
            <LISTITEM value="Document" />
            <LISTITEM value="External" />
            <LISTITEM value="Feature" />
            <LISTITEM value="Deployment" />
            <LISTITEM value="Defect" />
            <LISTITEM value="New to discuss" />

        </ALLOWEDVALUES>
    </FIELD>

    Save the file, select team explorer - process template manager again and upload the new template dir to the server (when prompted just choose your local escrum folder to upload from). Your new product backlog item categories will now appear in all new projects you create.

    Clarkey

    Thursday 10 July 2008

    Installing Team Foundation Server 2008 and eScrum 1.0

    I've been getting into Agile methods quite a bit recently, especially Scrum, which I am finding an excellent approach for managing projects and teams. We began initially using excel spreadsheets for the product and sprint backlogs, which worked quite well, but I'd heard about eScrum (process template for TFS) and, from what I'd read and seen at various seminars, looked to be a promising tool for providing a nice integrated tool for managing the various Scrum artifacts and processes.

    Secondly, for some time I've been meaning to investigate TFS 2008 for team portal features, version control, item tracking and management of our builds.

    We were about to start a new phase of a project so we discussed the pros/cons of piloting both TFS and eScrum, and decided this would be a good opportunity to try them both out. Were we biting off more than we could chew? Would it all be painful and a massive waste of resource?

    This first post is all about the install and set up. Feedback on experience of using the tools can come in a later post ;-)

    Installation of TFS

    Top essential (and I mean essential) tip: read and follow the supplied TFSInstall.chm install guide file. This is key - if you are new to the TFS install and do not follow the supplied "checklists" for your chosen set up, you will endure pain, agony and spend many (mostly avoidable) dark hours in MSDN forums and KBs. We've all been there and it's not nice.

    I pretty much tried to follow the install guide by the book, but below points out some specifics of our set up and the issues I came across.

    Installation - What I did

    Note, as this was a pilot, the install I chose was the (free) workgroup based Single Server TFS Install (i.e. TFS, SQL server, sharepoint and eScrum all installed on one box). TFS example project name in this case was called os-env, on a VM with hostname KSGV-TFS.

    1. Created a VMWare virtual machine hosted (based on a previous web windows 2003 server VM we have) on a VM hosting box. VM was called KSGV-TFS. Allocated 1.5 gig of RAM. C: system drive 20 gig. F@ drive data 60Gig.
    2. Disabled indexing service via computer management.
    3. Installed .Net 2 and 3 framework. IIS was already present on this VM image, tested and working. Uninstalled front page extensions (otherwise, as I found out (see in a bit), it halted the TFS install later).
    4. Ran windows update etc to bring the OS up to date.
    5. Installed FProt virus scanner v6 (old version had expired) and set to auto-update daily.
    6. Downloaded en_visual_studio_team_system_2008_team_foundation_server_workgroup_x86_x64wow_dvd_X14-29253.iso from MSDN subscription and extracted the files.
    7. IMPORTANT: then followed the instructions "Checklist: Single Server TFS Installation" EXACTLY as indicated in the TFSInstall.chm file in TFS install dir. Note I went for the single server installation (rather than separate front and back end servers) as for our 5 developer team on this pilot project, this seemed the logical and simplest route for the trial.
    8. Did not set up the admin user (TFSSETUP). As we were using local accounts and were using workgroup edition of TFS, the help recommends using your own user account (needs admin privs) instead of the TFSSETUP account as this uses up one of the valuable 5 free developers allowed in this free set up. So I set up and used local account dave.t.clarke (admin).
    9. TFSSERVICE, TFSREPORTS accounts were created and put in the Users group.
    10. Next followed the instructions to install SQL Server 2005 standard ed (again noted in TFSInstall.chm). I used a default SQL instance.
    11. Once installed, verified the SQL installation as indicated in the instructions, to check all necessary services were running.
    12. Installed SQL 2005 SP2. Then repeated step 10 (verify).
    13. Rebooted
    14. Installed TFS 2008 (I chose the option which would install Sharepoint too). Came across the infamous “front page extensions must not be installed” error during health check (despite having uninstalled it in step 2!). I love stuff like this... you know, you uninstall a component but it hasn't really gone. Great. A known error… in the KBs found out you can edit the metabase and remove IISFilters and IISFilter sections manually, which still contained refs to Front Page Ext. Uninstaller worked well there then... ugh.
    15. TFS health checks worked fine now
    16. When prompted entered the TFSSERVICE and TFSREPORTS accounts as applicable.
    17. Entered my SMTP email info. FYI, this is stored in C:\Program Files\Microsoft Visual Studio 2008 Team Foundation Server\Web Services\Services\web.config if you need to change it at a later date.
    18. Let it all install….
    19. Ran windows update. Picked up an update for sharepoint 3.
    20. Rebooted.
    21. Next I installed the pre reqs for eSCRUM (to be installed later in step 24):
      1. Microsoft Anti-Cross Site Scripting Library v 1.5
      2. Microsoft ASP.NET 2.0 AJAX Extensions 1.0
      3. Visual Studio 2005 Team Explorer (the eScrum 1.0 installer will check for v2005!). Had to download this separately as an img file and extract the files.
    22. Rebooted (otherwise I found the next TE 2008 install hanged in the next step).
    23. Installed Team Explorer 2008 from TFS 2008 install media.
    24. Opened Team Explorer 2008 to ensure it connected OK etc.
    25. Installed eScrum 1.0, by carefully following this ref: eScrum Install for TFS 2008 instructions . Although originally for beta 2, it seems to work fine on the final release of TFS 2008. I also gave local Users group MODIFY access to local C: windows/temp dir as per eScrum instructions.
    26. I used os-env for the eScrum project name in the above step, so I thus tested the WSS 3 eScrum site using the address: http://ksgv-tfs/Sites/os-env/default.aspx and tested the escrum web site using: http://ksgv-tfs:8080/escrum/.
    27. Both sites appeared to work fine at this point. Nice. Not as bad as I was expecting :-)

    Setting up our Project in TFS and eScrum

    I initially set the project up (see steps 24 and 25 above) using Team Explorer 2008 to create the project "os-env" in TFS and then added the entry manually (not ideal I know, but this is the way it works) into the eScrum RegisteredGroups.xml file, namely:

    <?xml version="1.0"?>
    <RegisteredGroups xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <isflatGroupCollectionDirty>false</isflatGroupCollectionDirty>
    <Server Name="KSGV-TFS" Uri="http://ksgv-tfs:8080/">
    <Group Name="os-env" />
    <Group Name="another-project-here-etc" />
    </Server >

    </RegisteredGroups>

    Update: you can also add projects to this file via the (rather obscure) http://ksgv-tfs:8080/escrum/admin.aspx page. Very basic interface with poor feedback and no validation, and make sure the name you enter is identical to the TFS project name you created using Team Explorer.

    Once set up you will see the project in WSS 3 eScrum site using the address: http://ksgv-tfs/Sites/os-env/default.aspx and the escrum web site using: http://ksgv-tfs:8080/escrum/. See eScrum screenshot:

    Setting up Basic Security

    I then needed to set up the user security for our small pilot team. I opened up Team Explorer 2008 on the server, right clicked on our os-env project, selected Team Project Settings and added our relevant users to the groups Contributors and Project Administrators:

    Both TFS and eScrum use these user lists for security (for example, on the eScrum web site you will not be able to add your team members to the "product team" list until these are set up).

    I then needed to add the users to Sharepoint security (ie sharepoint site http://ksgv-tfs/site/os-env/, select site actions/site settings, people and groups) and also to SQL Reporting Services (http://ksgv-tfs/reports/, properties, security).

    Check your security by testing the two sites (from another non-admin account machine) sharepoint eScrum site using the address: http://ksgv-tfs/Sites/os-env/default.aspx and the eScrum web site using: http://ksgv-tfs:8080/escrum/. With the latter, ensure you also try running the reports on the eScrum Reports tab to ensure SQL Reporting services security is configured correctly.

    Setting up your development client

    As we wanted to use our existing Visual Studio Team System 2008 Dev Ed to access/integrate with TFS for source control, work items etc, I had to install Team Explorer 2008 on my laptop (I initially, incorrectly, assumed it would be pre-installed as part of the VS 2008 TS). I installed it via the TFS install media but you can also get Team Explorer 2008 directly here.

    Once installed, fire up Visual Studio, go to tools/options, select source control, and you will see Team Foundation Server is now in the list. Select it and VS will use this for your source control.

    If you are worried about breaking older projects still in VSS (Visual Source Safe), you can easily switch back and forth between version control systems using this approach without any (noticeable at least!) ill effects. Do this before you open your relevant project though.

    I then created a test project in VS 2008 and successfully added a test project's source to the TFS project os-env, just to ensure all was connecting OK.

    You can then also select Team Explorer from within VS 2008 (View/Team Explorer):

    I'll talk more about its usage in a future post.

    Reducing the delays of eScrum report updating

    Although all was now working fine, I notice that when we updated sprint items etc we did not see the changes for what seemed an age! Clearly some caching or scheduled warehousing was going on. Digging around I discovered that the eScrum reporting does not query the main TFS 'real-time' data but instead queries the TFSWarehouse database, which gets updated every hour (!). I thus changed this by going to the web service: http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx?op=ChangeSetting and updating the RunIntervalSeconds settingID to 600 (i.e. to update every 10 mins). Note you must run this from the local TFS machine.

    Restart the "Visual Studio Team Foundation Server Task Scheduler" via Services in windows to pick up the changes.

    You will then still find the SQL Server Reporting Services reports only update every 30 mins. To rectify this:

    • Went to SQL Server Reporting Services via: http://localhost/Reports/
    • selected the project os-env
    • selected properties tab
    • then selected each report and chose properties/execution. I then disabled the caching completely:

    All done. At worst, now all reports will be 10 mins out of date. Depending on your needs and number of users, you may wish to still cache reports.

    I then monitored machine cpu/memory usage for a while but did not see any ill effect of disabling the reporting cache and reducing the TFS Task Scheduler to 10 mins. I'll keep an eye on it though especially as the project grows in size. If you get any issues, maybe gradually increase the warehouse refresh time.

    Bug Integration

    In eScrum you can create links to bugs from a sprint task. See screenshot below:

    In order for the "Query Bugs" button to work, you need to define the query that pulls out the relevant bugs from the database. See the eScrum help for more but basically you end up with a query similar to below that you copy/paste into the product bug setting section on the Product page (to use the query below in your own project just change the "os-env" project name reference to your own):

    SELECT [System.Id], [System.AreaPath], [System.AssignedTo], [Microsoft.VSTS.Common.Priority], [System.Title], [System.State] FROM WorkItems WHERE [System.TeamProject] = 'os-env' AND [System.State] <> 'Deleted' AND [System.WorkItemType] = 'Bug' ORDER BY [System.State], [System.Id]

    This will be run when you select "Query Bugs" in above screenshot.

    Backups

    With all our source code and product info going into TFS, I thought even for this pilot maybe backups would be a good idea ;-)

    I took the approach of backing up the entire VM nightly to an external drive (and weekly to a network drive that is then backed up automatically by the standard corporate backup measures already in place). More on regularly backing up a VMWare VM in this post.

    In Summary

    Overall, the install all seemed to go fairly smoothly (especially considering all the pain I've read about on the net that others have gone through) and both TFS and eScrum appear to be working fine. I've created a Product, added team members etc, created a sprint and run some reports. Of course, the real test will be when we start to use this in anger over the next few weeks. The suspense is more than I can take...

    It has to be said though, the installation experience is not the simplest - it is a manual process, with lots of jumping around in the help to see what to do next, manual config edits, lots of choices etc etc. However, if you are very careful and follow the supplied installation instructions, you will be rewarded :-)

    Next post will be on usage and how we found both TFS and eScrum as day-to-day tools.

    Summarised list of useful addresses

    • eScrum portal: http://ksgv-tfs:8080/escrum/
    • eScrum basic (very) admin page for adding a project: http://ksgv-tfs:8080/escrum/admin.aspx
    • Sharepoint project site: http://ksgv-tfs/sites/your-tfs-project-name/
    • SQL Server reporting Services: http://ksgv-tfs/reporting/
    • Web service to change the eScrum datawarehouse scheduler timing: http://localhost:8080/Warehouse/v1.0/warehousecontroller.asmx?op=ChangeSetting (note the TFS box localhost address)

    And thanks to...

    The above install was without a doubt aided by others sharing their valuable TFS install experiences (thank you guys, you saved me a considerable amount of pain):

    Wednesday 9 July 2008

    Backing up VMware Workstation VMs

    We run a small number of VM instances which are mostly sandbox type environments and hence backups are not always essential, but if you are running something a bit more crucial and wish to back up a VM regularly, what are your options? Running 'traditional' third party backup s/w within the guest OS is one approach (and adopted widely) and more VM-centric enterprise solutions such as VMware's own VCB (VMWare Consolidated Backup) are also well suited but only available for VMware ESX.

    Where does that leave us if we run VMware Workstation and want to back up the entire VM Guest 'image'? The easiest manual way of doing this is by selecting 'suspend' in VMware Workstation for the relevant guest, copy the VM files to another drive  (.vmx, .vmdk etc) and restart the VM. Easy. The con of this, of course, is that you are bringing down your VM for a short period but for most situations it does the job and has the advantage of being very easy to get the VM started again in a DR situation (i.e. simply take the backed up VM files and fire them up on a new host).

    So how can we use the above 'suspend and resume' approach but automate it so it does this nightly for example? The command line comes to your rescue :-)

    Before you start, ensure your relevant VM is not open on the desktop through the VMWare Workstation GUI, as this locks the instance.

    Starting a VM instance from the command line

    Use vmrun command with start parameter, for example:

    "C:\Program Files\VMware\VMware Workstation\vmrun" start "F:\YourVMs\YourVMInstance\Windows Server 2003 Standard Edition.vmx"

    Suspending a VM instance from the command line

    Use vmrun command with suspend parameter, for example:

    "C:\Program Files\VMware\VMware Workstation\vmrun" suspend "F:\YourVMs\YourVMInstance\Windows Server 2003 Standard Edition.vmx"

    (for more switches, simply type vmrun with no parameters).

    Creating a backup script

    We've now got all we need to create a very simple windows cmd file, for example, create a VMBackup.cmd file and enter:

    :: Suspend VM
    "C:\Program Files\VMware\VMware Workstation\vmrun" suspend "F:\YourVMs\YourVMInstance\Windows Server 2003 Standard Edition.vmx"

    :: ROBOCOPY (or xcopy) the files somewhere, pref a different box or network drive, for example
    Robocopy.exe F:\YourVMs\YourVMInstance\ G:\externaldrive\backuparea\VMBackups\ /e /np /eta /r:1 /w:1 /log:F:\VMScheduledBackups\Logs\YourVMInstance-BackupLog.txt

    :: restart the VM
    "C:\Program Files\VMware\VMware Workstation\vmrun" start "F:\YourVMs\YourVMInstance\Windows Server 2003 Standard Edition.vmx"

    You can now schedule this cmd file to run as a windows scheduled task in the normal way.  I use both a daily and weekly backup regime.

    This is obviously a very simple backup approach and it does not alert backup failures etc (you've just got your trusty logs!) but for non-critical sandbox type environments it does the job nicely.

    Clarkey

    Thursday 13 March 2008

    Post Mix 08

    Got back from Mix 08 (Las Vegas) on Monday. Overall, a great conference - all of the sessions I attended were (on the whole) above average, both in terms of content and delivery. The venue (Venetian Hotel) was cooool and oozed class. The delegates were enthusiastic and knowledgeable, and keen to learn and chat. You could say a pleasure to 'mix' with then, ugh! The jet-lag was a pain, and I really suffered for the first few days, but I cannot blame the organisers for that ;-)

    Organisation of the conference was good - all sessions started/finished promptly and rooms were nice with excellent large 'hi def' screens and audio in the main keynote area (the best I've seen/heard at such a conf). Some rooms were overcrowded but this is often a problem with multi-track events like these.

    There were a few oddities though, regarding organisation. For example, in the conference suite areas, large 'bouncers' were present on door entrances/exits/top of stairways etc whom acted as if they were manning a nightclub... "your names not down, you're not coming in" stylee. Sorry guys but this is a conference not some downtime bar!

    Secondly, the delegate bags were poor. Made from what I can only describe as white Tarpaulin, the bags felt cheap and to be honest... 'a bit gay'. Man-bags were to be seen everywhere. I couldn't bring myself to wear mine!

    Finally, the organisers had chosen to put all session summaries on the web (fine, makes sense) but did not put session summary printouts in the delegate pack (only a card 'title and time only' jobby) - not ideal. After virtually every session, delegates (me included) rushed to the PC area to look up the descriptions of their next session (the online session builder is fine if you plan ahead, but I, like most, didn't). I'm all for technology but last-minute-printed, paper-based short summaries, in this case, would have been more useful for day-to-day ref during the conference. Anyway... I'm rambling...

    Points of interest

    What were the interesting bits then? The keynotes in particular are worth a mention.

    Ray Ozzie and Scott Guthrie's Keynote on Day 1 was impressive (although Ray's bits were a bit glossy and high level for me), summarising nicely what MS's plans are for the next 12 months or so. In particular they discussed plans for:

    • Personal device meshes
    • Connected entertainment. License media once and use on 'any device'
    • Connectivity productivity... Office live
    • Office communication server
    • Connected business enterprise.
    • Connected development. XNA, Silverlight, VS, .Net, WPF
    • IIS7 - "probably the most significant web server for MS to date"
    • IE 8 seen for the first time at the conf (more on that later) . Beta 1 now avail for download.
    • Silverlight 2.0 - gaining popularity, e.g. vs 1.0 currently receiving 1.5 million downloads per day. vs 2.0 beta 1 now available.

    The final item, Silverlight, is worth more discussion. Vs 2.0 is very significant for MS. It bundles a cut down version of .Net which can run in the browser opening up a whole breed of RIA (Rich Interface Applications) on the web. We saw a number of fairly impressive demos, including:

    • Hard Rock Cafe Memorabilia site - Silverlight is used to allow users to browse and zoom into various famous artifacts (uses DeepZoom - the follow up to Seadragon). You can see this for yourself at http://memorabilia.hardrock.com. Go to the site, install Silverlight (if you've not got this already you will be prompted), and you will be able to browse and zoom into the impressive music memorabilia collection. To give you an idea of what is involved, one of the guitar images on the site was created using "57 stitched high quality SLR photos" in order to give the necessary detail when zoomed to the max.
    • Beijing Olympics 2008 site by NBC. They intend to put some 2200 hours of high quality video on the web. Users will be able to replay live footage. The demo was slick and certainly showed off Silverlight's strengths for handling media... but hey, the videos were running locally so I'd expect the quality to be good! I will be very interested (and surprised) if the final live site is as impressive. Surely bandwidth limitations will kick in as the millions of visitors surf to watch their heroes in action. I just hope graceful degradation is built in... Silverlight's 'progressive download' adaptive streaming and the new IIS Media Pack bit rate throttling can only do so much...
    • AstonMartin.com. Able to wonder around the gorgeous DBS and zoom in via 'deep zoom' etc. You can even zoom inside and view the stitching on the  leather. New site does not appear to be live yet (current live version is flash)
    • AOL Email Web Client. Current version uses DHTML and AJAX, but new version will be full blown Silverlight utilising isolated storage and skinning features etc.

    The Keynote on day 2 by Steve Ballmer and Guy Kawasiki was cool. Guy (who goes back a long way with Steve) threw some good questions at SB which he answered in his usual enthusiastic and entertaining way. After listening to the banter for an hour or so, one thing I took away was that Steve genuinely has a passion for Microsoft and its success. It was a pleasure to listen to someone who clearly loves his company (and the millions it makes him every year no doubt!). I was impressed.

    Other sessions I attended which are worth mentioning:

    • Crossing the Usability Chasm - Advanced and Adaptive User Interfaces. Gil Hupert-Graff, Yochay Kiriaty. Tackled UIs that can adapt to the user (e.g. beginner vs advanced etc). Having an HCI/usability background I found little to learn in this session (disappointing) but for those new to the 'adaptive UI' idea, there were many points to pick up on. Changing the UI at runtime based on the user's experience and usage patterns is an interesting area.
    • Building Rich Internet Applications Using Microsoft Silverlight 2, Part 1 and 2. Mike Harsh, Joe Stegman. Two sessions on using VS to build Silverlight apps utilising XAML, Web Services and LINQ. Very well done.
    • Developing ASP.NET Applications Using the Model View Controller (MVC) Pattern. Scott Hanselman. Excellent presentation by Scott whom I have a lot of respect for. Covered the MVC (front controller) pattern  and how it is implemented in ASP.Net MVC. Also highlighted the pros/cons of the approach, pointing out that it is not for everyone. The page control model (especially for complex web forms) is still a contender but the merits of MVC, e.g. aiding TDD (test driven development etc) and meaningful URIs etc, cannot be overlooked.
    • Cross-Browser Layout with Internet Explorer 8. Scott Dickens. One of two sessions I attended on IE8, this was the better of the two. Scott covered in detail the new layout engine of IE 8. The MSHTML engine has been re-written to be fully standards compliant but now has two code paths (one for old IE 7 compatibility and another for full IE 8 standards mode).
    • Hard Rock: Behind the Music with Deep Zoom. Scott Stanfield. Case study style session discussing how the site was built (see earlier re hard rock memorabilia site).
    • Lighting Up Your AJAX Applications with Silverlight. Stefan Schackow, Chung Webster. Integrating Silverlight and AJAX. Included background processing and IsolatedStorage. Use of the new History object for back button support in AJAX (hooray!).
    • Designing Next Generation User Interface Experiences with Microsoft Expression Blend and Windows Presentation Foundation. Johnathan Lansing, Stuart Mayhew, Nicholas Petterssen. The guys from Electric Rain gave a detailed account of their WPF application 'StandOut' (actually presented using the tool). If you are bored with powerpoint, maybe the StandOut app is for you. A true whizzy multimedia experience. When asked how long the project took though.. "ermm... just the 5 years". RAD at its best then! To be fair, this was "from initial idea to finished product" - nevertheless seems a difficult one to justify from a ROI standpoint - depends on your measurements of success I guess.
    • Sandbox area: Surface. I saw a fascinating demo of Microsoft Surface in action (I also tried it out for myself). Demo consisted of what was essentially 'a glass coffee table' with a touch screen interface. The software demonstrated was a restaurant menu. See an earlier youtube Surface demo here. Apparently T-Mobile have signed up to use the technology 'in production'.

    IE 8 was mentioned a number of times in various sessions and looks like it is worth waiting for, bits of interest are:

    • Standards and quirks modes. IE 8 will by default be 'very' standards compliant (to the point that many older sites will no doubt break). CSS 2.1 standards based. HTML 5. IE 8 will pass the Acid2 test.
    • IE 8 Web Slices - allows a user to subscribe to 'areas of a page' which then appears as a link on the user's IE 8 toolbar. If that page section updates, the link will highlight to indicate it has been modified. The author of the page decides where the slice begins and ends using markup.
    • IE 8 Activities. Via XML markup (see OpenService Architecture), rather than just having simple URI links to other pages, you can now add 'in page menus of activities' such as 'buy now on Amazon'.
    • Developer tools now built-in (bit like the IE developer toolbar you could install in IE 6/7). This offers JS debugging and CSS rules/hierarchies. For example you can highlight an element on the page and see which CSS rule is taking priority.
    • 'IE 7 Quirks' mode option currently has its own dedicated button on the toolbar (for those sites that refuse to work with IE 8 then!)

     

    So overall, a fab conference. In case you are interested they have already set the date for next year's Mix 09, March 18 to 20th, 2009  ;-)

    Clarkey

    Useful Links:

    Mix 2008 Sessions all online (videos)

    Download IE 8 Beta 1

    Download Silverlight 2.0 Beta 1

    Friday 22 February 2008

    Mix 2008... just over a week to go

    Mix 2008 is less than two weeks away. I missed it last year and reading the post event blogs etc, kicked myself for not attending. This year I made no such mistake and registered early to avoid the inevitable sell out (last year various Microsoft employees themselves were not allowed past the entrance, having failed to register in time... "your name's not down you're not coming in"...).

    Choosing which conference(s) to attend each year is often a difficult call. I usually allocate myself one "attend only" conference plus a "speak at" conf if I have something useful (rare I know) to talk about. This is separate from the single day seminar stuff we often attend during the year. One conference a year seems reasonable from a budget, time, family commitments, ROI etc point of view.

    So, if you are attending only one, which one should it be? I try to vary it. Obvious candidates for me are the US based PDC and Tech·Ed along with the UK based SPA. SPA I've been to before a number of times, with PDC and Tech·Ed on my "must go there sometime if I can justify it" list.

    This year, Mix was at the top of the list. When choosing, I often go out of my comfort zone to learn new stuff and being a day-to-day techy server-side kind of a guy rather than a whizzy flash, silverlight, wpf type of soul, Mix fits the bill nicely.  Mix will be an ideal opportunity to dedicate some time to acquiring new techniques and technologies (albeit at surface level), being a Web conference biased toward creativity, media, design,[hopefully] usability and rich client-side UIs - I'm especially interested in seeing where "we are up to" with Silverlight 2, WPF, .Net 3.5, Expression Blend, XAML, Web 2 (i dislike that phrase) and generally where the Web interface is heading (see the full session list here, which includes keynotes by CEO Steve Ballmer and .Net Framework team founder Scott Guthrie). I'm also especially interested in chatting with fellow delegates to see what they are up to.

    The conference looks set to be entertaining too, with some non-developer focused events such as:

    • Tue eve: The King of Kong: A Fistful of Quarters (movie screening and Q&A with Steve Weibe, one of the stars of the movie, Ed Cunningham the producer, and Twin Galaxies referee Walter Day).
    • Wed eve: Party at club TAO
    • Thu eve: RockBand tournament, on a real stage, massive sound system and huge plasmas!

    Glitzy Vegas is of course another attractor...

    Tuesday 15 January 2008

    Using ExcelWriter on 64bit Kit

    I've recently been migrating some web apps to 64bit Windows 2003 Server. So far all testing has gone pretty well, with most pure ASP.Net apps running on the kit with little or no code changes.

    One issue you may have though, is if your app uses any COM interop with old 32bit components. Earlier ExcelWriter versions used exactly this approach, providing dot net wrapper classes for what were essentially 32bit COM objects on the box. You will find these will no longer work on the new kit (unless you use WOW64 emulation) so the key is to ensure you now use the "pure dot net" versions of ExcelWriter.

    Conversion is quite straight forward. Here's some old "dot net wrapped" 32bit only code:

    SAExcelApplicationDotNet Xlw = new SAExcelApplicationDotNet();  // old 32bit wrapper ExcelApplication
    SoftArtisans.ExcelWriter.SAWorksheet Sheet = Xlw.Worksheets[1];
    Sheet.Cells[1, 1].Value = 20;
    Xlw.Save(@"test.xls", SoftArtisans.ExcelWriter.SASaveMethod.saOpenInPlace, SoftArtisans.ExcelWriter.SAFileFormat.saFileFormatExcel2000);

    The above code also requires ASPCompat=True in your aspx page to ensure single-threaded apartment (STA) mode is used for that page's thread. Not ideal for web apps, see COM Compatibility Page for full run down.

    Anyhow, here's the pure dot net version:

    ExcelApplication Xlw = new ExcelApplication();   // new pure dot net ExcelApplication
    Workbook WB = Xlw.Create();
    Worksheet WS = WB.Worksheets[0];
    WS.Cells[1, 1].Value = 20;
    Xlw.Save(WB, Page.Response, "test.xls", false);

    Easy... even I can follow the above!