<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom">
  <title>marklio</title>
  <link rel="alternate" type="text/html" href="http://www.marklio.com/marklio/" />
  <link rel="self" href="http://www.marklio.com/marklio/SyndicationService.asmx/GetAtom" />
  <logo>http://photos1.flickr.com/buddyicons/12488026@N00.jpg?1105565509</logo>
  <icon>favicon.ico</icon>
  <updated>2010-04-19T17:09:03.3806591-07:00</updated>
  <author>
    <name>Mark Miller</name>
  </author>
  <subtitle>better than the original</subtitle>
  <id>http://www.marklio.com/marklio/</id>
  <generator uri="http://dasblog.info/" version="2.3.9074.18820">DasBlog</generator>
  <entry>
    <title>Writing a CLR host that uses v4 MetaHost APIs, but can run without v4 installed</title>
    <link rel="alternate" type="text/html" href="http://www.marklio.com/marklio/PermaLink,guid,302cbf45-8107-4a1b-8839-d0f0ba6b4412.aspx" />
    <id>http://www.marklio.com/marklio/PermaLink,guid,302cbf45-8107-4a1b-8839-d0f0ba6b4412.aspx</id>
    <published>2010-04-19T17:09:03.3806591-07:00</published>
    <updated>2010-04-19T17:09:03.3806591-07:00</updated>
    <category term="CLR" label="CLR" scheme="http://www.marklio.com/marklio/CategoryView,category,CLR.aspx" />
    <category term="Software Development" label="Software Development" scheme="http://www.marklio.com/marklio/CategoryView,category,SoftwareDevelopment.aspx" />
    <author>
      <name>Mark</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
A number of CLR hosts may want to update to use the new v4 MetaHost APIs for runtime
activation in order to support in-proc SxS, but want to continue working on a machine
with only v2 installed.  This is a common scenario, used by Office and some other
internal partners, and I imagine it would be a common customer scenario as well.
</p>
        <p>
We’ve already covered that getting off of the legacy shim APIs is critical to supporting
in-proc SxS, but once you move off them, you are stuck only working on a machine that
has v4 installed.  Not to worry, it is fairly easy to “fall-back” to a legacy
activation path in the case that the new APIs are not present.
</p>
        <p>
The gateway to the new MetaHost APIs is CLRCreateInstance, if it isn’t present, you
know that the new APIs aren’t available to use.  So, you simply need to do a
“late-bound” call to it via LoadLibrary/GetProcAddress.  If GetProcAddress returns
NULL, then you need to fallback to the legacy activation (CorBindToRuntimeEx or similar). 
However, the function could be present, but still not be available to use.  The
export is on mscoree.dll, but its implementation actually lives with the runtime itself
(mscoreei.dll, which is new in v4).  If no mscoreei.dll is available to handle
the implementation, mscoree will return E_NOTIMPL from CLRCreateInstance.  This
could occur if your mscoree.dll has been updated as the result of an OS servicing
event, or if you’ve installed/uninstalled .NetFx 4.
</p>
        <p>
So, the basic decision tree is this:
</p>
        <ol>
          <li>
LoadLibrary mscoree. If this doesn’t work, then there is likely no CLR installed at
all, move along, nothing more to see here.</li>
          <li>
GetProcAddress for CLRCreateInstance. If this doesn’t work, fall back to CorBindToRuntimeEx
or similar.</li>
          <li>
Call CLRCreateInstance to get ICLRMetaHost/ICLRMetaHostPolicy.  If this doesn’t
work, fall back to CorBindToRuntimeEx or similar.</li>
          <li>
Otherwise, party on the interface you just got!</li>
        </ol>
        <img width="0" height="0" src="http://www.marklio.com/marklio/aggbug.ashx?id=302cbf45-8107-4a1b-8839-d0f0ba6b4412" />
      </div>
    </content>
  </entry>
  <entry>
    <title>What is useLegacyV2RuntimeActivationPolicy for?</title>
    <link rel="alternate" type="text/html" href="http://www.marklio.com/marklio/PermaLink,guid,ecc34c3c-be44-4422-86b7-900900e451f9.aspx" />
    <id>http://www.marklio.com/marklio/PermaLink,guid,ecc34c3c-be44-4422-86b7-900900e451f9.aspx</id>
    <published>2010-03-12T20:14:59.9003567-07:00</published>
    <updated>2010-03-18T13:42:17.0397666-07:00</updated>
    <category term="CLR" label="CLR" scheme="http://www.marklio.com/marklio/CategoryView,category,CLR.aspx" />
    <category term="Software Development" label="Software Development" scheme="http://www.marklio.com/marklio/CategoryView,category,SoftwareDevelopment.aspx" />
    <category term="Technical" label="Technical" scheme="http://www.marklio.com/marklio/CategoryView,category,Technical.aspx" />
    <author>
      <name>Mark</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
