<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/">
    <channel>
        <title>Subtext.</title>
        <link>http://stevenharman.net/blog/category/32.aspx</link>
        <description>Information about the Subtext blogging engine, a fork of the .TEXT application.</description>
        <language>en-US</language>
        <copyright>Steven Harman</copyright>
        <generator>Subtext Version 2.1.2.2</generator>
        <item>
            <title>git pull with automatic rebase</title>
            <link>http://stevenharman.net/blog/archive/2011/06/09/git-pull-with-automatic-rebase.aspx</link>
            <description>&lt;div class="thumbnail right"&gt;&lt;a title="Y U NO REBASE!?!" href="https://skitch.com/stevenharman/fdhm5/y-u-no-rebase"&gt;&lt;img class="right" title="Y U NO REBASE!?!" alt="y-u-no-rebase" src="https://img.skitch.com/20110609-jhy91eh42t193wquj6ryi91ura.preview.jpg" /&gt;&lt;/a&gt;     &lt;br /&gt;&lt;span class="smallnote"&gt;Uploaded with &lt;a href="http://skitch.com"&gt;Skitch&lt;/a&gt;!&lt;/span&gt;&lt;/div&gt;  &lt;p&gt;To rebase, or not to rebase… for me its not really a question. I generally prefer a clean, linear commit history. Why? Because merge bubbles make history confusing, noisy, break &lt;code&gt;git bisect&lt;/code&gt;.&lt;/p&gt;  &lt;p&gt;Don’t believe me? Check out the pretty log to the right. See all those merge bubbles in there? &lt;em&gt;Eww!&lt;/em&gt;&lt;/p&gt;  &lt;h3&gt;The Why?&lt;/h3&gt;  &lt;p&gt;The workflow that caused those merges was as follows:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;&lt;code&gt;git pull&lt;/code&gt; (to bring local up to date) &lt;/li&gt;    &lt;li&gt;&lt;em&gt;hackity-hack&lt;/em&gt; &lt;/li&gt;    &lt;li&gt;&lt;code&gt;git commit&lt;/code&gt; &lt;/li&gt;    &lt;li&gt;&lt;code&gt;git pull&lt;/code&gt; &lt;/li&gt;    &lt;li&gt;&lt;code&gt;git push&lt;/code&gt; &lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;By default &lt;code&gt;git pull&lt;/code&gt; will fetch any new commits from the remote, and then merge any local changes in, resulting in the merge bubbles.&lt;/p&gt;  &lt;h3&gt;A better approach&lt;/h3&gt;  &lt;p&gt;I typically use the same workflow as above with one tweak. Rather than &lt;code&gt;git pull&lt;/code&gt;, I use &lt;code&gt;git pull --rebase&lt;/code&gt;, which will fetch the remote commits, and rebase your commits on top of the new commits from the remote. This is the “re-writing” of history folks often talk about.&lt;/p&gt;  &lt;h3&gt;Make it better, automatically!&lt;/h3&gt;  &lt;p&gt;You can tell git to use rebase, rather than merge, in one of two ways, depending on your situation.&lt;/p&gt;  &lt;p&gt;To have all future branches automatically use rebase&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;$ git config branch.autosetuprebase always&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;You can add the &lt;code&gt;--global&lt;/code&gt; switch to have all future branches, in all repositories on this machine, behave this way.&lt;/p&gt;

&lt;p&gt;If, however, you have an existing branch, you’ll need&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;$ git config branch.&lt;em&gt;branch-name&lt;/em&gt;.rebase true&lt;/pre&gt;
&lt;/div&gt;

&lt;h3&gt;Get more info&lt;/h3&gt;

&lt;p&gt;Be sure to check out the &lt;a title="git-config Manual Page" href="http://www.kernel.org/pub/software/scm/git/docs/git-config.html" rel="external"&gt;git man pages&lt;/a&gt; for more info on what those options mean and when you may or may not want to use them. &lt;/p&gt;

&lt;p&gt;You might also want to check out my &lt;a title="Git Workflows" href="https://github.com/stevenharman/git-workflows" rel="external"&gt;Git Workflows repository on The GitHubs&lt;/a&gt; where you can find a Keynote presentation (or PDF in the Downloads) explaining &lt;code&gt;git rebase&lt;/code&gt; vs. &lt;code&gt;git merge&lt;/code&gt;. Complete with pictures!&lt;/p&gt;

