Hello world!

Welcome to WordPress.com. This is your first post. Edit or delete it and start blogging!

Posted in Uncategorized | 1 Comment

TFS 2010 upgrade

*

So today I upgraded our TFS 2008 server to TFS 2010.   Went really smooth.  The most amazing thing was our new SQL 2008 R2 box…

I swear I don’t know if I’m going to be able to stress this thing AT ALL…

 

SQL-1

The first big DB server I spec’d out and ordered from Compaq was a quad proc Xeon 400Mhz w/ 4 GB of RAM & 320GB of HDD (3 Bays w/ 6 drives each, maxed out w/ 18GB scsi drives).  This thing has 1TB of drive space, two 6 core Xeons w/ 64 GB of ram.  And it costs 25% of what that old compaq cost.  Scary…

Posted in Uncategorized | Leave a comment

In which I screel like a Beatles fan on the Ed Sullivan show…

Setup:  So a good friend and fellow developer who has a neat little IPhone app and I have been talking about me doing some work to bring a version of said app to Windows Phone 7 (WP7).  So I figured, I’ll sign up for the early access program so I can try to deploy this thing on real hardware asap.

In the Totally Unexpected Dept: Lo and behold, today I get an email from Microsoft Connect saying that I was in fact selected for said program.  No promises on the date of an REAL LIVE WP7 DEVICE GETTING INTO MY HANDS!!!  but still, pretty cool.  Can’t wait to get ahold of one of those puppies, and NO, I WILL NOT BE WAITING IN LINE AT MIDNIGHT TO BUY ONE!  HOW dare you ask!

 

msft connect

Posted in Uncategorized | Leave a comment

Good customer service from Microsoft

Well, a week ago I had a bad night.  My xbox (which was 20 days out of it’s warranty) started flashing the dreaded 3 red rings of death.  Went onto xbox.com, signed up to get the console fixed, ups delivered the label the next day (monday).  I sent it out on Tuesday and last night got a mail saying it had been fixed and sent back!  Fast service, and my xbox is on it’s way home!  Can’t complain!

Posted in Uncategorized | 9 Comments

Good customer service from Microsoft

Well, a week ago I had a bad night.  My xbox (which was 20 days out of it’s warranty) started flashing the dreaded 3 red rings of death.  Went onto xbox.com, signed up to get the console fixed, ups delivered the label the next day (monday).  I sent it out on Tuesday and last night got a mail saying it had been fixed and sent back!  Fast service, and my xbox is on it’s way home!  Can’t complain!

Posted in Uncategorized | Leave a comment

What were they thinking?

So I’m tooling along today, slinging code like a maniac.  And suddenly I come up against a very odd wall.  I’m trying to make a little snippet of XAML to go into my silverlight apps so I don’t have to make a custom control.  Basically all my custom control would be is just three controls smashed in a stackpanel, with some common binding.  So I figure, snippet!  But then I find out that the VS 2010 RC doesn’t have XAML snippet support, in WPF or Silverlight!  What’s up with that?  So I slapped it up on msft connect, and hopefully they’ll fix this at some time. 

https://connect.microsoft.com/VisualStudio/feedback/details/542362/snippet-support-for-xaml-files

Posted in Uncategorized | Leave a comment

Will MOSS/WSS SP3 be supported on Win7?

Doing some housecleaning this month.  While I’m on front line support for my just released app I had a few infrastructure task to do.  Specifically:

(And since I’m a one man dev & admin shop for K2 & MOSS, I get to do this all…)

1.  Get staging farm to parity with prod farm.  K2 & SP both.
2.  Get staging farm up to SP2 & all CU.  Test the beezwax out of it.
3.  Update prod to SP2 and all CU.
4.  Upgrade just relased app to Silverlight 3.  Test the beezwax out of it.
5.  Clean up new app code.  Produce cook book for all SL + K2 future apps.
6.  Add 2 Win2k8R2 to test farm.  Move web hosting duties to the new servers.
7.  Add 2 Win2k8R2 to prod farm.  Move web hosting duties to the new servers.
8.  Update desktop to Win7 64 bit.  Build Win2k8R2 32 bit VM w/ K2 , Moss SP2 & VS2008 on it.

Anyway, while I’m doing this, I run across this little nugget in the CU:

HTTP crawl, Windows SharePoint Services (WSS) crawl and Exchange crawl do not work correctly in Windows 7

Now this kb applies to MOSS & WSS, but it seems to be referencing a fix to a platform combo you can only get if

you do Bamboo’s little XP/Vista/Win7 jailbreak app to install wss and/or moss on a client os.

 

So does this mean we’re going to see tacit or official support for wss/moss on Win7 at some point? 

Posted in Uncategorized | 7 Comments

Is SharePoint 2010 built on .Net 4.0?

A few weeks back there was a post on the SP2010 linked in group asking if anyone knew or

had a guess as to what version of the .net Framework SP2010 would be built on.  I replied it

had to 3.5 as it was the only stable version of the framework.  But I might very well be wrong.

 

Just the other day I watched a video from a Microsoftie who was presenting at the WorldWide

partners conference.  You can watch it here:

http://blogs.msdn.com/arpans/archive/2009/08/19/sharepoint-2010-sneak-peek-presentation.aspx

It’s a great video, but the kicker for me was around the 48 minute mark.  You see Mr. Shah fire

up what has to be a post Beta 1 VS2010, and he goes to create a new project.  I can see that

while he’s on the sp2010 node, his framework version is set to 4.0.  So could SP2010 be built on

4.0?  Well, if we assume that the Framework is the leading wave in the group, it might very well be

getting close to being feature complete, but the dev tools would necessarily have to lag that somewhat.

I don’t know the definitive answer, but I can’t wait to find out!

Posted in Uncategorized | Leave a comment

SP2010 Sneak Peak is LIVE!

Posted in Computers and Internet | Leave a comment

My simple backup util for SharePoint

 