This post is intended to fill a gap in the current MSDN documentation for this attribute
(<a title="http://msdn.microsoft.com/en-us/library/bbx34a2h(VS.100).aspx" href="http://www.marklio.com/marklio/ct.ashx?id=ecc34c3c-be44-4422-86b7-900900e451f9&amp;url=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2flibrary%2fbbx34a2h(VS.100).aspx" target="_blank">http://msdn.microsoft.com/en-us/library/bbx34a2h(VS.100).aspx</a>). 
This gap should be filled by the time .NET 4 ships.
</p>
        <p>
There is alot of confusion about what the useLegacyV2RuntimeActivationPolicy attribute
does.  Most often, it is used to allow a pre-v4 mixed-mode assembly to load in
v4.  In that context, the name makes very little sense.  Below is an explanation
I’ve provided to people internally that explains the attribute in the context for
which it was named.  This should give people a better idea of what it does, as
well as understand some of the subtlies of in-proc SxS.
</p>
        <p>
Ultimately, this attribute has to do with the behavior of the “legacy shim APIs”. 
You can think of these as encompassing several categories of CLR activation: 
</p>
        <ul>
          <li>
CorBindToRuntimeEx and friends - This includes most of the flat exports of mscoree.dll
defined in mscoree.h (GetCORSystemDirectory, GetCORVersion, LoadLibraryShim, etc).
Note, this also includes the strong name APIs defined in strongname.h) 
</li>
          <li>
Pre-v4 COM activation – This includes CoCreateInstance of a CLSID (or type identifier)
whose latest registration is against a pre-v4 runtime version. Note this includes
both the “new” operator on such a co-class from managed code, or the result of Activator.CreateInstance
against a type created by Type.GetTypeFromCLSID on such a CLSID. 
</li>
          <li>
Pre-v4 IJW (mixed mode) activation – For example, calling into a native export on
such an assembly 
</li>
          <li>
Native activation of a native runtime-provided COM CLSID – Such as CoCreateInstance
on ICLRRuntimeHost’s CLSID 
</li>
          <li>
Native activation of a managed framework CLSID – Such as CoCreateInstance on System.ArrayList’s
CLSID (extremely rare)</li>
        </ul>
        <p>
All these have a “single runtime per process” view of the world, so we try to make
those codepaths believe they still exist in that world by “unifying” the version that
they see.  After a given version has been chosen by one of these codepaths, that’s
the version that all of them see for the remainder of the process lifetime. 
Additionally, all of these activation paths had some kind of roll-forward semantics
associated with them.  We “cap” those semantics at v2, meaning by default none
of these codepaths see v4 at all.  This allows us to claim that installing v4
is “non-impactful”.  It should not change the behavior of existing components
when installed. (Note that this has the interesting side-effect of a v4 only machine
appearing to have no runtimes installed at all via these codepaths.)
</p>
        <p>
This is all well and good until someone WANTS those codepaths to see v4.  Rolling
a v2 managed app forward to v4 using a config (without the attribute) works just fine,
unless that app also expects interaction with these “legacy” codepaths to be associated
with the current runtime (v4).  For instance, a p/Invoke to GetCorSystemDirectory
in order to construct a path to Fusion.dll (please don’t do that, BTW) will give you
v2’s fusion.dll.  COM activation of a managed COM object will prefer the runtime
it was built against rather than load into the current runtime (meaning you may be
dealing with interop rather than a concrete CLR type). That may work, and it may not,
depending on what you’re doing. 
</p>
        <p>
The useLegacyV2RuntimeActivationPolicy attribute basically lets you say, “I have some
dependencies on the legacy shim APIs.  Please make them work the way they used
to with respect to the chosen runtime.”  In that context, hopefully the name
makes more sense to you. It is *<b>mostly</b>* equivalent to calling CorBindToRuntimeEx
using the full version string for v4.  We also have a <a href="http://www.marklio.com/marklio/ct.ashx?id=ecc34c3c-be44-4422-86b7-900900e451f9&amp;url=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2flibrary%2fee426955(VS.100).aspx" target="_blank">method
in our new shim APIs</a> to do this programmatically, the difference being that in
a config file, it can be done declaratively, which is useful for a host that uses
config files to determine which runtime to load plugins into. (the attributes value
(or lack of value) is conveyed back to a host via the pdwConfigFlags parameter of <a href="http://www.marklio.com/marklio/ct.ashx?id=ecc34c3c-be44-4422-86b7-900900e451f9&amp;url=http%3a%2f%2fmsdn.microsoft.com%2fen-us%2flibrary%2fdd380612(VS.100).aspx" target="_blank">ICLRMetaHostPolicy::GetRequestedRuntime</a>) 
</p>
        <p>