&lt;div style="padding-bottom: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; float: none; padding-top: 0px" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:8279d716-c836-4509-b680-857a1b1c7bc5" class="wlWriterEditableSmartContent"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/git" rel="tag"&gt;git&lt;/a&gt;,&lt;a href="http://technorati.com/tags/help" rel="tag"&gt;help&lt;/a&gt;&lt;/div&gt;&lt;img src="http://stevenharman.net/blog/aggbug/12865.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Steven Harman</dc:creator>
            <guid>http://stevenharman.net/blog/archive/2011/06/09/git-pull-with-automatic-rebase.aspx</guid>
            <pubDate>Thu, 09 Jun 2011 15:32:50 GMT</pubDate>
            <comments>http://stevenharman.net/blog/archive/2011/06/09/git-pull-with-automatic-rebase.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://stevenharman.net/blog/comments/commentRss/12865.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Subtext 2.0: Bugs, Features, and Patches</title>
            <link>http://stevenharman.net/blog/archive/2008/08/12/subtext-2.0-bugs-features-and-patches.aspx</link>
            <description>&lt;p&gt;Plenty of other folks have already announced that the &lt;a title="Subtext 2.0 Released" href="http://haacked.com/archive/2008/08/10/subtext-2.0-released.aspx" rel="external"&gt;Subtext 2.0 bits finally dropped&lt;/a&gt; this past Sunday afternoon, hot off the &lt;abbr title="Continuous Integration"&gt;CI&lt;/abbr&gt; server. And by &lt;em&gt;finally&lt;/em&gt;, I mean – &lt;a title="Subtext 1.9.6 'Parley' in the works" href="http://stevenharman.net/blog/archive/2007/08/10/subtext-v1.9.6-parlay-is-in-the-works.aspx"&gt;over a year after&lt;/a&gt; the last official release, and four months after we said it was &lt;em&gt;just around the corner&lt;/em&gt;.&lt;/p&gt;  &lt;h3&gt;Good things come to those who wait&lt;/h3&gt;  &lt;p&gt;At least that’s what the Heinz company says. Or maybe they just had a brilliant marketing department.&lt;/p&gt;  &lt;p&gt;Anyhow, &lt;a href="http://codeclimber.net.nz/" rel="friend"&gt;Simone Chiaretta&lt;/a&gt; and several other folks have already hit the release highlights, so I’ll just steal their summaries:&lt;/p&gt;  &lt;blockquote class="go"&gt;   &lt;ul&gt;     &lt;li&gt;Top notch &lt;a title="Tim's first OSS contributions - patches for Subtext" href="http://www.timheuer.com/blog/archive/2008/06/25/first-contribution-made-to-open-source-subtext.aspx"&gt;support for Windows Live Writer&lt;/a&gt; thanks to some patches and check-ins from &lt;a href="http://timheuer.com/blog" rel="friend met"&gt;Tim Heuer&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;New &lt;abbr title="Cascading Style Sheets"&gt;CSS&lt;/abbr&gt;-based admin design that makes better use of apace &lt;/li&gt;      &lt;li&gt;Support for mobile skins (and a default mobile skin if your favorite skin doesn’t have mobile support built in) &lt;/li&gt;      &lt;li&gt;Streamlined installation Process &lt;/li&gt;      &lt;li&gt;&lt;a title="Support for Enclosures" href="http://codeclimber.net.nz/archive/2008/08/08/new-feature-in-subtext-2.0-enclosures.aspx" rel="external"&gt;Support for Enclosures&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a title="CSS and JS optimizations" href="http://codeclimber.net.nz/archive/2008/08/09/new-feature-in-subtext-2.0-css-and-js-optimization.aspx" rel="external"&gt;CSS and JS optimizations&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a title="Setting a date in the future for publishing posts" href="http://codeclimber.net.nz/archive/2008/08/10/new-feature-in-subtext-2.0-publish-in-the-future.aspx" rel="external"&gt;Setting a date in the future for publishing posts&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;Login to your blog using &lt;a title="OpenID" href="http://openid.net/" rel="external"&gt;OpenID&lt;/a&gt;, as well as use your blog as an OpenID Delegate &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;h3&gt;Ch-ch-cha-changes!&lt;/h3&gt;  &lt;p&gt;As you can see, the new bits are packed with a metric crap-load of bug fixes, new features, and patches. And yes, &lt;em&gt;metric-crap load&lt;/em&gt; is a technical term and a real unit of measure… or not, whatever.&lt;/p&gt;  &lt;p&gt;But hey, you don’t have to take my word for it. You can get a full list of the changes here:&lt;/p&gt;  &lt;blockquote class="exclamation"&gt;   &lt;ul&gt;     &lt;li&gt;&lt;a title="Bug Fixes" href="http://stevenharman.net/code/Subtext/Subtext-2.0/bug-fixes.html"&gt;Bug Fixes&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a title="Delivered Feature Requests" href="http://stevenharman.net/code/Subtext/Subtext-2.0/delivered-feature-requests.html"&gt;Delivered Feature Requests&lt;/a&gt; &lt;/li&gt;      &lt;li&gt;&lt;a title="Accepted Patches" href="http://stevenharman.net/code/Subtext/Subtext-2.0/accepted-patches.html"&gt;Accepted Patches&lt;/a&gt; &lt;/li&gt;   &lt;/ul&gt; &lt;/blockquote&gt;  &lt;h3&gt;Go get you some&lt;/h3&gt;  &lt;p&gt;Oh yeah, and I should probably link to the new bits: &lt;a title="Subtext 2.0 - Download" href="http://sourceforge.net/project/showfiles.php?group_id=137896" rel="download"&gt;DOWNLOAD&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.dotnetkicks.com/kick/?url=http%3a%2f%2fstevenharman.net%2fblog%2farchive%2f2008%2f08%2f12%2fsubtext-2.0-bugs-features-and-patches.aspx"&gt;&lt;img alt="kick it on DotNetKicks.com" src="http://www.dotnetkicks.com/Services/Images/KickItImageGenerator.ashx?url=http%3a%2f%2fstevenharman.net%2fblog%2farchive%2f2008%2f08%2f12%2fsubtext-2.0-bugs-features-and-patches.aspx" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:c87459ab-6918-4952-8ac9-f41354aee941" style="padding-right: 0px; display: inline; padding-left: 0px; float: none; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/subtext" rel="tag"&gt;subtext&lt;/a&gt;, &lt;a href="http://technorati.com/tags/open+source" rel="tag"&gt;open source&lt;/a&gt;, &lt;a href="http://technorati.com/tags/openid" rel="tag"&gt;openid&lt;/a&gt;&lt;/div&gt;&lt;img src="http://stevenharman.net/blog/aggbug/12762.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Steven Harman</dc:creator>
            <guid>http://stevenharman.net/blog/archive/2008/08/12/subtext-2.0-bugs-features-and-patches.aspx</guid>
            <pubDate>Wed, 13 Aug 2008 03:54:31 GMT</pubDate>
            <comments>http://stevenharman.net/blog/archive/2008/08/12/subtext-2.0-bugs-features-and-patches.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://stevenharman.net/blog/comments/commentRss/12762.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Subtext v1.9.6 'Parley' Is On The Way, Finally!</title>
            <link>http://stevenharman.net/blog/archive/2007/11/30/subtext-v1.9.6-parley-is-on-the-way-finally.aspx</link>
            <description>&lt;p&gt;Despite my hope for a quick turnaround on the &lt;a title="Subtext v1.9.6 'Parley' Is In the Works" href="http://stevenharman.net/blog/archive/2007/08/10/subtext-v1.9.6-parlay-is-in-the-works.aspx"&gt;Parley&lt;/a&gt; release things just didn’t go that way... they rarely do.&lt;/p&gt;  &lt;p&gt;I’ve got all kinds of excuses as to why it’s taken so long. &lt;a title="You've Been Haacked" href="http://haacked.com" rel="friend met colleague"&gt;Phil&lt;/a&gt;, &lt;a title="CodeClimber" href="http://codeclimber.net.nz/" rel="friend"&gt;Simone&lt;/a&gt;, and &lt;a title="Geek and Proud of It" href="http://stevenharman.net" rel="me"&gt;I&lt;/a&gt; each taking new jobs at &lt;a title="Why Is Microsoft Removing My MVP Status?" href="http://haacked.com/archive/2007/09/17/why-is-microsoft-removing-my-mvp-status.aspx" rel="external"&gt;Microsoft&lt;/a&gt;, &lt;a title="Impressed and overloaded" href="http://codeclimber.net.nz/archive/2007/11/16/Impressed-and-overloaded.aspx" rel="external"&gt;Avande&lt;/a&gt;, and &lt;a title="I'm Going, Going, Gone Quick!" href="http://stevenharman.net/blog/archive/2007/11/19/im-going-going-gone-quick.aspx"&gt;Quick&lt;/a&gt;, respectively, would be one. &lt;a href="http://sekella2.blogspot.com" rel="sweetheart met co-resident"&gt;Carli&lt;/a&gt; and I buying a house and getting totally wrapped up in Buckeye Football would be a couple more.&lt;/p&gt;  &lt;p&gt;But in the end, who care because no one like excuses. Isn’t there even some old cliché about how.&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;&lt;em&gt;excuses are like... something... and they all stink...&lt;/em&gt;&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;Well something like that anyhow. (I cleaned it up for the kids) :)&lt;/p&gt;  &lt;h3&gt;&lt;img class="right"  height="78" alt="SubtextLogo" src="http://stevenharman.net/images/stevenharman_net/blog/WindowsLiveWriter/Subtextv1.9.6ParleyIsOnTheWayFinally_14E73/SubtextLogo_6.png" width="240" border="0" /&gt;We’re making progress&lt;/h3&gt;  &lt;p&gt;At any rate we’ve been making some good progress lately. Phil has been closing bugs and applying patches like it’s his job - &lt;em&gt;which it’s not, getting &lt;/em&gt;&lt;a title="You Say MVC for ASP.NET, I Say mvc.net" href="http://stevenharman.net/blog/archive/2007/10/12/you-cay-mvc-for-asp.net-i-say-mvc.net.aspx"&gt;&lt;em&gt;the mvc.net bits&lt;/em&gt;&lt;/a&gt;&lt;em&gt; ready is&lt;/em&gt;. And I just checked in the code for a new &lt;em&gt;Customization&lt;/em&gt; piece that will allow a blog owner to set custom meta tags for their blog.&lt;/p&gt;  &lt;p&gt;In building out the new Customization &lt;abbr title="User eXperience"&gt;UX&lt;/abbr&gt; I made heavy use of &lt;a title="jQuery: The Write Less, Do More, JavaScript Library" href="http://www.jquery.com"&gt;jQuery&lt;/a&gt; and &lt;abbr title="JavaScript Object Notation"&gt;JSON&lt;/abbr&gt; web services, via &lt;a title="Jayrock: JSON and JSON-RPC for .NET" href="http://jayrock.berlios.de/" rel="external"&gt;JayRock&lt;/a&gt;, both of which were new to myself and the &lt;a title="Subtext Project" href="http://subtextproject.com" rel="external"&gt;Subtext&lt;/a&gt; code base. The UX on the page is fairly complex and involved, but it serves as a proof of concept and example for myself and the other Subtext developers.&lt;/p&gt;  &lt;h3&gt;A rough release date&lt;/h3&gt;  &lt;p&gt;Phil has set &lt;strong&gt;a rough release date of December 8th&lt;/strong&gt;, which is a little over a week away. To make sure we can hit that date, or at least something near it, we’re going to need your help.&lt;/p&gt;  &lt;p&gt;Over the next week we’d really like to make a big push to get as many bugs closed as we can. If you’d like to lend a hand, please head over to the &lt;a title="Subtext Bug Tracker" href="https://sourceforge.net/tracker/?group_id=137896&amp;amp;atid=739979" rel="external"&gt;bug tracker&lt;/a&gt;, pick yourself a tasty bug, get it assigned to you, and go to town on it!&lt;/p&gt;  &lt;p&gt;If you’re not much for bug-smashin', we also need help with testing. If you need help getting started, the &lt;a title="Subtext Developer's Mailing List" href="https://sourceforge.net/tracker/?group_id=137896&amp;amp;atid=739979" rel="external"&gt;Subtext Developer’s Mailing List&lt;/a&gt; or the &lt;a title="Subtext Forums" href="https://sourceforge.net/forum/?group_id=137896" rel="external"&gt;Forums&lt;/a&gt; are both a great place to start.&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:d33f5a4e-9661-4c5e-b6eb-31a7e18ca589" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/subtext" rel="tag"&gt;subtext&lt;/a&gt;, &lt;a href="http://technorati.com/tags/open%20source" rel="tag"&gt;open source&lt;/a&gt;&lt;/div&gt;&lt;img src="http://stevenharman.net/blog/aggbug/12669.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Steven Harman</dc:creator>
            <guid>http://stevenharman.net/blog/archive/2007/11/30/subtext-v1.9.6-parley-is-on-the-way-finally.aspx</guid>
            <pubDate>Fri, 30 Nov 2007 05:30:48 GMT</pubDate>
            <comments>http://stevenharman.net/blog/archive/2007/11/30/subtext-v1.9.6-parley-is-on-the-way-finally.aspx#feedback</comments>
            <slash:comments>10</slash:comments>
            <wfw:commentRss>http://stevenharman.net/blog/comments/commentRss/12669.aspx</wfw:commentRss>
        </item>
        <item>
            <title>MySpace China Blogs are now Subtexting!</title>
            <link>http://stevenharman.net/blog/archive/2007/10/29/myspace-china-blogs-are-now-subtexting.aspx</link>
            <description>&lt;p&gt;&lt;img class="right"  height="77" alt="MySpace China" src="http://stevenharman.net/images/stevenharman_net/blog/WindowsLiveWriter/0a24fc2199d1_763D/image_3.png" width="213" border="0" /&gt; &lt;a title="You've been Haacked" href="http://haacked.com" rel="friend met"&gt;Phil&lt;/a&gt; officially broke &lt;a title="MySpace China Blogs Powered by Subtext" href="http://haacked.com/archive/2007/10/29/subtext-powers-myspace-china-blogs.aspx" rel="external"&gt;the news&lt;/a&gt; early this morning... but for those few of you that don’t read his blog - &lt;a title="MySpace China" href="http://myspace.cn/" rel="external"&gt;MySpace China&lt;/a&gt; is using a modified version of &lt;a title="Subtext Project" href="http://subtextproject.com" rel="external"&gt;Subtext&lt;/a&gt; for it’s blogging engine. Flippin' Sweet!&lt;/p&gt;  &lt;p&gt;Does this mean we’ve finally made it and we can start making insanely frivolous purchases like our own data center, ping-pong tables, and a yacht?&lt;/p&gt;  &lt;p&gt;Nope, not even close.&lt;/p&gt;  &lt;p&gt;That’s the beauty of the &lt;abbr title="Open Source Initiative"&gt;OSI&lt;/abbr&gt; license under which Subtext is released - others are free to do pretty much whatever the heck they want with Subtext. And that’s cool by us... where &lt;em&gt;us&lt;/em&gt; is the collective community of Subtext’s developers, contributors, and users.&lt;/p&gt;  &lt;h3&gt;The plan is in motion&lt;/h3&gt;  &lt;p&gt;Now that MySpace China blogs, and their 1 million page views per day are running on Subtext I think it’s safe to say that our plan for world domination is finally under way. :)&lt;/p&gt;  &lt;div class="wlWriterSmartContent" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:0f39b61b-df84-41fc-92da-b2af5115929b" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/subtext" rel="tag"&gt;subtext&lt;/a&gt;, &lt;a href="http://technorati.com/tags/open%20source" rel="tag"&gt;open source&lt;/a&gt;&lt;/div&gt;&lt;img src="http://stevenharman.net/blog/aggbug/12658.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Steven Harman</dc:creator>
            <guid>http://stevenharman.net/blog/archive/2007/10/29/myspace-china-blogs-are-now-subtexting.aspx</guid>
            <pubDate>Mon, 29 Oct 2007 12:36:12 GMT</pubDate>
            <comments>http://stevenharman.net/blog/archive/2007/10/29/myspace-china-blogs-are-now-subtexting.aspx#feedback</comments>
            <slash:comments>2</slash:comments>
            <wfw:commentRss>http://stevenharman.net/blog/comments/commentRss/12658.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Subtext Origami Skin - Hotfix!</title>
            <link>http://stevenharman.net/blog/archive/2007/08/22/subtext-origami-skin---hotfix.aspx</link>
            <description>&lt;p&gt;Not too long ago a user &lt;a title="Subtext Devs Mailing List" href="https://sourceforge.net/forum/forum.php?thread_id=1790447&amp;amp;forum_id=464968" rel="external"&gt;sent us an email&lt;/a&gt; informing us that Subtext’s &lt;a title="the Origami Skin for Subtext" href="http://www.subtextskins.com/tabid/155/grm2id/1/Default.aspx" rel="external"&gt;Origami skin&lt;/a&gt; &lt;em&gt;didn’t have a &lt;code&gt;#feedback&lt;/code&gt; tag&lt;/em&gt;, meaning it was missing a named anchor that would allow you to jump directly to the feedback portion of the page. I took a look and sure enough it didn’t.&lt;/p&gt; &lt;p&gt;This kind of &lt;em&gt;bug&lt;/em&gt; is typically referred to as &lt;em&gt;low hanging fruit&lt;/em&gt; - easy to spot, quick and easy to fix. So naturally I went ahead and added the named anchor tag, checked it into the Subtext &lt;abbr title="Subversion"&gt;SVN&lt;/abbr&gt; repository and called it fixed.&lt;/p&gt; &lt;h3&gt;But it’s not fixed.&lt;/h3&gt; &lt;p&gt;&lt;a title="Comment Title running into Gravatar image." href="http://stevenharman.net/images/stevenharman_net/blog/WindowsLiveWriter/SubtextOrigamiSkinHotfix_8DB0/subtext-origami-feedback-wrong.png" rel="lightbox[SubtextOrigamiSkin]"&gt;&lt;img class="right"  height="121" alt="Comment Title running into Gravatar image." src="http://stevenharman.net/images/stevenharman_net/blog/WindowsLiveWriter/SubtextOrigamiSkinHotfix_8DB0/subtext-origami-feedback-wrong_thumb.png" width="200" border="0" /&gt;&lt;/a&gt; Today I was reading through some comments on &lt;a title="Steve’s Life - Just Livin' the Dream" href="http://life.stevenharman.net/"&gt;my Life blog&lt;/a&gt; and noticed that the &lt;a title="Your Identity - Online" href="http://site.gravatar.com/" rel="external"&gt;Gravatar&lt;/a&gt; image and comment title for the first comment of an individual post was not aligned correctly. A little inspection with Firebug and I found the issue.&lt;/p&gt; &lt;h3&gt;Mea Culpa!&lt;/h3&gt; &lt;p&gt;Apparently even low hanging fruit is sometimes too difficult for me to handle correctly. When I added the anchor tag I incorrectly made it a self-closing tag... which Firefox then misinterpreted and the mess pictured above resulted.&lt;/p&gt; &lt;div class="dropshadow"&gt; &lt;div class="innerbox"&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="comments"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="section"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="feedback"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="section-title"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Your Comments.&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class="clear"&gt;Lucky for me the fix was a simple one. &lt;em&gt;Where have I heard that before?&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Like I was saying, the fix was pretty easy - I opened the skin’s &lt;code&gt;Comments.ascx&lt;/code&gt; control and changed the anchor tag like so (notice the changes in &lt;strong&gt;bold&lt;/strong&gt;):&lt;/p&gt;
