<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>BUGBUG: poor title : microsoft</title><link>http://blogs.msdn.com/richardb/archive/tags/microsoft/default.aspx</link><description>Tags: microsoft</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>DST 2007 issues in SourceSafe</title><link>http://blogs.msdn.com/richardb/archive/2007/01/29/dst-2007-issues-in-sourcesafe.aspx</link><pubDate>Mon, 29 Jan 2007 23:37:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1552805</guid><dc:creator>Richard Berg</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/richardb/comments/1552805.aspx</comments><wfw:commentRss>http://blogs.msdn.com/richardb/commentrss.aspx?PostID=1552805</wfw:commentRss><wfw:comment>http://blogs.msdn.com/richardb/rsscomments.aspx?PostID=1552805</wfw:comment><description>&lt;p&gt;The rules for U.S. daylight savings time are &lt;a href="http://www.energy.ca.gov/daylightsaving.html"&gt;changing in 2007&lt;/a&gt;.&amp;nbsp; SourceSafe cares about time zones, so you should too.&amp;nbsp; Complete details are in &lt;a href="http://support.microsoft.com/?kbid=931804"&gt;KB article 931804&lt;/a&gt;.&amp;nbsp; To quote one section heading, "&lt;strong&gt;If you do not update the servers and client computers, you may lose check-in information&lt;/strong&gt;".&amp;nbsp; &lt;/p&gt; &lt;p&gt;There, do I have your attention now?&amp;nbsp;:)&amp;nbsp; &lt;/p&gt; &lt;p&gt;[Thanks to everyone who helped put this article together.&amp;nbsp; People inside &amp;amp; outside of MS often complain about the difficulty of maintaining the KB -- rightfully so in some cases.&amp;nbsp;&amp;nbsp;This article went from idea to the web in under a week, so it can be done!]&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1552805" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/richardb/archive/tags/vss/default.aspx">vss</category><category domain="http://blogs.msdn.com/richardb/archive/tags/microsoft/default.aspx">microsoft</category></item><item><title>Tidbits: life under a Limited User Account (LUA)</title><link>http://blogs.msdn.com/richardb/archive/2006/12/15/tidbits-life-under-a-limited-user-account-lua.aspx</link><pubDate>Sat, 16 Dec 2006 03:29:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1300219</guid><dc:creator>Richard Berg</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/richardb/comments/1300219.aspx</comments><wfw:commentRss>http://blogs.msdn.com/richardb/commentrss.aspx?PostID=1300219</wfw:commentRss><wfw:comment>http://blogs.msdn.com/richardb/rsscomments.aspx?PostID=1300219</wfw:comment><description>&lt;p&gt;I'm about to wipe my main work machine and install Vista RTM x64.&amp;nbsp; Wish me luck.&amp;nbsp; Sure, people @ MS wipe their boxen all the time, but I'm not one of them: this install of Win2k3 has lasted me since 6/29/2005.&amp;nbsp; (For reference, I was hired in April '05 and received this machine in early June.&amp;nbsp; So other than a couple months with the noisy old Athlon MP that our office hands from incoming sucker to sucker, and a couple weeks testing the x64 waters when this shiny machine arrived, this install has spanned my entire career.)&amp;nbsp; &lt;/p&gt; &lt;p&gt;Furthermore, I probably have the least Vista experience in the whole company.&amp;nbsp; Despite endless exhortations, I only installed it on my test box after RTM.&amp;nbsp; Adoption drivers, if you're reading: blame the lack of upgrade path from Win2k3 + the fact our Raleigh boot server is not &lt;a href="http://technet.microsoft.com/en-us/windowsvista/aa905119.aspx"&gt;WDS&lt;/a&gt; capable.&amp;nbsp; For home dogfooding, meanwhile, blame IHVs: can't upgrade any of those machines until the Emu 1212M, nVidia DualTV, and 3ware 7000 series are onboard, respectively.&amp;nbsp; Much as I cling to long-running software installs (the opposite of every other PC enthusiast, it seems), I swear it wasn't fear: I absorbed Office 2007 releases as early &amp;amp; often as possible and never looked back.*&lt;/p&gt; &lt;p&gt;Sure I saw several Beta1+ Vistas during major Whidbey test passes --&amp;nbsp;QA uses scores of lab machines to exercise configuration combos.&amp;nbsp; Conclusion: Vista's impact on my scenarios was far lower than most other variables in the support matrix.&amp;nbsp; Whatever people say about the Vista interface, it's way easier for a newbie to navigate than Arabic WinXP or Japanese TFS are.&amp;nbsp; But that phase of my career ended several months ago, just as Vista was really coming to life.&amp;nbsp; Owning SourceSafe is a much bigger responsibility, yet it's also been an escape from&amp;nbsp;the usual DevDiv overhead.&amp;nbsp; So come fall '06, still no quality time with Vista.&lt;/p&gt; &lt;p&gt;*with one exception I'll blog about some other time&lt;/p&gt; &lt;p&gt;----&lt;/p&gt; &lt;p&gt;This post was supposed to detail a few LUA issues I debugged in my first few days of living with a Vista test box, plus complete the final "draft" article sitting in Live Writer so it wouldn't be lost in the main box's wipe.&amp;nbsp; So far I've done neither.&amp;nbsp; Onward!&lt;/p&gt; &lt;ol&gt; &lt;li&gt;UAC prompts weren't pre-filling the admin account's username.&amp;nbsp; When you're first setting up a box, you inevitably hit UAC a lot; typing "machineName\adminName" each time was getting old quickly.&amp;nbsp; (No, logging in as the local admin wouldn't help;&amp;nbsp;that would have me&amp;nbsp;typing my domain credentials instead, just as frequently.)&amp;nbsp; My previous experiences with UAC were brief, but I knew it wasn't &lt;em&gt;that&lt;/em&gt; annoying.&amp;nbsp; I searched &amp;amp; searched for an answer...my complaint to the UAC&amp;nbsp;talk&amp;nbsp;alias was nearly composed when I finally found &lt;a href="http://blogs.msdn.com/uac/archive/2006/10/12/uac-bug-empty-user-name-field.aspx"&gt;this post&lt;/a&gt;.&amp;nbsp; Thank you, Daniel!&lt;br&gt;&lt;/li&gt; &lt;li&gt;I type things like "{pushd | start | dir}&amp;nbsp;\\someMachine\d$\&amp;lt;tab complete...&amp;gt;" a LOT.&amp;nbsp; Always will, at least until &lt;a href="http://blogs.msdn.com/jmanning/"&gt;James&lt;/a&gt; gets me fully hooked on PowerShell.&amp;nbsp; You probably see where this is going: when your main network account isn't an administrator on someMachine, admin shares stop working.&amp;nbsp; It's not hard to add some trivially named shares and lose the '$', but it adds conscious thought to&amp;nbsp;commands that used to be rote.&amp;nbsp; Oh well.&lt;br&gt;&lt;/li&gt; &lt;li&gt;Soon as I set up FolderShare, it was stymied.&amp;nbsp; I didn't save the exact error message but it was along the lines of "FolderShare could not write to c:\program files\sync\foo\foo.exe.&amp;nbsp; Retry | Close"&amp;nbsp; First of all, how annoying is it that the only workaround is to close FolderShare?&amp;nbsp; Can't you just disable that library?&amp;nbsp; So begins the only true debugging challenge.&lt;/li&gt; &lt;ol&gt; &lt;li&gt;We all know non-admins can't write to Program Files, so step 1 was to grant Modify permission to the Users group on Program Files\Sync.**&amp;nbsp; Click Retry.&amp;nbsp; No dice.&lt;/li&gt; &lt;li&gt;I notice my account is not actually a member of Users, but of Remote Desktop Users.&amp;nbsp; I try manually adding myself to Users as well.&amp;nbsp; (if that fixed it, i.e. RD Users didn't inherit User permissions, I would have to yell at someone!)&amp;nbsp; Somewhere in here I also discover the new Effective Permissions tab in the shell.&amp;nbsp; Very nice...and confirms that this is not the problem.&amp;nbsp; Retry fails again.&lt;/li&gt; &lt;li&gt;Time for &lt;a href="http://www.microsoft.com/technet/sysinternals/processesandthreads/processmonitor.mspx"&gt;Process Monitor&lt;/a&gt;.&amp;nbsp; Since FolderShare hasn't been able to drop my toolset into place yet, I manually download it to Program Files\Sync\SysInternals\procmon.exe.&amp;nbsp; Before I can fire it up, though, I notice that accevent32.exe, accexplorer32.exe, etc. are starting to appear in the folder I just created!&amp;nbsp; I manually create another folder under Sync, and sure enough files (but no subfolders) start being pushed there too.&lt;/li&gt; &lt;li&gt;Armed with the theory that I've somehow granted a set of ACLs that allows new files but not new folders, I head back to my elevated shell and give my user Full Control + ownership.&amp;nbsp; Doesn't help.&lt;/li&gt; &lt;li&gt;So, I need ProcMon after all.&amp;nbsp; Filtering on foldershare.exe and the Sync dir, I see that among a sea of successful Querys that CreateFile attempts on Sync's subfolders come back as REPARSE, but there are no actual failures in sight.&amp;nbsp;&amp;nbsp;Mysterious.&amp;nbsp; I know all about NTFS reparse points, but that sequence of calls &amp;amp; return values tells me nothing.&amp;nbsp; Luckily ProcMon has an awesome feature that displays the full stack of each filesystem call.&amp;nbsp; This quickly tells me that foldershare is actually calling RenameFile(), not CreateFile().&amp;nbsp;&amp;nbsp;Thus, the piece of activity I'm looking at is actually the behavior of an internal Windows function.&amp;nbsp; Furthermore, it's now obvious what's happening (or failing to happen): FolderShare must download to a temp location and then move completed items into place.&amp;nbsp; Still, why would moving from A to B require any more permissions than creating something at B?&lt;/li&gt; &lt;li&gt;Regardless, I know I must remove my path filter.&amp;nbsp; It's ugly -- as I knew from past experience, an unfiltered FolderShare loves to fill up ProcMon logs with hundreds of thousands of entries.&amp;nbsp; But I know what I'm looking for: some sort of anomaly around creating + moving temp files.&amp;nbsp; I soon find it when I spot activity not only under the expected c:\foldersharetemp, but under c:\Users\me\AppData\Local\VirtualStore.&amp;nbsp; Hooray for the vastly simplified name of these directories!&amp;nbsp; But what is VirtualStore?&amp;nbsp; Quick Google tells me it's the root for filesystem redirection: something I'd experienced firsthand in my testing around WOW64, and that I'd read would be used for lots of shimming in Vista, but had not really put 2 &amp;amp; 2 together.&amp;nbsp; I'm also quickly reminded that shimming can be turned off by providing a manifest for your binaries.&lt;/li&gt; &lt;li&gt;So, what does a manifest for a native app look like anyway?&amp;nbsp; Web searches lead me to tons of pages telling me how to add manifests to the Visual Studio build process, a few pages describing the schema for manifests on managed code, but precious little on native code.&amp;nbsp; Surely the format whose root XML node is "assembly" is for managed code only, right?&amp;nbsp; Sadly, the web offers no alternatives, so I copy/paste a sample anyway &amp;amp; restart Foldershare.&amp;nbsp; &lt;/li&gt; &lt;li&gt;Won't load.&amp;nbsp; Syntax error or wrong schema entirely?&amp;nbsp; The event log won't tell me, so all I can do is optimistically eyeball the syntax and try again.&amp;nbsp; Before long Foldershare loads and happily starts writing to Program Files\Sync.&amp;nbsp; &lt;strong&gt;Success&lt;/strong&gt;!&amp;nbsp; So yes, fair web travelers: those manifest samples full of tags like &lt;em&gt;&amp;lt;assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="Sample" type="win32" /&amp;gt; &lt;/em&gt;really do apply to native code.&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt; &lt;p&gt;**this is where I store apps that don't require installation, making them perfect for FolderSharing.&amp;nbsp; Command line tools, sysinternals, dozens of A/V applets, and lots of misc cool stuff.&amp;nbsp; This category of apps also tends to be freeware or open source, which lead to frequent updates.&amp;nbsp; Finally, a lot of them write user data to their containing folder, either because they're cross-platform or simply amateurish.&amp;nbsp; Thus ends my justification for breaking the principle of least privilege.&lt;/p&gt; &lt;p&gt;Wow.&amp;nbsp; This became a heckuva long post, especially for the offtopic&amp;nbsp;category.&amp;nbsp;&amp;nbsp;Despite my earlier self-deprecation the fact is&amp;nbsp;I'm &lt;em&gt;not &lt;/em&gt;ignorant of MS tech trends, especially relative to the huge non-Softie world out there.&amp;nbsp; I knew upfront my first few days under LUA would present trials, yet more than once I found myself wishing&amp;nbsp;the causes &amp;amp; solutions were easier to find.&amp;nbsp; I do know our published info &amp;amp; general transparency is better than it's ever been, and will continue to improve.&amp;nbsp; Novel length or not, I sincerely hope blogging my experiences adds to that momentum in some small way.&lt;/p&gt; &lt;p&gt;Soon as I publish, my next move will literally be Start -&amp;gt; Shut Down, rebooting onto a DVD and into a brave new world.&amp;nbsp; Farewell, dear c:\.&amp;nbsp; See ya on the other side.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1300219" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/richardb/archive/tags/microsoft/default.aspx">microsoft</category><category domain="http://blogs.msdn.com/richardb/archive/tags/personal/default.aspx">personal</category></item><item><title>When your feature hits the blogosphere: SCM and the Windows Shutdown crapfest</title><link>http://blogs.msdn.com/richardb/archive/2006/12/01/when-your-feature-hits-the-blogosphere-scm-and-the-windows-shutdown-crapfest.aspx</link><pubDate>Fri, 01 Dec 2006 18:23:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:1184967</guid><dc:creator>Richard Berg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/richardb/comments/1184967.aspx</comments><wfw:commentRss>http://blogs.msdn.com/richardb/commentrss.aspx?PostID=1184967</wfw:commentRss><wfw:comment>http://blogs.msdn.com/richardb/rsscomments.aspx?PostID=1184967</wfw:comment><description>&lt;p&gt;Moishe Lettvin has a &lt;a href="http://www.drizzle.com/~lettvin/2006/11/windows-shutdown-crapfest.html"&gt;great blog entry&lt;/a&gt;, an inside look at&amp;nbsp;how a&amp;nbsp;Vista feature ate thousands of man-hours on its way to the lowest common denominator.&amp;nbsp; I don't mind the UI myself (and certainly won't justify Joel's histrionics with a link) but it does illustrate several common pitfalls in large-scale software development.&lt;/p&gt; &lt;blockquote&gt; &lt;p&gt;&lt;em&gt;Windows has a tree of repositories: developers check in to the nodes, and periodically the changes in the nodes are integrated up one level in the hierarchy. At a different periodicity, changes are integrated down the tree from the root to the nodes. In Windows, the node I was working on was 4 levels removed from the root. The periodicity of integration decayed exponentially and unpredictably as you approached the root so it ended up that it took between 1 and 3 months for my code to get to the root node, and some multiple of that for it to reach the other nodes. It should be noted too that the only common ancestor that my team, the shell team, and the kernel team shared was the root.&lt;/em&gt;&lt;/p&gt;&lt;/blockquote&gt; &lt;p&gt;Well, branch integration was &lt;em&gt;my &lt;/em&gt;feature.&amp;nbsp; While my job focused more on finding bugs than architecture, you can't own branching &amp;amp; merging at Microsoft without learning a lot about the broader topic of Source Configuration Management (SCM).&amp;nbsp; So I too feel tied to this debate, albeit for a very different reason.&lt;/p&gt; &lt;p&gt;The comments and trackbacks show lots of people dumbfounded at Vista's SCM practices, and not in a good way.&amp;nbsp; Sorry folks -- there are plenty of things from Vista's ship cycle to complain about, but their branch strategy isn't one of them.&amp;nbsp; Granularity in your source control is important&amp;nbsp;for large teams, and protecting the integrity of the root with intermediate stages is even more important.&amp;nbsp; Feel free to argue that the quality gates were too bureaucratic or&amp;nbsp;the integration schedule too random, but they (finally) got the&amp;nbsp;fundamentals right.&lt;/p&gt; &lt;p&gt;Could the particulars of this situation be improved?&amp;nbsp; Sure.&amp;nbsp; As one commenter noted, active development &amp;amp; testing should've been able to happen closer &amp;amp; closer to the root as the feature matured.&amp;nbsp; Even more clearly, the teamwork between dependent feature groups left something to be desired.&amp;nbsp; Much of that is political.&amp;nbsp; And given everything Moishe described I don't think they could've avoiding RI/FI delays entirely.&amp;nbsp;&amp;nbsp;Still, the leadership&amp;nbsp;should've been more willing to create "interdisciplinary" branches for features that were obviously interwoven.&amp;nbsp; (I'm happy to say DevDiv is pioneering this.)&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=1184967" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/richardb/archive/tags/tfs/default.aspx">tfs</category><category domain="http://blogs.msdn.com/richardb/archive/tags/branch/default.aspx">branch</category><category domain="http://blogs.msdn.com/richardb/archive/tags/branchmerge/default.aspx">branchmerge</category><category domain="http://blogs.msdn.com/richardb/archive/tags/microsoft/default.aspx">microsoft</category><category domain="http://blogs.msdn.com/richardb/archive/tags/scm/default.aspx">scm</category></item><item><title>An introduction, 1350 posts later</title><link>http://blogs.msdn.com/richardb/archive/2006/10/17/an-introduction-1350-posts-later.aspx</link><pubDate>Tue, 17 Oct 2006 10:23:07 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:834213</guid><dc:creator>Richard Berg</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/richardb/comments/834213.aspx</comments><wfw:commentRss>http://blogs.msdn.com/richardb/commentrss.aspx?PostID=834213</wfw:commentRss><wfw:comment>http://blogs.msdn.com/richardb/rsscomments.aspx?PostID=834213</wfw:comment><description>&lt;p&gt;On the Microsoft &lt;strong&gt;forums&lt;/strong&gt;, that is...no, I didn't suddenly eclipse&amp;nbsp;&lt;a href="http://blogs.msdn.com/oldnewthing/"&gt;Raymond&lt;/a&gt;.&amp;nbsp;&amp;nbsp;&amp;nbsp;As you probably haven't noticed, this blog has lain dormant for 18 months.&amp;nbsp; (if blog with no readers falls by the wayside, does it make a sound?)&amp;nbsp; Meanwhile, the last 11 months have seen a wild experiment in direct customer interaction.&amp;nbsp; If you have a question about &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=478&amp;amp;SiteID=1"&gt;TFS version control&lt;/a&gt;, &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=22&amp;amp;SiteID=1"&gt;Team Foundation in general&lt;/a&gt;, or &lt;a href="http://forums.microsoft.com/MSDN/ShowForum.aspx?ForumID=50&amp;amp;SiteID=1"&gt;Visual SourceSafe&lt;/a&gt;,&amp;nbsp;odds are good&amp;nbsp;I'll be the one to answer it.&amp;nbsp; Or even more likely, I already have.&lt;/p&gt; &lt;p&gt;It's the latter conclusion that leads me back to blogging.&amp;nbsp; As rewarding as it is to answer day-to-day questions and bring that perspective back to the product design table, it's not terribly efficient.&amp;nbsp; Fortunately several coworkers have done a fabulous job collecting the most common answers; I link them every day.&amp;nbsp; At the same time, it's the nature of online FAQs to become either too narrow (a &lt;a href="http://blogs.msdn.com/buckh/archive/2006/09/14/factory_vs_constructor.aspx"&gt;single&lt;/a&gt; &lt;a href="http://blogs.msdn.com/buckh/archive/2006/09/18/761502.aspx"&gt;Buck&lt;/a&gt; &lt;a href="http://blogs.msdn.com/buckh/archive/2006/09/12/path-is-already-mapped-in-workspace.aspx"&gt;post&lt;/a&gt;) or too shallow (&lt;a href="http://blogs.msdn.com/jimlamb/"&gt;Jim&lt;/a&gt;'s &lt;a href="http://msdn.microsoft.com/vstudio/teamsystem/support/faqs/foundation_techfaq/default.aspx"&gt;"official" page&lt;/a&gt;).&amp;nbsp; On the forum itself, I will often provide some theoretical context, but I never feel like it's a welcome diversion from a customer's very real need to resolve a specific issue, nor is it very discoverable after the fact.&amp;nbsp; (who searches the forum for conceptual material?)&lt;/p&gt; &lt;p&gt;There's an ulterior motive here.&amp;nbsp; You see, even though I'm kicking off a large-scale exploration of Team Foundation Version Control with this post, I don't actually work on TFVC anymore.&amp;nbsp;&amp;nbsp;A few months ago, I shifted positions from &lt;em&gt;SDET on the TFVC Platform team&lt;/em&gt; to &lt;em&gt;'the SourceSafe guy'.&amp;nbsp; &lt;/em&gt;The latter title deserves -- and will get -- its own post, but suffice to say&amp;nbsp;my responsibilities have shifted away from the magical land of &lt;strong&gt;tf merge&lt;/strong&gt;.&amp;nbsp; That means&amp;nbsp;I owe my former teammates a braindump.&amp;nbsp; May as well do it online.&lt;/p&gt; &lt;p&gt;Finally, the new day job requires a lot of nitty-gritty debugging.&amp;nbsp; Cool stuff, sure, but the contrast will make blogging about concepts and design that much more appealing.&amp;nbsp; Not only is TFS architecture spiffy and neat by comparison, but I approached it from a different perspective: while QAs at Microsoft share ownership of the product with devs, they ultimately take the customer's point of view.&amp;nbsp; My exploration may mention tables and queries at some point, but that's not my aim (nor frankly my forte).&amp;nbsp; I'd much rather leave you with a &lt;strong&gt;working mental model &lt;/strong&gt;than a mere English translation of&amp;nbsp;a sproc,&amp;nbsp;much less a one-off workaround.&lt;/p&gt; &lt;p&gt;Ok!&amp;nbsp; Any more intro and I'd be leaving myself a fast-diminishing chance of actually living up to it.&amp;nbsp; Enjoy the exposition...stay tuned for some actual content.&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=834213" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/richardb/archive/tags/tfs/default.aspx">tfs</category><category domain="http://blogs.msdn.com/richardb/archive/tags/vss/default.aspx">vss</category><category domain="http://blogs.msdn.com/richardb/archive/tags/microsoft/default.aspx">microsoft</category></item></channel></rss>