One of the big reasons people need to do this is if they have a dependency on a pre-v4
IJW assembly.  By default, we can’t allow those to load into v4*.  Putting
this attribute in your config allows this to happen. 
</p>
        <p>
Why don’t we make this the default behavior? You might argue that this behavior is
more compatible, and makes porting code from previous versions much easier. If you’ll
recall, this can’t be the default behavior because it would make installation of v4
impactful, which can break existing apps installed on your machine. 
</p>
        <p>
Well, why don’t we make this the default behavior for v4 managed apps?  Well,
that is precisely the behavior we had for beta 1.  As we started trying to explain
the behavior to people, we found it was very difficult to explain how these legacy
codepaths worked.  We ultimately decided that making the behavior consistent
was better.  The example that ultimately convinced me we had made the right choice
was that the behavior of a library would change based on whether it was hosted by
a native process or a managed one.  That seemed really bad to me. 
</p>
        <p>
You might say, “Why shouldn’t I just set this for every app I have?” Well, the downside
of this attribute is that it turns off in-proc SxS with pre-v4 runtimes.  It
locks them out of the process.  This may not matter to your scenario.  If
you look at some of the runtime tools, they are using this attribute.  Even Visual
Studio uses this attribute.  Don’t just blindly use it though.  If you'
find yourself needing it in something other than a migration aid, or for loading pre-v4
mixed-mode assemblies (which we hope becomes more rare moving forward as people start
updating the interesting mixed-mode binaries out there), I’d like to know about it. 
Leave me a comment! 
</p>
        <p>
Hopefully, you’ve got a better handle on exactly what this attribute means, and can
make a more informed decision about when it is appropriate to use. 
</p>
        <p>
          <em>*There are many engineering challenges around in-proc SxS and IJW assemblies. 
Currently, pre-v4 IJW assemblies can only load into the runtime that is associated
with the “legacy shim APIs”.  But any given IJW assembly (regardless of version)
may only be loaded into a single runtime per process at this time.</em>
        </p>
        <img width="0" height="0" src="http://www.marklio.com/marklio/aggbug.ashx?id=ecc34c3c-be44-4422-86b7-900900e451f9" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Why is AppDomain.AppendPrivatePath Obsolete</title>
    <link rel="alternate" type="text/html" href="http://www.marklio.com/marklio/PermaLink,guid,b00a172c-cf40-41b1-83b7-4a737648c224.aspx" />
    <id>http://www.marklio.com/marklio/PermaLink,guid,b00a172c-cf40-41b1-83b7-4a737648c224.aspx</id>
    <published>2009-05-14T15:41:58.4343377-07:00</published>
    <updated>2009-05-14T15:41:58.4343377-07:00</updated>
    <author>
      <name>Mark</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just posted on the CLR Team Blog about this: <a title="http://blogs.msdn.com/clrteam/archive/2009/05/14/why-is-appdomain-appendprivatepath-obsolete.aspx" href="http://www.marklio.com/marklio/ct.ashx?id=b00a172c-cf40-41b1-83b7-4a737648c224&amp;url=http%3a%2f%2fblogs.msdn.com%2fclrteam%2farchive%2f2009%2f05%2f14%2fwhy-is-appdomain-appendprivatepath-obsolete.aspx">http://blogs.msdn.com/clrteam/archive/2009/05/14/why-is-appdomain-appendprivatepath-obsolete.aspx</a></p>
        <p>