&lt;div class="dropshadow"&gt;
&lt;div class="innerbox"&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="comments"&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="section"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="feedback"&lt;/span&gt;&lt;strong&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/strong&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="section-title"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Your Comments.&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 class="clear"&gt;It’s magic, you know.&lt;/h3&gt;
&lt;p&gt;&lt;a title="That looks better!" href="http://stevenharman.net/images/stevenharman_net/blog/WindowsLiveWriter/SubtextOrigamiSkinHotfix_8DB0/subtext-origami-feedback-correct_2.png" rel="lightbox[SubtextOrigamiSkin]"&gt;&lt;img class="right"  height="124" alt="That looks better!" src="http://stevenharman.net/images/stevenharman_net/blog/WindowsLiveWriter/SubtextOrigamiSkinHotfix_8DB0/subtext-origami-feedback-correct_thumb_2.png" width="200" border="0" /&gt;&lt;/a&gt;And just like that all is once again right with &lt;strike&gt;the World&lt;/strike&gt; Subtext’s Origami skin. To all of the Subtexters out there, I would like to apologize for leading you astray... I’ll try my best to make sure it doesn’t happen again. Hopefully this blog post will get me back in your good graces. :)&lt;/p&gt;
&lt;p&gt;Oh, and I should mention that this updated fix has been checked into SVN and will be in the forthcoming Subtext 1.9.6 release.&lt;/p&gt;
&lt;p&gt;Again, Mea Culpa!&lt;/p&gt;
&lt;div class="wlWriterSmartContent id-0767317B-992E-4b12-91E0-4F059A8CECA8:cad1bbe8-f5c7-477b-aa0a-2667422b085e contenteditable-false"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/subtext" rel="tag"&gt;subtext&lt;/a&gt;, &lt;a href="http://technorati.com/tags/xhtml" rel="tag"&gt;xhtml&lt;/a&gt;&lt;/div&gt;&lt;img src="http://stevenharman.net/blog/aggbug/12626.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Steven Harman</dc:creator>
            <guid>http://stevenharman.net/blog/archive/2007/08/22/subtext-origami-skin---hotfix.aspx</guid>
            <pubDate>Wed, 22 Aug 2007 14:44:24 GMT</pubDate>
            <comments>http://stevenharman.net/blog/archive/2007/08/22/subtext-origami-skin---hotfix.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://stevenharman.net/blog/comments/commentRss/12626.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Subtext v1.9.6 'Parley' Is In the Works</title>
            <link>http://stevenharman.net/blog/archive/2007/08/10/subtext-v1.9.6-parlay-is-in-the-works.aspx</link>
            <description>&lt;p&gt;After a very hectic month or so things are starting to slow down around here. They are slowly getting back to normal, &lt;em&gt;or at least as normal as things ever were&lt;/em&gt;. And since &lt;a title="You’re Been Haacked" href="http://haacked.com" rel="external friend met"&gt;Phil&lt;/a&gt; is utterly overwhelmed with &lt;a href="http://haacked.com/archive/2007/06/06/introducing-cody-yokoyama-haack.aspx" rel="external"&gt;Cody "O.G." Haack&lt;/a&gt; he’s been hounding me to give up &lt;a href="http://veloc-it.com/" rel="external"&gt;my day job&lt;/a&gt; and spend more time &lt;a title="Subtext Project" href="http://subtextproject.com" rel="external"&gt;Subtexting&lt;/a&gt;. Unfortunatly we’ve not found a rich benefactor to pay our salaries while we do what we love - build Subtext and evangelize the goodness of open source software.&lt;/p&gt; &lt;p&gt;&lt;em&gt;But I digress...&lt;/em&gt;&lt;/p&gt; &lt;h3&gt;The point of this rant?&lt;/h3&gt; &lt;p&gt;The point is - &lt;strong&gt;we were not planning to do another Subtext 1.9.x release&lt;/strong&gt; after the 1.9.5 &lt;em&gt;Artificial Horizon&lt;/em&gt; release but rather focus full-force on getting 2.0 &lt;em&gt;Poseidon&lt;/em&gt; out the door. However, as tends to happen we’ve all been really busy and haven’t had the time.&lt;/p&gt; &lt;p&gt;&lt;a title="Capt. Jack Sparrow" href="http://stevenharman.net/images/stevenharman_net/blog/WindowsLiveWriter/Subtextv1.9.5ParlayIsIntheWorks_9457/pirates-jack-will.png" rel="lightbox"&gt;&lt;img class="left"  height="159" alt="Capt. Jack Sparrow" src="http://stevenharman.net/images/stevenharman_net/blog/WindowsLiveWriter/Subtextv1.9.5ParlayIsIntheWorks_9457/pirates-jack-will_thumb.png" width="240" border="0" /&gt;&lt;/a&gt;To tide you over and buy us a little more time on the 2.0 release I’m going to get busy and try to knock the 1.9.6 release out soon.&lt;/p&gt; &lt;p&gt;I’ve decided to codename this release &lt;strong&gt;&lt;em&gt;&lt;a href="http://en.wikipedia.org/wiki/Parley" rel="external"&gt;Parley&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt; - as made famous by the &lt;a href="http://www.google.com/search?q=pirates+parlay" rel="external"&gt;Pirates&lt;/a&gt; movies. I think the name fits as I’m asking you, dear community, to give us safe passage and a little more time to get you the 2.0 release. And as payment for that generosity, we offer you Subtext 1.9.6 "Parley".&lt;/p&gt; &lt;h3 class="clear"&gt;When are we gonna' get it?&lt;/h3&gt; &lt;p&gt;No promises on an exact release date - but I’m shooting for mid to late August at the latest. And remember, that &lt;strong&gt;release date will get here sooner if you contribute too&lt;/strong&gt;. :)&lt;/p&gt; &lt;p&gt;As always we welcome any and all contributions - even if it’s just to tell us how great we are and that you’d love to buy us a beer some time! &lt;em&gt;Mmmm... free beer...&lt;/em&gt;&lt;/p&gt; &lt;p&gt;[&lt;a title="Get yours today!" href="http://sourceforge.net/project/showfiles.php?group_id=137896" rel="external"&gt;Get Subtext&lt;/a&gt;]&lt;/p&gt; &lt;p class="update"&gt;Update: I just realized I spelled Parley wrong - so it has now been fixed through out the post. But fear not, my stupidity is now forever etched into the tubes of the Internet as the &lt;abbr title="Uniform Resource Locator"&gt;URL&lt;/abbr&gt; of this post won’t change.&lt;/p&gt; &lt;div class="wlWriterSmartContent id-0767317B-992E-4b12-91E0-4F059A8CECA8:be7379a9-bad6-42de-ad77-6b0f3de4f674 contenteditable-false"&gt;Technorati Tags: &lt;a href="http://technorati.com/tags/subtext" rel="tag"&gt;subtext&lt;/a&gt;, &lt;a href="http://technorati.com/tags/parley" rel="tag"&gt;parley&lt;/a&gt;, &lt;a href="http://technorati.com/tags/open%20source" rel="tag"&gt;open source&lt;/a&gt;&lt;/div&gt;&lt;img src="http://stevenharman.net/blog/aggbug/12620.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Steven Harman</dc:creator>
            <guid>http://stevenharman.net/blog/archive/2007/08/10/subtext-v1.9.6-parlay-is-in-the-works.aspx</guid>
            <pubDate>Fri, 10 Aug 2007 14:32:58 GMT</pubDate>
            <comments>http://stevenharman.net/blog/archive/2007/08/10/subtext-v1.9.6-parlay-is-in-the-works.aspx#feedback</comments>
            <slash:comments>7</slash:comments>
            <wfw:commentRss>http://stevenharman.net/blog/comments/commentRss/12620.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Subtext Nominated for Two 2007 Community Choice Awards</title>
            <link>http://stevenharman.net/blog/archive/2007/07/03/subtext-nominated-for-two-2007-community-choice-awards.aspx</link>
            <description>&lt;p&gt;As several of my comrades have &lt;a href="http://feeds.feedburner.com/~r/Codeclimber/~3/129910864/Subtext-nominated-for-the-SF-Community-Choice-Award.aspx" rel="external friend colleague"&gt;already&lt;/a&gt; &lt;a href="http://geekswithblogs.net/sdorman/archive/2007/07/02/SourceForge.net-Community-Choice-Awards.aspx" rel="external colleague"&gt;announced&lt;/a&gt;, Subtext has been nominated for two, count 'em &lt;strong&gt;two Community Choice Awards!&lt;/strong&gt; Apparently &lt;a href="http://stevenharman.net/blog/archive/2007/06/24/nominate-subtext-for-a-2007-community-choice-award.aspx"&gt;my pleading&lt;/a&gt; worked!&lt;/p&gt; &lt;h3&gt;Nominations&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;&lt;strong&gt;Best Project for Communications:&lt;/strong&gt; The best project for talking to your friends or sharing information. &lt;em&gt;Other nominees include - Miranda, Pidgin, and FileZilla.&lt;/em&gt;&lt;/li&gt; &lt;li&gt;&lt;strong&gt;Most Collaborative Project:&lt;/strong&gt; The project most likely to accept your patches and value your input. &lt;em&gt;Other nominees include - Azureus, XOOPS, and Zimbra.&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt; &lt;p&gt;This is a really big achievement for the project and we're proud to be &lt;strong&gt;one of only two .NET projects to be nominated&lt;/strong&gt;. The other project is &lt;a title="VMukti - Collaborate Conferencing" href="http://sourceforge.net/projects/vmukti/" rel="external"&gt;VMukti&lt;/a&gt;, a corporate sponsored project.&lt;/p&gt; &lt;h3&gt;Now go vote!&lt;/h3&gt; &lt;p&gt;The winning project for each category is determined by popular vote... so we need you all to &lt;a title="Vote for Subtext" href="http://sourceforge.net/awards/cca/vote.php" rel="external"&gt;GO VOTE&lt;/a&gt; Subtext!&lt;/p&gt; &lt;p&gt;As far as I can tell, you'll need to have a SourceForge.net account in order to cast your vote, and you only get to vote once... so make it count!&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:40e39302-5ace-4605-ad60-d82ebbc4ae5e" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/subtext" rel="tag"&gt;subtext&lt;/a&gt;, &lt;a href="http://technorati.com/tags/sourceforge" rel="tag"&gt;sourceforge&lt;/a&gt;, &lt;a href="http://technorati.com/tags/open%20source" rel="tag"&gt;open source&lt;/a&gt;, &lt;a href="http://technorati.com/tags/community%20choice%20awards" rel="tag"&gt;community choice awards&lt;/a&gt;, &lt;a href="http://technorati.com/tags/asp.net" rel="tag"&gt;asp.net&lt;/a&gt;&lt;/div&gt;&lt;img src="http://stevenharman.net/blog/aggbug/12606.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Steven Harman</dc:creator>
            <guid>http://stevenharman.net/blog/archive/2007/07/03/subtext-nominated-for-two-2007-community-choice-awards.aspx</guid>
            <pubDate>Tue, 03 Jul 2007 04:14:13 GMT</pubDate>
            <comments>http://stevenharman.net/blog/archive/2007/07/03/subtext-nominated-for-two-2007-community-choice-awards.aspx#feedback</comments>
            <slash:comments>1</slash:comments>
            <wfw:commentRss>http://stevenharman.net/blog/comments/commentRss/12606.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Lightbox and Subtext Galleries Integration</title>
            <link>http://stevenharman.net/blog/archive/2007/06/24/lightbox-and-subtext-galleries-integration.aspx</link>
            <description>&lt;p&gt;Recently several Subtext users have asked how to integrate &lt;a title="Lightbox2" href="http://www.huddletogether.com/projects/lightbox2/" rel="external"&gt;Lightbox JS&lt;/a&gt; into Subtext's photo galleries. My standard answer has been &lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;font size="2"&gt;Right now it's not possible because the control that renders the galleries emits links with relative &lt;acronym title="Uniform Resource Locator"&gt;URL&lt;/acronym&gt;s rather than fully qualified URLs. We'll look into making a change to the data binding mechanism for a future release - so hold tight!&lt;/font&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;I finally had a few spare cycles so I looked into the existing data binding logic and realized that &lt;strong&gt;it &lt;em&gt;is possible&lt;/em&gt; to get the control to emit fully qualified URLs right now!&lt;/strong&gt; Notice, I said it's possible, but I didn't say it's elegant.&lt;/p&gt; &lt;h3&gt;How it works now&lt;/h3&gt; &lt;p&gt;You'll need to edit your skin's &lt;code&gt;GalleryThumbNail.ascx&lt;/code&gt; control. This control renders the thumbnail images for a given gallery using a simple &lt;code&gt;asp:DataList&lt;/code&gt; control. The controller (code) that handles the &lt;code&gt;GalleryThumbNail.ascx&lt;/code&gt; control looks for an &lt;code&gt;asp:HyperLink&lt;/code&gt; control inside the &lt;code&gt;DataList&lt;/code&gt;. It then populates the &lt;code&gt;HyperLink&lt;/code&gt; with an &lt;code&gt;ImageUrl&lt;/code&gt;, &lt;code&gt;NavigationUrl&lt;/code&gt;, and &lt;code&gt;ToolTip&lt;/code&gt; for each image in the gallery.&lt;/p&gt; &lt;p&gt;So your skin control probably looks like this:&lt;/p&gt; &lt;div class="dropshadow"&gt; &lt;div class="innerbox"&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:DataList&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="ThumbNails"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;OnItemCreated&lt;/span&gt;&lt;span class="kwrd"&gt;="ImageCreated"&lt;/span&gt;
  &lt;span class="attr"&gt;RepeatColumns&lt;/span&gt;&lt;span class="kwrd"&gt;="4"&lt;/span&gt; &lt;span class="attr"&gt;RepeatDirection&lt;/span&gt;&lt;span class="kwrd"&gt;="Horizontal"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:HyperLink&lt;/span&gt; &lt;span class="attr"&gt;Runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt; &lt;span class="attr"&gt;ID&lt;/span&gt;&lt;span class="kwrd"&gt;="ThumbNailImage"&lt;/span&gt; &lt;span class="attr"&gt;CssClass&lt;/span&gt;&lt;span class="kwrd"&gt;="ThumbNail"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:DataList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 class="clear"&gt;Hack it to work now&lt;/h3&gt;