1: <configuration>

   2:        <appSettings>
   3:          <add key="DiffBackupDays" value="0,1,2,3,4,6"/>
   4:          <add key="FullBackupDays" value="5"/>
   5:          <add key="MonthsToHoldAllBackups" value="3"/>
   6:          <add key="MonthsToHoldLastMonthlyBackups" value="3"/>
   7:          <add key="ArchivalPath" value="\archiveBackups"/>
   8:          <add key="InitalBackupPath" value="\initbackupSHAREPOINT"/>
   9:      </appSettings>
  10:  </configuration>
   1:  using System;
   2:  using System.Collections.Generic;
   3:  using System.Linq;
   4:  using System.Text;
   5:  using System.IO;
   6:  using System.Collections.Specialized;
   7:  using System.Configuration;
   8:  using System.Diagnostics;
   9:     
  10:      public enum BackupMethod {
  11:          Full,
  12:          Differential
  13:      }
  14:   
  15:   
  16:      static class Backup
  17:      {
  18:          
  19:          public static void Main()
  20:          {
  21:              
  22:              NameValueCollection appSettings = ConfigurationManager.AppSettings;
  23:              
  24:              try
  25:              {
  26:                  DirectoryInfo ArchivalPath = new DirectoryInfo(appSettings["ArchivalPath"]);
  27:   
  28:                  DirectoryInfo InitalBackupPath = new DirectoryInfo(appSettings["InitalBackupPath"]);
  29:   
  30:                  DayOfWeek[] diffBackupDays =
  31:                      Array.ConvertAll(
  32:                      appSettings["DiffBackupDays"].Split(','),
  33:                      s => (System.DayOfWeek)Convert.ToInt32(s));
  34:   
  35:                  DayOfWeek[] fullBackupDays =
  36:                      Array.ConvertAll(
  37:                      appSettings["FullBackupDays"].Split(','),
  38:                      s => (System.DayOfWeek)Convert.ToInt32(s));
  39:   
  40:                  var isFullBackup = ((from fbd in fullBackupDays where fbd 
  41:   System.DateTime.Now.DayOfWeek select fbd).Count() > 0);
  42:                  
  43:                  var isDiffBackup = ((from dbd in diffBackupDays where dbd == 
  44:  System.DateTime.Now.DayOfWeek select dbd).Count() > 0);
  45:                  
  46:                  int MonthsToHoldAllBackups = 
  47:  int.Parse(appSettings["MonthsToHoldAllBackups"]);
  48:                  
  49:                  int MonthsToHoldLastMonthlyBackups = 
  50:  int.Parse(appSettings["MonthsToHoldLastMonthlyBackups"]);
  51:   
  52:                  if (isFullBackup && isDiffBackup)
  53:                  {
  54:                      throw new ArgumentOutOfRangeException(
  55:  "You cannot perform both a full backup and a diff backup onthe same day!");
  56:                  }
  57:                  if (isFullBackup || isDiffBackup)
  58:                  {
  59:                      if (isFullBackup)
  60:                      {
  61:                          Cleanup(MonthsToHoldAllBackups, MonthsToHoldLastMonthlyBackups,
  62:   ArchivalPath, InitalBackupPath);
  63:                          Backup(InitalBackupPath.FullName, BackupMethod.Full);
  64:                      }
  65:                      else
  66:                      {
  67:                          Backup(InitalBackupPath.FullName, BackupMethod.Differential);
  68:                      }
  69:       
  70:                  }
  71:   
  72:              }
  73:              catch (Exception ex)
  74:              {
  75:                  
  76:              }
  77:          }
  78:   
  79:          static void Cleanup(int MonthsToHoldAllBackups, int MonthsToHoldLastMonthlyBackups, 
  80:  DirectoryInfo ArchivalPath, DirectoryInfo InitalBackupPath)
  81:          {
  82:              DateTime comp = DateTime.Now;
  83:              //First get all directories from archive path
  84:              DirectoryInfo[] di = ArchivalPath.GetDirectories();
  85:              foreach (var d in di)
  86:              {
  87:                  DateTime dt = DateTime.Parse(d.Name);
  88:                  if (dt.AddMonths(MonthsToHoldAllBackups + MonthsToHoldLastMonthlyBackups) < comp)
  89:                  {
  90:       
  91:                      d.DelTree();
  92:   
  93:                      continue;
  94:                  }
  95:                  if (dt.AddMonths(MonthsToHoldAllBackups) < comp)
  96:                  {
  97:                      if (dt.AddDays(7).Month == dt.Month)
  98:                      {
  99:       
 100:                          d.DelTree();
 101:   
 102:                          continue;
 103:   
 104:                      }
 105:                      else
 106:                      {
 107:   
 108:                          continue;
 109:                      }
 110:   
 111:   
 112:                  }
 113:   
 114:   
 115:              }
 116:   
 117:              //copy all files from current backup to new folder in archive
 118:              var nuDir = Path.Combine(ArchivalPath.Name  , DateTime.Now.ToString("yyyy-MM-dd"));
 119:       
 120:              InitalBackupPath.MoveTo(nuDir);
 121:   
 122:          }
 123:   
 124:          static void Backup(string destinationPath, BackupMethod backupmethod)
 125:          {
 126:              string arguments = string.Format("-o backup -directory "{0}" -backupmethod {1}", 
 127:  destinationPath,   backupmethod);
 128:              ProcessStartInfo startInfo = new ProcessStartInfo(
 129:  @"c:Program FilesCommon FilesMicrosoft Sharedweb server extensions12BINstsadm.exe",
 130:                      arguments);
 131:              startInfo.UseShellExecute = false;
 132:              startInfo.RedirectStandardError = true;
 133:       
 134:              Process stsadm = Process.Start(startInfo);
 135:             
 136:              stsadm.WaitForExit();
 137:       
 138:              if (stsadm.ExitCode != 0)
 139:              {
 140:                  string errorMessage = stsadm.StandardError.ReadToEnd();
 141:                  throw new Exception(errorMessage);
 142:              }
 143:          }
 144:   
 145:          
 146:   
 147:          public static void DelTree(this DirectoryInfo directoryInfo)
 148:          {
 149:              foreach (FileInfo file in directoryInfo.GetFiles())
 150:              {
 151:                  file.Delete();
 152:              }
 153:              foreach (DirectoryInfo subDirectory in directoryInfo.GetDirectories())
 154:              {
 155:                  DelTree(subDirectory);
 156:              }
 157:              directoryInfo.Delete();
 158:          }
 159:   
 160:   
 161:   
 162:      }
 163:   
 164:   
 165:   
 166:   
 167:   

Nothing too fancy.  Just better then any powerscript I was able to come up with.   

Posted in Computers and Internet | Leave a comment