I’m trying to figure out what criteria I will use when determining when I post contents
here, and when I post them on the CLR blog.  I’ll definitely post links here
if I put content up there.
</p>
        <img width="0" height="0" src="http://www.marklio.com/marklio/aggbug.ashx?id=b00a172c-cf40-41b1-83b7-4a737648c224" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Happy Birthday Landon!</title>
    <link rel="alternate" type="text/html" href="http://www.marklio.com/marklio/PermaLink,guid,bf401819-7984-4426-996b-4871810a381f.aspx" />
    <id>http://www.marklio.com/marklio/PermaLink,guid,bf401819-7984-4426-996b-4871810a381f.aspx</id>
    <published>2008-12-15T22:42:57.042248-07:00</published>
    <updated>2008-12-15T22:42:57.042248-07:00</updated>
    <category term="Announcements" label="Announcements" scheme="http://www.marklio.com/marklio/CategoryView,category,Announcements.aspx" />
    <category term="Fun" label="Fun" scheme="http://www.marklio.com/marklio/CategoryView,category,Fun.aspx" />
    <author>
      <name>Mark</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.marklio.com/marklio/ct.ashx?id=bf401819-7984-4426-996b-4871810a381f&amp;url=http%3a%2f%2fwww.flickr.com%2fphotos%2fmarklio%2f2960933442%2f" target="_blank">
            <img style="display: inline; margin-bottom: 5px; margin-left: 0px; margin-right: 5px" border="0" align="left" src="http://farm4.static.flickr.com/3296/2960933442_15ce15b05f.jpg" />
          </a> Today,
is my nephew’s birthday.  I had a great time a few weeks ago, visiting with my
Brother’s family in Midland.  I got to play with Landon and get to know him a
bit.  He’s a hoot.  He’s got a ton of energy, and just goes non-stop. 
If you’ve ever seen the movie “Flubber” (preferably the classic), he’s alot like that
stuff.
</p>
        <p>
Happy Birthday, Landon!
</p>
        <p>
[A quirk in my blog resulted in this post being posted much earlier this month, so
you may have already seen it.  Today is his REAL birthday]
</p>
        <p>
[humorously enough, another quirk caused the originally scheduled post to appear at
the correct date (although a bit late in the day)]
</p>
        <img width="0" height="0" src="http://www.marklio.com/marklio/aggbug.ashx?id=bf401819-7984-4426-996b-4871810a381f" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Happy Birthday, Jenna!</title>
    <link rel="alternate" type="text/html" href="http://www.marklio.com/marklio/PermaLink,guid,c72b4001-e6dd-44a6-a60c-3c0214998e9b.aspx" />
    <id>http://www.marklio.com/marklio/PermaLink,guid,c72b4001-e6dd-44a6-a60c-3c0214998e9b.aspx</id>
    <published>2008-12-02T12:45:18.1474757-07:00</published>
    <updated>2008-12-02T12:45:18.1474757-07:00</updated>
    <category term="Announcements" label="Announcements" scheme="http://www.marklio.com/marklio/CategoryView,category,Announcements.aspx" />
    <category term="Fun" label="Fun" scheme="http://www.marklio.com/marklio/CategoryView,category,Fun.aspx" />
    <category term="Jenna" label="Jenna" scheme="http://www.marklio.com/marklio/CategoryView,category,Jenna.aspx" />
    <author>
      <name>Mark</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.marklio.com/marklio/ct.ashx?id=c72b4001-e6dd-44a6-a60c-3c0214998e9b&amp;url=http%3a%2f%2fwww.flickr.com%2fphotos%2fmarklio%2f3067617288%2f" target="_blank">
            <img border="0" src="http://farm4.static.flickr.com/3073/3067617288_a54f391106.jpg" />
          </a>
        </p>
        <p>
Today, the little choncho turns 3! It really is unbelievable to me that she could
be this old.  We woke her up this morning, and gave her one of her presents,
some butterfly wings.  She really liked them.
</p>
        <p>
I’ll take a rare moment to brag about her publicly, not because I think she’s better
than your kid, or because I’m an awesome parent (I’m not), but because I love her
and I’m so proud of her.  She is so awesome and sweet and polite (most of the
time).  Even when she’s upset, she’ll say “thanks” when you hand her something. 
She’s beginning to read, can do some simple math, and loves to draw and paint (the
latter can become quite messy).  She builds the greatest things out of blocks
and legos.  We went to Red Robin on Sunday, and I asked her to circle the items
she wanted from the kids menu.  She circled mac ‘n cheese and oranges.
</p>
        <p>