&lt;div class="dropshadow"&gt;
&lt;div class="innerbox"&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:DataList&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="ThumbNails"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;
  &lt;span class="attr"&gt;RepeatColumns&lt;/span&gt;&lt;span class="kwrd"&gt;="4"&lt;/span&gt; &lt;span class="attr"&gt;RepeatDirection&lt;/span&gt;&lt;span class="kwrd"&gt;="Horizontal"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="thumbnail"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%# BaseImagePath + 
        ((&lt;strong&gt;&lt;em&gt;Image&lt;/em&gt;&lt;/strong&gt;) Container.DataItem).ResizedFile %&amp;gt;"&lt;/span&gt; 
        &lt;span class="attr"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%# ((&lt;strong&gt;&lt;em&gt;Image&lt;/em&gt;&lt;/strong&gt;) Container.DataItem).Title %&amp;gt;"&lt;/span&gt; 
        &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="lightbox[&amp;lt;%# ((&lt;strong&gt;&lt;em&gt;Image&lt;/em&gt;&lt;/strong&gt;) Container.DataItem).CategoryID %&amp;gt;]"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%# BaseImagePath + 
          ((&lt;strong&gt;&lt;em&gt;Image&lt;/em&gt;&lt;/strong&gt;) Container.DataItem).ThumbNailFile %&amp;gt;"&lt;/span&gt; 
          &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%# ((&lt;strong&gt;&lt;em&gt;Image&lt;/em&gt;&lt;/strong&gt;) Container.DataItem).Title %&amp;gt;"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:DataList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class="clear"&gt;NOTE: For brevity and to make it fit on the page, I've shortened the above code. You'll need to &lt;strong&gt;expand each of the five &lt;em&gt;&lt;code&gt;Image&lt;/code&gt;&lt;/em&gt; casts to use the fully qualified class name, &lt;code&gt;Subtext.Framework.Components.Image&lt;/code&gt;&lt;/strong&gt;.&lt;/p&gt;
