<?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"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Irrefragable</title>
	<atom:link href="http://anthony.lorelli.info/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://anthony.lorelli.info</link>
	<description>Anthony Lorelli's weblog</description>
	<lastBuildDate>Mon, 28 Dec 2009 06:02:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>10/22 = 7</title>
		<link>http://anthony.lorelli.info/?p=32</link>
		<comments>http://anthony.lorelli.info/?p=32#comments</comments>
		<pubDate>Fri, 23 Oct 2009 06:54:30 +0000</pubDate>
		<dc:creator>anthony</dc:creator>
				<category><![CDATA[Reliability]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://anthony.lorelli.info/?p=32</guid>
		<description><![CDATA[Windows 7 went on sale today.
I’m enormously pleased about this because for the last two and a half years I’ve been working as a Software Development Engineer in Test (SDET) on the Windows Fundamentals Reliability team. I joined the team (and Microsoft) right as Windows 7 development was getting underway and have been immersed in [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.microsoft.com/windows/windows-7/default.aspx">Windows 7</a> went on sale today.</p>
<p>I’m enormously pleased about this because for the last two and a half years I’ve been working as a Software Development Engineer in Test (SDET) on the Windows Fundamentals Reliability team. I joined the team (and Microsoft) right as Windows 7 development was getting underway and have been immersed in our work on it ever since.</p>
<p>Throughout the development cycle the Reliability team was responsible for driving reliability improvements across Windows as a whole. We tackled this with a range of approaches, one of which was implementing new reliability-related features within Windows. I owned the testing responsibilities for three of these. All three are low-level infrastructure features that won’t be mentioned in an ad campaign, but each has been given some level of exposure as Windows 7 architecture has been  discussed and reviewed in the run-up to its release.</p>
<h3>RADAR – Automatic memory leak detection</h3>
<p>RADAR automatically detects memory leaks in processes running on a Windows 7 system. Most of the public documentation about this feature is an interview that three of my colleagues and I gave to MSDN’s Channel 9. We got to dive into RADAR’s architecture and the impact it has had on Windows 7 throughout its development. The C9 page for the interview has a nice summary of RADAR:</p>
<blockquote><p>RADAR is a memory leak detection technology built into Windows 7 and integrated with Watson (error reporting) and AutoBug (automatic bug filing). It allows Microsoft product teams and third parties to discover and fix memory leaks early in the product cycle and after release. Since RADAR runs on customer machines, leaks can be caught during public betas, after release, and by third parties, thus ridding the entire ecosystem of memory leaks. RADAR-shipped components are highly optimized to have no appreciable performance impact.</p></blockquote>
<p><span style="color: #333333;">The talk is archived here: </span><a href="http://channel9.msdn.com/shows/Going+Deep/RADAR-Windows-Automatic-Memory-Leak-Detection/">Inside Windows 7: RADAR &#8211; Windows Automatic Memory Leak Detection</a>.</p>
<h3>Fault Tolerant Heap (FTH)</h3>
<p>Fault Tolerant Heap (FTH) was, in a lot of ways, the most fascinating of all three features to work on. FTH monitors application crashes on a Windows 7 system. When it thinks it can help FTH applies mitigations on a per-application basis to try to prevent future crashes. The development lead for the project, Silviu Calinoiu, did a great interview with C9 that went into detail about how exactly FTH goes about its crash prevention.</p>
<p>Silviu’s talk is archived here: <a href="http://channel9.msdn.com/shows/Going+Deep/Silviu-Calinoiu-Inside-Windows-7-Fault-Tolerant-Heap/">Silviu Calinoiu: Inside Windows 7 &#8211; Fault Tolerant Heap</a>.</p>
<p>One potential complication for FTH is that developers who are working on a new app may not want FTH’s help – they want their test app to crash so that they can find the problem and fix it. MSDN has a page that discusses how devs can check whether FTH has been enabled for a particular app and, if they choose, disable FTH entirely on a test machine. See here: <a href="http://msdn.microsoft.com/en-us/library/dd744764(VS.85).aspx">Fault Tolerant Heap (Windows)</a>.</p>
<h3>Process Reflection</h3>
<p>Process reflection is a way for a monitor application to clone, or reflect, some target process. Once the operation is complete the clone, or reflection, process has a complete copy of the original target process’s address space which can then be analyzed or dumped to disk for later analysis. Even better, the target process doesn’t have to be suspended or terminated to be reflected which makes process reflection tremendously useful for gathering data from long-running processes like background services or the user shell. Mark Russinovich briefly discusses process reflection and shows a nice demo of it in action in another C9 talk that just went up today: <a title="Mark Russinovich- Inside Windows 7 Redux" href="http://channel9.msdn.com/shows/Going+Deep/Mark-Russinovich-Inside-Windows-7-Redux/">Mark Russinovich- Inside Windows 7 Redux</a>. He starts talking about process reflection at around the 31:00 mark. He also updated his SysInternals procdump tool to optionally use reflection for creating dumps. The updated procdump is available <a href="http://technet.microsoft.com/en-us/sysinternals/dd996900.aspx">here</a>.</p>
<p>It’s been a tremendously satisfying and humbling two and a half years working on Windows 7 together with a great set of colleagues from all over the world. I can’t wait to see what the next two and a half years will bring!</p>
]]></content:encoded>
			<wfw:commentRss>http://anthony.lorelli.info/?feed=rss2&amp;p=32</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Test aphorisms 1-4</title>
		<link>http://anthony.lorelli.info/?p=30</link>
		<comments>http://anthony.lorelli.info/?p=30#comments</comments>
		<pubDate>Mon, 27 Jul 2009 06:26:48 +0000</pubDate>
		<dc:creator>anthony</dc:creator>
				<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://anthony.lorelli.info/?p=30</guid>
		<description><![CDATA[The summer Engineering Forum at Microsoft was held back at the start of June. It’s an annual week-long event where technical staff from across the company present lectures and hold roundtable discussions on a variety of engineering topics. All presentations were organized into topical groups called tracks. For example, there was a designing and testing [...]]]></description>
			<content:encoded><![CDATA[<p>The summer Engineering Forum at Microsoft was held back at the start of June. It’s an annual week-long event where technical staff from across the company present lectures and hold roundtable discussions on a variety of engineering topics. All presentations were organized into topical groups called tracks. For example, there was a designing and testing for reliability track and an effective measurement track.</p>
<p>I attended several days’ worth of presentations and roundtables across multiple tracks. While I learned a lot in the presentations, the thing I’ve spent the most time thinking about was actually a free handout I got on the morning of the first day.</p>
<p>The forum event staff printed up three different styles of notepad to distribute to attendees—one each for developers, testers, and program managers. Each notepad page was bordered by a series of short sayings related to the target discipline. As a tester I picked up the test notepad and then spent the first several minute of the morning session distractedly reading around the edges of the page. I don’t know where the sayings came from originally, or who wrote them, but the sayings on the notepad have proven to be a lot of fun to ponder.</p>
<p>Each saying is short and highly domain-specific. I think of them as test aphorisms—pithy sayings to be unpacked and thought about from many directions. They each make some sort of claim about the right way to test, but sometimes it can be hard to see what justifies the claim, or even what the claim is to begin with.</p>
<p>The first four test aphorisms are as follows. I have interspersed some initial questions to help direct my thinking for each in the future.</p>
<ol>
<li>Trust, but verify.
<ol>
<li>What are we trusting?</li>
<li>What constitutes verification?</li>
</ol>
</li>
<li>Test functionality and the scenario.
<ol>
<li>What constitutes testing functionality or testing a scenario in this context?</li>
<li>What distinguishes one from the other?</li>
<li>Why is that distinction important?</li>
</ol>
</li>
<li>Test the design.
<ol>
<li>How does one test a design?</li>
<li>Is it the same thing as assessing the testability of a design?</li>
</ol>
</li>
<li>It’s a model all the way down.
<ol>
<li>Is the object of the test the model?</li>
<li>Is the test itself the model?</li>
<li>Is it both—a model of a model?</li>
</ol>
</li>
</ol>
<p>Some more general questions:</p>
<ol>
<li>What model of testing do these aphorisms suggest?</li>
<li>What is the justification for the claims implicit in each of them?</li>
<li>What are the weaknesses in these claims?</li>
<li>What actions do these aphorisms entail for the practice of testing?</li>
<li>Can we test the practical value of each of these aphorisms? How?</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://anthony.lorelli.info/?feed=rss2&amp;p=30</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Five definitions of reliability</title>
		<link>http://anthony.lorelli.info/?p=26</link>
		<comments>http://anthony.lorelli.info/?p=26#comments</comments>
		<pubDate>Wed, 08 Jul 2009 05:41:38 +0000</pubDate>
		<dc:creator>anthony</dc:creator>
				<category><![CDATA[Reliability]]></category>
		<category><![CDATA[Testing]]></category>

		<guid isPermaLink="false">http://anthony.lorelli.info/?p=26</guid>
		<description><![CDATA[A large part of my day job revolves around reliability—testing software reliability, testing operating system features that make the software running on it more reliable, working on test tools that look for reliability problems. I think about reliability a lot. And here’s the amazing conclusion I’ve come to:
No one knows what reliability is.
Or, to put [...]]]></description>
			<content:encoded><![CDATA[<p>A large part of my day job revolves around reliability—testing software reliability, testing operating system features that make the software running on it more reliable, working on test tools that look for reliability problems. I think about reliability a lot. And here’s the amazing conclusion I’ve come to:</p>
<p>No one knows what reliability is.</p>
<p>Or, to put it more accurately, no one agrees on the definition of reliability as it applies to software. Is it</p>
<ol>
<li>Predictable behavior? The software should <em>just work</em>—it should respond in the way I expect within a consistent timeframe. This also implies that at a bare minimum it should never crash unexpectedly or corrupt the data I’m working on.</li>
<li>Durability? The software should require very little maintenance over time—or perhaps none at all.</li>
<li>Fault tolerance? The software should continue running even in the presence of multiple unexpected errors.</li>
<li>Diagnosis and repair? If the software does fail for some reason, it should provide convenient tools or resources for recovering from that failure and resuming work.</li>
<li>Efficient use of resources? The software should not use resources in a way that negatively impacts overall system performance.</li>
</ol>
<p>At different times I’ve spoken with individuals who each valued one of the above characterizations of reliability above the others. I think there is a case to be made for each of them.</p>
<p>Generalizing from this multiplicity illuminates what I think is a key aspect of how to think about the quality—the definition of reliability is often domain-specific. Taking the first definition above, for example, who can say what constitutes predictable behavior without also discussing the particulars of the behavior that is expected?</p>
<p>As a tester working on system reliability in general, rather than reliability within the context of a specific component, this presents a dilemma—how can one generically test the reliability of a system if as a quality it is inherently domain-specific?</p>
<p>I’ll end with some of the open-ended questions I’ve been thinking and writing about as I attempt to resolve this dilemma and make progress in my work:</p>
<ol>
<li>How can we model any of the definitions above?</li>
<li>Can we model the environmental factors that induce the behavior we wish to observe?</li>
<li>How can we measure the response in a useful, quantitative manner?</li>
<li>What is our failure model? Is it too coarse? Too fine-grained?</li>
<li>What effect does our failure model have on the measurements we make?</li>
<li>How can we look for these concerns when the code is still at the design stage?</li>
<li>What would be a useful test tool for each of the reliability definitions above? Does it have to be domain-specific or is it possible to think of something generic?</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://anthony.lorelli.info/?feed=rss2&amp;p=26</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Implementing continuations for a virtual machine environment</title>
		<link>http://anthony.lorelli.info/?p=24</link>
		<comments>http://anthony.lorelli.info/?p=24#comments</comments>
		<pubDate>Sun, 28 Jun 2009 06:06:10 +0000</pubDate>
		<dc:creator>anthony</dc:creator>
				<category><![CDATA[Interpreters]]></category>
		<category><![CDATA[Programming languages]]></category>

		<guid isPermaLink="false">http://anthony.lorelli.info/?p=24</guid>
		<description><![CDATA[When I was a graduate student at CSU, Chico I wrote my master’s thesis on how to implement Scheme-style continuations within the context of the .NET CLR – Implementing Continuations for a Virtual Machine Environment.
Traditional continuation implementation techniques depend on the ability to modify the area of memory holding the runtime call stack, but the CLR [...]]]></description>
			<content:encoded><![CDATA[<p>When I was a graduate student at <a href="http://www.csuchico.edu/">CSU, Chico</a> I wrote my master’s thesis on how to implement Scheme-style continuations within the context of the .NET CLR – <a href="http://anthony.lorelli.info/docs/thesis_anthony_lorelli.pdf"><em>Implementing Continuations for a Virtual Machine Environment</em></a>.</p>
<p>Traditional continuation implementation techniques depend on the ability to modify the area of memory holding the runtime call stack, but the CLR and similar VMs such as the JVM prevent this for security reasons. Nonetheless, it is still possible to implement continuations through a variety of means.</p>
<p>To explore these alternative implementations I built a model Scheme interpreter in C#. I then presented four separate methods of implementing continuations, each with their own set of tradeoffs.</p>
<p>The four methods are:</p>
<ol>
<li><em>Exceptions</em>. The exceptions that currently exist in the CLR and JVM can be viewed as one-shot escaping continuations. As such they can provide the basis for first-class continuations that also have the same behavior. Last I checked the <a href="http://jscheme.sourceforge.net/jscheme/main.html">JScheme</a> Java Scheme interpreter used this method for its continuations.</li>
<li><em>Heap</em>. Instead of using the CLR stack an interpreter can maintain its own stack in heap memory. This allows the interpreter to implement reusable first-class continuations. However it also effectively requires the interpreter to act as a separate VM running within the context of the parent instance of the CLR or JVM. <a href="http://sisc-scheme.org/">SISC</a> is an example of an interpreter that uses this method.</li>
<li><em>Stack reconstruction</em>. With the right kind of artful manipulation an interpreter can use the exception mechanism in the CLR to inspect the current runtime stack in order to build a logical model of its contents and, when necessary, clear the current stack and replace it with a new stack built from one of the models. The method comes from papers by <a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.27.7938">Sekiguchi, Sakamoto, and Yonezawa</a> and <a href="http://www.cs.brown.edu/~sk/Publications/Papers/Published/pcmkf-cont-from-gen-stack-insp/">Pettyjohn, Clements, Marshall, Krishnamurthi, and Felleisen</a>. At the time I wrote my thesis there were no publicly-available interpreters I could find that used it.</li>
<li><em>Threads</em>. The thread method for implementing continuations also revolves around viewing an existing runtime facility in a novel context. In this method threads are treated as stack segment containers. When a continuation is captured the current thread is suspended and a new thread is created and started to continue execution. Invoking a continuation discards the current thread and restarts the thread that was suspended when the continuation was captured. The method comes from <a href="http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.33.6234">Feeley</a>. The architectural limitations this implies for the continuations that result are similar to the exception method.</li>
</ol>
<p>Ultimately I argued that the stack reconstruction method was superior, since it was the only method that could provide unlimited continuations while still using the CLR runtime call stack to maintain execution context.</p>
<p>The PDF for the document is <a href="http://anthony.lorelli.info/docs/thesis_anthony_lorelli.pdf">now available here at lorelli.info</a>. The appendices contain the complete C# code for the four variations of the Scheme interpreter described above.</p>
]]></content:encoded>
			<wfw:commentRss>http://anthony.lorelli.info/?feed=rss2&amp;p=24</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mad world</title>
		<link>http://anthony.lorelli.info/?p=13</link>
		<comments>http://anthony.lorelli.info/?p=13#comments</comments>
		<pubDate>Tue, 18 Nov 2008 06:31:51 +0000</pubDate>
		<dc:creator>anthony</dc:creator>
				<category><![CDATA[Games]]></category>

		<guid isPermaLink="false">http://anthony.lorelli.info/?p=13</guid>
		<description><![CDATA[I know I&#8217;m &#8211; what, two years? &#8211; late with this, but the Gears of War ad with the cover of &#8220;Mad World&#8221; by Gary Jules and Michael Andrews is one of the best game advertisements ever.

The way the music recontextualizes the game footage astonishes me each time I watch it.




]]></description>
			<content:encoded><![CDATA[<p>I know I&#8217;m &#8211; what, two years? &#8211; late with this, but the <em>Gears of War</em> ad with the cover of &#8220;Mad World&#8221; by Gary Jules and Michael Andrews is one of the best game advertisements ever.</p>
<p><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="425" height="344" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="src" value="http://www.youtube.com/v/ccWrbGEFgI8&amp;hl=en&amp;fs=1" /><embed type="application/x-shockwave-flash" width="425" height="344" src="http://www.youtube.com/v/ccWrbGEFgI8&amp;hl=en&amp;fs=1"></embed></object></p>
<p>The way the music recontextualizes the game footage astonishes me each time I watch it.</p>
<p><a type="\&quot;application/x-shockwave-flash\&quot;" href="&lt;object width=\&quot;425\&quot; height=\&quot;344\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/ccWrbGEFgI8&amp;hl=en&amp;fs=1\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowFullScreen\&quot; value=\&quot;true\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowscriptaccess\&quot; value=\&quot;always\&quot;&gt;&lt;/param&gt;&lt;embed src="></a></p>
<p><a type="\&quot;application/x-shockwave-flash\&quot;" href="&lt;object width=\&quot;425\&quot; height=\&quot;344\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/ccWrbGEFgI8&amp;hl=en&amp;fs=1\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowFullScreen\&quot; value=\&quot;true\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowscriptaccess\&quot; value=\&quot;always\&quot;&gt;&lt;/param&gt;&lt;embed src="></a></p>
<p><a type="\&quot;application/x-shockwave-flash\&quot;" href="&lt;object width=\&quot;425\&quot; height=\&quot;344\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/ccWrbGEFgI8&amp;hl=en&amp;fs=1\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowFullScreen\&quot; value=\&quot;true\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowscriptaccess\&quot; value=\&quot;always\&quot;&gt;&lt;/param&gt;&lt;embed src="></a></p>
<p><a type="\&quot;application/x-shockwave-flash\&quot;" href="&lt;object width=\&quot;425\&quot; height=\&quot;344\&quot;&gt;&lt;param name=\&quot;movie\&quot; value=\&quot;http://www.youtube.com/v/ccWrbGEFgI8&amp;hl=en&amp;fs=1\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowFullScreen\&quot; value=\&quot;true\&quot;&gt;&lt;/param&gt;&lt;param name=\&quot;allowscriptaccess\&quot; value=\&quot;always\&quot;&gt;&lt;/param&gt;&lt;embed src="></a></p>
]]></content:encoded>
			<wfw:commentRss>http://anthony.lorelli.info/?feed=rss2&amp;p=13</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Other family weblogs</title>
		<link>http://anthony.lorelli.info/?p=9</link>
		<comments>http://anthony.lorelli.info/?p=9#comments</comments>
		<pubDate>Wed, 13 Aug 2008 06:01:20 +0000</pubDate>
		<dc:creator>anthony</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://anthony.lorelli.info/?p=9</guid>
		<description><![CDATA[There are a couple more weblogs on lorelli.info. Emily started a new weblog at emily.lorelli.info. We also started a family weblog at family.lorelli.info.
The original photo galleries are still MIA. Eventually I&#8217;d like to get them back up at the new web host. I&#8217;ll probably change the format significantly though. I used to export pages straight [...]]]></description>
			<content:encoded><![CDATA[<p>There are a couple more weblogs on lorelli.info. Emily started a new weblog at <a href="http://emily.lorelli.info/">emily.lorelli.info</a>. We also started a family weblog at <a href="http://family.lorelli.info/">family.lorelli.info</a>.</p>
<p>The original photo galleries are still MIA. Eventually I&#8217;d like to get them back up at the new web host. I&#8217;ll probably change the format significantly though. I used to export pages straight out of iWeb, which worked well enough, and before that I used <a href="http://gallery.menalto.com/">Gallery</a>. Now with the change in hosts I&#8217;d like to see what new photo gallery web apps are available. I&#8217;m particularly interested in <a href="http://www.zenphoto.org/">Zenphoto</a> - the demo galleries make a good first impression.</p>
]]></content:encoded>
			<wfw:commentRss>http://anthony.lorelli.info/?feed=rss2&amp;p=9</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Here we go again</title>
		<link>http://anthony.lorelli.info/?p=5</link>
		<comments>http://anthony.lorelli.info/?p=5#comments</comments>
		<pubDate>Tue, 12 Aug 2008 06:24:31 +0000</pubDate>
		<dc:creator>anthony</dc:creator>
				<category><![CDATA[Life]]></category>

		<guid isPermaLink="false">http://anthony.lorelli.info/?p=5</guid>
		<description><![CDATA[Finally put a weblog back up. It&#8217;s Monday. The Olympics are on. Let&#8217;s go.
]]></description>
			<content:encoded><![CDATA[<p>Finally put a weblog back up. It&#8217;s Monday. The Olympics are on. Let&#8217;s go.</p>
]]></content:encoded>
			<wfw:commentRss>http://anthony.lorelli.info/?feed=rss2&amp;p=5</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