Happy Birthday, Choncho!
</p>
        <img width="0" height="0" src="http://www.marklio.com/marklio/aggbug.ashx?id=c72b4001-e6dd-44a6-a60c-3c0214998e9b" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Random fun book thing and CLR In-Proc SxS</title>
    <link rel="alternate" type="text/html" href="http://www.marklio.com/marklio/PermaLink,guid,65e9edd3-21c0-4f6d-bcc0-6e9f11144591.aspx" />
    <id>http://www.marklio.com/marklio/PermaLink,guid,65e9edd3-21c0-4f6d-bcc0-6e9f11144591.aspx</id>
    <published>2008-11-20T18:25:12.1322972-07:00</published>
    <updated>2008-11-20T18:25:12.1322972-07:00</updated>
    <category term="CLR" label="CLR" scheme="http://www.marklio.com/marklio/CategoryView,category,CLR.aspx" />
    <category term="Fun" label="Fun" scheme="http://www.marklio.com/marklio/CategoryView,category,Fun.aspx" />
    <category term="Software Development" label="Software Development" scheme="http://www.marklio.com/marklio/CategoryView,category,SoftwareDevelopment.aspx" />
    <category term="Technical" label="Technical" scheme="http://www.marklio.com/marklio/CategoryView,category,Technical.aspx" />
    <author>
      <name>Mark</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
My brother-in-law posted a note on Facebook that was basically one of those silly
things you do and perpetuate across the internet.  I usually don’t take part
in such things, but this one seemed interesting, and I’ve been thinking about ways
to jumpstart my blogging again now that the embargo on all the cool stuff is lifted. 
So, I thought I would do it.  Here are the rules:
</p>
        <ul>
          <li>
Grab the book nearest you. Right now.</li>
          <li>
Turn to page 56.</li>
          <li>
Find the fifth sentence.</li>
          <li>
Post that sentence along with these instructions in a note to your wall. <em>(this
was on Facebook, so it is referring to that wall)</em></li>
          <li>
Don't dig for your favorite book, the coolest, the most intellectual. Use the CLOSEST.</li>
        </ul>
        <p>
So, it took me a while to determine which book was the “closest”, as my position is
roughly normal to the bookshelf in my office.  I finally decided to be honest
and pick the one that was really closest, but I will share another that was very close,
as it is a good segue into future blogs.
</p>
        <p>
The first (and official) one:
</p>
        <blockquote>
          <p>
Semiconductor materials at 0 K have basically the same structure as insulators – a
filled valence band separated from an empty conduction band by a band gap containing
no allowed energy states (Fig. 3-4).
</p>
          <p align="right">
            <em>Solid State Electronic Devices, Ben G. Streetman</em>
          </p>
        </blockquote>
        <p>
The second, and more relevant/interesting one:
</p>
        <blockquote>
          <p>
The shim’s algorithm for picking a version in the COM interoperability scenario is
much more straightforward – the latest version installed on the machine is always
used.
</p>
          <p align="right">
            <em>Customizing the Microsoft .NET Framework Common Language Runtime, Steven Pratschner</em>
          </p>
        </blockquote>
        <p>
What is amazing about this second one is that this is directly related to one of the
features I’ve been working on for CLR v4 (and yes, that is actually the 5th sentence
on page 56).  Namely, this feature is known as “in-process side by side” (or
in-proc SxS for short), and was announced publicly at PDC last month.  This feature
allows you to have more than version of the CLR loaded and running in a single process.
</p>
        <p>
This feature is primarily a compatibility feature, targeted precisely at the behavior
noted in the quote above.  When we use the latest version, we can break existing
COM objects.  Not only because of breaking changes we make (of which the number
is fairly small), but because of other, more subtle behavior dependencies.
</p>
        <p>
Previously, loading a CLR version into the process locked the process to that CLR
version.  Any other policy than “pick the latest” results in a load order dependency
problem that can result in “for sure” breaks because COM components targeting newer
runtimes cannot run on old runtimes.  So, clearly, that was the best choice of
policies.
</p>
        <p>
Now that we support multiple runtimes in the process (v2 and above), we can make a
smarter, more compatible choice about runtime activation.  The precise policies
are still being worked through, so I’ll avoid stating them explicitly, but you can
imagine us being able to make a much better choice about what runtime to activate
to run a given managed COM component.
</p>
        <p>
I’ll be posting more about this feature and it’s implications soon.  Feel free
to seed my future posts with questions in the comments.  Hopefully, this is the
jumpstart I needed.  As for the “game” above, feel free to do it, or ignore it. 
It won’t result in any difference to your luck, financial situation, or anything else.
</p>
        <img width="0" height="0" src="http://www.marklio.com/marklio/aggbug.ashx?id=65e9edd3-21c0-4f6d-bcc0-6e9f11144591" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Welcome Luke Andrew Miller and my Midland Trip</title>
    <link rel="alternate" type="text/html" href="http://www.marklio.com/marklio/PermaLink,guid,40a53dd1-942b-4ef0-abf1-0b3a15054d1e.aspx" />
    <id>http://www.marklio.com/marklio/PermaLink,guid,40a53dd1-942b-4ef0-abf1-0b3a15054d1e.aspx</id>
    <published>2008-10-21T11:45:19.760546-07:00</published>
    <updated>2008-10-21T11:50:28.041796-07:00</updated>
    <author>
      <name>Mark</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I just leveled up my uncle character!  Luke Andrew Miller was born Sunday night