&lt;h3&gt;Coming to a Subtext Installation Near You&lt;/h3&gt;
&lt;p class="clear"&gt;I've made some changes for the next version of Subtext (the &lt;a title="Subtext v1.9.6 - coming soon!" href="http://haacked.com/archive/2007/06/24/subtext-extensibility-notes.aspx" rel="external"&gt;recently announced v1.9.6&lt;/a&gt;) that will make the data binding expressions a bit more concise and easier to read. So starting with the next release you'll be able to do this&lt;/p&gt;
&lt;div class="dropshadow"&gt;
&lt;div class="innerbox"&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;asp:DataList&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;="ThumbNails"&lt;/span&gt; &lt;span class="attr"&gt;runat&lt;/span&gt;&lt;span class="kwrd"&gt;="server"&lt;/span&gt;
  &lt;span class="attr"&gt;RepeatColumns&lt;/span&gt;&lt;span class="kwrd"&gt;="4"&lt;/span&gt; &lt;span class="attr"&gt;RepeatDirection&lt;/span&gt;&lt;span class="kwrd"&gt;="Horizontal"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;="thumbnail"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt; &lt;span class="attr"&gt;href&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%# BaseImagePath + 
        &lt;strong&gt;EvalImage&lt;/strong&gt;(Container.DataItem).ResizedFile %&amp;gt;"&lt;/span&gt; 
        &lt;span class="attr"&gt;title&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%# &lt;strong&gt;EvalImage&lt;/strong&gt;(Container.DataItem).Title %&amp;gt;"&lt;/span&gt; 
        &lt;span class="attr"&gt;rel&lt;/span&gt;&lt;span class="kwrd"&gt;="lightbox[&amp;lt;%# &lt;strong&gt;EvalImage&lt;/strong&gt;(Container.DataItem).CategoryID %&amp;gt;]"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%# BaseImagePath + 
          &lt;strong&gt;EvalImage&lt;/strong&gt;(Container.DataItem).ThumbNailFile %&amp;gt;"&lt;/span&gt; 
          &lt;span class="attr"&gt;alt&lt;/span&gt;&lt;span class="kwrd"&gt;="&amp;lt;%# &lt;strong&gt;EvalImage&lt;/strong&gt;(Container.DataItem).Title %&amp;gt;"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;    
      &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;a&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;ItemTemplate&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;asp:DataList&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class="clear"&gt;I'll play around with the controller some more to see if we can make the code even more expressive - but no promises!&lt;/p&gt;
