<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>Look alive. Here comes a buzzard.</title>
	<atom:link href="http://blog.glenc.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.glenc.net</link>
	<description>Treading water in a sea of man-made confusion.</description>
	<pubDate>Sat, 15 Nov 2008 16:48:30 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>How to use source control - treat it like a video game</title>
		<link>http://blog.glenc.net/2008/11/15/how-to-use-source-control-treat-it-like-a-video-game/</link>
		<comments>http://blog.glenc.net/2008/11/15/how-to-use-source-control-treat-it-like-a-video-game/#comments</comments>
		<pubDate>Sat, 15 Nov 2008 08:26:23 +0000</pubDate>
		<dc:creator>glenc</dc:creator>
		
		<category><![CDATA[Software Development]]></category>

		<category><![CDATA[Subversion]]></category>

		<guid isPermaLink="false">http://blog.glenc.net/?p=108</guid>
		<description><![CDATA[It struck me the other day that the way I use source control is very similar to how I play video games - specifically, when and how I save my game.  I like to use source control as a safety net - it&#8217;s a way to keep track of a place I may need to [...]]]></description>
			<content:encoded><![CDATA[<p>It struck me the other day that the way I use source control is very similar to how I play video games - specifically, when and how I save my game.  I like to use source control as a safety net - it&#8217;s a way to keep track of a place I may need to return to.  It allows me to continue on with my work and not be worried if I go down a wrong path.  I can always revert and be right back where I started.</p>
<p>Taking this one step further, we might say that the quick save in a video game is like a commit in source control.  Saving your game with a specific name is like creating a branch.</p>
<p>Let&#8217;s say I just finish taking out a whole horde of zombies (<a href="http://www.l4d.com/">Left 4 Dead</a> anticipation is infiltrating my blog).  I&#8217;ll probably do a quick-save to make sure I don&#8217;t have to re-play the same encounter again.  This is just like committing some code you just finished.  You&#8217;re saving your current progress to make sure you don&#8217;t have to re-write the same code twice.</p>
<p>Now, back to my game, what if I come to a fork in the road.  I can go left through the ominous looking sewer, or I can go right through the abandoned city.  Well at this point I&#8217;ll go and save my game with some sort of name like &#8220;Taking the sewer&#8221;.  That way I can continue playing, quick-saving as I go, but I can always get back to that fork if it turns out I made a mistake.</p>
<p>This is very similar to creating a branch in source control.  You want to start working on something new, or something experimental, and you need to be able to save your progress as you go, but you always may need to go back to that original point.</p>
<p>I find that many developers wait too long to commit their changes.  The more frequently you commit, and the more organized you are about it, the less you have to worry about keeping track of every change you make.  This means you have left cruft floating around in your mind to remember and you can concentrate on writing good code.  I think if developers think about source control the same way they think about saving their game progress, it would help them get into the habit of committing frequently and branching appropriately.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.glenc.net/2008/11/15/how-to-use-source-control-treat-it-like-a-video-game/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RPoint - Why Ruby?  What about XML?</title>
		<link>http://blog.glenc.net/2008/08/11/rpoint-why-ruby-what-about-xml/</link>
		<comments>http://blog.glenc.net/2008/08/11/rpoint-why-ruby-what-about-xml/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 04:49:54 +0000</pubDate>
		<dc:creator>glenc</dc:creator>
		
		<category><![CDATA[RPoint]]></category>

		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.glenc.net/?p=94</guid>
		<description><![CDATA[I wanted to do a quick post on why I chose Ruby for RPoint.  I talked about this a little in the first post but just looking at the examples I&#8217;ve given so far, one could make the argument that rather than creating these scripts in ruby, you could just create a simple XML [...]]]></description>
			<content:encoded><![CDATA[<p>I wanted to do a quick post on why I chose Ruby for RPoint.  I talked about this a little in the first post but just looking at the examples I&#8217;ve given so far, one could make the argument that rather than creating these scripts in ruby, you could just create a simple XML document that defines your structure, templates, etc.</p>
<p>This is very true - and in fact I have written tools like this in the past.  But here&#8217;s the problem I&#8217;ve encountered with XML.  You end up trying to build a programming language out of XML.  That&#8217;s basically where CAML has ended up.  And I don&#8217;t know a single person who actually <em>enjoys</em> looking at, much less creating, CAML.</p>
<p>Here&#8217;s what I like about the ruby approach.  It let&#8217;s you write something like this:</p>
<pre name="code" class="ruby">site_names = ["Site One", "Site Two", "Site Three"]
at "http://localhost" do
  site_names.each do |name|
    create_web name, TeamSite
  end
end
</pre>
<p>Just the simple addition of an array of site names is something that would be hard to do in XML.  What if you wanted to pull your information from a database?  Or a file system?  Or an Excel spreadsheet?  For any of those you would have to write more logic into your XML mini-language - constructs like looping, conditionals, some mechanism to handle plug-ins for additional logic, etc.  By leveraging an actual programming language, we get all of that for free.</p>
<p>Want to create 50 test sites?  Here you go.</p>
<pre name="code" class="ruby">at "http://localhost" do
  50.times do |i|
    create_web "Site #{i}", BlankSite
  end
end
</pre>
<p>&#8217;nuff said.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.glenc.net/2008/08/11/rpoint-why-ruby-what-about-xml/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RPoint - Hopes and Dreams</title>
		<link>http://blog.glenc.net/2008/08/11/rpoint-vision/</link>
		<comments>http://blog.glenc.net/2008/08/11/rpoint-vision/#comments</comments>
		<pubDate>Tue, 12 Aug 2008 02:47:56 +0000</pubDate>
		<dc:creator>glenc</dc:creator>
		
		<category><![CDATA[RPoint]]></category>

		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.glenc.net/?p=87</guid>
		<description><![CDATA[Yesterday I posted about RPoint for the first time and I showed you a simple script to create a site structure.  All of that code is working today.  I wanted to keep the example simple and show you something that was actually functional.
Today I want to dream a little.  Here are a [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I posted about RPoint for the first time and I showed you a simple script to create a site structure.  All of that code is working today.  I wanted to keep the example simple and show you something that was actually functional.</p>
<p>Today I want to dream a little.  Here are a few scripts I want RPoint to be able to support.</p>
<h2>Creating a List Template</h2>
<p>This script would create a list template.</p>
<pre name="code" class="ruby">class Milestones
  include ListTemplateMixin

  name "Milestones"
  description "A Simple Milestone List"

  column "Milestone", Text, :is_title => true, :required => true
  column "Description", RichText
  column "Date", Date, :required => true, :default => :today

  view "All Milestones" do
    show_columns "Milestone", "Date"
  end

  view "Overdue Milestones" do
    show_columns "Milestone", "Date"
    where :date => less_than(:today)
    order_by :date => :descending
  end
end
</pre>
<p>Once you had defined your template, you could use it in a few different ways.  First, you could use it in a site creation script:</p>
<pre name="code" class="ruby">at "http://localhost" do
  create_list "My Milestones", Milestones
end
</pre>
<p>Second, and possibly cooler, you could generate a list definition:</p>
<pre name="code" class="bash">>ir generate.rb list_definition --source MilestoneTemplate.rb</pre>
<h2>Migrations</h2>
<p>Migrations in Rails is a great pre-defined structure for handling your database schema and changes to it over time.  It may not be anything too ground-breaking on its own, but it enforces a discipline when it comes to managing your database.  You are encouraged to think about situations where you want to change your database but data already exists.  You can write scripts to migrate existing data to your new structure and it&#8217;s all managed within source control as an ordered list of steps to execute.</p>
<p>I want to be able to do something similar with RPoint.</p>
<pre name="code" class="ruby"># first migration - create my site collection
class CreateSiteMigration
  at :webapp => "http://localhost" do
    create_site "My Site", TeamSite
  end
end

# second migration - add a list and add a lookup to that list on an existing list
class AddIssuesMigration
  at "http://localhost/sites/mysite" do
    create_list "Issues", Issues
    update_list "Tasks" do
      add_column "Related Issue", Lookup("Issues", :field => :title)
    end
  end
end
</pre>
<p>Okay - that&#8217;s enough dreaming for now.  Just incase anyone missed the intro THIS CODE DOES NOT WORK.  It is completely imaginary.  I am <em>hoping</em> that something along these lines will become reality.  And I hope that you will agree that this would be a much nicer way to create SharePoint solutions than slogging through hundreds of lines of XML.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.glenc.net/2008/08/11/rpoint-vision/feed/</wfw:commentRss>
		</item>
		<item>
		<title>RPoint - a DSL for SharePoint</title>
		<link>http://blog.glenc.net/2008/08/10/rpoint-a-dsl-for-sharepoint/</link>
		<comments>http://blog.glenc.net/2008/08/10/rpoint-a-dsl-for-sharepoint/#comments</comments>
		<pubDate>Sun, 10 Aug 2008 19:14:01 +0000</pubDate>
		<dc:creator>glenc</dc:creator>
		
		<category><![CDATA[RPoint]]></category>

		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.glenc.net/?p=72</guid>
		<description><![CDATA[A few days back I talked about how the release of IronRuby would be great for SharePoint scripting.  In my opinion, what makes Ruby such a powerful language is that it is great for creating domain specific languages (DSLs).  I&#8217;m going to keep this post short so I won&#8217;t go into what DSLs [...]]]></description>
			<content:encoded><![CDATA[<p>A few days back I <a href="http://blog.glenc.net/2008/07/25/ironruby-a-sharepoint-developers-best-friend/">talked about</a> how the release of <a href="http://rubyforge.org/projects/ironruby">IronRuby</a> would be great for SharePoint scripting.  In my opinion, what makes Ruby such a powerful language is that it is great for creating domain specific languages (DSLs).  I&#8217;m going to keep this post short so I won&#8217;t go into what DSLs are or examples of them.  If you want to find out more info, look at some other ruby libraries such as <a href="http://rspec.info">rspec</a>, <a href="http://rake.rubyforge.org/">rake</a>, and <a href="http://datamapper.org/">datamapper</a>.</p>
<p>I think that SharePoint is in dire need of better tools to facilitate solution development, deployment, and maintenance.  It is simply too difficult to build a site in one environment and then deploy it in production.  Sure you can do backup and restore, but what about when you want to make some upgrades?</p>
<p>Anyway, this weekend I started working on an IronRuby-based DSL for SharePoint scripting.  I&#8217;m calling it RPoint for now (until I think of something sexier!).  Now, this is very very very early in development and I am sure things aren&#8217;t set up today as nicely as they should be long term, but I&#8217;ve been really excited by the progress and the possibilities.</p>
<p>RPoint will allow you to write code like this to create SharePoint sites:</p>
<pre name="code" class="ruby"># create a new subweb beneath an existing site
at "http://localhost" do
  create_web "New Web", TeamSite
end

# create a new site collection and website structure
at :webapp =&gt; "http://localhost" do
  create_site "New Site Collection", BlankSite, "domain\\user" do
    inside root_web do

      # create our site structure
      create_web "Child Web", TeamSite
      create_web "Another Child", BlankSite do
        create_web "Private Site", TeamSite, :inherit_permissions => false
      end

      # create a few lists
      create_list "Documents", DocumentLibrary
      create_list "Announcements", Announcements

    end
  end
end</pre>
<p>I think that&#8217;s pretty cool.  Beyond simply creating sites, RPoint will allow you to create lists, views and probably upload resources like images and documents.</p>
<p>My goals for RPoint are to be able to do the following:</p>
<ul>
<li>Easily write scripts to create site structures and lists</li>
<li>Rails-like &#8220;Migrations&#8221; for applying changes to existing sites</li>
<li>Custom site template and list definitions in ruby as opposed to XML</li>
<li>Ability to run template/list definitions against a live site or generate schema.xml/onet.xml files for production deployment</li>
<li>Support web-services automation as well as object model automation (this will be tough)
</ul>
<p>SharePoint is a huge product.  The code-base is enormous and the aspirations for RPoint are lofty.  I would greatly appreciate any assistance.  The more hands there are to help, the sooner we will have a tool to make SharePoint development a little easier.</p>
<p>To get RPoint in its current form, you can <a href="http://github.com/glenc/rpoint/tree/master">download it from GitHub</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.glenc.net/2008/08/10/rpoint-a-dsl-for-sharepoint/feed/</wfw:commentRss>
		</item>
		<item>
		<title>IronRuby - a SharePoint Developer&#8217;s Best Friend</title>
		<link>http://blog.glenc.net/2008/07/25/ironruby-a-sharepoint-developers-best-friend/</link>
		<comments>http://blog.glenc.net/2008/07/25/ironruby-a-sharepoint-developers-best-friend/#comments</comments>
		<pubDate>Fri, 25 Jul 2008 18:33:37 +0000</pubDate>
		<dc:creator>glenc</dc:creator>
		
		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.glenc.net/?p=71</guid>
		<description><![CDATA[I wrote a while back about SharePoint scripting with IronPython.  Well today&#8217;s announcement of the first binary release of IronRuby got me pretty darn excited.  I really like Python, but I LOVE Ruby.  I&#8217;ve been waiting for IronRuby to catch up to IronPython for quite a while and it looks like they&#8217;re [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote a while back about SharePoint scripting with IronPython.  Well <a href="http://www.iunknown.com/2008/07/ironruby-at-oscon.html" target="_blank">today&#8217;s announcement</a> of the first binary release of IronRuby got me pretty darn excited.  I really like Python, but I <em>LOVE</em> Ruby.  I&#8217;ve been waiting for IronRuby to catch up to IronPython for quite a while and it looks like they&#8217;re getting close.</p>
<p>Here&#8217;s a quick guide to getting up and running with IronRuby and SharePoint.</p>
<p><strong>Installation:</strong></p>
<ol>
<li>First, <a href="http://rubyforge.org/projects/ironruby" target="_blank">download the IronRuby release from Rubyforge</a>.</li>
<li>Next, copy the ironruby folder you extract to your Program Files (put it wherever you like - that&#8217;s where I put mine).</li>
<li>Update your system&#8217;s PATH environment variable to contain the path to the ironruby\bin folder.  So if you placed it in your Program Files, you would add this to your PATH: c:\program files\ironruby\bin</li>
</ol>
<p><strong>Creating a Script:</strong></p>
<p>Next you&#8217;ll want to create a new text file called print_sites.rb.  I recommend the <a href="http://e-texteditor.com/" target="_blank">e text editor</a> by the way - great tool.  Add the following lines to your file:</p>
<pre name="code" class="ruby">require 'System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL'
require 'Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c, processorArchitecture=MSIL'

Uri = System::Uri
SPSite = Microsoft::SharePoint::SPSite
SPWebApplication = Microsoft::SharePoint::Administration::SPWebApplication
</pre>
<p>Okay - what does that do?  Well the first two lines are like adding a reference to a standard Visual Studio project.  They tell IronRuby that we need to reference (require) the System and Microsoft.SharePoint assemblies.  The next three lines are for convenience.  They set up aliases to the System.Uri class and two SharePoint classes.  In our ruby code, now we can just use Uri, SPSite, etc instead of having to type out the fully qualified path.</p>
<p>Next, let&#8217;s add some ruby code to enumerate all sites in a web application.</p>
<pre name="code" class="ruby">
webapp = SPWebApplication.Lookup(Uri.new("http://localhost"))
webapp.Sites.each do |site|
  puts site.Url
end
</pre>
<p><em>(hmm, looks like I don&#8217;t actually need the SPSite alias after all)</em></p>
<p>Now, save your file.  You can execute it like this:</p>
<pre name="code" class="bash">> ir print_sites.rb
</pre>
<p>If everything is set up right, you should see the URL for each site collection be printed to the screen.</p>
<p>There you go.  Have fun.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.glenc.net/2008/07/25/ironruby-a-sharepoint-developers-best-friend/feed/</wfw:commentRss>
		</item>
		<item>
		<title>sp.py - SharePoint Scripting with Python</title>
		<link>http://blog.glenc.net/2008/05/18/sppy-sharepoint-scripting-with-python/</link>
		<comments>http://blog.glenc.net/2008/05/18/sppy-sharepoint-scripting-with-python/#comments</comments>
		<pubDate>Mon, 19 May 2008 06:23:32 +0000</pubDate>
		<dc:creator>glenc</dc:creator>
		
		<category><![CDATA[Office System]]></category>

		<category><![CDATA[Python]]></category>

		<category><![CDATA[SharePoint]]></category>

		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.glenc.net/?p=70</guid>
		<description><![CDATA[I wrote a small introduction to SharePoint scripting with Python a while back and this weekend I didn&#8217;t have anything better to do (well actually I did, but I&#8217;m an addict - what can I say) so I decided to expand on it.  I&#8217;ve started putting together a small Python library for working with SharePoint [...]]]></description>
			<content:encoded><![CDATA[<p>I wrote a small <a href="http://blog.glenc.net/2007/08/12/sharepoint-meet-python/" target="_blank">introduction</a> to SharePoint scripting with Python a while back and this weekend I didn&#8217;t have anything better to do (well actually I did, but I&#8217;m an addict - what can I say) so I decided to expand on it.  I&#8217;ve started putting together a small Python library for working with SharePoint using <a href="http://www.codeplex.com/IronPython" target="_blank">IronPython</a>.  It&#8217;s called - amazingly - <a href="http://github.com/glenc/sp.py/tree/master/README" target="_blank">sp.py</a>.</p>
<p>So far the library if pretty small - although it does include a nice little module for workign with stsadm commands.  I&#8217;ll be adding to it as necessary.  I&#8217;ve decided that although adding <a href="http://stsadm.blogspot.com/" target="_blank">custom stsadm extensions</a> is nice and does fit into the &#8220;way to do things in SharePoint&#8221;, it&#8217;s just too much overhead when you want to do something simple.  So at this point when things come up that need automation, I&#8217;ll be adding new sp.py scripts.</p>
<p>In addition to the sp.py library I&#8217;ve added three scripts:</p>
<ul>
<li style="text-align: left;"><a href="http://github.com/glenc/sp.py/tree/master/src/applytheme.py" target="_blank">applytheme.py</a> - apply a theme to all webs in a web application</li>
<li><a href="http://github.com/glenc/sp.py/tree/master/src/backupsites.py" target="_blank">backupsites.py</a> - backup all site collections in a web application</li>
<li><a href="http://github.com/glenc/sp.py/tree/master/src/setprofileprop.py" target="_blank">setprofileprop.py</a> - set a property on all user profiles based on a dynamic pattern</li>
</ul>
<p>So where can you get this awesomeness?  Well, actually you can get it on <a href="http://github.com/glenc/sp.py/" target="_blank">github</a>.  Github???  You mean that totally web 2.0 site for hosting Git repositories?  Yeah - that&#8217;s the place.  If you&#8217;re wondering why I&#8217;m using git for source control, well I guess Subversion just wasn&#8217;t &#8220;edge&#8221; enough anymore.  Git&#8217;s actually pretty cool - and if you need to use Windows you can <a href="http://git.or.cz/#download" target="_blank">download a Windows version here</a>.</p>
<p>At some point I&#8217;ll figure out how to post it as a zip or something instead of a tarball.  But until that point, you can grab the <a href="http://github.com/glenc/sp.py/tarball/master">tarball here</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.glenc.net/2008/05/18/sppy-sharepoint-scripting-with-python/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Region Folding in Textmate</title>
		<link>http://blog.glenc.net/2008/04/20/region-folding-in-textmate/</link>
		<comments>http://blog.glenc.net/2008/04/20/region-folding-in-textmate/#comments</comments>
		<pubDate>Sun, 20 Apr 2008 15:27:36 +0000</pubDate>
		<dc:creator>glenc</dc:creator>
		
		<category><![CDATA[Ruby]]></category>

		<category><![CDATA[Software Development]]></category>

		<guid isPermaLink="false">http://blog.glenc.net/2008/04/20/region-folding-in-textmate/</guid>
		<description><![CDATA[As a long time Microsoft developer who is in the progress of branching out and learning new things, I sometimes find it hard to give up certain features I&#8217;ve grown accustom to.  When it comes to writing code, one feature of Visual Studio I have learned to rely on is folding sections of code using [...]]]></description>
			<content:encoded><![CDATA[<p>As a long time Microsoft developer who is in the progress of branching out and learning new things, I sometimes find it hard to give up certain features I&#8217;ve grown accustom to.  When it comes to writing code, one feature of Visual Studio I have learned to rely on is folding sections of code using #region and #endregion.  I find regions to be a great way to organize code around different subjects, activities, etc.  For me it&#8217;s a way to reduce the visual clutter and immediately jump to the section of code I need to work on.</p>
<p>On the Mac, TextMate does a great job of code folding based on syntax.  I&#8217;m doing a fair amount of work with Ruby these days and TextMate is an excellent tool.  Unfortunately for me however all folding is based on the syntax of the code, and not extra non-code markers like #region.  Luckily TextMate&#8217;s bundle system is completely extensible and customizable.  Folding is based on regular expressions so with a fairly simple change I was able to get #region folding in TextMate.</p>
<p>The first step is to figure out the regular expression.  The core regex for #region folding would be this:</p>
<p><code>^\s*\#region<br />
^\s*\#endregion</code></p>
<p>Next open up TextMate&#8217;s Bundle editor, open the Ruby language, and locate  the foldingStartMarker and foldingStopMarker sections.  Below is the entire contents of my foldingStartMarker and foldingStopMarker sections.</p>
<p><code>foldingStartMarker = '(?x)^<br />
(\s*+<br />
(module|class|def<br />
|unless|if<br />
|case<br />
|begin<br />
|for|while|until<br />
|(  "(\\.|[^"])*+&#8221;          # eat a double quoted string<br />
| &#8221;(\\.|[^''])*+&#8221;        # eat a single quoted string<br />
|   [^#"'']                # eat all but comments and strings<br />
)*<br />
(                 \s   (do|begin|case)<br />
| [-+=&amp;|*/~%^&lt;&gt;~] \s*+ (if|unless)<br />
)<br />
)\b<br />
(?! [^;]*+ ; .*? \bend\b )<br />
|(  &#8220;(\\.|[^"])*+&#8221;              # eat a double quoted string<br />
| &#8221;(\\.|[^''])*+&#8221;            # eat a single quoted string<br />
|   [^#"'']                    # eat all but comments and strings<br />
)*<br />
( \{ (?!  [^}]*+ \} )<br />
| \[ (?! [^\]]*+ \] )<br />
)<br />
).*$<br />
|   [#] .*? \(fold\) \s*+ $         # Sune’s special marker<br />
|    ^\s*\#region<br />
&#8216;;<br />
foldingStopMarker = &#8216;(?x)<br />
(   (^|;) \s*+ end   \s*+ ([#].*)? $<br />
|   ^     \s*+ [}\]] \s*+ ([#].*)? $<br />
|   [#] .*? \(end\) \s*+ $    # Sune’s special marker<br />
|   ^\s*\#endregion<br />
)&#8217;;</code></p>
<p>You can see where my two regular expressions were added near the end of each section.</p>
<p>Once you do that, close the editor, reload your bundles, and you&#8217;re good to go.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.glenc.net/2008/04/20/region-folding-in-textmate/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Introducing the SharePoint Knowledge Base</title>
		<link>http://blog.glenc.net/2008/02/26/introducing-the-sharepoint-knowledge-base/</link>
		<comments>http://blog.glenc.net/2008/02/26/introducing-the-sharepoint-knowledge-base/#comments</comments>
		<pubDate>Wed, 27 Feb 2008 07:55:08 +0000</pubDate>
		<dc:creator>glenc</dc:creator>
		
		<category><![CDATA[Office System]]></category>

		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.glenc.net/2008/02/26/introducing-the-sharepoint-knowledge-base/</guid>
		<description><![CDATA[I&#8217;ve had this project in the works for a while now and it&#8217;s time to open it up to the world.  The SharePoint Knowledge Base is a simple wiki site I created to capture some best practices, how-tos, tips and tricks, etc.  While I think that blogs are great tools to communicate this [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve had this project in the works for a while now and it&#8217;s time to open it up to the world.  The <a href="http://sharepointkb.org" target="_blank">SharePoint Knowledge Base</a> is a simple wiki site I created to capture some best practices, how-tos, tips and tricks, etc.  While I think that blogs are great tools to communicate this sort of information, I&#8217;m not satisfied with the experience of searching for a specific issue or problem.  Often times I find myself sifting through numerous blog posts - sometimes with conflicting information - left wondering which author knows his or her stuff.</p>
<p>The intent of the <a href="http://sharepointkb.org" target="_blank">SharePoint Knowledge Base</a> is to provide a wikipedia-like site dedicated to capturing community-driven expert content around SharePoint.</p>
<p>Today, there is not a lot of content.  That&#8217;s where you come in.  We all come across things every day that the rest of the community can benefit from.  Why not take a minute and jot down your notes here in the <a href="http://sharepointkb.org" target="_blank">SharePoint KB</a>?  Not only for your own future reference, but for the benefit of others as well.</p>
<p>There is no registration required to create or edit content.  Until we start to have problems this site will remain completely open for anyone to edit.</p>
<p>So please, if you have something to contribute I would encourage you to <a href="http://sharepointkb.org" target="_blank">post it here</a>.  We can all benefit from a better way to store and update SharePoint-related information.  There&#8217;s so much of it out there but it&#8217;s so hard to sift through.  I hope that together we can start to chip away at this problem.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.glenc.net/2008/02/26/introducing-the-sharepoint-knowledge-base/feed/</wfw:commentRss>
		</item>
		<item>
		<title>SharePoint 3.0 Built-In Fields</title>
		<link>http://blog.glenc.net/2008/01/23/sharepoint-30-built-in-fields/</link>
		<comments>http://blog.glenc.net/2008/01/23/sharepoint-30-built-in-fields/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 00:46:27 +0000</pubDate>
		<dc:creator>glenc</dc:creator>
		
		<category><![CDATA[Office System]]></category>

		<category><![CDATA[Reference]]></category>

		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blog.glenc.net/2008/01/23/sharepoint-30-built-in-fields/</guid>
		<description><![CDATA[I just came across this amazing resource of field types and their XML schema.
 http://www.johnholliday.net/download/fieldswss.htm
]]></description>
			<content:encoded><![CDATA[<p>I just came across this amazing resource of field types and their XML schema.</p>
<p> <a href="http://www.johnholliday.net/download/fieldswss.htm">http://www.johnholliday.net/download/fieldswss.htm</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.glenc.net/2008/01/23/sharepoint-30-built-in-fields/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Oops.  I deleted the SSP Admin Site Collection&#8230;</title>
		<link>http://blog.glenc.net/2007/09/07/oops-i-deleted-the-ssp-admin-site-collection/</link>
		<comments>http://blog.glenc.net/2007/09/07/oops-i-deleted-the-ssp-admin-site-collection/#comments</comments>
		<pubDate>Fri, 07 Sep 2007 16:15:38 +0000</pubDate>
		<dc:creator>glenc</dc:creator>
		
		<category><![CDATA[2007 Office]]></category>

		<category><![CDATA[Office System]]></category>

		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://blogtmp.glenc.net/2007/09/07/oops-i-deleted-the-ssp-admin-site-collection/</guid>
		<description><![CDATA[Hey - we&#8217;ve all made mistakes.  We all know that &#8220;oh sh**&#8221; moment right after we realize what we&#8217;ve done.  Often times this occurs right after we click a friendly &#8220;Are you sure??&#8221; dialog.  Of course I&#8217;m sure - if I wasn&#8217;t sure I wouldn&#8217;t have chosen to do it in the first place!  Stupid [...]]]></description>
			<content:encoded><![CDATA[<p>Hey - we&#8217;ve all made mistakes.  We all know that &#8220;oh sh**&#8221; moment right after we realize what we&#8217;ve done.  Often times this occurs right after we click a friendly &#8220;Are you sure??&#8221; dialog.  Of course I&#8217;m sure - if I wasn&#8217;t sure I wouldn&#8217;t have chosen to do it in the first place!  Stupid computer.</p>
<p>Anyway, I recently had a situation where someone (honestly, in this case it wasn&#8217;t me) accidentally deleted the Site Collection for the SSP admin site (/ssp/admin).  Since this was for a SharePoint farm in production I really didn&#8217;t want to have to re-create the entire SSP but I couldn&#8217;t figure out how to just re-create the site collection itself.  I figured there had to be a site template for the site but since it didn&#8217;t show up in the Create Site Collection UI I went and looked on disk.  Sure enough, a site template exists for the SSP Admin site.  It&#8217;s called OSRV.</p>
<p>So to create a new SSP admin site, run this command line.</p>
<pre name="code" class="bash">stsadm.exe -o createsite -url http://&lt;server&gt;:&lt;ssp_port&gt;/ssp/admin -owneremail &lt;email address&gt; -ownerlogin &lt;account&gt; -sitetemplate OSRV#0 -title "Shared Services Administration: &lt;your ssp name&gt;"</pre>
<p>This might take a little while to complete, but it does eventually finish.</p>
<p>Next you need to edit the SSP to point to the recreated site.</p>
<pre name="code" class="bash">stsadm.exe -o editssp -title "&lt;your ssp name&gt;" -sspadminsite http://&lt;server&gt;:&lt;ssp_port&gt;/ssp/admin</pre>
<p>That&#8217;s it.  You should be back up and running.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.glenc.net/2007/09/07/oops-i-deleted-the-ssp-admin-site-collection/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