(Oct. 19th) at 9:39 PM.  6 lbs. 13 ounces, 19 inches.
</p>
        <p>
          <a href="http://www.marklio.com/marklio/ct.ashx?id=40a53dd1-942b-4ef0-abf1-0b3a15054d1e&amp;url=http%3a%2f%2fwww.flickr.com%2fphotos%2fmarklio%2f2960138177%2f" target="_blank">
            <img src="http://farm4.static.flickr.com/3023/2960138177_e60f46a106.jpg" border="0" />
          </a>
        </p>
        <p>
I had originally planned my trip to visit my brother Andrew to be well before Luke
was due, but he was so excited to see me that he had to come early :).  It was
so great that I was able to help Andrew and Sara out while I was there.  I got
alot of play time in with my nephew Landon, who I haven’t gotten to see hardly at
all since we moved to Seattle and they moved to Midland.  While Andrew and Sara
went to the hospital, I watched Landon and we had a great time.
</p>
        <p>
Hanging out with Andrew was also a blast.  We play Halo together all the time,
but it’s just alot more fun to hang out in person.  We didn’t have much of an
agenda, just hanging out and inventing weird games to play.  He also introduced
me to some new kid’s shows that I think Jenna will enjoy.  <a href="http://www.marklio.com/marklio/ct.ashx?id=40a53dd1-942b-4ef0-abf1-0b3a15054d1e&amp;url=http%3a%2f%2fwww.wordworld.com%2f" target="_blank">WordWorld</a> is
awesome.  I got Jenna <a href="http://www.marklio.com/marklio/ct.ashx?id=40a53dd1-942b-4ef0-abf1-0b3a15054d1e&amp;url=http%3a%2f%2fwww.target.com%2fWordWorld-WordFriends-Magnetic-Plush-Cat%2fdp%2fB00113GU36%2fqid%3d1224613887%2fref%3dbr_1_6%2f602-8043241-7960605" target="_blank">the
cat</a>, which you can take apart into the the letters C, A, and T.  She LOVES
it.
</p>
        <p>
I also got to eat a bunch of food that isn’t available where I live:
</p>
        <ul>
          <li>
            <strong>
              <a href="http://www.marklio.com/marklio/ct.ashx?id=40a53dd1-942b-4ef0-abf1-0b3a15054d1e&amp;url=http%3a%2f%2fwww.chick-fil-a.com%2f" target="_blank">Chick-fil-a</a>
            </strong> –
I had chicken minis for breakfast when I arrived, and we ate there again later and
I had 2 sandwiched, and some nuggets.  Delicious. 
</li>
          <li>
            <strong>
              <a href="http://www.marklio.com/marklio/ct.ashx?id=40a53dd1-942b-4ef0-abf1-0b3a15054d1e&amp;url=http%3a%2f%2fwww.bluebell.com%2fhome.aspx" target="_blank">Blue
Bell Ice Cream</a>
            </strong> – I really don’t know how they make it so good. 
It is far and above better than any other ice cream available in Seattle. 
</li>
          <li>
            <strong>
              <a href="http://www.marklio.com/marklio/ct.ashx?id=40a53dd1-942b-4ef0-abf1-0b3a15054d1e&amp;url=http%3a%2f%2fwww.sonicdrivein.com%2f" target="_blank">Sonic</a>
            </strong> –
I usually opt for a flurry, but I had already eaten a ton of Blue Bell, so I got a
vanilla coke (a coke with vanilla added, not the Vanilla Coke that coke makes). 
</li>
          <li>
            <strong>Mexican Food</strong> – Sure, there are a bunch of Mexican food places here
in the Seattle area, but they pale in comparison to what’s available in Texas (especially
Midland).  I had chicken fajita soft tacos and sopaipillas from Rosa’s.</li>
        </ul>
        <p>
There simply weren’t enough meals to hit everything I wanted.  I missed out on <a href="http://www.marklio.com/marklio/ct.ashx?id=40a53dd1-942b-4ef0-abf1-0b3a15054d1e&amp;url=http%3a%2f%2fwww.whataburger.com%2f" target="_blank">Whataburger</a> and
On the Border (more Mexican Food).
</p>
        <p>