&lt;h3&gt;See it in action!&lt;/h3&gt;
&lt;p class="clear"&gt;You can see the Lightbox2 and Subtext Galleries integration in action in my galleries. Check this one out: &lt;a title="On the Town..." href="http://stevenharman.net/blog/gallery/21.aspx"&gt;On the Town...&lt;/a&gt;&lt;/p&gt;
&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:e09e22b6-557c-4625-b19c-75e00c5c6bca" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/subtext"&gt;subtext&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/lightbox"&gt;lightbox&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/asp.net"&gt;asp.net&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/open%20source"&gt;open source&lt;/a&gt;&lt;/div&gt;&lt;img src="http://stevenharman.net/blog/aggbug/12603.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Steven Harman</dc:creator>
            <guid>http://stevenharman.net/blog/archive/2007/06/24/lightbox-and-subtext-galleries-integration.aspx</guid>
            <pubDate>Mon, 25 Jun 2007 02:25:47 GMT</pubDate>
            <comments>http://stevenharman.net/blog/archive/2007/06/24/lightbox-and-subtext-galleries-integration.aspx#feedback</comments>
            <slash:comments>5</slash:comments>
            <wfw:commentRss>http://stevenharman.net/blog/comments/commentRss/12603.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Nominate Subtext For a 2007 Community Choice Award</title>
            <link>http://stevenharman.net/blog/archive/2007/06/24/nominate-subtext-for-a-2007-community-choice-award.aspx</link>
            <description>&lt;blockquote&gt; &lt;p&gt;The &lt;a title="Create, Participate, Evaluate" href="http://sourceforge.net/" rel="external"&gt;SourceForge.net&lt;/a&gt; team is proud to present our second annual Community Choice Awards. Winners are selected by community members like you, and it's that time again! Cast a ballot for your favorite projects now and make your voice heard.&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;That short blurb pretty much says it all. &lt;/p&gt; &lt;div class="dropshadow"&gt; &lt;div class="innerbox contrast"&gt;&lt;a title="Nominate and Vote!" href="http://sourceforge.net/awards/cca/nomination.php?group_id=137896&amp;amp;from=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fsubtext%2F" rel="external"&gt;&lt;img alt="Nominate and Vote!" src="http://sourceforge.net/images/cca/nomProj.png" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt; &lt;p class="clear"&gt;The Community Choice Awards are a chance for you, the community of open source software users, to nominate and then vote on the projects that you find most useful, best designed, most collaborative, etc... Actually, there are eleven different categories that a project can be nominated for - though some may not be applicable to all projects.&lt;/p&gt; &lt;h3&gt;How it works&lt;/h3&gt; &lt;p&gt;Each project is eligible for nomination in any of the eleven categories. The projects with the most nominations in each category will become finalists in that category.&lt;/p&gt; &lt;p class="update"&gt;NOTE: You can &lt;strong&gt;nominate a project for any number of categories, but only once per category&lt;/strong&gt;.&lt;/p&gt; &lt;p&gt;Next a voting period will open up during which community members, &lt;em&gt;that's you&lt;/em&gt;, will cast votes to determine the winners.&lt;/p&gt; &lt;h3&gt;When?&lt;/h3&gt; &lt;ul&gt; &lt;li&gt;Nomination Period: June 4&lt;sup&gt;th&lt;/sup&gt; - June 29&lt;sup&gt;th&lt;/sup&gt;.  &lt;/li&gt;&lt;li&gt;Voting Period: July 9&lt;sup&gt;th&lt;/sup&gt; - July 26&lt;sup&gt;th&lt;/sup&gt;.&lt;/li&gt;&lt;/ul&gt; &lt;h3&gt;What to do&lt;/h3&gt; &lt;p&gt;If the nomination period is still open, go &lt;a title="SourceForge.net 2007 Community Choice Awards" href="http://sourceforge.net/awards/cca/nomination.php?group_id=137896&amp;amp;from=http%3A%2F%2Fsourceforge.net%2Fprojects%2Fsubtext%2F" rel="external"&gt;submit your nominations for Subtext&lt;/a&gt;.&lt;/p&gt; &lt;p&gt;If nominations are closed but there's still time to vote... &lt;a title="SourceForge.net 2007 Community Choice Awards" href="http://sourceforge.net/awards/cca/" rel="external"&gt;Go VOTE!&lt;/a&gt;&lt;/p&gt; &lt;p&gt;&lt;/p&gt; &lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:ef43b523-f261-4d87-95c8-ccfeb39660ac" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a rel="tag" href="http://technorati.com/tags/subtext"&gt;subtext&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/sourceforge"&gt;sourceforge&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/community%20choice%20awards"&gt;community choice awards&lt;/a&gt;, &lt;a rel="tag" href="http://technorati.com/tags/open%20source"&gt;open source&lt;/a&gt;&lt;/div&gt;&lt;img src="http://stevenharman.net/blog/aggbug/12602.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Steven Harman</dc:creator>
            <guid>http://stevenharman.net/blog/archive/2007/06/24/nominate-subtext-for-a-2007-community-choice-award.aspx</guid>
            <pubDate>Sun, 24 Jun 2007 23:55:28 GMT</pubDate>
            <comments>http://stevenharman.net/blog/archive/2007/06/24/nominate-subtext-for-a-2007-community-choice-award.aspx#feedback</comments>
            <slash:comments>4</slash:comments>
            <wfw:commentRss>http://stevenharman.net/blog/comments/commentRss/12602.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Tip: Put Connection Strings in Their Own Configuration File</title>
            <link>http://stevenharman.net/blog/archive/2007/06/07/tip-put-connection-strings-in-their-own-configuration-file.aspx</link>
            <description>&lt;p&gt;asp.net 2.0 introduced a new section in the &lt;code&gt;web.config&lt;/code&gt; file -&lt;code&gt;ConnectionStrings&lt;/code&gt;. This new configuration section allows you to add connection strings in your &lt;code&gt;web.config&lt;/code&gt;, like we always have, or in a different data source.&lt;/p&gt; &lt;p&gt;In &lt;a title="Subtext Project" href="http://subtextproject.com"&gt;Subtext&lt;/a&gt; 2.0 we're using this new feature to &lt;strong&gt;split the connection string out into a new configuration file&lt;/strong&gt;, &lt;code&gt;user.config&lt;/code&gt;. Doing this should make day to day development easier for our development team by reducing the number of merge conflicts in &lt;code&gt;web.config&lt;/code&gt;. Since most every developer has a different database configuration, it makes sense to keep this information in its own file and away from the other &lt;em&gt;more static&lt;/em&gt; configuration settings.&lt;/p&gt; &lt;h3&gt;Show me how!&lt;/h3&gt; &lt;p&gt;I'm a visual type of guy and typically get more out of a demo or code sample than from some author's rambling writing... &lt;/p&gt; &lt;p&gt;&lt;strong&gt;Subtext's &lt;code&gt;web.config&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt; &lt;div class="dropshadow"&gt; &lt;div class="innerbox"&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;configuration&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  ...
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;connectionStrings&lt;/span&gt; &lt;span class="attr"&gt;configSource&lt;/span&gt;&lt;span class="kwrd"&gt;="user.config"&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="rem"&gt;&lt;strike&gt;&amp;lt;!-- you can still add connection strings here -&lt;/strike&gt;-&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;connectionStrings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  ...&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class="clear update"&gt;As John pointed out in the comments, when using a &lt;code&gt;configSource&lt;/code&gt; you must move all values under the configuration section into the external file. Which is why I've crossed out the comment in the above code sample.&lt;/p&gt;
&lt;p class="clear"&gt;&lt;strong&gt;The &lt;code&gt;user.config&lt;/code&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="dropshadow"&gt;
&lt;div class="innerbox"&gt;&lt;pre class="csharpcode"&gt;&lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;connectionStrings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;add&lt;/span&gt; &lt;span class="attr"&gt;name&lt;/span&gt;&lt;span class="kwrd"&gt;="subtextData"&lt;/span&gt;
    &lt;span class="attr"&gt;connectionString&lt;/span&gt;&lt;span class="kwrd"&gt;="Server=.;Database=myData;Trusted_Connection=True;"&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;