You can check out my <a href="http://www.marklio.com/marklio/ct.ashx?id=40a53dd1-942b-4ef0-abf1-0b3a15054d1e&amp;url=http%3a%2f%2fwww.flickr.com%2fphotos%2fmarklio%2fsets%2f72157608227989183%2f" target="_blank">Flickr
set</a>, which is a ton of pictures of Landon, and a few of Luke at 5:00am when I
got to meet him before flying out.
</p>
        <img width="0" height="0" src="http://www.marklio.com/marklio/aggbug.ashx?id=40a53dd1-942b-4ef0-abf1-0b3a15054d1e" />
      </div>
    </content>
  </entry>
  <entry>
    <title>Deployment thoughts and guidance</title>
    <link rel="alternate" type="text/html" href="http://www.marklio.com/marklio/PermaLink,guid,9f45a396-d0d3-4241-aba8-f5f6c0e7e0aa.aspx" />
    <id>http://www.marklio.com/marklio/PermaLink,guid,9f45a396-d0d3-4241-aba8-f5f6c0e7e0aa.aspx</id>
    <published>2008-09-26T10:54:59.3129298-07:00</published>
    <updated>2008-09-26T10:54:59.3129298-07:00</updated>
    <author>
      <name>Mark</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.marklio.com/marklio/ct.ashx?id=9f45a396-d0d3-4241-aba8-f5f6c0e7e0aa&amp;url=http%3a%2f%2fhoser.lander.ca%2fdefault.aspx" target="_blank">Richard
Lander</a>, one of our PMs, just started a series of posts on deployment.  Specifically,
he’s taking the approach of thinking about your v2 strategy while you are still working
on v1 of your product.  If you’re already on v3 of your product, don’t worry. 
There will still be some useful, interesting information for you. The <a href="http://www.marklio.com/marklio/ct.ashx?id=9f45a396-d0d3-4241-aba8-f5f6c0e7e0aa&amp;url=http%3a%2f%2fhoser.lander.ca%2f2008%2f09%2f26%2fLookingIntoDeploymentShippingYourV2.aspx" target="_blank">first
post</a> just lays the groundwork for the discussion, so stay tuned for the rest.
</p>
        <img width="0" height="0" src="http://www.marklio.com/marklio/aggbug.ashx?id=9f45a396-d0d3-4241-aba8-f5f6c0e7e0aa" />
      </div>
    </content>
  </entry>
  <entry>
    <title>9-year Anniversary (yesterday)</title>
    <link rel="alternate" type="text/html" href="http://www.marklio.com/marklio/PermaLink,guid,c38884a9-c375-4bd9-9797-287888cf2369.aspx" />
    <id>http://www.marklio.com/marklio/PermaLink,guid,c38884a9-c375-4bd9-9797-287888cf2369.aspx</id>
    <published>2008-07-25T14:04:47.6402513-07:00</published>
    <updated>2008-07-25T14:04:47.6402513-07:00</updated>
    <category term="Announcements" label="Announcements" scheme="http://www.marklio.com/marklio/CategoryView,category,Announcements.aspx" />
    <category term="Becky" label="Becky" scheme="http://www.marklio.com/marklio/CategoryView,category,Becky.aspx" />
    <category term="Fun" label="Fun" scheme="http://www.marklio.com/marklio/CategoryView,category,Fun.aspx" />
    <category term="Movies" label="Movies" scheme="http://www.marklio.com/marklio/CategoryView,category,Movies.aspx" />
    <author>
      <name>Mark</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
I didn't get up an anniversary post yesterday because I was busy DOING stuff for my
anniversary this year.  Unbeknownst to Becky, I arranged to take the day off.
I sneakily got a late-morning massage appointment for her, and lined up a babysitter
(thanks, Molly) so we could go see a movie in the afternoon.  Everything went
off without a hitch.
</p>
        <p>
We went to see the latest Indiana Jones movie, which we enjoyed very much despite
the somewhat less than explanatory ending. We hadn't been to the theater to see a
movie since Pirates II.  But, we both agreed that we aren't missing much except
time alone and seeing the latest movies.
</p>
        <img width="0" height="0" src="http://www.marklio.com/marklio/aggbug.ashx?id=c38884a9-c375-4bd9-9797-287888cf2369" />
      </div>
    </content>
  </entry>
  <entry>
    <title>LinqToStdf now on CodePlex</title>
    <link rel="alternate" type="text/html" href="http://www.marklio.com/marklio/PermaLink,guid,45b930b6-bfd0-4aeb-9bb8-1e82b2ff9e5f.aspx" />
    <id>http://www.marklio.com/marklio/PermaLink,guid,45b930b6-bfd0-4aeb-9bb8-1e82b2ff9e5f.aspx</id>
    <published>2008-06-20T14:05:13.8538382-07:00</published>
    <updated>2008-06-20T14:05:13.8538382-07:00</updated>
    <category term="Announcements" label="Announcements" scheme="http://www.marklio.com/marklio/CategoryView,category,Announcements.aspx" />
    <category term="Fun" label="Fun" scheme="http://www.marklio.com/marklio/CategoryView,category,Fun.aspx" />
    <category term="Software Development" label="Software Development" scheme="http://www.marklio.com/marklio/CategoryView,category,SoftwareDevelopment.aspx" />
    <author>
      <name>Mark</name>
    </author>
    <content type="xhtml">
      <div xmlns="http://www.w3.org/1999/xhtml">
        <p>
Some of my posts that I get the most recurring email/inquiries on are my <a href="http://www.marklio.com/marklio/ct.ashx?id=45b930b6-bfd0-4aeb-9bb8-1e82b2ff9e5f&amp;url=http%3a%2f%2fwww.marklio.com%2fmarklio%2fPermaLink%2cguid%2c3a89ecce-89a8-470e-a894-bc5cc86ce41d.aspx" target="_blank">various</a><a href="http://www.marklio.com/marklio/ct.ashx?id=45b930b6-bfd0-4aeb-9bb8-1e82b2ff9e5f&amp;url=http%3a%2f%2fwww.marklio.com%2fmarklio%2fPermaLink%2cguid%2c498e2e35-1590-4852-92e1-2212157c68f1.aspx" target="_blank">posts</a> about
the STDF (Standard Test Datalog Format) parser that I <a href="http://www.marklio.com/marklio/ct.ashx?id=45b930b6-bfd0-4aeb-9bb8-1e82b2ff9e5f&amp;url=http%3a%2f%2fwww.marklio.com%2fmarklio%2fPermaLink%2cguid%2ce3601f31-231b-4a82-b5a7-1c31600ce25c.aspx" target="_blank">originally
created as an experiment back in 2005</a>.  After some help from a former collegue,
I am pleased to announce that this is finally available on CodePlex as <a href="http://www.marklio.com/marklio/ct.ashx?id=45b930b6-bfd0-4aeb-9bb8-1e82b2ff9e5f&amp;url=http%3a%2f%2fwww.codeplex.com%2fLinqToStdf" target="_blank">LinqToStdf</a>!
</p>
        <p>
It is a managed library for processing STDF files, and gives you a model to explore
the data via Linq queries.  This means, you can leverage the wide variety of
managed languages (C#, VB, F#, JScript, IronPython, IronRuby, Managed C++, Boo, <a href="http://www.marklio.com/marklio/ct.ashx?id=45b930b6-bfd0-4aeb-9bb8-1e82b2ff9e5f&amp;url=http%3a%2f%2fwww.dotnetlanguages.net%2fDNL%2fResources.aspx" target="_blank">etc</a>.)
to process the data in STDF files.  It also works in <a href="http://www.marklio.com/marklio/ct.ashx?id=45b930b6-bfd0-4aeb-9bb8-1e82b2ff9e5f&amp;url=http%3a%2f%2fsilverlight.net" target="_blank">Silverlight</a>! 
It has built-in support for the V4 spec, but it's highly extensible and should be
able to parse any version of the file format as well as custom records.  It can
be configured to be highly strict and throw on format errors, or be robust in the
face of issues that normal STDF processors would choke on to the point of being able
to detect and repair corruption on the fly.
</p>
        <p>
If that interests you, I'd love for you to drop by and take a deeper look at it and
get involved in its ongoing development.  I've already got at least one person
interested enough to contribute and ensure its success as a community project. 
There is currently a <a href="http://www.marklio.com/marklio/ct.ashx?id=45b930b6-bfd0-4aeb-9bb8-1e82b2ff9e5f&amp;url=http%3a%2f%2fwww.codeplex.com%2fLinqToStdf%2fRelease%2fProjectReleases.aspx%3fReleaseId%3d13681" target="_blank">"beta"
release</a> available, and hopefully we'll whip it into shape enough to call it v1.0
soon.
</p>
        <p>
My hope is that this can be an adoption driver for .NET in the semiconductor industry
and that through this project I can be an ambassador for the CLR in that area.
</p>
        <img width="0" height="0" src="http://www.marklio.com/marklio/aggbug.ashx?id=45b930b6-bfd0-4aeb-9bb8-1e82b2ff9e5f" />
      </div>
    </content>
  </entry>
</feed>