&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;connectionStrings&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p class="clear"&gt;Then each developer modifies their &lt;code&gt;user.config&lt;/code&gt; file for their setup. No more merging nor conflict issues with that sucker in &lt;code&gt;web.config&lt;/code&gt;. &lt;/p&gt;
&lt;p class="clear"&gt;I realize you could still run into some issues where another developer accidentally checks in their &lt;code&gt;user.config&lt;/code&gt; and then &lt;acronym title="Subversion"&gt;SVN&lt;/acronym&gt; tries to merge the changes into your file. But since the only thing in that file is the connection string settings, you can just revert the other developer's changes without the worry of losing other, intended, changes.&lt;/p&gt;
&lt;h3&gt;Connection string resources&lt;/h3&gt;
&lt;p&gt;In the above code you might have noticed that I set my Server equal to . (dot). I believe that is just shorthand for &lt;code&gt;localhost&lt;/code&gt;, but I don't remember where I picked that up. Does anyone out there know?&lt;/p&gt;
&lt;p&gt;In trying to find out where I first learned that syntax, I used the following resources that might help you get your connection string just right:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://connectionstrings.com/"&gt;ConnectionStrings.com&lt;/a&gt; - an easy reference for connection strings 
&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/jgalloway/archive/2005/12/02/432062.aspx"&gt;localhost vs. (local) in SQL Server connection strings&lt;/a&gt; 
&lt;/li&gt;&lt;li&gt;&lt;a href="http://weblogs.asp.net/jgalloway/archive/2007/02/24/sql-force-the-protocol-tcp-named-pipes-etc-in-your-connection-string.aspx"&gt;Force the protocol in your connection string&lt;/a&gt; - TCP, Named Pipes, etc...&lt;/li&gt;&lt;/ul&gt;
&lt;div class="wlWriterSmartContent" id="0767317B-992E-4b12-91E0-4F059A8CECA8:1599a5ad-9cd8-44c5-9e75-b8bda5cc90ce" contenteditable="false" style="padding-right: 0px; display: inline; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px"&gt;Technorati tags: &lt;a href="http://technorati.com/tags/asp.net" rel="tag"&gt;asp.net&lt;/a&gt;, &lt;a href="http://technorati.com/tags/programming" rel="tag"&gt;programming&lt;/a&gt;, &lt;a href="http://technorati.com/tags/tip/trick" rel="tag"&gt;tip/trick&lt;/a&gt;, &lt;a href="http://technorati.com/tags/database" rel="tag"&gt;database&lt;/a&gt;, &lt;a href="http://technorati.com/tags/connectionstring" rel="tag"&gt;connectionstring&lt;/a&gt;, &lt;a href="http://technorati.com/tags/subtext" rel="tag"&gt;subtext&lt;/a&gt;&lt;/div&gt;&lt;img src="http://stevenharman.net/blog/aggbug/12591.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Steven Harman</dc:creator>
            <guid>http://stevenharman.net/blog/archive/2007/06/07/tip-put-connection-strings-in-their-own-configuration-file.aspx</guid>
            <pubDate>Thu, 07 Jun 2007 22:46:29 GMT</pubDate>
            <comments>http://stevenharman.net/blog/archive/2007/06/07/tip-put-connection-strings-in-their-own-configuration-file.aspx#feedback</comments>
            <slash:comments>13</slash:comments>
            <wfw:commentRss>http://stevenharman.net/blog/comments/commentRss/12591.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>
