<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 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:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" version="2.0">
  <channel>
    <title>Interoperability Happens - Review</title>
    <link>http://blogs.tedneward.com/</link>
    <description>Ted's takes on the enterprise Java, .NET and Web services communities and technologies</description>
    <copyright>Ted Neward</copyright>
    <lastBuildDate>Thu, 09 Sep 2010 03:53:01 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.7067.0</generator>
    <managingEditor>tneward@tedneward.com</managingEditor>
    <webMaster>tneward@tedneward.com</webMaster>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=bd7339e6-fdd5-4f2a-b711-de9a38f6c743</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,bd7339e6-fdd5-4f2a-b711-de9a38f6c743.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,bd7339e6-fdd5-4f2a-b711-de9a38f6c743.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bd7339e6-fdd5-4f2a-b711-de9a38f6c743</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Hey, anybody who’s got significant VMWare mojo, help out a bro?
</p>
        <p>
I’ve got a Win7 VM (one of many) that appears to be exhibiting weird disk behavior—the
vmdk, a growable single-file VMDK, is almost precisely twice the used space. It’s
a 120GB growable disk, and the Win7 guest reports about 35GB used, but the VMDK takes
about 70GB on host disk. CHKDSK inside Windows says everything’s good, and the VMWare
“Disk Cleanup” doesn’t change anything, either. It doesn’t seem to be a Windows7 thing,
because I’ve got a half-dozen other Win7 VMs that operate… well, normally (by which
I mean, 30GB used in the VMDK means 30GB used on disk). It’s a VMWare Fusion host,
if that makes any difference. Any other details that might be relevant, let me know
and I’ll post.
</p>
        <p>
Anybody got any ideas what the heck is going on inside this disk?
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=bd7339e6-fdd5-4f2a-b711-de9a38f6c743" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>VMWare help</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,bd7339e6-fdd5-4f2a-b711-de9a38f6c743.aspx</guid>
      <link>http://blogs.tedneward.com/2010/09/09/VMWare+Help.aspx</link>
      <pubDate>Thu, 09 Sep 2010 03:53:01 GMT</pubDate>
      <description>&lt;p&gt;
Hey, anybody who’s got significant VMWare mojo, help out a bro?
&lt;/p&gt;
&lt;p&gt;
I’ve got a Win7 VM (one of many) that appears to be exhibiting weird disk behavior—the
vmdk, a growable single-file VMDK, is almost precisely twice the used space. It’s
a 120GB growable disk, and the Win7 guest reports about 35GB used, but the VMDK takes
about 70GB on host disk. CHKDSK inside Windows says everything’s good, and the VMWare
“Disk Cleanup” doesn’t change anything, either. It doesn’t seem to be a Windows7 thing,
because I’ve got a half-dozen other Win7 VMs that operate… well, normally (by which
I mean, 30GB used in the VMDK means 30GB used on disk). It’s a VMWare Fusion host,
if that makes any difference. Any other details that might be relevant, let me know
and I’ll post.
&lt;/p&gt;
&lt;p&gt;
Anybody got any ideas what the heck is going on inside this disk?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=bd7339e6-fdd5-4f2a-b711-de9a38f6c743" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,bd7339e6-fdd5-4f2a-b711-de9a38f6c743.aspx</comments>
      <category>.NET</category>
      <category>Android</category>
      <category>C#</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>Development Processes</category>
      <category>F#</category>
      <category>Flash</category>
      <category>Industry</category>
      <category>iPhone</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>LLVM</category>
      <category>Mac OS</category>
      <category>Objective-C</category>
      <category>Parrot</category>
      <category>Python</category>
      <category>Reading</category>
      <category>Review</category>
      <category>Ruby</category>
      <category>Scala</category>
      <category>Security</category>
      <category>Social</category>
      <category>Solaris</category>
      <category>Visual Basic</category>
      <category>VMWare</category>
      <category>WCF</category>
      <category>Windows</category>
      <category>XML Services</category>
      <category>XNA</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=809393d8-2dea-4ae3-a2fa-9e6aace6d16e</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,809393d8-2dea-4ae3-a2fa-9e6aace6d16e.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,809393d8-2dea-4ae3-a2fa-9e6aace6d16e.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=809393d8-2dea-4ae3-a2fa-9e6aace6d16e</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Let's see if <a href="http://www.practicalecommerce.com/articles/1575-Chart-of-the-Week-Google-s-Android-Mobile-OS-Will-Outpace-the-iPhone-Others" target="_blank">this
one</a> holds: Gartner says that by 2012, Android will have a larger percentage of
the worldwide mobile phone market than the iPhone, 14.5 % against 13.7%.
</p>
        <p>
Reasons to doubt this particular bit of prescience? Gartner also predicts that "Windows
Mobile" will have "12.8 percent" of the market. This despite the fact
that at MIX last week, Microsoft basically canned Windows Mobile in favor of a complete
reboot called "Windows Phone Series 7" based on ideas from Silverlight and
XNA.
</p>
        <p>
Huh.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=809393d8-2dea-4ae3-a2fa-9e6aace6d16e" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Another Gartner prediction...</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,809393d8-2dea-4ae3-a2fa-9e6aace6d16e.aspx</guid>
      <link>http://blogs.tedneward.com/2010/03/24/Another+Gartner+Prediction.aspx</link>
      <pubDate>Wed, 24 Mar 2010 07:15:23 GMT</pubDate>
      <description>&lt;p&gt;
Let's see if &lt;a href="http://www.practicalecommerce.com/articles/1575-Chart-of-the-Week-Google-s-Android-Mobile-OS-Will-Outpace-the-iPhone-Others" target="_blank"&gt;this
one&lt;/a&gt; holds: Gartner says that by 2012, Android will have a larger percentage of
the worldwide mobile phone market than the iPhone, 14.5 % against 13.7%.
&lt;/p&gt;
&lt;p&gt;
Reasons to doubt this particular bit of prescience? Gartner also predicts that &amp;quot;Windows
Mobile&amp;quot; will have &amp;quot;12.8 percent&amp;quot; of the market. This despite the fact
that at MIX last week, Microsoft basically canned Windows Mobile in favor of a complete
reboot called &amp;quot;Windows Phone Series 7&amp;quot; based on ideas from Silverlight and
XNA.
&lt;/p&gt;
&lt;p&gt;
Huh.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=809393d8-2dea-4ae3-a2fa-9e6aace6d16e" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,809393d8-2dea-4ae3-a2fa-9e6aace6d16e.aspx</comments>
      <category>.NET</category>
      <category>Android</category>
      <category>C#</category>
      <category>Industry</category>
      <category>iPhone</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Reading</category>
      <category>Review</category>
      <category>Windows</category>
      <category>XNA</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=c95a7acd-a467-4c8e-a72a-2b8d3acee495</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,c95a7acd-a467-4c8e-a72a-2b8d3acee495.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,c95a7acd-a467-4c8e-a72a-2b8d3acee495.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c95a7acd-a467-4c8e-a72a-2b8d3acee495</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm excited to say that TechEd has accepted my pre-conference proposal, <em>Multiparadigmatic
C#</em>, where the abstract reads:
</p>
        <blockquote>
          <p>
C# has grown from “just” an object-oriented language into a language that is capable
of expressing several different paradigms of software development: object-oriented,
functional, and dynamic. In this session, developers will learn how to approach programming
in C# to use each of these approaches, and when.
</p>
        </blockquote>
        <p>
If you're interested in seeing C# used in a variety of different ways, come on out.
</p>
        <p>
And if you're not going to <a href="http://northamerica.msteched.com/?CR_CC=100280254&amp;WT.srch=1&amp;CR_SCC=100280254&amp;fbid=xvt_cg-ExsG" target="_blank">TechEd</a>....
why not? It's in New Orleans, folks!
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c95a7acd-a467-4c8e-a72a-2b8d3acee495" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>2010 TechEd PreCon: Multiparadigmatic C#</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,c95a7acd-a467-4c8e-a72a-2b8d3acee495.aspx</guid>
      <link>http://blogs.tedneward.com/2010/01/15/2010+TechEd+PreCon+Multiparadigmatic+C.aspx</link>
      <pubDate>Fri, 15 Jan 2010 07:49:53 GMT</pubDate>
      <description>&lt;p&gt;
I'm excited to say that TechEd has accepted my pre-conference proposal, &lt;em&gt;Multiparadigmatic
C#&lt;/em&gt;, where the abstract reads:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
C# has grown from “just” an object-oriented language into a language that is capable
of expressing several different paradigms of software development: object-oriented,
functional, and dynamic. In this session, developers will learn how to approach programming
in C# to use each of these approaches, and when.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
If you're interested in seeing C# used in a variety of different ways, come on out.
&lt;/p&gt;
&lt;p&gt;
And if you're not going to &lt;a href="http://northamerica.msteched.com/?CR_CC=100280254&amp;amp;WT.srch=1&amp;amp;CR_SCC=100280254&amp;amp;fbid=xvt_cg-ExsG" target="_blank"&gt;TechEd&lt;/a&gt;....
why not? It's in New Orleans, folks!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c95a7acd-a467-4c8e-a72a-2b8d3acee495" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,c95a7acd-a467-4c8e-a72a-2b8d3acee495.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Industry</category>
      <category>Languages</category>
      <category>Python</category>
      <category>Reading</category>
      <category>Review</category>
      <category>Ruby</category>
      <category>Visual Basic</category>
      <category>WCF</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=680b8296-ba07-4230-b067-edceaf04e84b</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,680b8296-ba07-4230-b067-edceaf04e84b.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,680b8296-ba07-4230-b067-edceaf04e84b.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=680b8296-ba07-4230-b067-edceaf04e84b</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Here we go again—another year, another set of predictions revisited and offered up
for the next 12 months. And maybe, if I'm feeling really ambitious, I'll take that
shot I thought about last year and try predicting for the decade. Without further
ado, I'll go back and revisit, unedited, my predictions for 2009 ("<strong>THEN</strong>"),
and pontificate on those subjects for 2010 before adding any new material/topics.
Just for convenience, <a href="http://blogs.tedneward.com/2009/01/01/2009+Predictions+2008+Predictions+Revisited.aspx" target="_blank">here's
a link back to last years' predictions</a>.
</p>
        <p>
Last year's predictions went something like this (complete with basketball-scoring):
</p>
        <ul>
          <li>
            <strong>THEN: </strong>"Cloud" will become the next "ESB" or "SOA",
in that it will be something that everybody will talk about, but few will understand
and even fewer will do anything with. (Considering the widespread disparity in the
definition of the term, this seems like a no-brainer.) <strong>NOW:</strong> Oh, yeah.
Straight up. I get two points for this one. Does <em>anyone</em> have a working definition
of "cloud" that applies to all of the major vendors' implementations? <em>Ted,
2; Wrongness, 0</em>.</li>
          <li>
            <strong>THEN: </strong>Interest in Scala will continue to rise, as will the number
of detractors who point out that Scala is too hard to learn. <strong>NOW:</strong> Two
points for this one, too. Not a hard one, mind you, but one of those "pass-and-shoot"
jumpers from twelve feet out. James Strachan even tweeted about this earlier today,
pointing out this comparison. As more Java developers who think of themselves as smart
people try to pick up Scala and fail, the numbers of sour grapes responses like "Scala's
too complex, and who needs that functional stuff anyway?" will continue to rise
in 2010. <em>Ted, 4; Wrongness, 0</em>.</li>
          <li>
            <strong>THEN</strong>: Interest in F# will continue to rise, as will the number of
detractors who point out that F# is too hard to learn. (Hey, the two really are cousins,
and the fortunes of one will serve as a pretty good indication of the fortunes of
the other, and both really seem to be on the same arc right now.) <strong>NOW:</strong> Interestingly
enough, I haven't heard as many F# detractors as Scala detractors, possibly because
I think F# hasn't really reached the masses of .NET developers the way that Scala
has managed to find its way in front of Java developers. I think that'll change mighty
quickly in 2010, though, once VS 2010 hits the streets. <em>Ted, 4; Wrongness 2</em>.</li>
          <li>
            <strong>THEN</strong>
            <em>:</em> Interest in all kinds of functional languages will
continue to rise, and more than one person will take a hint from Bob "crazybob"
Lee and liken functional programming to AOP, for good and for ill. People who took
classes on Haskell in college will find themselves reaching for their old college
textbooks again. <strong>NOW:</strong> Yep, I'm claiming two points on this one, if
only because a bunch of Haskell books shipped this year, and they'll be the last to
do so for about five years after this. (By the way, does anybody still remember aspects?)
But I'm going the opposite way with this one now; yes, there's Haskell, and yes, there's
Erlang, and yes, there's a lot of other functional languages out there, but who cares?
They're hard to learn, they don't always translate well to other languages, and developers
want languages that work on the platform they use on a daily basis, and that means
F# and Scala or Clojure, or its simply not an option. <em>Ted 6; Wrongness 2</em>.</li>
          <li>
            <strong>THEN</strong>
            <em>:</em> The iPhone is going to be hailed as "the enterprise
development platform of the future", and companies will be rolling out apps to
it. Look for Quicken iPhone edition, PowerPoint and/or Keynote iPhone edition, along
with connectors to hook the iPhone up to a presentation device, and (I'll bet) a World
of Warcraft iPhone client (legit or otherwise). iPhone is the new hotness in the mobile
space, and people will flock to it madly. <strong>NOW:</strong> Two more points, but
let's be honest—this was a fast-break layup, no work required on my part. <em>Ted
8; Wrongness 2.</em></li>
          <li>
            <strong>THEN</strong>: Another Oslo CTP will come out, and it will bear only a superficial
resemblance to the one that came out in October at PDC. Betting on Oslo right now
is a fools' bet, not because of any inherent weakness in the technology, but just
because it's way too early in the cycle to be thinking about for anything vaguely
resembling production code. <strong>NOW:</strong> If you've worked at all with Oslo,
you might argue with me, but I'm still taking my two points. The two CTPs were pretty
different in a number of ways. <em>Ted 10; Wrongness 2.</em></li>
          <li>
            <strong>THEN</strong>: The IronPython and IronRuby teams will find some serious versioning
issues as they try to manage the DLR versioning story between themselves and the CLR
as a whole. An initial hack will result, which will be codified into a standard practice
when .NET 4.0 ships. Then the next release of IPy or IRb will have to try and slip
around its restrictions in 2010/2011. By 2012, IPy and IRb will have to be shipping
as part of Visual Studio just to put the releases back into lockstep with one another
(and the rest of the .NET universe). <strong>NOW:</strong> Pressure is still building.
Let's see what happens by the time VS 2010 ships, and then see what the IPy/IRb teams
start to do to adjust to the versioning issues that arise. <em>Ted 8; Wrongness 2.</em></li>
          <li>
            <strong>THEN</strong>: The death of JSR-277 will spark an uprising among the two leading
groups hoping to foist it off on the Java community--OSGi and Maven--while the rest
of the Java world will breathe a huge sigh of relief and look to see what "modularity"
means in Java 7. Some of the alpha geeks in Java will start using--if not building--JDK
7 builds just to get a heads-up on its impact, and be quietly surprised and, I dare
say, perhaps even pleased. <strong>NOW:</strong> Ah, Ted, you really should never
underestimate the community's willingness to take a bad idea, strip all the goodness
out of it, and then cycle it back into the mix as something completely different yet
somehow just as dangerous and crazy. I give you Project Jigsaw. <em>Ted 10; Wrongness
2;</em></li>
          <li>
            <strong>THEN</strong>: The invokedynamic JSR will leapfrog in importance to the top
of the list. <strong>NOW:</strong> The invokedynamic JSR begat interest in other languages
on the JVM. The interest in other languages on the JVM begat the need to start thinking
about how to support them in the Java libraries. The need to start thinking about
supporting those languages begat a "Holy sh*t moment" somewhere inside Sun
and led them to (re-)propose closures for JDK 7. And in local sports news, Ted notched
up two more points on the scoreboard. <em>Ted 12; Wrongness 2.</em></li>
          <li>
            <strong>THEN</strong>: Another Windows 7 CTP will come out, and it will spawn huge
media interest that will eventually be remembered as Microsoft promises, that will
eventually be remembered as Microsoft guarantees, that will eventually be remembered
as Microsoft FUD and "promising much, delivering little". Microsoft ain't
always at fault for the inflated expectations people have--sometimes, yes, perhaps
even a lot of times, but not always. <strong>NOW:</strong> And then, just when the
game started to turn into a runaway, airballs started to fly. The Windows7 release
shipped, and contrary to what I expected, the general response to it was pretty warm.
Yes, there were a few issues that emerged, but overall the media liked it, the masses
liked it, and Microsoft seemed to have dodged a bullet. <em>Ted 12; Wrongness 5.</em></li>
          <li>
            <strong>THEN</strong>: Apple will begin to legally threaten the clone market again,
except this time somebody's going to get the DOJ involved. (Yes, this is the iPhone/iTunes
prediction from last year, carrying over. I still expect this to happen.) <strong>NOW:</strong> What
clones? The only people trying to clone Macs are those who are building Hackintosh
machines, and Apple can't sue them so long as they're using licensed copies of Mac
OS X (as far as I know). Which has never stopped them from trying, mind you, and I
still think Steve has some part of his brain whispering to him at night, calculating
all the hardware sales lost to Hackintosh netbooks out there. But in any event, that's
another shot missed. <em>Ted 12; Wrongness 7.</em></li>
          <li>
            <strong>THEN</strong>: Alpha-geek developers will start creating their own languages
(even if they're obscure or bizarre ones like Shakespeare or Ook#) just to have that
listed on their resume as the DSL/custom language buzz continues to build. <strong>NOW:</strong> I
give you Ioke. If I'd extended this to include outdated CPU interpreters, I'd have
made that three-pointer from half-court instead of just the top of the key. <em>Ted
14; Wrongness 7.</em></li>
          <li>
            <strong>THEN</strong>: Roy Fielding will officially disown most of the "REST"ful
authors and software packages available. Nobody will care--or worse, somebody looking
to make a name for themselves will proclaim that Roy "doesn't really understand
REST". And they'll be right--Roy doesn't understand what <em>they</em> consider
to be REST, and the fact that he created the term will be of no importance anymore.
Being "REST"ful will equate to "I did it myself!", complete with
expectations of a gold star and a lollipop. <strong>NOW:</strong> Does anybody in
the REST community care what Roy Fielding wrote way back when? I keep seeing "REST"ful
systems that seem to have designers who've never heard of Roy, or his thesis. Roy
hasn't officially disowned them, but damn if he doesn't seem close to it. Still....
No points. <em>Ted 14; Wrongness 9.</em></li>
          <li>
            <strong>THEN</strong>: The Parrot guys will make at least one more minor point release.
Nobody will notice or care, except for a few doggedly stubborn Perl hackers. They
will find themselves having nightmares of previous lives carrying around OS/2 books
and Amiga paraphernalia. Perl 6 will celebrate it's seventh... or is it eighth?...
anniversary of being announced, and nobody will notice. <strong>NOW:</strong> Does
anybody still follow Perl 6 development? Has the spec even been written yet? Google
on "Perl 6 release", and you get varying reports: "It'll ship 'when
it's ready'", "There are no such dates because this isn't a commericially-backed
effort", and "Spring 2010". Swish—nothin' but net. <em>Ted 16; Wrongness
9.</em></li>
          <li>
            <strong>THEN</strong>: The debate around "Scrum Certification" will rise
to a fever pitch as short-sighted money-tight companies start looking for reasons
to cut costs and either buy into agile at a superficial level and watch it fail, or
start looking to cut the agilists from their company in order to replace them with
cheaper labor. <strong>NOW:</strong> Agile has become another adjective meaning "best
practices", and as such, has essentially lost its meaning. Just ask Scott Bellware. <em>Ted
18; Wrongness 9.</em></li>
          <li>
            <strong>THEN</strong>: Adobe will continue to make Flex and AIR look more like C#
and the CLR even as Microsoft tries to make Silverlight look more like Flash and AIR.
Web designers will now get to experience the same fun that back-end web developers
have enjoyed for near-on a decade, as shops begin to artificially partition themselves
up as either "Flash" shops or "Silverlight" shops. <strong>NOW:</strong> Not
sure how to score this one—I haven't seen the explicit partitioning happen yet, but
the two environments definitely still seem to be looking to start tromping on each
others' turf, particularly when we look at the rapid releases coming from the Silverlight
team. <em>Ted 16; Wrongness 11.</em></li>
          <li>
            <strong>THEN</strong>: Gartner will still come knocking, looking to hire me for outrageous
sums of money to do nothing but blog and wax prophetic. <strong>NOW:</strong> Still
no job offers. Damn. Ah, well. <em>Ted 16; Wrongness 13.</em></li>
        </ul>
        <p>
A close game. Could've gone either way. *shrug* Ah, well. It was silly to try and
score it in basketball metaphor, anyway—that's the last time I watch ESPN before writing
this.
</p>
        <p>
For 2010, I predict....
</p>
        <ul>
          <li>
            <em>... I will offer 3- and 4-day training classes on F# and Scala, among other things.</em> OK,
that's not fair—yes, I have the materials, I just need to work out locations and times.
Contact me if you're interested in a private class, by the way.</li>
          <li>
            <em>... I will publish two books, one on F# and one on Scala.</em> OK, OK, another
plug. Or, rather, more of a resolution. One will be the "Professional F#"
I'm doing for Wiley/Wrox, the other isn't yet finalized. But it'll either be published
through a publisher, or self-published, by JavaOne 2010.</li>
          <li>
            <em>... DSLs will either "succeed" this year, or begin the short slide into
the dustbin of obscure programming ideas.</em> Domain-specific language advocates
have to put up some kind of strawman for developers to learn from and poke at, or
the whole concept will just fade away. Martin's book will help, if it ships this year,
but even that might not be enough to generate interest if it doesn't have some kind
of large-scale applicability in it. Patterns and refactoring and enterprise containers
all had a huge advantage in that developers could see pretty easily what the problem
was they solved; DSLs haven't made that clear yet.</li>
          <li>
            <em>... functional languages will start to see a backlash.</em> I hate to say it,
but "getting" the functional mindset is hard, and there's precious few resources
that are making it easy for mainstream (read: O-O) developers make that adjustment,
far fewer than there was during the procedural-to-object shift. If the functional
community doesn't want to become mainstream, then mainstream developers will find
ways to take functional's most compelling gateway use-case (parallel/concurrent programming)
and find a way to "git 'er done" in the traditional O-O approach, probably
through software transactional memory, and functional languages like Haskell and Erlang
will be relegated to the "What Might Have Been" of computer science history.
Not sure what I mean? Try this: walk into a functional language forum, and ask what
a monad is. Nobody yet has been able to produce an answer that doesn't involve math
theory, or that does involve a practical domain-object-based example. In fact, nobody
has really said why (or if) monads are even still useful. Or catamorphisms. Or any
of the other dime-store words that the functional community likes to toss around.</li>
          <li>
            <em>... Visual Studio 2010 will ship on time, and be one of the buggiest and/or slowest
releases in its history.</em> I hate to make this prediction, because I really don't
want to be right, but there's just so much happening in the Visual Studio refactoring
effort that it makes me incredibly nervous. Widespread adoption of VS2010 will wait
until SP1 at the earliest. In fact....</li>
          <li>
            <em>... Visual Studio 2010 SP 1 will ship within three months of the final product.</em> Microsoft
knows that people wait until SP 1 to think about upgrading, so they'll just plan for
an eager SP 1 release, and hope that managers will be too hung over from the New Year
(still) to notice that the necessary shakeout time hasn't happened.</li>
          <li>
            <em>... Apple will ship a tablet with multi-touch on it, and it will flop horribly.</em> Not
sure why I think this, but I just don't think the multi-touch paradigm that Apple
has cooked up for the iPhone will carry over to a tablet/laptop device. That won't
stop them from shipping it, and it won't stop Apple fan-boiz from buying it, but that's
about where the interest will end.</li>
          <li>
            <em>... JDK 7 closures will be debated for a few weeks, then become a fait accompli
as the Java community shrugs its collective shoulders.</em> Frankly, I think the Java
community has exhausted its interest in debating new language features for Java. Recent
college grads and open-source groups with an axe to grind will continue to try and
make an issue out of this, but I think the overall Java community just... doesn't...
care. They just want to see JDK 7 ship someday.</li>
          <li>
            <em>... Scala either "pops" in 2010, or begins to fall apart.</em> By "pops",
I mean reaches a critical mass of developers interested in using it, enough to convince
somebody to create a company around it, a la G2One.</li>
          <li>
            <em>... Oracle is going to make a serious "cloud" play, probably by offering
an Oracle-hosted version of Azure or AppEngine.</em> Oracle loves the enterprise space
too much, and derives too much money from it, to not at least appear to have some
kind of offering here. Now that they own Java, they'll marry it up against OpenSolaris,
the Oracle database, and throw the whole thing into a series of server centers all
over the continent, and call it "Oracle 12c" (c for Cloud, of course) or
something.</li>
          <li>
            <em>... Spring development will slow to a crawl and start to take a left turn toward
cloud ideas.</em> VMWare bought SpringSource for a reason, and I believe it's entirely
centered around VMWare's movement into the cloud space—they want to be more than "just"
a virtualization tool. Spring + Groovy makes a compelling development stack, particularly
if VMWare does some interesting hooks-n-hacks to make Spring a virtualization environment
in its own right somehow. But from a practical perspective, any community-driven development
against Spring is all but basically dead. The source may be downloadable later, like
the VMWare Player code is, but making contributions back? Fuhgeddabowdit.</li>
          <li>
            <em>... the explosion of e-book readers brings the Kindle 2009 edition way down to
size.</em> The era of the e-book reader is here, and honestly, while I'm glad I have
a Kindle, I'm expecting that I'll be dusting it off a shelf in a few years. Kinda
like I do with my iPods from a few years ago.</li>
          <li>
            <em>... "social networking" becomes the "Web 2.0" of 2010.</em> In
other words, using the term will basically identify you as a tech wannabe and clearly
out of touch with the bleeding edge.</li>
          <li>
            <em>... Facebook becomes a developer platform requirement.</em> I don't pretend to
know anything about Facebook—I'm not even on it, which amazes my family to no end—but
clearly Facebook is one of those mechanisms by which people reach each other, and
before long, it'll start showing up as a developer requirement for companies looking
to hire. If you're looking to build out your resume to make yourself attractive to
companies in 2010, mad Facebook skillz might not be a bad investment.</li>
          <li>
            <em>... Nintendo releases an open SDK for building games for its next-gen DS-based
device.</em> With the spectacular success of games on the iPhone, Nintendo clearly
must see that they're missing a huge opportunity every day developers can't write
games for the Nintendo DS that are easily downloadable to the device for playing.
Nintendo is not stupid—if they don't open up the SDK and promote "casual"
games like those on the iPhone and those that can now be downloaded to the Zune or
the XBox, they risk being marginalized out of existence.</li>
        </ul>
        <p>
And for the next decade, I predict....
</p>
        <ul>
          <li>
            <em>... colleges and unversities will begin issuing e-book reader devices to students.</em> It's
a helluvalot cheaper than issuing laptops or netbooks, and besides....</li>
          <li>
            <em>... netbooks and e-book readers will merge before the decade is out.</em> Let's
be honest—if the e-book reader could do email and browse the web, you have almost
the perfect paperback-sized mobile device. As for the credit-card sized mobile device....</li>
          <li>
            <em>... mobile phones will all but disappear as they turn into what PDAs tried to
be.</em> "The iPhone makes calls? Really? You mean Voice-over-IP, right? No,
wait, over cell signal? It can <em>do </em>that? Wow, there's really an app for everything,
isn't there?"</li>
          <li>
            <em>... wireless formats will skyrocket in importance all around the office and home.</em> Combine
the iPhone's Bluetooth (or something similar yet lower-power-consuming) with an equally-capable
(Bluetooth or otherwise) projector, and suddenly many executives can leave their netbook
or laptop at home for a business presentation. Throw in the Whispersync-aware e-book
reader/netbook-thing, and now most executives have absolutely zero reason to carry
anything but their e-book/netbook and their phone/PDA. The day somebody figures out
an easy way to combine Bluetooth with PayPal on the iPhone or Android phone, we will
have more or less made pocket change irrelevant. And believe me, that day will happen
before the end of the decade.</li>
          <li>
            <em>... either Android or Windows Mobile will gain some serious market share against
the iPhone the day they figure out how to support an open and unrestricted AppStore-like
app acquisition model.</em> Let's be honest, the attraction of iTunes and AppStore
is that I can see an "Oh, cool!" app on a buddy's iPhone, and have it on
mine less than 30 seconds later. If Android or WinMo can figure out how to offer that
same kind of experience without the draconian AppStore policies to go with it, they'll
start making up lost ground on iPhone in a hurry.</li>
          <li>
            <em>... Apple becomes the DOJ target of the decade.</em> Microsoft was it in the 2000's,
and Apple's stunning rising success is going to put it squarely in the sights of monopolist
accusations before long. Coupled with the unfortunate health distractions that Steve
Jobs has to deal with, Apple's going to get hammered pretty hard by the end of the
decade, but it will have mastered enough market share and mindshare to weather it
as Microsoft has.</li>
          <li>
            <em>... Google becomes the next Microsoft.</em> It won't be anything the founders
do, but Google will do "something evil", and it will be loudly and screechingly
pointed out by all of Google's corporate opponents, and the star will have fallen.</li>
          <li>
... <em>Microsoft finds its way again.</em> Microsoft, as a company, has lost its
way. This is a company that's not used to losing, and like Bill Belichick's Patriots,
they will find ways to adapt and adjust to the changed circumstances of their position
to find a way to win again. What that'll be, I have no idea, but historically, the
last decade notwithstanding, betting against Microsoft has historically been a bad
idea. My gut tells me they'll figure something new to get that mojo back.</li>
          <li>
            <em>... a politician will make himself or herself famous by standing up to the TSA.</em> The
scene will play out like this: during a Congressional hearing on airline security,
after some nut/terrorist tries to blow up another plane through nitroglycerine-soaked
underwear, the TSA director will suggest all passengers should fly naked in order
to preserve safety, the congressman/woman will stare open-mouthed at this suggestion,
proclaim, "Have you no sense of decency, sir?" and immediately get a standing
ovation and never have to worry about re-election again. Folks, if we want to prevent
any chance of loss of life from a terrorist act on an airplane, we have to prevent
passengers from getting on them. Otherwise, just accept that it might happen, do a
reasonable job of preventing it from happening, and let private insurance start offering
flight insurance against the possibility to reassure the paranoid.</li>
        </ul>
        <p>
See you all next year.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=680b8296-ba07-4230-b067-edceaf04e84b" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>2010 Predictions, 2009 Predictions Revisited</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,680b8296-ba07-4230-b067-edceaf04e84b.aspx</guid>
      <link>http://blogs.tedneward.com/2010/01/05/2010+Predictions+2009+Predictions+Revisited.aspx</link>
      <pubDate>Tue, 05 Jan 2010 09:45:59 GMT</pubDate>
      <description>&lt;p&gt;
Here we go again—another year, another set of predictions revisited and offered up
for the next 12 months. And maybe, if I'm feeling really ambitious, I'll take that
shot I thought about last year and try predicting for the decade. Without further
ado, I'll go back and revisit, unedited, my predictions for 2009 (&amp;quot;&lt;strong&gt;THEN&lt;/strong&gt;&amp;quot;),
and pontificate on those subjects for 2010 before adding any new material/topics.
Just for convenience, &lt;a href="http://blogs.tedneward.com/2009/01/01/2009+Predictions+2008+Predictions+Revisited.aspx" target="_blank"&gt;here's
a link back to last years' predictions&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Last year's predictions went something like this (complete with basketball-scoring):
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;THEN: &lt;/strong&gt;&amp;quot;Cloud&amp;quot; will become the next &amp;quot;ESB&amp;quot; or &amp;quot;SOA&amp;quot;,
in that it will be something that everybody will talk about, but few will understand
and even fewer will do anything with. (Considering the widespread disparity in the
definition of the term, this seems like a no-brainer.) &lt;strong&gt;NOW:&lt;/strong&gt; Oh, yeah.
Straight up. I get two points for this one. Does &lt;em&gt;anyone&lt;/em&gt; have a working definition
of &amp;quot;cloud&amp;quot; that applies to all of the major vendors' implementations? &lt;em&gt;Ted,
2; Wrongness, 0&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN: &lt;/strong&gt;Interest in Scala will continue to rise, as will the number
of detractors who point out that Scala is too hard to learn. &lt;strong&gt;NOW:&lt;/strong&gt; Two
points for this one, too. Not a hard one, mind you, but one of those &amp;quot;pass-and-shoot&amp;quot;
jumpers from twelve feet out. James Strachan even tweeted about this earlier today,
pointing out this comparison. As more Java developers who think of themselves as smart
people try to pick up Scala and fail, the numbers of sour grapes responses like &amp;quot;Scala's
too complex, and who needs that functional stuff anyway?&amp;quot; will continue to rise
in 2010. &lt;em&gt;Ted, 4; Wrongness, 0&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;: Interest in F# will continue to rise, as will the number of
detractors who point out that F# is too hard to learn. (Hey, the two really are cousins,
and the fortunes of one will serve as a pretty good indication of the fortunes of
the other, and both really seem to be on the same arc right now.) &lt;strong&gt;NOW:&lt;/strong&gt; Interestingly
enough, I haven't heard as many F# detractors as Scala detractors, possibly because
I think F# hasn't really reached the masses of .NET developers the way that Scala
has managed to find its way in front of Java developers. I think that'll change mighty
quickly in 2010, though, once VS 2010 hits the streets. &lt;em&gt;Ted, 4; Wrongness 2&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;&lt;em&gt;:&lt;/em&gt; Interest in all kinds of functional languages will
continue to rise, and more than one person will take a hint from Bob &amp;quot;crazybob&amp;quot;
Lee and liken functional programming to AOP, for good and for ill. People who took
classes on Haskell in college will find themselves reaching for their old college
textbooks again. &lt;strong&gt;NOW:&lt;/strong&gt; Yep, I'm claiming two points on this one, if
only because a bunch of Haskell books shipped this year, and they'll be the last to
do so for about five years after this. (By the way, does anybody still remember aspects?)
But I'm going the opposite way with this one now; yes, there's Haskell, and yes, there's
Erlang, and yes, there's a lot of other functional languages out there, but who cares?
They're hard to learn, they don't always translate well to other languages, and developers
want languages that work on the platform they use on a daily basis, and that means
F# and Scala or Clojure, or its simply not an option. &lt;em&gt;Ted 6; Wrongness 2&lt;/em&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;&lt;em&gt;:&lt;/em&gt; The iPhone is going to be hailed as &amp;quot;the enterprise
development platform of the future&amp;quot;, and companies will be rolling out apps to
it. Look for Quicken iPhone edition, PowerPoint and/or Keynote iPhone edition, along
with connectors to hook the iPhone up to a presentation device, and (I'll bet) a World
of Warcraft iPhone client (legit or otherwise). iPhone is the new hotness in the mobile
space, and people will flock to it madly. &lt;strong&gt;NOW:&lt;/strong&gt; Two more points, but
let's be honest—this was a fast-break layup, no work required on my part. &lt;em&gt;Ted
8; Wrongness 2.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;: Another Oslo CTP will come out, and it will bear only a superficial
resemblance to the one that came out in October at PDC. Betting on Oslo right now
is a fools' bet, not because of any inherent weakness in the technology, but just
because it's way too early in the cycle to be thinking about for anything vaguely
resembling production code. &lt;strong&gt;NOW:&lt;/strong&gt; If you've worked at all with Oslo,
you might argue with me, but I'm still taking my two points. The two CTPs were pretty
different in a number of ways. &lt;em&gt;Ted 10; Wrongness 2.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;: The IronPython and IronRuby teams will find some serious versioning
issues as they try to manage the DLR versioning story between themselves and the CLR
as a whole. An initial hack will result, which will be codified into a standard practice
when .NET 4.0 ships. Then the next release of IPy or IRb will have to try and slip
around its restrictions in 2010/2011. By 2012, IPy and IRb will have to be shipping
as part of Visual Studio just to put the releases back into lockstep with one another
(and the rest of the .NET universe). &lt;strong&gt;NOW:&lt;/strong&gt; Pressure is still building.
Let's see what happens by the time VS 2010 ships, and then see what the IPy/IRb teams
start to do to adjust to the versioning issues that arise. &lt;em&gt;Ted 8; Wrongness 2.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;: The death of JSR-277 will spark an uprising among the two leading
groups hoping to foist it off on the Java community--OSGi and Maven--while the rest
of the Java world will breathe a huge sigh of relief and look to see what &amp;quot;modularity&amp;quot;
means in Java 7. Some of the alpha geeks in Java will start using--if not building--JDK
7 builds just to get a heads-up on its impact, and be quietly surprised and, I dare
say, perhaps even pleased. &lt;strong&gt;NOW:&lt;/strong&gt; Ah, Ted, you really should never
underestimate the community's willingness to take a bad idea, strip all the goodness
out of it, and then cycle it back into the mix as something completely different yet
somehow just as dangerous and crazy. I give you Project Jigsaw. &lt;em&gt;Ted 10; Wrongness
2;&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;: The invokedynamic JSR will leapfrog in importance to the top
of the list. &lt;strong&gt;NOW:&lt;/strong&gt; The invokedynamic JSR begat interest in other languages
on the JVM. The interest in other languages on the JVM begat the need to start thinking
about how to support them in the Java libraries. The need to start thinking about
supporting those languages begat a &amp;quot;Holy sh*t moment&amp;quot; somewhere inside Sun
and led them to (re-)propose closures for JDK 7. And in local sports news, Ted notched
up two more points on the scoreboard. &lt;em&gt;Ted 12; Wrongness 2.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;: Another Windows 7 CTP will come out, and it will spawn huge
media interest that will eventually be remembered as Microsoft promises, that will
eventually be remembered as Microsoft guarantees, that will eventually be remembered
as Microsoft FUD and &amp;quot;promising much, delivering little&amp;quot;. Microsoft ain't
always at fault for the inflated expectations people have--sometimes, yes, perhaps
even a lot of times, but not always. &lt;strong&gt;NOW:&lt;/strong&gt; And then, just when the
game started to turn into a runaway, airballs started to fly. The Windows7 release
shipped, and contrary to what I expected, the general response to it was pretty warm.
Yes, there were a few issues that emerged, but overall the media liked it, the masses
liked it, and Microsoft seemed to have dodged a bullet. &lt;em&gt;Ted 12; Wrongness 5.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;: Apple will begin to legally threaten the clone market again,
except this time somebody's going to get the DOJ involved. (Yes, this is the iPhone/iTunes
prediction from last year, carrying over. I still expect this to happen.) &lt;strong&gt;NOW:&lt;/strong&gt; What
clones? The only people trying to clone Macs are those who are building Hackintosh
machines, and Apple can't sue them so long as they're using licensed copies of Mac
OS X (as far as I know). Which has never stopped them from trying, mind you, and I
still think Steve has some part of his brain whispering to him at night, calculating
all the hardware sales lost to Hackintosh netbooks out there. But in any event, that's
another shot missed. &lt;em&gt;Ted 12; Wrongness 7.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;: Alpha-geek developers will start creating their own languages
(even if they're obscure or bizarre ones like Shakespeare or Ook#) just to have that
listed on their resume as the DSL/custom language buzz continues to build. &lt;strong&gt;NOW:&lt;/strong&gt; I
give you Ioke. If I'd extended this to include outdated CPU interpreters, I'd have
made that three-pointer from half-court instead of just the top of the key. &lt;em&gt;Ted
14; Wrongness 7.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;: Roy Fielding will officially disown most of the &amp;quot;REST&amp;quot;ful
authors and software packages available. Nobody will care--or worse, somebody looking
to make a name for themselves will proclaim that Roy &amp;quot;doesn't really understand
REST&amp;quot;. And they'll be right--Roy doesn't understand what &lt;em&gt;they&lt;/em&gt; consider
to be REST, and the fact that he created the term will be of no importance anymore.
Being &amp;quot;REST&amp;quot;ful will equate to &amp;quot;I did it myself!&amp;quot;, complete with
expectations of a gold star and a lollipop. &lt;strong&gt;NOW:&lt;/strong&gt; Does anybody in
the REST community care what Roy Fielding wrote way back when? I keep seeing &amp;quot;REST&amp;quot;ful
systems that seem to have designers who've never heard of Roy, or his thesis. Roy
hasn't officially disowned them, but damn if he doesn't seem close to it. Still....
No points. &lt;em&gt;Ted 14; Wrongness 9.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;: The Parrot guys will make at least one more minor point release.
Nobody will notice or care, except for a few doggedly stubborn Perl hackers. They
will find themselves having nightmares of previous lives carrying around OS/2 books
and Amiga paraphernalia. Perl 6 will celebrate it's seventh... or is it eighth?...
anniversary of being announced, and nobody will notice. &lt;strong&gt;NOW:&lt;/strong&gt; Does
anybody still follow Perl 6 development? Has the spec even been written yet? Google
on &amp;quot;Perl 6 release&amp;quot;, and you get varying reports: &amp;quot;It'll ship 'when
it's ready'&amp;quot;, &amp;quot;There are no such dates because this isn't a commericially-backed
effort&amp;quot;, and &amp;quot;Spring 2010&amp;quot;. Swish—nothin' but net. &lt;em&gt;Ted 16; Wrongness
9.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;: The debate around &amp;quot;Scrum Certification&amp;quot; will rise
to a fever pitch as short-sighted money-tight companies start looking for reasons
to cut costs and either buy into agile at a superficial level and watch it fail, or
start looking to cut the agilists from their company in order to replace them with
cheaper labor. &lt;strong&gt;NOW:&lt;/strong&gt; Agile has become another adjective meaning &amp;quot;best
practices&amp;quot;, and as such, has essentially lost its meaning. Just ask Scott Bellware. &lt;em&gt;Ted
18; Wrongness 9.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;: Adobe will continue to make Flex and AIR look more like C#
and the CLR even as Microsoft tries to make Silverlight look more like Flash and AIR.
Web designers will now get to experience the same fun that back-end web developers
have enjoyed for near-on a decade, as shops begin to artificially partition themselves
up as either &amp;quot;Flash&amp;quot; shops or &amp;quot;Silverlight&amp;quot; shops. &lt;strong&gt;NOW:&lt;/strong&gt; Not
sure how to score this one—I haven't seen the explicit partitioning happen yet, but
the two environments definitely still seem to be looking to start tromping on each
others' turf, particularly when we look at the rapid releases coming from the Silverlight
team. &lt;em&gt;Ted 16; Wrongness 11.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN&lt;/strong&gt;: Gartner will still come knocking, looking to hire me for outrageous
sums of money to do nothing but blog and wax prophetic. &lt;strong&gt;NOW:&lt;/strong&gt; Still
no job offers. Damn. Ah, well. &lt;em&gt;Ted 16; Wrongness 13.&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
A close game. Could've gone either way. *shrug* Ah, well. It was silly to try and
score it in basketball metaphor, anyway—that's the last time I watch ESPN before writing
this.
&lt;/p&gt;
&lt;p&gt;
For 2010, I predict....
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;... I will offer 3- and 4-day training classes on F# and Scala, among other things.&lt;/em&gt; OK,
that's not fair—yes, I have the materials, I just need to work out locations and times.
Contact me if you're interested in a private class, by the way.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... I will publish two books, one on F# and one on Scala.&lt;/em&gt; OK, OK, another
plug. Or, rather, more of a resolution. One will be the &amp;quot;Professional F#&amp;quot;
I'm doing for Wiley/Wrox, the other isn't yet finalized. But it'll either be published
through a publisher, or self-published, by JavaOne 2010.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... DSLs will either &amp;quot;succeed&amp;quot; this year, or begin the short slide into
the dustbin of obscure programming ideas.&lt;/em&gt; Domain-specific language advocates
have to put up some kind of strawman for developers to learn from and poke at, or
the whole concept will just fade away. Martin's book will help, if it ships this year,
but even that might not be enough to generate interest if it doesn't have some kind
of large-scale applicability in it. Patterns and refactoring and enterprise containers
all had a huge advantage in that developers could see pretty easily what the problem
was they solved; DSLs haven't made that clear yet.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... functional languages will start to see a backlash.&lt;/em&gt; I hate to say it,
but &amp;quot;getting&amp;quot; the functional mindset is hard, and there's precious few resources
that are making it easy for mainstream (read: O-O) developers make that adjustment,
far fewer than there was during the procedural-to-object shift. If the functional
community doesn't want to become mainstream, then mainstream developers will find
ways to take functional's most compelling gateway use-case (parallel/concurrent programming)
and find a way to &amp;quot;git 'er done&amp;quot; in the traditional O-O approach, probably
through software transactional memory, and functional languages like Haskell and Erlang
will be relegated to the &amp;quot;What Might Have Been&amp;quot; of computer science history.
Not sure what I mean? Try this: walk into a functional language forum, and ask what
a monad is. Nobody yet has been able to produce an answer that doesn't involve math
theory, or that does involve a practical domain-object-based example. In fact, nobody
has really said why (or if) monads are even still useful. Or catamorphisms. Or any
of the other dime-store words that the functional community likes to toss around.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... Visual Studio 2010 will ship on time, and be one of the buggiest and/or slowest
releases in its history.&lt;/em&gt; I hate to make this prediction, because I really don't
want to be right, but there's just so much happening in the Visual Studio refactoring
effort that it makes me incredibly nervous. Widespread adoption of VS2010 will wait
until SP1 at the earliest. In fact....&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... Visual Studio 2010 SP 1 will ship within three months of the final product.&lt;/em&gt; Microsoft
knows that people wait until SP 1 to think about upgrading, so they'll just plan for
an eager SP 1 release, and hope that managers will be too hung over from the New Year
(still) to notice that the necessary shakeout time hasn't happened.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... Apple will ship a tablet with multi-touch on it, and it will flop horribly.&lt;/em&gt; Not
sure why I think this, but I just don't think the multi-touch paradigm that Apple
has cooked up for the iPhone will carry over to a tablet/laptop device. That won't
stop them from shipping it, and it won't stop Apple fan-boiz from buying it, but that's
about where the interest will end.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... JDK 7 closures will be debated for a few weeks, then become a fait accompli
as the Java community shrugs its collective shoulders.&lt;/em&gt; Frankly, I think the Java
community has exhausted its interest in debating new language features for Java. Recent
college grads and open-source groups with an axe to grind will continue to try and
make an issue out of this, but I think the overall Java community just... doesn't...
care. They just want to see JDK 7 ship someday.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... Scala either &amp;quot;pops&amp;quot; in 2010, or begins to fall apart.&lt;/em&gt; By &amp;quot;pops&amp;quot;,
I mean reaches a critical mass of developers interested in using it, enough to convince
somebody to create a company around it, a la G2One.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... Oracle is going to make a serious &amp;quot;cloud&amp;quot; play, probably by offering
an Oracle-hosted version of Azure or AppEngine.&lt;/em&gt; Oracle loves the enterprise space
too much, and derives too much money from it, to not at least appear to have some
kind of offering here. Now that they own Java, they'll marry it up against OpenSolaris,
the Oracle database, and throw the whole thing into a series of server centers all
over the continent, and call it &amp;quot;Oracle 12c&amp;quot; (c for Cloud, of course) or
something.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... Spring development will slow to a crawl and start to take a left turn toward
cloud ideas.&lt;/em&gt; VMWare bought SpringSource for a reason, and I believe it's entirely
centered around VMWare's movement into the cloud space—they want to be more than &amp;quot;just&amp;quot;
a virtualization tool. Spring + Groovy makes a compelling development stack, particularly
if VMWare does some interesting hooks-n-hacks to make Spring a virtualization environment
in its own right somehow. But from a practical perspective, any community-driven development
against Spring is all but basically dead. The source may be downloadable later, like
the VMWare Player code is, but making contributions back? Fuhgeddabowdit.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... the explosion of e-book readers brings the Kindle 2009 edition way down to
size.&lt;/em&gt; The era of the e-book reader is here, and honestly, while I'm glad I have
a Kindle, I'm expecting that I'll be dusting it off a shelf in a few years. Kinda
like I do with my iPods from a few years ago.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... &amp;quot;social networking&amp;quot; becomes the &amp;quot;Web 2.0&amp;quot; of 2010.&lt;/em&gt; In
other words, using the term will basically identify you as a tech wannabe and clearly
out of touch with the bleeding edge.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... Facebook becomes a developer platform requirement.&lt;/em&gt; I don't pretend to
know anything about Facebook—I'm not even on it, which amazes my family to no end—but
clearly Facebook is one of those mechanisms by which people reach each other, and
before long, it'll start showing up as a developer requirement for companies looking
to hire. If you're looking to build out your resume to make yourself attractive to
companies in 2010, mad Facebook skillz might not be a bad investment.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... Nintendo releases an open SDK for building games for its next-gen DS-based
device.&lt;/em&gt; With the spectacular success of games on the iPhone, Nintendo clearly
must see that they're missing a huge opportunity every day developers can't write
games for the Nintendo DS that are easily downloadable to the device for playing.
Nintendo is not stupid—if they don't open up the SDK and promote &amp;quot;casual&amp;quot;
games like those on the iPhone and those that can now be downloaded to the Zune or
the XBox, they risk being marginalized out of existence.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
And for the next decade, I predict....
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;... colleges and unversities will begin issuing e-book reader devices to students.&lt;/em&gt; It's
a helluvalot cheaper than issuing laptops or netbooks, and besides....&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... netbooks and e-book readers will merge before the decade is out.&lt;/em&gt; Let's
be honest—if the e-book reader could do email and browse the web, you have almost
the perfect paperback-sized mobile device. As for the credit-card sized mobile device....&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... mobile phones will all but disappear as they turn into what PDAs tried to
be.&lt;/em&gt; &amp;quot;The iPhone makes calls? Really? You mean Voice-over-IP, right? No,
wait, over cell signal? It can &lt;em&gt;do &lt;/em&gt;that? Wow, there's really an app for everything,
isn't there?&amp;quot;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... wireless formats will skyrocket in importance all around the office and home.&lt;/em&gt; Combine
the iPhone's Bluetooth (or something similar yet lower-power-consuming) with an equally-capable
(Bluetooth or otherwise) projector, and suddenly many executives can leave their netbook
or laptop at home for a business presentation. Throw in the Whispersync-aware e-book
reader/netbook-thing, and now most executives have absolutely zero reason to carry
anything but their e-book/netbook and their phone/PDA. The day somebody figures out
an easy way to combine Bluetooth with PayPal on the iPhone or Android phone, we will
have more or less made pocket change irrelevant. And believe me, that day will happen
before the end of the decade.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... either Android or Windows Mobile will gain some serious market share against
the iPhone the day they figure out how to support an open and unrestricted AppStore-like
app acquisition model.&lt;/em&gt; Let's be honest, the attraction of iTunes and AppStore
is that I can see an &amp;quot;Oh, cool!&amp;quot; app on a buddy's iPhone, and have it on
mine less than 30 seconds later. If Android or WinMo can figure out how to offer that
same kind of experience without the draconian AppStore policies to go with it, they'll
start making up lost ground on iPhone in a hurry.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... Apple becomes the DOJ target of the decade.&lt;/em&gt; Microsoft was it in the 2000's,
and Apple's stunning rising success is going to put it squarely in the sights of monopolist
accusations before long. Coupled with the unfortunate health distractions that Steve
Jobs has to deal with, Apple's going to get hammered pretty hard by the end of the
decade, but it will have mastered enough market share and mindshare to weather it
as Microsoft has.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... Google becomes the next Microsoft.&lt;/em&gt; It won't be anything the founders
do, but Google will do &amp;quot;something evil&amp;quot;, and it will be loudly and screechingly
pointed out by all of Google's corporate opponents, and the star will have fallen.&lt;/li&gt;
&lt;li&gt;
... &lt;em&gt;Microsoft finds its way again.&lt;/em&gt; Microsoft, as a company, has lost its
way. This is a company that's not used to losing, and like Bill Belichick's Patriots,
they will find ways to adapt and adjust to the changed circumstances of their position
to find a way to win again. What that'll be, I have no idea, but historically, the
last decade notwithstanding, betting against Microsoft has historically been a bad
idea. My gut tells me they'll figure something new to get that mojo back.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;... a politician will make himself or herself famous by standing up to the TSA.&lt;/em&gt; The
scene will play out like this: during a Congressional hearing on airline security,
after some nut/terrorist tries to blow up another plane through nitroglycerine-soaked
underwear, the TSA director will suggest all passengers should fly naked in order
to preserve safety, the congressman/woman will stare open-mouthed at this suggestion,
proclaim, &amp;quot;Have you no sense of decency, sir?&amp;quot; and immediately get a standing
ovation and never have to worry about re-election again. Folks, if we want to prevent
any chance of loss of life from a terrorist act on an airplane, we have to prevent
passengers from getting on them. Otherwise, just accept that it might happen, do a
reasonable job of preventing it from happening, and let private insurance start offering
flight insurance against the possibility to reassure the paranoid.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
See you all next year.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=680b8296-ba07-4230-b067-edceaf04e84b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,680b8296-ba07-4230-b067-edceaf04e84b.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>Development Processes</category>
      <category>F#</category>
      <category>Flash</category>
      <category>Industry</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>LLVM</category>
      <category>Mac OS</category>
      <category>Parrot</category>
      <category>Python</category>
      <category>Reading</category>
      <category>Review</category>
      <category>Ruby</category>
      <category>Scala</category>
      <category>Security</category>
      <category>Social</category>
      <category>Solaris</category>
      <category>Visual Basic</category>
      <category>VMWare</category>
      <category>WCF</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=0c380794-aa34-4b07-afe3-26df9d0079e6</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,0c380794-aa34-4b07-afe3-26df9d0079e6.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,0c380794-aa34-4b07-afe3-26df9d0079e6.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=0c380794-aa34-4b07-afe3-26df9d0079e6</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
These are the things I think as I sit here in my resort hotel on the edge of the Dead
Sea in Israel after the <a href="http://www.javaedge.com" target="_blank">JavaEdge
2009 conference</a> on Thursday:
</p>
        <ul>
          <li>
            <em>The JavaEdge hosts (Alpha CSP) are, without a doubt, the most gracious hosts I
think I've ever had at a conference.</em> And considering the wonderful treatment
I've had at the hands of the 4Developers and JDD hosts in Krakow (Proidea) and the
SDN hosts in Amsterdam, this is saying a lot. But the Alpha CSP folks have simply
floored me, top to bottom, with their generosity and warmth.</li>
          <li>
            <em>The JavaEdge crowd is a great one.</em> I wasn't quite sure what to expect, because
in the US we don't hear much about the tech going on in Israel, so I was a bit concerned
that (a) my English was going to be difficult to grasp or that (b) my humor was going
to sail over their heads due to the language barrier, or worse, (c), the developers
at the conference wouldn't be ready to hear the keynote message ("Why the Next
Five Years Will Be About Languages"). I shouldn't have been concerned on any
of those points—this crowd understood me perfectly, laughed at most of my jokes (hey,
not even my family gets <em>all</em> of them), and more importantly, not only accepted
the thrust of the message but also came up to me afterwards and either sought clarification,
challenged one or more points, or simply said they enjoyed the keynote. It was as
engaged and enthusiastic a crowd as just about any I've had.</li>
          <li>
            <em>
              <a href="http://www.fandev.org" target="_blank">Fan(tom)</a> is something worth
looking into.</em> Some of the speakers at the conference were talking with me about
Fan (recently renamed to <a href="http://fan.googlecode.com" target="_blank">Fantom</a>,
to make it easier to Google/Bing), and I've realized that Fan's too interesting a
language for the amount of press that it gets. I think this is something I'm going
to pursue in the coming calendar year, maybe put together some presentations and/or
workshops on it.</li>
          <li>
            <em>Israel is ready for Groovy, Scala, and closures in Java.</em> These folks were
chomping at the bit at the thought of using one or all of these, at least based on
the comments and questions I got after the keynote.</li>
          <li>
            <em>Swimming in the Dead Sea is a truly bizarre experience.</em> To be honest, one
doesn't really "swim" in the Dead Sea—one just rests on top of the water,
because the salt content in the water is so high that it is (quite literally) impossible
to go under the water. It's like lounging on an inflatable raft in the water, except
without the raft. It borders on the creepy. Still, my skin is much softer now than
it was before. ;-)</li>
          <li>
            <em>Jerusalem is a fascinating city.</em> Alpha CSP set me up with a tour guide (<a href="mailto:ido_notman_at_yahoo_dot_com" target="_blank">Ido
Notman</a>), and we toured Jerusalem yesterday: all four quarters of the Old City
(the Christian quarter, the Jewish quarter, the Moslem quarter and the Armenian quarter),
the "Tomb" of King David, the Holy Sepulchre (where Christ was supposedly
crucified and buried), the Western Wall, and then back to Tel Aviv for the night.
Throughout the entire day, Ido kept up a running commentary about the history of the
city and the three religions that are centered there (Christianity, Judaism and Islam)
and the stories/legends that each holds about the city's place in their religious
beliefs. I came away just flat overwhelmed, and, once we got back, flat on my back—we
walked for most of the day, and Jerusalem is <em>not</em> a flat city like you might
expect—it's nestled in some serious mountains, which makes it a bit rough on the calves.
But it was well worth it, because there's nothing like standing and looking at pillars
right in front of you—excavated from beneath a high-rise apartment building, just
there for anybody to stroll up to and see and touch and take photos with—that were
built back when Rome meant the center of civilization. Wow.</li>
          <li>
            <em>The Palestinian-Israeli and Arab-Israeli conflict(s) are a lot more "real"
when you're in the middle of it (geographically).</em> Seeing armed Israeli guards,
driving through security checkpoints, even just driving past the wall that Israel
is building to keep a physical barrier between them and Hamas/Hezbollah is all a vivid
reminder that the nine-o'clock news is more than just something that's happening "over
there" when you're "over there" too. The highway we took (the road
from Jerusalem to Jericho, the same one mentioned in the parable of the Good Samaritan—and,
yes, we passed the Inn of the Good Samaritan on the way here, which was just a little
creepy and exciting and weird all at the same time) drove right alongside that wall
for a stretch of about five or so kilometers, and I couldn't help but wonder if somebody
in one of those apartment buildings over there, who had a clear line of sight to our
car zipping by on the freeway, was looking at us through the scope of a sniper rifle.
It's a creepy feeling, and even worse knowing that there may well have been an Israeli
sniper looking back across the wall as well, into somebody's apartment. I won't weigh
in on one side or the other here, because that's not my point; my point is that we
in the US take our physical security way too much for granted, compared to some other
parts of the world where it's not such a given.</li>
          <li>
            <em>And no, in case you were wondering, I was never concerned for my safety</em>.
Yes, it's something I thought about. But you have a better chance of dying on a New
York street corner from a runaway ice cream truck than you do from a rocket attack
or a terrorist suicide bomb (or something like that). I'd come back in a heartbeat.</li>
          <li>
            <em>Israelis really know how to party.</em> First the after-conference party on Thursday
night, then a quieter speaker dinner last night, but each time, the company was excellent,
the food was amazing, and the wine/beer/liquor-of-choice was flowing fast. I don't
know if it's just the Alpha CSP folks or Israelis in general, but these people really
have a work-hard-play-hard mentality that I just love.</li>
        </ul>
        <p>
Thanks again to Miya, Ety, Shlomi, Roi, Alex and Ido for a wonderful combination work/vacation
trip.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=0c380794-aa34-4b07-afe3-26df9d0079e6" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Thoughts from the (Java)Edge 2009</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,0c380794-aa34-4b07-afe3-26df9d0079e6.aspx</guid>
      <link>http://blogs.tedneward.com/2009/11/29/Thoughts+From+The+JavaEdge+2009.aspx</link>
      <pubDate>Sun, 29 Nov 2009 17:08:46 GMT</pubDate>
      <description>&lt;p&gt;
These are the things I think as I sit here in my resort hotel on the edge of the Dead
Sea in Israel after the &lt;a href="http://www.javaedge.com" target="_blank"&gt;JavaEdge
2009 conference&lt;/a&gt; on Thursday:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;The JavaEdge hosts (Alpha CSP) are, without a doubt, the most gracious hosts I
think I've ever had at a conference.&lt;/em&gt; And considering the wonderful treatment
I've had at the hands of the 4Developers and JDD hosts in Krakow (Proidea) and the
SDN hosts in Amsterdam, this is saying a lot. But the Alpha CSP folks have simply
floored me, top to bottom, with their generosity and warmth.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;The JavaEdge crowd is a great one.&lt;/em&gt; I wasn't quite sure what to expect, because
in the US we don't hear much about the tech going on in Israel, so I was a bit concerned
that (a) my English was going to be difficult to grasp or that (b) my humor was going
to sail over their heads due to the language barrier, or worse, (c), the developers
at the conference wouldn't be ready to hear the keynote message (&amp;quot;Why the Next
Five Years Will Be About Languages&amp;quot;). I shouldn't have been concerned on any
of those points—this crowd understood me perfectly, laughed at most of my jokes (hey,
not even my family gets &lt;em&gt;all&lt;/em&gt; of them), and more importantly, not only accepted
the thrust of the message but also came up to me afterwards and either sought clarification,
challenged one or more points, or simply said they enjoyed the keynote. It was as
engaged and enthusiastic a crowd as just about any I've had.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;a href="http://www.fandev.org" target="_blank"&gt;Fan(tom)&lt;/a&gt; is something worth
looking into.&lt;/em&gt; Some of the speakers at the conference were talking with me about
Fan (recently renamed to &lt;a href="http://fan.googlecode.com" target="_blank"&gt;Fantom&lt;/a&gt;,
to make it easier to Google/Bing), and I've realized that Fan's too interesting a
language for the amount of press that it gets. I think this is something I'm going
to pursue in the coming calendar year, maybe put together some presentations and/or
workshops on it.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Israel is ready for Groovy, Scala, and closures in Java.&lt;/em&gt; These folks were
chomping at the bit at the thought of using one or all of these, at least based on
the comments and questions I got after the keynote.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Swimming in the Dead Sea is a truly bizarre experience.&lt;/em&gt; To be honest, one
doesn't really &amp;quot;swim&amp;quot; in the Dead Sea—one just rests on top of the water,
because the salt content in the water is so high that it is (quite literally) impossible
to go under the water. It's like lounging on an inflatable raft in the water, except
without the raft. It borders on the creepy. Still, my skin is much softer now than
it was before. ;-)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Jerusalem is a fascinating city.&lt;/em&gt; Alpha CSP set me up with a tour guide (&lt;a href="mailto:ido_notman_at_yahoo_dot_com" target="_blank"&gt;Ido
Notman&lt;/a&gt;), and we toured Jerusalem yesterday: all four quarters of the Old City
(the Christian quarter, the Jewish quarter, the Moslem quarter and the Armenian quarter),
the &amp;quot;Tomb&amp;quot; of King David, the Holy Sepulchre (where Christ was supposedly
crucified and buried), the Western Wall, and then back to Tel Aviv for the night.
Throughout the entire day, Ido kept up a running commentary about the history of the
city and the three religions that are centered there (Christianity, Judaism and Islam)
and the stories/legends that each holds about the city's place in their religious
beliefs. I came away just flat overwhelmed, and, once we got back, flat on my back—we
walked for most of the day, and Jerusalem is &lt;em&gt;not&lt;/em&gt; a flat city like you might
expect—it's nestled in some serious mountains, which makes it a bit rough on the calves.
But it was well worth it, because there's nothing like standing and looking at pillars
right in front of you—excavated from beneath a high-rise apartment building, just
there for anybody to stroll up to and see and touch and take photos with—that were
built back when Rome meant the center of civilization. Wow.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;The Palestinian-Israeli and Arab-Israeli conflict(s) are a lot more &amp;quot;real&amp;quot;
when you're in the middle of it (geographically).&lt;/em&gt; Seeing armed Israeli guards,
driving through security checkpoints, even just driving past the wall that Israel
is building to keep a physical barrier between them and Hamas/Hezbollah is all a vivid
reminder that the nine-o'clock news is more than just something that's happening &amp;quot;over
there&amp;quot; when you're &amp;quot;over there&amp;quot; too. The highway we took (the road
from Jerusalem to Jericho, the same one mentioned in the parable of the Good Samaritan—and,
yes, we passed the Inn of the Good Samaritan on the way here, which was just a little
creepy and exciting and weird all at the same time) drove right alongside that wall
for a stretch of about five or so kilometers, and I couldn't help but wonder if somebody
in one of those apartment buildings over there, who had a clear line of sight to our
car zipping by on the freeway, was looking at us through the scope of a sniper rifle.
It's a creepy feeling, and even worse knowing that there may well have been an Israeli
sniper looking back across the wall as well, into somebody's apartment. I won't weigh
in on one side or the other here, because that's not my point; my point is that we
in the US take our physical security way too much for granted, compared to some other
parts of the world where it's not such a given.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;And no, in case you were wondering, I was never concerned for my safety&lt;/em&gt;.
Yes, it's something I thought about. But you have a better chance of dying on a New
York street corner from a runaway ice cream truck than you do from a rocket attack
or a terrorist suicide bomb (or something like that). I'd come back in a heartbeat.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Israelis really know how to party.&lt;/em&gt; First the after-conference party on Thursday
night, then a quieter speaker dinner last night, but each time, the company was excellent,
the food was amazing, and the wine/beer/liquor-of-choice was flowing fast. I don't
know if it's just the Alpha CSP folks or Israelis in general, but these people really
have a work-hard-play-hard mentality that I just love.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Thanks again to Miya, Ety, Shlomi, Roi, Alex and Ido for a wonderful combination work/vacation
trip.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=0c380794-aa34-4b07-afe3-26df9d0079e6" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,0c380794-aa34-4b07-afe3-26df9d0079e6.aspx</comments>
      <category>Conferences</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Review</category>
      <category>Social</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=d3b4c5aa-2964-492c-9af3-523cb403b444</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,d3b4c5aa-2964-492c-9af3-523cb403b444.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,d3b4c5aa-2964-492c-9af3-523cb403b444.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d3b4c5aa-2964-492c-9af3-523cb403b444</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Paul asked me to review this, his first book, and my comment to him was that he had
a pretty high bar to match; being of the same "series" as <em>Release It!</em>,
Mike Nygard's take on building software ready for production (and, in my repeatedly
stated opinion, the most important-to-read book of the decade), <em>Debug It!</em> had
some pretty impressive shoes to fill. Paul's comment was pretty predictable: "Thanks
for keeping the pressure to a minimum."
</p>
        <p>
My copy arrived in the mail while I was at the NFJS show in Denver this past weekend,
and with a certain amount of dread and excitement, I opened the envelope and sat down
to read for a few minutes. I managed to get halfway through it before deciding I had
to post a review before I get too caught up in my next trip and forget.
</p>
        <h4>
          <em>Short version</em>
        </h4>
        <p>
          <em>Debug It!</em> is a great resource for anyone looking to learn the science of
good debugging. It is entirely language- and platform-agnostic, preferring to focus
entirely on the <em>process</em> and <em>mindset</em> of debugging, rather than on
edge cases or command-line switches in a tool or language. Overall, the writing is
clear and straightforward without being preachy or judgmental, and is liberally annotated
with real-life case stories from both the authors' and the Pragmatic Programmers'
own history, which keeps the tone lighter and yet still proving the point of the text.
Highly recommended for the junior developers on the team; senior developers will likely
find some good tidbits in here as well. 
</p>
        <h4>
          <em>Long version</em>
        </h4>
        <p>
          <em>Debug It!</em> is an excellently-written and to-the-point description of the process
of not only identifying and fixing defects in software, but also of the attitudes
required to keep software from failing. Rather than simply tossing off old maxims
or warming them over with new terminology ("You should always verify the parameters
to your procedure calls" replaced with "You should always verify the parameters
entering a method and ensure the fields follow the invariants established in the specification"),
Paul ensures that when making a point, his prose is clear, the rationale carefully
explained, and the consequences of not following this advice are clearly spelled out.
His advice is pragmatic, and takes into account that developers can't always follow
the absolute rules we'd like to—he talks about some of his experiences with "bug
priorities" and how users pretty quickly figured out to always set the bug's
priority at the highest level in order to get developer attention, for example, and
some ways to try and address that all-too-human failing of bug-tracking systems.
</p>
        <p>
It needs to be said, right from the beginning, that <em>Debug It!</em> will not teach
you how to use the debugging features of your favorite IDE, however. This is because
Paul (deliberately, it seems) takes a platform- and language-agnostic approach to
the book—there are no examples of how to set breakpoints in gdb, or how to attach
the Visual Studio IDE to a running Windows service, for example. This will likely
weed out those readers who are looking for "Google-able" answers to their
common debugging problems, and that's a shame, because those are probably the very
readers that need to read this book. Having said that, however, I like this agnostic
approach, because these ideas and thought processes, the ones that are entirely independent
of the language or platform, are exactly the kinds of things that senior developers
carry over with them from one platform to the next. Still, the junior developer who
picks this book up is going to still need a reference manual or the user manual for
their IDE or toolchain, and will need to practice some with both books in hand if
they want to maximize the effectiveness of what's in here.
</p>
        <p>
One of the things I like most about this book is that it is liberally adorned with
real-life discussions of various scenarios the author team has experienced; the reason
I say "author team" here is because although the stories (for the most part)
remain unattributed, there are obvious references to "Dave" and "Andy",
which I assume pretty obviously refer to Dave Thomas and Andy Hunt, the Pragmatic
Programmers and the owners of Pragmatic Bookshelf. Some of the stories are humorous,
and some of them probably would be humorous if they didn't strike so close to my own
bitterly-remembered experiences. All of them do a good job of reinforcing the point,
however, thus rendering the prose more effective in communicating the idea without
getting to be too preachy or bombastic.
</p>
        <p>
The book obviously intends to target a junior developer audience, because most senior
developers have already intuitively (or experientially) figured out many of the processes
described in here. But, quite frankly, I think it would be a shame for senior developers
to pass on this one; though the temptation will be to simply toss it aside and say,
"I already do all this stuff", senior developers should resist that urge
and read it through cover to cover. If nothing else, it'll help reinforce certain
ideas, bring some of the intuitive process more to light and allow us to analyze what
we do right and what we do wrong, and perhaps most importantly, give us a common backdrop
against which we can mentor junior developers in the science of debugging.
</p>
        <p>
One of the chapters I like in particular, "Chapter 7: Pragmatic Zero Tolerance",
is particularly good reading for those shops that currently suffer from a deficit
of management support for writing good software. In it, Paul talks specifically about
some of the triage process about bugs ("When to fix bugs"), the mental approach
developers should have to fixing bugs ("The debugging mind-set") and how
to get started on creating good software out of bad ("How to dig yourself out
of a quality hole"). These are techniques that a senior developer can bring to
the team and implement at a grass-roots level, in many cases without management even
being aware of what's going on. (It's a sad state of affairs that we sometimes have
to work behind management's back to write good-quality code, but I know that some
developers out there are in exactly that situation, and simply saying, "Quit
and find a new job", although pithy and good for a laugh on a panel, doesn't
really offer much in the way of help. Paul doesn't take that route here, and that
alone makes this book worth reading.)
</p>
        <p>
Another of the chapters that resonates well with me is the first one in Part III ("Debug
Fu"), Chapter 8, entitled "Special Cases", in which he tackles a number
of "advanced" debugging topics, such as "Patching Existing Releases"
and "Hesenbugs" (Concurrency-related bugs). I won't spoil the punchline
for you, but suffice it to say that I wish I'd had that chapter on hand to give out
to teammates on a few projects I've worked on in the past.
</p>
        <p>
Overall, this book is going to be a huge win, and I think it's a worthy successor
to the <em>Release It!</em> reputation. Development managers and team leads should
get a copy for the junior developers on their team as a Christmas gift, but only after
the senior developers have read through it as well. (Senior devs, don't despair—at
190 pages, you can rip through this in a single night, and I can almost guarantee
that you'll learn a few ideas you can put into practice the next morning to boot.)
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=d3b4c5aa-2964-492c-9af3-523cb403b444" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Book Review: Debug It! (Paul Butcher, Pragmatic Bookshelf)</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,d3b4c5aa-2964-492c-9af3-523cb403b444.aspx</guid>
      <link>http://blogs.tedneward.com/2009/11/23/Book+Review+Debug+It+Paul+Butcher+Pragmatic+Bookshelf.aspx</link>
      <pubDate>Mon, 23 Nov 2009 07:24:41 GMT</pubDate>
      <description>&lt;p&gt;
Paul asked me to review this, his first book, and my comment to him was that he had
a pretty high bar to match; being of the same &amp;quot;series&amp;quot; as &lt;em&gt;Release It!&lt;/em&gt;,
Mike Nygard's take on building software ready for production (and, in my repeatedly
stated opinion, the most important-to-read book of the decade), &lt;em&gt;Debug It!&lt;/em&gt; had
some pretty impressive shoes to fill. Paul's comment was pretty predictable: &amp;quot;Thanks
for keeping the pressure to a minimum.&amp;quot;
&lt;/p&gt;
&lt;p&gt;
My copy arrived in the mail while I was at the NFJS show in Denver this past weekend,
and with a certain amount of dread and excitement, I opened the envelope and sat down
to read for a few minutes. I managed to get halfway through it before deciding I had
to post a review before I get too caught up in my next trip and forget.
&lt;/p&gt;
&lt;h4&gt;&lt;em&gt;Short version&lt;/em&gt;
&lt;/h4&gt;
&lt;p&gt;
&lt;em&gt;Debug It!&lt;/em&gt; is a great resource for anyone looking to learn the science of
good debugging. It is entirely language- and platform-agnostic, preferring to focus
entirely on the &lt;em&gt;process&lt;/em&gt; and &lt;em&gt;mindset&lt;/em&gt; of debugging, rather than on
edge cases or command-line switches in a tool or language. Overall, the writing is
clear and straightforward without being preachy or judgmental, and is liberally annotated
with real-life case stories from both the authors' and the Pragmatic Programmers'
own history, which keeps the tone lighter and yet still proving the point of the text.
Highly recommended for the junior developers on the team; senior developers will likely
find some good tidbits in here as well. 
&lt;/p&gt;
&lt;h4&gt;&lt;em&gt;Long version&lt;/em&gt;
&lt;/h4&gt;
&lt;p&gt;
&lt;em&gt;Debug It!&lt;/em&gt; is an excellently-written and to-the-point description of the process
of not only identifying and fixing defects in software, but also of the attitudes
required to keep software from failing. Rather than simply tossing off old maxims
or warming them over with new terminology (&amp;quot;You should always verify the parameters
to your procedure calls&amp;quot; replaced with &amp;quot;You should always verify the parameters
entering a method and ensure the fields follow the invariants established in the specification&amp;quot;),
Paul ensures that when making a point, his prose is clear, the rationale carefully
explained, and the consequences of not following this advice are clearly spelled out.
His advice is pragmatic, and takes into account that developers can't always follow
the absolute rules we'd like to—he talks about some of his experiences with &amp;quot;bug
priorities&amp;quot; and how users pretty quickly figured out to always set the bug's
priority at the highest level in order to get developer attention, for example, and
some ways to try and address that all-too-human failing of bug-tracking systems.
&lt;/p&gt;
&lt;p&gt;
It needs to be said, right from the beginning, that &lt;em&gt;Debug It!&lt;/em&gt; will not teach
you how to use the debugging features of your favorite IDE, however. This is because
Paul (deliberately, it seems) takes a platform- and language-agnostic approach to
the book—there are no examples of how to set breakpoints in gdb, or how to attach
the Visual Studio IDE to a running Windows service, for example. This will likely
weed out those readers who are looking for &amp;quot;Google-able&amp;quot; answers to their
common debugging problems, and that's a shame, because those are probably the very
readers that need to read this book. Having said that, however, I like this agnostic
approach, because these ideas and thought processes, the ones that are entirely independent
of the language or platform, are exactly the kinds of things that senior developers
carry over with them from one platform to the next. Still, the junior developer who
picks this book up is going to still need a reference manual or the user manual for
their IDE or toolchain, and will need to practice some with both books in hand if
they want to maximize the effectiveness of what's in here.
&lt;/p&gt;
&lt;p&gt;
One of the things I like most about this book is that it is liberally adorned with
real-life discussions of various scenarios the author team has experienced; the reason
I say &amp;quot;author team&amp;quot; here is because although the stories (for the most part)
remain unattributed, there are obvious references to &amp;quot;Dave&amp;quot; and &amp;quot;Andy&amp;quot;,
which I assume pretty obviously refer to Dave Thomas and Andy Hunt, the Pragmatic
Programmers and the owners of Pragmatic Bookshelf. Some of the stories are humorous,
and some of them probably would be humorous if they didn't strike so close to my own
bitterly-remembered experiences. All of them do a good job of reinforcing the point,
however, thus rendering the prose more effective in communicating the idea without
getting to be too preachy or bombastic.
&lt;/p&gt;
&lt;p&gt;
The book obviously intends to target a junior developer audience, because most senior
developers have already intuitively (or experientially) figured out many of the processes
described in here. But, quite frankly, I think it would be a shame for senior developers
to pass on this one; though the temptation will be to simply toss it aside and say,
&amp;quot;I already do all this stuff&amp;quot;, senior developers should resist that urge
and read it through cover to cover. If nothing else, it'll help reinforce certain
ideas, bring some of the intuitive process more to light and allow us to analyze what
we do right and what we do wrong, and perhaps most importantly, give us a common backdrop
against which we can mentor junior developers in the science of debugging.
&lt;/p&gt;
&lt;p&gt;
One of the chapters I like in particular, &amp;quot;Chapter 7: Pragmatic Zero Tolerance&amp;quot;,
is particularly good reading for those shops that currently suffer from a deficit
of management support for writing good software. In it, Paul talks specifically about
some of the triage process about bugs (&amp;quot;When to fix bugs&amp;quot;), the mental approach
developers should have to fixing bugs (&amp;quot;The debugging mind-set&amp;quot;) and how
to get started on creating good software out of bad (&amp;quot;How to dig yourself out
of a quality hole&amp;quot;). These are techniques that a senior developer can bring to
the team and implement at a grass-roots level, in many cases without management even
being aware of what's going on. (It's a sad state of affairs that we sometimes have
to work behind management's back to write good-quality code, but I know that some
developers out there are in exactly that situation, and simply saying, &amp;quot;Quit
and find a new job&amp;quot;, although pithy and good for a laugh on a panel, doesn't
really offer much in the way of help. Paul doesn't take that route here, and that
alone makes this book worth reading.)
&lt;/p&gt;
&lt;p&gt;
Another of the chapters that resonates well with me is the first one in Part III (&amp;quot;Debug
Fu&amp;quot;), Chapter 8, entitled &amp;quot;Special Cases&amp;quot;, in which he tackles a number
of &amp;quot;advanced&amp;quot; debugging topics, such as &amp;quot;Patching Existing Releases&amp;quot;
and &amp;quot;Hesenbugs&amp;quot; (Concurrency-related bugs). I won't spoil the punchline
for you, but suffice it to say that I wish I'd had that chapter on hand to give out
to teammates on a few projects I've worked on in the past.
&lt;/p&gt;
&lt;p&gt;
Overall, this book is going to be a huge win, and I think it's a worthy successor
to the &lt;em&gt;Release It!&lt;/em&gt; reputation. Development managers and team leads should
get a copy for the junior developers on their team as a Christmas gift, but only after
the senior developers have read through it as well. (Senior devs, don't despair—at
190 pages, you can rip through this in a single night, and I can almost guarantee
that you'll learn a few ideas you can put into practice the next morning to boot.)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=d3b4c5aa-2964-492c-9af3-523cb403b444" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,d3b4c5aa-2964-492c-9af3-523cb403b444.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>C++</category>
      <category>Development Processes</category>
      <category>F#</category>
      <category>Industry</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>LLVM</category>
      <category>Mac OS</category>
      <category>Parrot</category>
      <category>Python</category>
      <category>Reading</category>
      <category>Review</category>
      <category>Ruby</category>
      <category>Scala</category>
      <category>Solaris</category>
      <category>Visual Basic</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=3026e434-b1c8-4525-816a-2efcd5d2a6e6</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,3026e434-b1c8-4525-816a-2efcd5d2a6e6.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,3026e434-b1c8-4525-816a-2efcd5d2a6e6.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3026e434-b1c8-4525-816a-2efcd5d2a6e6</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recently, an email crossed my Inbox from a friend who was concerned about some questionable
practices involving my content (as well as a few others'); apparently, I have been
listed as an "author" for SysCon, I have a "domain" with them,
and that I've been writing for them since 10 January, 2003, including two articles,
"Effective Enterprise Java" and "Java/.NET Interoperability".
</p>
        <p>
Given that both of those "articles" are summaries from <em>presentations</em> I've
done at conferences past, I'm a touch skeptical. In fact, it feels like those summaries
were scraped from conferences I've done in the past, and I <em>certainly</em> don't
remember ever giving Sys-Con (or any other conference) the right to reprint my presentation
as an article.
</p>
        <p>
Then it turns out that apparently <a href="http://aralbalkan.com/2284" target="_blank">I'm
not the only one suffering this problem</a>. Go. Read that article, then come back.
I promise, I'll wait.
</p>
        <p>
(Seriously, go read it.)
</p>
        <p>
Wow. Just... wow. If even <em>half</em> of what Aral's story is true (and I'm inclined
to believe at least part of it, given that he's done some pretty meticulous documentation
of at least his side of the story), then this is beyond outrageous, and squarely into
"completely unethical".
</p>
        <p>
Now, I'll be the first to admit, I've not heard back from Sys-Con about any of this,
so if I get any sort of response I'll be sure to update this blog post. But...
</p>
        <p>
          <em>Calling anyone a "homosexual son of a bitch", "terrorist"
or "fag" is so unbelievably offensive it staggers the mind.</em> Normally,
I'd be a bit hesitant to just give either party the benefit of the doubt on that one,
given just how ludicrous the accusation sounds, but Aral includes screen shots of
the articles, which in of itself lends an air of credibility to the accusation—either
Aral is the world's worst Turkish translator, or Sys-Con's translation into Turkish
is a bit on the "edgy" side, or Sys-Con really did call him that. Which
implies that whichever way this goes, doesn't look good for one of the two parties.
But even if we leave that to one side....
</p>
        <p>
          <em>Sys-Con is playing with fire by collecting my content and claiming me as an author.</em> Sys-Con
never contacted me about becoming a part of their "Ulitzer" website. They
never asked me for permission to reprint my articles, though, I'll admit, I can't
find where the articles actually exist, nor links to the articles, so maybe they didn't,
actually, reprint the article, but just link to them... except I can't find the links
to the articles or the presentations, either. They never asked me for an updated bio
or photo, and in fact, they pretty clearly grabbed both bio, photo and "summaries"
from an old location, because that bio lists me as a DevelopMentor instructor (which
I haven't been for two years or so), and as living in Sacramento, CA (which I haven't
been for about three years or so). Let me be very clear about this: <strong>I do not
write for Sys-Con Media. I never have. They have never asked permission to reuse any
of the content I have produced. I am appalled at being included in such a fashion.</strong></p>
        <p>
Note that I'm not opposed to being linked to, mind you—if I put material on my blog,
I generally expect (and hope) that people will link to it, and I don't demand permission
or even notification when it happens. But to claim that I've written material for
an entity <em>does</em> mean I expect to at least be asked if it's OK to use my likeness,
name, or material. No such request was ever made of me, so far as I can remember or
find (through my own email archives, which stretch back to 2001).
</p>
        <p>
And I can say that I've thought about this issue before, from the other side of the
story—back when I was editor at TheServerSide.NET, we began a "blogger's program"
that would take interesting blog posts from around the Internet and "collect"
them in some fashion for TSS.NET readers. Originally, the thought was to simply reproduce
the content directly on our site, and I hated that idea, for the same reasons as I
dislike it when somebody does it to me. Regardless of the licensing model the blog
entries are published under, to me, a publication or media firm owes the author at
least the right of refusal, and a chance to be notified when their material is reused.
(In the end, we chose to ask authors if we could reproduce their material in the program,
and we never (to my knowledge) had an author refuse.) It doesn't take a real rocket
scientist's brain to figure out that asking permission is never a bad thing to do
if you want to maintain good will with your sources of material.
</p>
        <p>
This is an open and public request to Sys-Con media: either contact me about using
my name, likeness and material on your website, or remove it. (I have emailed their
editorial and asked them to acknowledge receipt of my request.)
</p>
        <p>
In the meantime, I will be making every effort to make sure that other content-producers
I know are aware of Sys-Con's practices, so they can act as they see fit.
</p>
        <p>
If you are a reader, and find this distasteful as well, then I suggest you follow
some of the suggestions mentioned in Aral's blog post:
</p>
        <ul>
          <ul>
            <li>
Tell everyone you know about what Sys-Con is doing (but don't link to them so as not
to give them Google Juice). If tweeting, leave out the http:// bit so that your URL
is not automatically made into a link. 
</li>
            <li>
Sys-Con feeds upon the work of authors and speakers to live. If all authors had their
content removed from Sys-Con and Ulitzer, they would not have pages to put ads on.
So go through their list of authors and notify the ones you know. If they are unaware
that they're listed there, they will most likely want themselves removed. <strong>Update:</strong> I've
created a single list of all Sys-Con's Ulitzer authors. <a href="http://aralbalkan.com/2303">More
information and the full list are in this post</a>. The original list of authors is
at http://www.ulitzer.com/?q=authors. You can ask for your Ulitzer/Sys-Con author
page to be removed by emailing <a href="mailto:editorial@sys-con.com">editorial@sys-con.com</a>. 
</li>
            <li>
Contact their advertisers and tell them what you think of their association with Sys-Con. 
</li>
            <li>
If you know any speakers speaking at Sys-Con events, make sure they know the kind
of company they are associating themselves with. Do the same with anyone you know
who is thinking of attending one of their events. Raise awareness about their events
at your place of work. 
</li>
            <li>
Make sure Google knows that Sys-Con/Ulitzer is spamming Google with tons of duplicate
content. <a href="http://www.google.com/contact/spamreport.html">Report them on Google's
spam page for posting duplicate content</a>. According to their terms and conditions,
Google should stop indexing Sys-Con/Ulitzer. <a href="http://aralbalkan.com/2284#comment-256711">See
this comment for a template you can use when reporting them.</a></li>
            <li>
Make sure Google News knows that they are syndicating libelous articles from Sys-Con.
Use the <a href="http://www.google.com/support/news_pub/bin/request.py?contact_type=report_an_issue">Google
News Report an Issue form</a> to report the following articles: http://internetvideo.sys-con.com/node/1017038,
http://internetvideo.sys-con.com/node/1028923, http://www.sys-con.com/node/1035252,
http://air.ulitzer.com/node/1038383, http://openwebdeveloper.sys-con.com/node/1039556,
and http://cloudcomputing.sys-con.com/node/1047589 
</li>
          </ul>
        </ul>
        <p>
Meanwhile, I'm going to be talking about this to everybody I know at Microsoft, desperately
seeking to find out which department engaged the advertising with Sys-Con, and looking
to convince them that they don't need this kind of press or association. Ditto for
the contacts (far fewer in number) I have with IBM, and any other Sys-Con advertiser
I find.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=3026e434-b1c8-4525-816a-2efcd5d2a6e6" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>More on journalistic integrity: Sys-Con, Ulitzer, theft and libel</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,3026e434-b1c8-4525-816a-2efcd5d2a6e6.aspx</guid>
      <link>http://blogs.tedneward.com/2009/07/29/More+On+Journalistic+Integrity+SysCon+Ulitzer+Theft+And+Libel.aspx</link>
      <pubDate>Wed, 29 Jul 2009 01:58:00 GMT</pubDate>
      <description>&lt;p&gt;
Recently, an email crossed my Inbox from a friend who was concerned about some questionable
practices involving my content (as well as a few others'); apparently, I have been
listed as an &amp;quot;author&amp;quot; for SysCon, I have a &amp;quot;domain&amp;quot; with them,
and that I've been writing for them since 10 January, 2003, including two articles,
&amp;quot;Effective Enterprise Java&amp;quot; and &amp;quot;Java/.NET Interoperability&amp;quot;.
&lt;/p&gt;
&lt;p&gt;
Given that both of those &amp;quot;articles&amp;quot; are summaries from &lt;em&gt;presentations&lt;/em&gt; I've
done at conferences past, I'm a touch skeptical. In fact, it feels like those summaries
were scraped from conferences I've done in the past, and I &lt;em&gt;certainly&lt;/em&gt; don't
remember ever giving Sys-Con (or any other conference) the right to reprint my presentation
as an article.
&lt;/p&gt;
&lt;p&gt;
Then it turns out that apparently &lt;a href="http://aralbalkan.com/2284" target="_blank"&gt;I'm
not the only one suffering this problem&lt;/a&gt;. Go. Read that article, then come back.
I promise, I'll wait.
&lt;/p&gt;
&lt;p&gt;
(Seriously, go read it.)
&lt;/p&gt;
&lt;p&gt;
Wow. Just... wow. If even &lt;em&gt;half&lt;/em&gt; of what Aral's story is true (and I'm inclined
to believe at least part of it, given that he's done some pretty meticulous documentation
of at least his side of the story), then this is beyond outrageous, and squarely into
&amp;quot;completely unethical&amp;quot;.
&lt;/p&gt;
&lt;p&gt;
Now, I'll be the first to admit, I've not heard back from Sys-Con about any of this,
so if I get any sort of response I'll be sure to update this blog post. But...
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Calling anyone a &amp;quot;homosexual son of a bitch&amp;quot;, &amp;quot;terrorist&amp;quot;
or &amp;quot;fag&amp;quot; is so unbelievably offensive it staggers the mind.&lt;/em&gt; Normally,
I'd be a bit hesitant to just give either party the benefit of the doubt on that one,
given just how ludicrous the accusation sounds, but Aral includes screen shots of
the articles, which in of itself lends an air of credibility to the accusation—either
Aral is the world's worst Turkish translator, or Sys-Con's translation into Turkish
is a bit on the &amp;quot;edgy&amp;quot; side, or Sys-Con really did call him that. Which
implies that whichever way this goes, doesn't look good for one of the two parties.
But even if we leave that to one side....
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Sys-Con is playing with fire by collecting my content and claiming me as an author.&lt;/em&gt; Sys-Con
never contacted me about becoming a part of their &amp;quot;Ulitzer&amp;quot; website. They
never asked me for permission to reprint my articles, though, I'll admit, I can't
find where the articles actually exist, nor links to the articles, so maybe they didn't,
actually, reprint the article, but just link to them... except I can't find the links
to the articles or the presentations, either. They never asked me for an updated bio
or photo, and in fact, they pretty clearly grabbed both bio, photo and &amp;quot;summaries&amp;quot;
from an old location, because that bio lists me as a DevelopMentor instructor (which
I haven't been for two years or so), and as living in Sacramento, CA (which I haven't
been for about three years or so). Let me be very clear about this: &lt;strong&gt;I do not
write for Sys-Con Media. I never have. They have never asked permission to reuse any
of the content I have produced. I am appalled at being included in such a fashion.&lt;/strong&gt; 
&lt;/p&gt;
&lt;p&gt;
Note that I'm not opposed to being linked to, mind you—if I put material on my blog,
I generally expect (and hope) that people will link to it, and I don't demand permission
or even notification when it happens. But to claim that I've written material for
an entity &lt;em&gt;does&lt;/em&gt; mean I expect to at least be asked if it's OK to use my likeness,
name, or material. No such request was ever made of me, so far as I can remember or
find (through my own email archives, which stretch back to 2001).
&lt;/p&gt;
&lt;p&gt;
And I can say that I've thought about this issue before, from the other side of the
story—back when I was editor at TheServerSide.NET, we began a &amp;quot;blogger's program&amp;quot;
that would take interesting blog posts from around the Internet and &amp;quot;collect&amp;quot;
them in some fashion for TSS.NET readers. Originally, the thought was to simply reproduce
the content directly on our site, and I hated that idea, for the same reasons as I
dislike it when somebody does it to me. Regardless of the licensing model the blog
entries are published under, to me, a publication or media firm owes the author at
least the right of refusal, and a chance to be notified when their material is reused.
(In the end, we chose to ask authors if we could reproduce their material in the program,
and we never (to my knowledge) had an author refuse.) It doesn't take a real rocket
scientist's brain to figure out that asking permission is never a bad thing to do
if you want to maintain good will with your sources of material.
&lt;/p&gt;
&lt;p&gt;
This is an open and public request to Sys-Con media: either contact me about using
my name, likeness and material on your website, or remove it. (I have emailed their
editorial and asked them to acknowledge receipt of my request.)
&lt;/p&gt;
&lt;p&gt;
In the meantime, I will be making every effort to make sure that other content-producers
I know are aware of Sys-Con's practices, so they can act as they see fit.
&lt;/p&gt;
&lt;p&gt;
If you are a reader, and find this distasteful as well, then I suggest you follow
some of the suggestions mentioned in Aral's blog post:
&lt;/p&gt;
&lt;ul&gt;
&lt;ul&gt;
&lt;li&gt;
Tell everyone you know about what Sys-Con is doing (but don't link to them so as not
to give them Google Juice). If tweeting, leave out the http:// bit so that your URL
is not automatically made into a link. 
&lt;/li&gt;
&lt;li&gt;
Sys-Con feeds upon the work of authors and speakers to live. If all authors had their
content removed from Sys-Con and Ulitzer, they would not have pages to put ads on.
So go through their list of authors and notify the ones you know. If they are unaware
that they're listed there, they will most likely want themselves removed. &lt;strong&gt;Update:&lt;/strong&gt; I've
created a single list of all Sys-Con's Ulitzer authors. &lt;a href="http://aralbalkan.com/2303"&gt;More
information and the full list are in this post&lt;/a&gt;. The original list of authors is
at http://www.ulitzer.com/?q=authors. You can ask for your Ulitzer/Sys-Con author
page to be removed by emailing &lt;a href="mailto:editorial@sys-con.com"&gt;editorial@sys-con.com&lt;/a&gt;. 
&lt;/li&gt;
&lt;li&gt;
Contact their advertisers and tell them what you think of their association with Sys-Con. 
&lt;/li&gt;
&lt;li&gt;
If you know any speakers speaking at Sys-Con events, make sure they know the kind
of company they are associating themselves with. Do the same with anyone you know
who is thinking of attending one of their events. Raise awareness about their events
at your place of work. 
&lt;/li&gt;
&lt;li&gt;
Make sure Google knows that Sys-Con/Ulitzer is spamming Google with tons of duplicate
content. &lt;a href="http://www.google.com/contact/spamreport.html"&gt;Report them on Google's
spam page for posting duplicate content&lt;/a&gt;. According to their terms and conditions,
Google should stop indexing Sys-Con/Ulitzer. &lt;a href="http://aralbalkan.com/2284#comment-256711"&gt;See
this comment for a template you can use when reporting them.&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
Make sure Google News knows that they are syndicating libelous articles from Sys-Con.
Use the &lt;a href="http://www.google.com/support/news_pub/bin/request.py?contact_type=report_an_issue"&gt;Google
News Report an Issue form&lt;/a&gt; to report the following articles: http://internetvideo.sys-con.com/node/1017038,
http://internetvideo.sys-con.com/node/1028923, http://www.sys-con.com/node/1035252,
http://air.ulitzer.com/node/1038383, http://openwebdeveloper.sys-con.com/node/1039556,
and http://cloudcomputing.sys-con.com/node/1047589 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;p&gt;
Meanwhile, I'm going to be talking about this to everybody I know at Microsoft, desperately
seeking to find out which department engaged the advertising with Sys-Con, and looking
to convince them that they don't need this kind of press or association. Ditto for
the contacts (far fewer in number) I have with IBM, and any other Sys-Con advertiser
I find.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=3026e434-b1c8-4525-816a-2efcd5d2a6e6" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,3026e434-b1c8-4525-816a-2efcd5d2a6e6.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Industry</category>
      <category>Java/J2EE</category>
      <category>Reading</category>
      <category>Review</category>
      <category>Ruby</category>
      <category>Security</category>
      <category>Social</category>
      <category>VMWare</category>
      <category>WCF</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=256ef373-ecd5-47c8-b4c4-a794e04e663c</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,256ef373-ecd5-47c8-b4c4-a794e04e663c.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,256ef373-ecd5-47c8-b4c4-a794e04e663c.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=256ef373-ecd5-47c8-b4c4-a794e04e663c</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This <a href="http://www.techcrunch.com/2009/07/14/in-our-inbox-hundreds-of-confidential-twitter-documents/" target="_blank">post
from TechCrunch</a> crossed my attention inbox today, and I find myself quite flummoxed
on the subject of how I think I should react.
</p>
        <p>
Assume you have managed, through no overt work on your part (meaning, you didn't explicitly
solicit, ask, or otherwise endeavor to obtain), to get ownership of "hundreds
of confidential corporate and personal documents" for a company. Assume further
that these documents are genuine—there is little to no chance that they could have
been forged or fabricated. The documents span a range of sensitivity, from documents
that are "somewhat embarrassing to various individuals, but not otherwise interesting",
to documents that "show floorplans and security passcodes to get into the Twitter
offices", to documents "showing financial projections, product plans and
notes from executive strategy meetings". In other words, documents that yes,
could create a certain amount of havoc to the corporate entity in question, could
embarrass individuals within (and not within) that company, and documents that could
lead to a competitive advantage for the entity's competitors.
</p>
        <p>
Now also assume, for the purpose of the discussion, that you are an entity whose business
model or <em>raison d'etre</em> is to publish—you are a blogger, a "social networking
maven", a media outlet, whatever.
</p>
        <p>
Is it unethical to publish these documents? Is it simply trolling for hits? Is there
a "journalistic responsibility" to publish this material?
</p>
        <p>
The people from TechCrunch feel like they have a right/responsibility to publish at
least some of the documents, and are unswayed by the arguments in the blog's comments
about the morality of such a move, including such comments as "This is an a**hole
move" and "there's still an appearance of lapse of ethics here" (and
that's just within the first half-dozen comments or so". What is particularly
interesting is the response from (someone I assume to be) one of the blog's owners:
</p>
        <blockquote>
          <p>
lol. if we only posted things that companies gave us permission to post this would
be a press release site and none of you would be here. News is stuff someone doesn’t
want you to write. The rest is advertising.
</p>
        </blockquote>
        <p>
This comment disturbs me on several levels—it's only news if it's "stuff someone
doesn't want you to write"? That's a pretty shallow and narrowly-defined sense
of the term, if you ask me, and it puts periodicals like National Enquirer and Star
magazines on the same level as the New York Times and CNN. (Although, and I'll freely
admit this, having just come through the Michael Jackson media blitz, sometimes it
feels difficult to tell the difference between all four of those.)
</p>
        <p>
At the same time, though, it's clear from our own history that journalism has served
the public good by shining a bright light into shady corners that some powers-that-be
would prefer left unexposed. The abuses described by Upton Sinclair in the turn-of-the-century
factories, the rampant sexual harassment in the military exposed by the Tailhook scandal,
and certainly the outright blatantly violent suppression of Civil Rights movement
of the 60's in the South were all shining examples of journalism at its finest, showing
off dark and ugly parts of the world and—either implicitly or explicitly—demanding
society to acknowledge it and either openly accept it or strive to change it (with
all three of my examples seeing society choosing the latter).
</p>
        <p>
What is "journalistic responsibility" here?
</p>
        <p>
In our chosen field—that of computer science and software—there is clearly a responsibility
for those "in the know" to reveal scenarios where information is being purloined
or made available that violates individuals' rights to privacy. It's one thing if
I trade my personal sales habits to a grocery store chain in exchange for a percentage
off the final sale. That's a choice I'm making, consciously and knowingly. (By this
point, if you haven't figured that out, you're just deliberately hiding from the fact.)
But for somebody else to disclose my purchasing history <em>without my consent</em> to
another party, that's brushing a very ugly moral dark area. And if a company is choosing
to take its customers' personal data and make it available for anyone else to use
as they see fit—for whatever purpose that third party can imagine—then cheers and
kudos to the whistle-blower who brings media attention on that behavior.
</p>
        <p>
But Twitter doesn't have much of my personal data, and they certainly didn't give
it away to anybody—it was stolen from them, according to what I've read so far. What's
more, I don't really have that much personal data stored with them—certainly no credit
cards, birthdates, financial or medical information, or even family notes. What's
there is actually pretty tame, as a Twitter customer.
</p>
        <p>
(Twitter employees are a totally different matter. Admittedly. But let's just stick
with the Twitter customer data for now.)
</p>
        <p>
So where is the "journalistic responsibility" in publishing this material?
</p>
        <p>
And are bloggers journalists? Should they be held to the same standards as journalists?
And if not, then with all these formerly print-only media moving to the Internet and
putting more and more of their material online, where do we draw that line? What's
the difference between Fareed Zakaria writing a column on Middle East affairs for
Newsweek.com on a monthly basis and Joe Sixpack posting a monthly rant on the illegal
and illicit activities of his hometown rival's sports team? Is it just the domain
name? And if Joe Sixpack decides to say, point blank, "TechCrunch paid for that
material, they hired the guy who broke into the Twitter offices and stole it"
on his blog, what avenues does TechCrunch have to decry and/or reverse that trend?
</p>
        <p>
For the record, I oppose what TechCrunch is doing <em>except</em> if there is some
blatantly legal violation of consumers' privacy. Frankly, if the hacker had approached
me with those documents, I'd be working with the FBI to see the guy tossed in jail,
because folks, if he did it to them, he could just as easily do it to you.
</p>
        <p>
But this still leaves the deeper question about where bloggers sit in the journalistic
continuum, and I admit, I have a lot of mixed feelings on the subject.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=256ef373-ecd5-47c8-b4c4-a794e04e663c" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>What is &amp;quot;news&amp;quot;, and what is &amp;quot;unethical&amp;quot;?</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,256ef373-ecd5-47c8-b4c4-a794e04e663c.aspx</guid>
      <link>http://blogs.tedneward.com/2009/07/15/What+Is+Quotnewsquot+And+What+Is+Quotunethicalquot.aspx</link>
      <pubDate>Wed, 15 Jul 2009 08:35:50 GMT</pubDate>
      <description>&lt;p&gt;
This &lt;a href="http://www.techcrunch.com/2009/07/14/in-our-inbox-hundreds-of-confidential-twitter-documents/" target="_blank"&gt;post
from TechCrunch&lt;/a&gt; crossed my attention inbox today, and I find myself quite flummoxed
on the subject of how I think I should react.
&lt;/p&gt;
&lt;p&gt;
Assume you have managed, through no overt work on your part (meaning, you didn't explicitly
solicit, ask, or otherwise endeavor to obtain), to get ownership of &amp;quot;hundreds
of confidential corporate and personal documents&amp;quot; for a company. Assume further
that these documents are genuine—there is little to no chance that they could have
been forged or fabricated. The documents span a range of sensitivity, from documents
that are &amp;quot;somewhat embarrassing to various individuals, but not otherwise interesting&amp;quot;,
to documents that &amp;quot;show floorplans and security passcodes to get into the Twitter
offices&amp;quot;, to documents &amp;quot;showing financial projections, product plans and
notes from executive strategy meetings&amp;quot;. In other words, documents that yes,
could create a certain amount of havoc to the corporate entity in question, could
embarrass individuals within (and not within) that company, and documents that could
lead to a competitive advantage for the entity's competitors.
&lt;/p&gt;
&lt;p&gt;
Now also assume, for the purpose of the discussion, that you are an entity whose business
model or &lt;em&gt;raison d'etre&lt;/em&gt; is to publish—you are a blogger, a &amp;quot;social networking
maven&amp;quot;, a media outlet, whatever.
&lt;/p&gt;
&lt;p&gt;
Is it unethical to publish these documents? Is it simply trolling for hits? Is there
a &amp;quot;journalistic responsibility&amp;quot; to publish this material?
&lt;/p&gt;
&lt;p&gt;
The people from TechCrunch feel like they have a right/responsibility to publish at
least some of the documents, and are unswayed by the arguments in the blog's comments
about the morality of such a move, including such comments as &amp;quot;This is an a**hole
move&amp;quot; and &amp;quot;there's still an appearance of lapse of ethics here&amp;quot; (and
that's just within the first half-dozen comments or so&amp;quot;. What is particularly
interesting is the response from (someone I assume to be) one of the blog's owners:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
lol. if we only posted things that companies gave us permission to post this would
be a press release site and none of you would be here. News is stuff someone doesn’t
want you to write. The rest is advertising.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This comment disturbs me on several levels—it's only news if it's &amp;quot;stuff someone
doesn't want you to write&amp;quot;? That's a pretty shallow and narrowly-defined sense
of the term, if you ask me, and it puts periodicals like National Enquirer and Star
magazines on the same level as the New York Times and CNN. (Although, and I'll freely
admit this, having just come through the Michael Jackson media blitz, sometimes it
feels difficult to tell the difference between all four of those.)
&lt;/p&gt;
&lt;p&gt;
At the same time, though, it's clear from our own history that journalism has served
the public good by shining a bright light into shady corners that some powers-that-be
would prefer left unexposed. The abuses described by Upton Sinclair in the turn-of-the-century
factories, the rampant sexual harassment in the military exposed by the Tailhook scandal,
and certainly the outright blatantly violent suppression of Civil Rights movement
of the 60's in the South were all shining examples of journalism at its finest, showing
off dark and ugly parts of the world and—either implicitly or explicitly—demanding
society to acknowledge it and either openly accept it or strive to change it (with
all three of my examples seeing society choosing the latter).
&lt;/p&gt;
&lt;p&gt;
What is &amp;quot;journalistic responsibility&amp;quot; here?
&lt;/p&gt;
&lt;p&gt;
In our chosen field—that of computer science and software—there is clearly a responsibility
for those &amp;quot;in the know&amp;quot; to reveal scenarios where information is being purloined
or made available that violates individuals' rights to privacy. It's one thing if
I trade my personal sales habits to a grocery store chain in exchange for a percentage
off the final sale. That's a choice I'm making, consciously and knowingly. (By this
point, if you haven't figured that out, you're just deliberately hiding from the fact.)
But for somebody else to disclose my purchasing history &lt;em&gt;without my consent&lt;/em&gt; to
another party, that's brushing a very ugly moral dark area. And if a company is choosing
to take its customers' personal data and make it available for anyone else to use
as they see fit—for whatever purpose that third party can imagine—then cheers and
kudos to the whistle-blower who brings media attention on that behavior.
&lt;/p&gt;
&lt;p&gt;
But Twitter doesn't have much of my personal data, and they certainly didn't give
it away to anybody—it was stolen from them, according to what I've read so far. What's
more, I don't really have that much personal data stored with them—certainly no credit
cards, birthdates, financial or medical information, or even family notes. What's
there is actually pretty tame, as a Twitter customer.
&lt;/p&gt;
&lt;p&gt;
(Twitter employees are a totally different matter. Admittedly. But let's just stick
with the Twitter customer data for now.)
&lt;/p&gt;
&lt;p&gt;
So where is the &amp;quot;journalistic responsibility&amp;quot; in publishing this material?
&lt;/p&gt;
&lt;p&gt;
And are bloggers journalists? Should they be held to the same standards as journalists?
And if not, then with all these formerly print-only media moving to the Internet and
putting more and more of their material online, where do we draw that line? What's
the difference between Fareed Zakaria writing a column on Middle East affairs for
Newsweek.com on a monthly basis and Joe Sixpack posting a monthly rant on the illegal
and illicit activities of his hometown rival's sports team? Is it just the domain
name? And if Joe Sixpack decides to say, point blank, &amp;quot;TechCrunch paid for that
material, they hired the guy who broke into the Twitter offices and stole it&amp;quot;
on his blog, what avenues does TechCrunch have to decry and/or reverse that trend?
&lt;/p&gt;
&lt;p&gt;
For the record, I oppose what TechCrunch is doing &lt;em&gt;except&lt;/em&gt; if there is some
blatantly legal violation of consumers' privacy. Frankly, if the hacker had approached
me with those documents, I'd be working with the FBI to see the guy tossed in jail,
because folks, if he did it to them, he could just as easily do it to you.
&lt;/p&gt;
&lt;p&gt;
But this still leaves the deeper question about where bloggers sit in the journalistic
continuum, and I admit, I have a lot of mixed feelings on the subject.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=256ef373-ecd5-47c8-b4c4-a794e04e663c" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,256ef373-ecd5-47c8-b4c4-a794e04e663c.aspx</comments>
      <category>Industry</category>
      <category>Reading</category>
      <category>Review</category>
      <category>Social</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=58d70558-ade4-4d76-9e47-3536749f5cf5</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,58d70558-ade4-4d76-9e47-3536749f5cf5.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,58d70558-ade4-4d76-9e47-3536749f5cf5.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=58d70558-ade4-4d76-9e47-3536749f5cf5</wfw:commentRss>
      <slash:comments>8</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Google made the <a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html" target="_blank">announcement</a> on
Tuesday: Chrome OS, a "open source, lightweight operating system that will initially
be targeted at netbooks."
</p>
        <p>
Huh?
</p>
        <p>
I'm sorry, but from a number of perspectives, this move makes no sense to me.
</p>
        <p>
Don't get me wrong—on a number of levels, the operating system needs a little shaking
up. Windows7 looks good, granted, Mac OS is a strong contender, and both are clearly
popular with the consuming public, but innovation in the operating system seems pretty
limited right now, to eye candy graphical window-opening/window-closing effects, different
window decorations (title bars and minimize/maximize buttons), and areas along the
edges of the screen to store icons. At no point has any of the last three or four
OS releases from any of the major vendors—Microsoft, Apple, or the various Linux distros—really
introduced anything novel, just infinite variations on a theme. Filesystems are still
hierarchical, users still install and manage applications, and so on. In fact, arguably
the most interesting development in operating systems has been the iPhone, and most
of its innovations center around two things: the two-finger interface, and the complete
mental reboot of what user interface looks and acts like.
</p>
        <p>
Seriously, that's the best we can do?
</p>
        <p>
I see a lot of room for improvements in the operating system experience; for starters,
let's do away with the "browser" and just call Firefox, IE and Chrome what
they're (far too slowly) evolving into: a generic application host. Get that story
right—the acquisition of applications onto the device, the updating of those applications
when new versions are available, the offline application experience, and so on—and
the operating system and the browser will mesh into a seamless whole. But we're not
there yet, not by a long ways, and the first competitor to create such an environment
will have a huge advantage over its rivals. Arguably Apple got there first with the
iPhone and AppStore, and yet the iPhone still needs iTunes running on a computer to
make the experience seamless, and iTunes is definitely not what I call a seamless
user experience.
</p>
        <p>
(Besides, the iPhone is hamstrung on a number of levels—I would absolutely <em>despise</em> trying
to write this blog post on it, for example.)
</p>
        <p>
Despite the clear window of opportunity for an innovative operating system to step
in and make some serious waves in the industry, Google producing an OS really doesn't
make sense to me, for a number of reasons.
</p>
        <ul>
          <li>
            <em>Challenging your opponent on your opponent's turf is never a good idea.</em> A
maxim of battle says that one should only battle on favorable terrain, yet Google's
deliberately choosing to "cross the line", as it were, into territory that
is clearly foreign to them. They have no expertise in marketing it, selling it, researching
it, or developing it, while their competitors in this—Microsoft, Apple being the principal
two—have been doing it for decades. Literally. I realize that Google has a number
of smart people working for them, but it seems pretty presumptuous and arrogant to
think they can get this story better, particularly in any kind of short term.</li>
          <li>
            <em>This is a difficult problem to tackle.</em> Microsoft's known it for decades,
Apple is discovering it all over again, and Linuxers have either wallowed in it as
a sign of prowess or just accepted the problem as intractable—it's really hard to
get an operating system to recognize the billions of different devices out there.
Apple solved it by jealously and zealously chasing anyone who ever tried to run Mac
OS on non-Apple hardware. Linux consumers found themselves recompiling kernels or
in some cases, having to build device drivers themselves. Microsoft just suffered
through it. For a new OS, the only path possible in the beginning is to support the
20% of the devices that 80% of the people use, and hope that nobody else tries a device
that isn't on that list and blogs to tell about it. Unfortunately, the chosen target
market (consumer netbooks) works against them here in a big way. With developers,
it's pretty easy to say, "Sorry, guys, you know how it is, give us a few years,
or contribute the patch yourself!"; with consumers, if their BuyMart-bargain-bin
web cam doesn't work, it's Google's fault and they'll be up in the acne-spackled BuyMart
counter boy's face about it. This will not persuade BuyMart to stock the Chrome-installed
netbook for much longer.</li>
          <li>
            <em>Is this really the company that swore to "do no evil"?</em> Google's
announcement is vague on so many levels, it's almost a FUD play, or else they're trying
to blatantly cash in on their "geek cred" to convince investors and analysts
that they've finally found a new source of revenue to supplement AdWords. (Well, modulo
the fact that this new OS will be open-source, which means it's not really a revenue
play, but I'm sure they've got that figured out somehow, too.) Seriously, this doesn't
make sense: if you're doing an open-source OS, then where is the source? Where is
the transparency? Where is my ability to contribute despite my status as a non-Google
developer? What part of this project is open-source in any sense of the term?</li>
          <li>
            <em>Netbooks?</em> I realize that netbooks are the new hotness to a lot of people,
a compromise between a phone/PDA and a laptop, and that the price point of the netbook
means that for the first time, consumers can get into computing for under $250 (rivalling
the price of game consoles) that addresses their fundamental needs—email, web surfing
and maybe an application or two—but the timing here is just too late. Google's announcement
says that "netbooks running Google Chrome OS will be available for consumers
in the second half of 2010". Which means that the major competitors (mostly Windows)
will have twelve months to convince netbook consumers that Windows (and Windows7,
in particular) is the right choice to run the netbook, and Google will be starting
from some distance behind the 8-ball. Chrome needs to be available now if they're
going to avoid a long and entrenched battle starting from a position of weakness.</li>
          <li>
            <em>It's a distraction from their strength.</em> Abraham Lincoln is famous for saying.
"You cannot strengthen the weak by weakening the strong", but this represents
Google's third or fourth effort into a space that really isn't leveraging their core
strength (their ability to scale). Even if the money and resources spent on Chrome
(and Android, for that matter) have zero effect on the budgeting and resourcing for
Google App Engine and other server plays, the message and story that Google presents
to the world is now as disjoint and multifaceted (and therefore harder to grasp) as
Microsoft's.</li>
          <li>
            <em>Haven't we seen this before?</em> Wasn't it almost a decade ago when another company
announced a plan to unify the browser and the desktop? In that case, the world either
yawned, rejected it outright ("I don't <em>want</em> to browse my desktop, damnit"
was how one friend of mine put it), or sued them over it. Even if Google doesn't run
afoul of the DOJ directly, Microsoft is going to love pointing to Chrome OS as clear
indication of non-monopoly status the next time DOJ comes calling. If Google does
manage somehow to annoy the DOJ antitrust personalities, well... let IBM and Microsoft
tell you all about how much fun it is to try to innovate and bring products to market
with lawyers looking over your shoulders.</li>
          <li>
            <em>Haven't we seen this before?</em> Not too long ago, another vendor tried to go
after the "you don't need an operating system" story... except they called
it "The Network Is the Computer". All you Java developers, raise your hand.
Anybody who doesn't have their hand raised, ask what happened to that vendor from
any of the people with their hand in the air. Or ask an Oracle DBA.</li>
          <li>
            <em>Haven't we seen this before?</em> Even more recently, another vendor made a play
for the netbook+cloud story. All those who've heard of <a href="http://www.thinkgos.com/index.html" target="_blank">Cloud
OS</a>, raise your hand. Anybody who doesn't have your hand raised.... well, I wish
I could tell you to go talk to the people with their hand raised, except I don't think
anybody does.</li>
        </ul>
        <p>
This whole idea just feels badly-planned and not well thought-out. Let's see how it
executes, so let's meet back here in a year and compare notes, but in the meantime,
I'm not hanging up my Java or .NET tools any time soon.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=58d70558-ade4-4d76-9e47-3536749f5cf5" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Thoughts on the Chrome OS announcement</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,58d70558-ade4-4d76-9e47-3536749f5cf5.aspx</guid>
      <link>http://blogs.tedneward.com/2009/07/11/Thoughts+On+The+Chrome+OS+Announcement.aspx</link>
      <pubDate>Sat, 11 Jul 2009 08:37:01 GMT</pubDate>
      <description>&lt;p&gt;
Google made the &lt;a href="http://googleblog.blogspot.com/2009/07/introducing-google-chrome-os.html" target="_blank"&gt;announcement&lt;/a&gt; on
Tuesday: Chrome OS, a &amp;quot;open source, lightweight operating system that will initially
be targeted at netbooks.&amp;quot;
&lt;/p&gt;
&lt;p&gt;
Huh?
&lt;/p&gt;
&lt;p&gt;
I'm sorry, but from a number of perspectives, this move makes no sense to me.
&lt;/p&gt;
&lt;p&gt;
Don't get me wrong—on a number of levels, the operating system needs a little shaking
up. Windows7 looks good, granted, Mac OS is a strong contender, and both are clearly
popular with the consuming public, but innovation in the operating system seems pretty
limited right now, to eye candy graphical window-opening/window-closing effects, different
window decorations (title bars and minimize/maximize buttons), and areas along the
edges of the screen to store icons. At no point has any of the last three or four
OS releases from any of the major vendors—Microsoft, Apple, or the various Linux distros—really
introduced anything novel, just infinite variations on a theme. Filesystems are still
hierarchical, users still install and manage applications, and so on. In fact, arguably
the most interesting development in operating systems has been the iPhone, and most
of its innovations center around two things: the two-finger interface, and the complete
mental reboot of what user interface looks and acts like.
&lt;/p&gt;
&lt;p&gt;
Seriously, that's the best we can do?
&lt;/p&gt;
&lt;p&gt;
I see a lot of room for improvements in the operating system experience; for starters,
let's do away with the &amp;quot;browser&amp;quot; and just call Firefox, IE and Chrome what
they're (far too slowly) evolving into: a generic application host. Get that story
right—the acquisition of applications onto the device, the updating of those applications
when new versions are available, the offline application experience, and so on—and
the operating system and the browser will mesh into a seamless whole. But we're not
there yet, not by a long ways, and the first competitor to create such an environment
will have a huge advantage over its rivals. Arguably Apple got there first with the
iPhone and AppStore, and yet the iPhone still needs iTunes running on a computer to
make the experience seamless, and iTunes is definitely not what I call a seamless
user experience.
&lt;/p&gt;
&lt;p&gt;
(Besides, the iPhone is hamstrung on a number of levels—I would absolutely &lt;em&gt;despise&lt;/em&gt; trying
to write this blog post on it, for example.)
&lt;/p&gt;
&lt;p&gt;
Despite the clear window of opportunity for an innovative operating system to step
in and make some serious waves in the industry, Google producing an OS really doesn't
make sense to me, for a number of reasons.
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Challenging your opponent on your opponent's turf is never a good idea.&lt;/em&gt; A
maxim of battle says that one should only battle on favorable terrain, yet Google's
deliberately choosing to &amp;quot;cross the line&amp;quot;, as it were, into territory that
is clearly foreign to them. They have no expertise in marketing it, selling it, researching
it, or developing it, while their competitors in this—Microsoft, Apple being the principal
two—have been doing it for decades. Literally. I realize that Google has a number
of smart people working for them, but it seems pretty presumptuous and arrogant to
think they can get this story better, particularly in any kind of short term.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;This is a difficult problem to tackle.&lt;/em&gt; Microsoft's known it for decades,
Apple is discovering it all over again, and Linuxers have either wallowed in it as
a sign of prowess or just accepted the problem as intractable—it's really hard to
get an operating system to recognize the billions of different devices out there.
Apple solved it by jealously and zealously chasing anyone who ever tried to run Mac
OS on non-Apple hardware. Linux consumers found themselves recompiling kernels or
in some cases, having to build device drivers themselves. Microsoft just suffered
through it. For a new OS, the only path possible in the beginning is to support the
20% of the devices that 80% of the people use, and hope that nobody else tries a device
that isn't on that list and blogs to tell about it. Unfortunately, the chosen target
market (consumer netbooks) works against them here in a big way. With developers,
it's pretty easy to say, &amp;quot;Sorry, guys, you know how it is, give us a few years,
or contribute the patch yourself!&amp;quot;; with consumers, if their BuyMart-bargain-bin
web cam doesn't work, it's Google's fault and they'll be up in the acne-spackled BuyMart
counter boy's face about it. This will not persuade BuyMart to stock the Chrome-installed
netbook for much longer.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Is this really the company that swore to &amp;quot;do no evil&amp;quot;?&lt;/em&gt; Google's
announcement is vague on so many levels, it's almost a FUD play, or else they're trying
to blatantly cash in on their &amp;quot;geek cred&amp;quot; to convince investors and analysts
that they've finally found a new source of revenue to supplement AdWords. (Well, modulo
the fact that this new OS will be open-source, which means it's not really a revenue
play, but I'm sure they've got that figured out somehow, too.) Seriously, this doesn't
make sense: if you're doing an open-source OS, then where is the source? Where is
the transparency? Where is my ability to contribute despite my status as a non-Google
developer? What part of this project is open-source in any sense of the term?&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Netbooks?&lt;/em&gt; I realize that netbooks are the new hotness to a lot of people,
a compromise between a phone/PDA and a laptop, and that the price point of the netbook
means that for the first time, consumers can get into computing for under $250 (rivalling
the price of game consoles) that addresses their fundamental needs—email, web surfing
and maybe an application or two—but the timing here is just too late. Google's announcement
says that &amp;quot;netbooks running Google Chrome OS will be available for consumers
in the second half of 2010&amp;quot;. Which means that the major competitors (mostly Windows)
will have twelve months to convince netbook consumers that Windows (and Windows7,
in particular) is the right choice to run the netbook, and Google will be starting
from some distance behind the 8-ball. Chrome needs to be available now if they're
going to avoid a long and entrenched battle starting from a position of weakness.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;It's a distraction from their strength.&lt;/em&gt; Abraham Lincoln is famous for saying.
&amp;quot;You cannot strengthen the weak by weakening the strong&amp;quot;, but this represents
Google's third or fourth effort into a space that really isn't leveraging their core
strength (their ability to scale). Even if the money and resources spent on Chrome
(and Android, for that matter) have zero effect on the budgeting and resourcing for
Google App Engine and other server plays, the message and story that Google presents
to the world is now as disjoint and multifaceted (and therefore harder to grasp) as
Microsoft's.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Haven't we seen this before?&lt;/em&gt; Wasn't it almost a decade ago when another company
announced a plan to unify the browser and the desktop? In that case, the world either
yawned, rejected it outright (&amp;quot;I don't &lt;em&gt;want&lt;/em&gt; to browse my desktop, damnit&amp;quot;
was how one friend of mine put it), or sued them over it. Even if Google doesn't run
afoul of the DOJ directly, Microsoft is going to love pointing to Chrome OS as clear
indication of non-monopoly status the next time DOJ comes calling. If Google does
manage somehow to annoy the DOJ antitrust personalities, well... let IBM and Microsoft
tell you all about how much fun it is to try to innovate and bring products to market
with lawyers looking over your shoulders.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Haven't we seen this before?&lt;/em&gt; Not too long ago, another vendor tried to go
after the &amp;quot;you don't need an operating system&amp;quot; story... except they called
it &amp;quot;The Network Is the Computer&amp;quot;. All you Java developers, raise your hand.
Anybody who doesn't have their hand raised, ask what happened to that vendor from
any of the people with their hand in the air. Or ask an Oracle DBA.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Haven't we seen this before?&lt;/em&gt; Even more recently, another vendor made a play
for the netbook+cloud story. All those who've heard of &lt;a href="http://www.thinkgos.com/index.html" target="_blank"&gt;Cloud
OS&lt;/a&gt;, raise your hand. Anybody who doesn't have your hand raised.... well, I wish
I could tell you to go talk to the people with their hand raised, except I don't think
anybody does.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
This whole idea just feels badly-planned and not well thought-out. Let's see how it
executes, so let's meet back here in a year and compare notes, but in the meantime,
I'm not hanging up my Java or .NET tools any time soon.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=58d70558-ade4-4d76-9e47-3536749f5cf5" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,58d70558-ade4-4d76-9e47-3536749f5cf5.aspx</comments>
      <category>.NET</category>
      <category>Industry</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Review</category>
      <category>VMWare</category>
      <category>WCF</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=eb632e02-f7de-43ce-a9fe-8c857b0b2554</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,eb632e02-f7de-43ce-a9fe-8c857b0b2554.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,eb632e02-f7de-43ce-a9fe-8c857b0b2554.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=eb632e02-f7de-43ce-a9fe-8c857b0b2554</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
OK, OK, I admit it. Maybe significant whitespace isn't all bad. (But don't let me
ever catch you quoting me say that.)
</p>
        <p>
The reason for my (maybe) shift in thinking? Manning Publications sent me a copy of <em>Iron
Python in Action</em>, and I have to say, I like the book and its approach. Getting
me to like Python as a primary language for development will probably take more than
just one book can give, but... *shrug* Who knows?
</p>
        <p>
Bear in mind, I have plenty of reasons to like IronPython (Microsoft's Python implementation
for the .NET environment):
</p>
        <ul>
          <li>
A good friend of mine, Harry Pierson (aka @DevHawk), is the PM on the IPy project,
and I'm generally prejudiced in favor of those things that people I know and respect.</li>
          <li>
I'm generally a fan of dynamic languages, particularly those that let you do strange
and twisted things to the type system and its instances at runtime. (Yes, I'm looking
at you, ECMAScript...)</li>
          <li>
I spent some quality time with IronPython Studio last year while researching a Visual
Studio Extensibility "Deep Dive" paper.</li>
          <li>
I've known Jim Hugunin (the creator of IronPython, and Jython before that) for some
years, ever since his days working on AspectJ, and he's one of those scary-smart guys
that, despite knowing they're scary-smart, still render me stunned when I listen to
them.</li>
          <li>
I'm a huge fan of the DLR. It's like having Parrot, but without having to wait a decade
(give or take).</li>
        </ul>
        <p>
But, just to counterbalance the scales, I have plenty of good reasons to dislike IronPython,
too:
</p>
        <ul>
          <li>
Significant whitespace.</li>
          <li>
The "There's only one way to do it" oath that Pythonistas seem to hold as
religion. (Somebody told me that building C-Python—the original implementation—only
works for you if you swear a holy oath to The One True Way on the One True Way Bible.
Needless to say, I believe them, and have never tried to build C-Python from sources
as a result.)</li>
          <li>
Significant whitespace.</li>
          <li>
Uh.... did I mention significant whitespace yet?</li>
        </ul>
        <p>
I admit, it was with some hesitation that I cracked open the book. Actually, to be
honest, I was really ready to just take out all my dislike of significant whitespace
and pour it into a heated, vitriolic diatribe on everything that was just <em>wrong</em> with
Python.
</p>
        <p>
And...?
</p>
        <p>
Well, OK, I admit it. Maybe significant whitespace isn't all bad.
</p>
        <p>
But this is a review of the book, not the technology. So, on we go.
</p>
        <h3>What I liked about the book
</h3>
        <ul>
          <li>
The focus is on both .NET and Python, and doesn't try to short-change either the "Python"-ness
or the ".NET'-ness by trying to be a "Python book (that happens to run on
.NET)" or a ".NET book (that happens to use Python for code samples)".
The authors, I think, did a very good job of balancing the two, making this <em>the</em> book
to get if you're in that area on the Venn diagram where "Python" overlaps
with ".NET".</li>
          <li>
Part 2, <em>"Core development techniques"</em>, starts down the "feed
you the Python Kool-Ade" pretty quickly, heading straight into Chapter 4 ("<em>Writing
an application and design patterns with IronPython"</em>) without much of a pause
for breath. The authors get into duck typing, protocols, and Model-View-Controller
within the first four pages, and begin working on a running example to highlight some
of the ideas. (Interestingly enough, they also take a few moments to point out that
IronPython on Mono works, and include a couple of screen shots to that effect as we
go, though I personally wonder just how many people are really going down this path.)
I like the no-holds-barred, show-you-the-code style, but only because they also take
time throughout the prose to talk about some of the concepts at work underneath and
laced throughout the code. "Show me then tell me" is a time-honored tradition,
but too many authors forget the "tell me" part and stop with code. These
guys do a good job of following through.</li>
          <li>
The chapters in Part 3, "<em>IronPython and advanced .NET</em>", form an
interesting collection of how IronPython can fit into the rest of the .NET stack,
demonstrating how to use IronPython with WPF, ASP.NET, and IronPython's crowning glory,
Silverlight. If you're into front-end stuff, this is the section where I think you're
going to have the most fun.</li>
          <li>
The chapters in Part 4, "<em>Reaching out with IronPython</em>", is I think
the most important part of the book, showing how to extend IronPython (chapter 14)
with C#/VB extensions (similar to how a C-Python developer would extend Python by
writing C code, but much much simpler) and the opposite—how to embed IronPython inside
of existing C#/VB applications (chapter 15), which is really an exercise in using
the DLR Hosting APIs. While the discussion in chapter 15 is good, I wish it'd had
a bit more thorough discussion of how the DLR could be hosted regardless of the scripting
language, though I admit that's pretty beyond the scope of this book (which is focused,
after all, entirely on IronPython, and as a result <em>should</em> stay focused on
how to host IPy).</li>
        </ul>
        <h3>
          <strong>What I found "Meh" about the book</strong>
        </h3>
        <ul>
          <li>
Part 1 (<em>"A new language for .NET"</em>, <em>"Introduction to Python"</em>,
and <em>".NET objects and IronPythong"</em>) does a good job of bringing
the rank beginner up to speed, getting some basic Python ideas across in the same
breath that they bring .NET home. The only problem is, it only works well if you're
neither a Python programmer nor a .NET programmer. Chapter 1, for example, does a
sort of Cannonball-into-the-pool kind of dive into Python, but dives equally into
the "Iron" parts as it does the "Python" parts. If you're either
a Pythonista or a .NETter, I suspect you're going to be tempted to flip pages pretty
quickly, and (I suspect) miss a few things. Chapter 2 is all about Python (meaning
.NETters will probably spend some time here), but it certainly doesn't feel like an
exhaustive reference, nor does Chapter 3 stand as an exhaustive discussion about all
things .NET, either. I almost wish all three chapters had been collapsed into one—suffice
it to say, I don't feel like I know the Python language, and don't feel like this
book could be my Python reference next to me as I learn it, and I know that it's not
a great .NET reference, either. Fortunately, the goal of these three chapters feels
pretty clearly to be "Teach you just enough to make you dangerous (and able to
understand the rest of the book)", and once we hit Part 2, rubber meets road
pretty quickly.</li>
          <li>
By the time you hit Chapter 7, less than halfway through the book, the authors have
created a fairly nice, if simplistic, application for later dissection, but it's not
until you hit Chapter 7 that they begin to start unit-testing, even though they insist
(on page 17) that "Dynamic language programmers are often proponents of <em>strong
testing rather than strong typing</em>" (a quote they attribute to Bruce Eckel,
though I'm relatively certain I heard Dave Thomas and Neal Ford say it with respect
to Ruby, long before Eckel started "Thinking in Python... or Flex... or whatever").
If unit-testing is that important, why wait three chapters into the application's
development before writing a single unit-test? This doesn't jibe with me, somehow.</li>
          <li>
If you're into back-end stuff, chapter 12 on <em>"Databases and web services"</em> is
pretty bland. The fact that the two are combined into a single chapter is indicative,
all by itself, of how deep or intensive the coverage goes, and there's zero mention
of anything beyond basic ADO.NET. The coverage on web services covers REST relatively
well, but there's zero coverage of WCF, and the whole of SOAP-based services is all
of four or five pages. And Workflow? Doesn't exist, isn't even mentioned (except for
an appearance in a table, "The major new APIs of .NET 3.0"). Yikes.</li>
        </ul>
        <h3>
          <strong>What I actively disliked about the book</strong>
        </h3>
        <p>
Actually, not much. Manning did their usual superb job of arrowed callouts to point
out particular concepts in the code listings, the copyediting is professional (meaning
there's no obvious typos or misspellings that just break up the flow of prose, something
that not all publishers seem to take seriously), and the graphics flow nicely alongside
the prose, not dominating the page but accentuating it.
</p>
        <p>
In fact, about the only thing I'd care to criticize is the <em>huge</em> number of
footnotes, particularly in the first chapter. (By page 20 in the book, there have
already been 30 footnotes.) When you have three footnotes <em>per page</em>, on average
(and sometimes more), it does tend to distract, at least to me it does. It feels like
there were ways, for most of them, to inject the idea or concept into the main prose,
or leave it out entirely, but that could just be a difference of writing style, too.
</p>
        <h3>
          <strong>Summation</strong>
        </h3>
        <p>
If you're a .NET developer interested in learning/using IronPython on your next project,
this is a definite winner. If you're a Python developer looking to see how to break
into .NET, I'm not so sure this is your book, but I say that mostly because I'm <em>not</em> a
Pythonista and can't really speak to how that mindset will find this as an introduction
to the .NET space. My intuition tells me that this would be a good springboard into
another book on .NET for the Python programmer, but I'll have to leave that to Pythonistas
who've read this book to comment one way or another.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=eb632e02-f7de-43ce-a9fe-8c857b0b2554" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Review: &amp;quot;Iron Python in Action&amp;quot; by Michael Foord and Christian Muirhead</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,eb632e02-f7de-43ce-a9fe-8c857b0b2554.aspx</guid>
      <link>http://blogs.tedneward.com/2009/07/01/Review+QuotIron+Python+In+Actionquot+By+Michael+Foord+And+Christian+Muirhead.aspx</link>
      <pubDate>Wed, 01 Jul 2009 09:00:14 GMT</pubDate>
      <description>&lt;p&gt;
OK, OK, I admit it. Maybe significant whitespace isn't all bad. (But don't let me
ever catch you quoting me say that.)
&lt;/p&gt;
&lt;p&gt;
The reason for my (maybe) shift in thinking? Manning Publications sent me a copy of &lt;em&gt;Iron
Python in Action&lt;/em&gt;, and I have to say, I like the book and its approach. Getting
me to like Python as a primary language for development will probably take more than
just one book can give, but... *shrug* Who knows?
&lt;/p&gt;
&lt;p&gt;
Bear in mind, I have plenty of reasons to like IronPython (Microsoft's Python implementation
for the .NET environment):
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
A good friend of mine, Harry Pierson (aka @DevHawk), is the PM on the IPy project,
and I'm generally prejudiced in favor of those things that people I know and respect.&lt;/li&gt;
&lt;li&gt;
I'm generally a fan of dynamic languages, particularly those that let you do strange
and twisted things to the type system and its instances at runtime. (Yes, I'm looking
at you, ECMAScript...)&lt;/li&gt;
&lt;li&gt;
I spent some quality time with IronPython Studio last year while researching a Visual
Studio Extensibility &amp;quot;Deep Dive&amp;quot; paper.&lt;/li&gt;
&lt;li&gt;
I've known Jim Hugunin (the creator of IronPython, and Jython before that) for some
years, ever since his days working on AspectJ, and he's one of those scary-smart guys
that, despite knowing they're scary-smart, still render me stunned when I listen to
them.&lt;/li&gt;
&lt;li&gt;
I'm a huge fan of the DLR. It's like having Parrot, but without having to wait a decade
(give or take).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
But, just to counterbalance the scales, I have plenty of good reasons to dislike IronPython,
too:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Significant whitespace.&lt;/li&gt;
&lt;li&gt;
The &amp;quot;There's only one way to do it&amp;quot; oath that Pythonistas seem to hold as
religion. (Somebody told me that building C-Python—the original implementation—only
works for you if you swear a holy oath to The One True Way on the One True Way Bible.
Needless to say, I believe them, and have never tried to build C-Python from sources
as a result.)&lt;/li&gt;
&lt;li&gt;
Significant whitespace.&lt;/li&gt;
&lt;li&gt;
Uh.... did I mention significant whitespace yet?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I admit, it was with some hesitation that I cracked open the book. Actually, to be
honest, I was really ready to just take out all my dislike of significant whitespace
and pour it into a heated, vitriolic diatribe on everything that was just &lt;em&gt;wrong&lt;/em&gt; with
Python.
&lt;/p&gt;
&lt;p&gt;
And...?
&lt;/p&gt;
&lt;p&gt;
Well, OK, I admit it. Maybe significant whitespace isn't all bad.
&lt;/p&gt;
&lt;p&gt;
But this is a review of the book, not the technology. So, on we go.
&lt;/p&gt;
&lt;h3&gt;What I liked about the book
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
The focus is on both .NET and Python, and doesn't try to short-change either the &amp;quot;Python&amp;quot;-ness
or the &amp;quot;.NET'-ness by trying to be a &amp;quot;Python book (that happens to run on
.NET)&amp;quot; or a &amp;quot;.NET book (that happens to use Python for code samples)&amp;quot;.
The authors, I think, did a very good job of balancing the two, making this &lt;em&gt;the&lt;/em&gt; book
to get if you're in that area on the Venn diagram where &amp;quot;Python&amp;quot; overlaps
with &amp;quot;.NET&amp;quot;.&lt;/li&gt;
&lt;li&gt;
Part 2, &lt;em&gt;&amp;quot;Core development techniques&amp;quot;&lt;/em&gt;, starts down the &amp;quot;feed
you the Python Kool-Ade&amp;quot; pretty quickly, heading straight into Chapter 4 (&amp;quot;&lt;em&gt;Writing
an application and design patterns with IronPython&amp;quot;&lt;/em&gt;) without much of a pause
for breath. The authors get into duck typing, protocols, and Model-View-Controller
within the first four pages, and begin working on a running example to highlight some
of the ideas. (Interestingly enough, they also take a few moments to point out that
IronPython on Mono works, and include a couple of screen shots to that effect as we
go, though I personally wonder just how many people are really going down this path.)
I like the no-holds-barred, show-you-the-code style, but only because they also take
time throughout the prose to talk about some of the concepts at work underneath and
laced throughout the code. &amp;quot;Show me then tell me&amp;quot; is a time-honored tradition,
but too many authors forget the &amp;quot;tell me&amp;quot; part and stop with code. These
guys do a good job of following through.&lt;/li&gt;
&lt;li&gt;
The chapters in Part 3, &amp;quot;&lt;em&gt;IronPython and advanced .NET&lt;/em&gt;&amp;quot;, form an
interesting collection of how IronPython can fit into the rest of the .NET stack,
demonstrating how to use IronPython with WPF, ASP.NET, and IronPython's crowning glory,
Silverlight. If you're into front-end stuff, this is the section where I think you're
going to have the most fun.&lt;/li&gt;
&lt;li&gt;
The chapters in Part 4, &amp;quot;&lt;em&gt;Reaching out with IronPython&lt;/em&gt;&amp;quot;, is I think
the most important part of the book, showing how to extend IronPython (chapter 14)
with C#/VB extensions (similar to how a C-Python developer would extend Python by
writing C code, but much much simpler) and the opposite—how to embed IronPython inside
of existing C#/VB applications (chapter 15), which is really an exercise in using
the DLR Hosting APIs. While the discussion in chapter 15 is good, I wish it'd had
a bit more thorough discussion of how the DLR could be hosted regardless of the scripting
language, though I admit that's pretty beyond the scope of this book (which is focused,
after all, entirely on IronPython, and as a result &lt;em&gt;should&lt;/em&gt; stay focused on
how to host IPy).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;What I found &amp;quot;Meh&amp;quot; about the book&lt;/strong&gt;
&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;
Part 1 (&lt;em&gt;&amp;quot;A new language for .NET&amp;quot;&lt;/em&gt;, &lt;em&gt;&amp;quot;Introduction to Python&amp;quot;&lt;/em&gt;,
and &lt;em&gt;&amp;quot;.NET objects and IronPythong&amp;quot;&lt;/em&gt;) does a good job of bringing
the rank beginner up to speed, getting some basic Python ideas across in the same
breath that they bring .NET home. The only problem is, it only works well if you're
neither a Python programmer nor a .NET programmer. Chapter 1, for example, does a
sort of Cannonball-into-the-pool kind of dive into Python, but dives equally into
the &amp;quot;Iron&amp;quot; parts as it does the &amp;quot;Python&amp;quot; parts. If you're either
a Pythonista or a .NETter, I suspect you're going to be tempted to flip pages pretty
quickly, and (I suspect) miss a few things. Chapter 2 is all about Python (meaning
.NETters will probably spend some time here), but it certainly doesn't feel like an
exhaustive reference, nor does Chapter 3 stand as an exhaustive discussion about all
things .NET, either. I almost wish all three chapters had been collapsed into one—suffice
it to say, I don't feel like I know the Python language, and don't feel like this
book could be my Python reference next to me as I learn it, and I know that it's not
a great .NET reference, either. Fortunately, the goal of these three chapters feels
pretty clearly to be &amp;quot;Teach you just enough to make you dangerous (and able to
understand the rest of the book)&amp;quot;, and once we hit Part 2, rubber meets road
pretty quickly.&lt;/li&gt;
&lt;li&gt;
By the time you hit Chapter 7, less than halfway through the book, the authors have
created a fairly nice, if simplistic, application for later dissection, but it's not
until you hit Chapter 7 that they begin to start unit-testing, even though they insist
(on page 17) that &amp;quot;Dynamic language programmers are often proponents of &lt;em&gt;strong
testing rather than strong typing&lt;/em&gt;&amp;quot; (a quote they attribute to Bruce Eckel,
though I'm relatively certain I heard Dave Thomas and Neal Ford say it with respect
to Ruby, long before Eckel started &amp;quot;Thinking in Python... or Flex... or whatever&amp;quot;).
If unit-testing is that important, why wait three chapters into the application's
development before writing a single unit-test? This doesn't jibe with me, somehow.&lt;/li&gt;
&lt;li&gt;
If you're into back-end stuff, chapter 12 on &lt;em&gt;&amp;quot;Databases and web services&amp;quot;&lt;/em&gt; is
pretty bland. The fact that the two are combined into a single chapter is indicative,
all by itself, of how deep or intensive the coverage goes, and there's zero mention
of anything beyond basic ADO.NET. The coverage on web services covers REST relatively
well, but there's zero coverage of WCF, and the whole of SOAP-based services is all
of four or five pages. And Workflow? Doesn't exist, isn't even mentioned (except for
an appearance in a table, &amp;quot;The major new APIs of .NET 3.0&amp;quot;). Yikes.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;strong&gt;What I actively disliked about the book&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
Actually, not much. Manning did their usual superb job of arrowed callouts to point
out particular concepts in the code listings, the copyediting is professional (meaning
there's no obvious typos or misspellings that just break up the flow of prose, something
that not all publishers seem to take seriously), and the graphics flow nicely alongside
the prose, not dominating the page but accentuating it.
&lt;/p&gt;
&lt;p&gt;
In fact, about the only thing I'd care to criticize is the &lt;em&gt;huge&lt;/em&gt; number of
footnotes, particularly in the first chapter. (By page 20 in the book, there have
already been 30 footnotes.) When you have three footnotes &lt;em&gt;per page&lt;/em&gt;, on average
(and sometimes more), it does tend to distract, at least to me it does. It feels like
there were ways, for most of them, to inject the idea or concept into the main prose,
or leave it out entirely, but that could just be a difference of writing style, too.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;Summation&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
If you're a .NET developer interested in learning/using IronPython on your next project,
this is a definite winner. If you're a Python developer looking to see how to break
into .NET, I'm not so sure this is your book, but I say that mostly because I'm &lt;em&gt;not&lt;/em&gt; a
Pythonista and can't really speak to how that mindset will find this as an introduction
to the .NET space. My intuition tells me that this would be a good springboard into
another book on .NET for the Python programmer, but I'll have to leave that to Pythonistas
who've read this book to comment one way or another.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=eb632e02-f7de-43ce-a9fe-8c857b0b2554" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,eb632e02-f7de-43ce-a9fe-8c857b0b2554.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>Languages</category>
      <category>Python</category>
      <category>Reading</category>
      <category>Review</category>
      <category>Visual Basic</category>
      <category>WCF</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=bfd09520-fc73-4358-9a87-14f433f40095</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,bfd09520-fc73-4358-9a87-14f433f40095.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,bfd09520-fc73-4358-9a87-14f433f40095.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bfd09520-fc73-4358-9a87-14f433f40095</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <blockquote>
          <p>
            <em>
              <strong>(Disclaimer:</strong> In the spirit of full disclosure, Stu is a friend,
fellow NFJS speaker, and former co-worker of mine from DevelopMentor.)</em>
          </p>
        </blockquote>
        <p>
I present this review to you in two parts.
</p>
        <p>
          <strong>Short version:</strong> If you want to learn Clojure, and you're familiar
with at least one programming language, you'll find this a great resource. If you
don't already know a programming language, or if you already know Clojure, or if you're
looking for "best practices" to cut-and-paste, you're going to be disappointed.
</p>
        <p>
          <strong>Long version:</strong> Recently, fellow NFJS speaker Stu Halloway decided
to take up a new language, and came to Clojure. He found the language interesting
enough to write a book on it, something he hasn't done since his Java days, and the
result is a nice walk through the language and its environment for experienced Java
developers who want to understand Clojure's language, concurrency concepts, and programming
model.
</p>
        <p>
Now, let's be 100% honest about this: if you're coming at this book expecting it to
be a language reference, you will probably be disappointed (as <a href="http://www.amazon.com/review/R3NM9CKFWYFKAE/ref=cm_cr_rdp_perm" target="_blank">this
guy</a> obviously is). Stu's not like that—he's not going to re-create material that's
available elsewhere, or that can be found with an easy Google search. Stu will not
waste your time that way—he wants to tell you a story, one that takes you from "I'm
a Java guy, but clueless about Lisp, dynamic languages, functional programming, concurrency,
or macros" to "Wow. I know kung-fu." in the shortest path possible,
but without trying to lobotomize you. He wants—no, <em>expects</em>—the readers of
his book to be propping the text open with a cell phone on one side and the dinner
plate on the other, craning your neck over to scan the pages and type in the examples
into the REPL shell to try them out, see them work, then spend a few minutes experimenting
with them before moving on to the next paragraph or page. 
</p>
        <p>
(Oh, I suppose you could just cut and paste them from the PDF version of the book,
but where's the fun in that?)
</p>
        <p>
The fact is, the <em>concepts</em> behind Clojure make up what's important to learn
here, and readers of this book will come away like the panda from the movie, realizing
that "There is no Secret Ingredient", that the power of Clojure comes not
from its super-secret language sauce or special libraries, but in the way Clojure
programmers approach problems and think about programming. And for that reason, if
you're a programmer—even if you don't program on the JVM—you really want to take a
look at what Stu's talking about (and Rich Hickey is creating).
</p>
        <p>
Just remember, cellphone and dinner plate. Otherwise you'll be missing out on so much.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=bfd09520-fc73-4358-9a87-14f433f40095" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Review: &amp;quot;Programming Clojure&amp;quot;, by Stu Halloway</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,bfd09520-fc73-4358-9a87-14f433f40095.aspx</guid>
      <link>http://blogs.tedneward.com/2009/06/28/Review+QuotProgramming+Clojurequot+By+Stu+Halloway.aspx</link>
      <pubDate>Sun, 28 Jun 2009 05:34:56 GMT</pubDate>
      <description>&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;&lt;strong&gt;(Disclaimer:&lt;/strong&gt; In the spirit of full disclosure, Stu is a friend,
fellow NFJS speaker, and former co-worker of mine from DevelopMentor.)&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I present this review to you in two parts.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Short version:&lt;/strong&gt; If you want to learn Clojure, and you're familiar
with at least one programming language, you'll find this a great resource. If you
don't already know a programming language, or if you already know Clojure, or if you're
looking for &amp;quot;best practices&amp;quot; to cut-and-paste, you're going to be disappointed.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Long version:&lt;/strong&gt; Recently, fellow NFJS speaker Stu Halloway decided
to take up a new language, and came to Clojure. He found the language interesting
enough to write a book on it, something he hasn't done since his Java days, and the
result is a nice walk through the language and its environment for experienced Java
developers who want to understand Clojure's language, concurrency concepts, and programming
model.
&lt;/p&gt;
&lt;p&gt;
Now, let's be 100% honest about this: if you're coming at this book expecting it to
be a language reference, you will probably be disappointed (as &lt;a href="http://www.amazon.com/review/R3NM9CKFWYFKAE/ref=cm_cr_rdp_perm" target="_blank"&gt;this
guy&lt;/a&gt; obviously is). Stu's not like that—he's not going to re-create material that's
available elsewhere, or that can be found with an easy Google search. Stu will not
waste your time that way—he wants to tell you a story, one that takes you from &amp;quot;I'm
a Java guy, but clueless about Lisp, dynamic languages, functional programming, concurrency,
or macros&amp;quot; to &amp;quot;Wow. I know kung-fu.&amp;quot; in the shortest path possible,
but without trying to lobotomize you. He wants—no, &lt;em&gt;expects&lt;/em&gt;—the readers of
his book to be propping the text open with a cell phone on one side and the dinner
plate on the other, craning your neck over to scan the pages and type in the examples
into the REPL shell to try them out, see them work, then spend a few minutes experimenting
with them before moving on to the next paragraph or page. 
&lt;/p&gt;
&lt;p&gt;
(Oh, I suppose you could just cut and paste them from the PDF version of the book,
but where's the fun in that?)
&lt;/p&gt;
&lt;p&gt;
The fact is, the &lt;em&gt;concepts&lt;/em&gt; behind Clojure make up what's important to learn
here, and readers of this book will come away like the panda from the movie, realizing
that &amp;quot;There is no Secret Ingredient&amp;quot;, that the power of Clojure comes not
from its super-secret language sauce or special libraries, but in the way Clojure
programmers approach problems and think about programming. And for that reason, if
you're a programmer—even if you don't program on the JVM—you really want to take a
look at what Stu's talking about (and Rich Hickey is creating).
&lt;/p&gt;
&lt;p&gt;
Just remember, cellphone and dinner plate. Otherwise you'll be missing out on so much.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=bfd09520-fc73-4358-9a87-14f433f40095" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,bfd09520-fc73-4358-9a87-14f433f40095.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>C++</category>
      <category>F#</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Reading</category>
      <category>Review</category>
      <category>Ruby</category>
      <category>Scala</category>
      <category>Visual Basic</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=49e7a9d3-c222-45d7-a049-29b5a4b25cd3</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,49e7a9d3-c222-45d7-a049-29b5a4b25cd3.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,49e7a9d3-c222-45d7-a049-29b5a4b25cd3.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=49e7a9d3-c222-45d7-a049-29b5a4b25cd3</wfw:commentRss>
      <slash:comments>22</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Apparently the Rails community isn't the only one pursuing that ephemeral goal of
"edginess"—another blatantly sexist presentation came off without a hitch,
this time at a Flash conference, and if anything, it was worse than the Rails/CouchDB
presentation. I excerpt a few choice tidbits <a href="http://www.geekgirlsguide.com/blog/2009/06/11/98/prude_or_professional_by_courtney_remes" target="_blank">from
an eyewitness</a> here, but be warned—if you're not comfortable with language, skip
the next block paragraph.
</p>
        <blockquote>
          <p>
Yesterday's afternoon keynote is this guy named <a href="http://flashbelt.com/#/speakers/hoss_gifford/">Hoss
Gifford</a> — I believe his major claim to fame is that viral "spank the monkey"
thing that went around a few years back.  Highlights of his talk:
</p>
          <ul>
            <li>
He opens his keynote with one of those <a href="http://www.ignitempls.org/">"Ignite"-esque
presentations</a> — where you have 5-minutes and 20 slides to tell a story — and the
first and last are a close-up of a woman's lower half, her legs spread (wearing stilettos,
of course) and her shaved vagina visible through some see-thru panties that say "drink
me," with Hoss's Photoshopped, upward-looking face placed below it. 
</li>
            <li>
He later demos a drawing tool he has created (admittedly with someone else's code)
and invites a woman to come up to try it.  After she sits back down, he points
out that in her doodles she's drawn a "cock." 
</li>
            <li>
Then he decides he wants to give a try at using the tool to draw a "cock"
(he loves this word) — and draws a face, then a giant dick (he redraws it three times)
that ultimately cums all over the face. 
</li>
            <li>
A multitude of references to penises and lots of swearing — and also "If you
are easily offended, fuck you!" 
</li>
            <li>
And then, to top it off, a self-made flash movie of an animated woman's face, positioned
as if she's having sex with you, who gradually orgasms based on the speed of your
mouse movement on the page. 
</li>
          </ul>
        </blockquote>
        <p>
Wow. Just... wow. To call this unprofessional smacks of calling Hitler a "socially
awkward individual"... or using a euphemism like "mild medical condition"
to refer to death. This is so far "over the line" that it's unbelievable.
Even Mr. Aimonetti's "CouchDB" presentation, as bad as it was, at least
tried to tie the analogy together in a meaningful, if offensive, way. This is just
male posturing at its worst. (I'm shocked Hoss didn't whip off his pants and demand
the women in the room bow down in worship to his obviously superior manhood.) 
</p>
        <p>
Fortunately, according to the source, the conference organizer seems to be pretty
responsive, so kudos to the one adult in the room, but....
</p>
        <p>
What's worse, apparently the presenter and more than a few of his pals are (in the
best traditions of assholery) blatantly unrepentant about the whole thing, claiming
the moral high ground in much the same way that the Rails idiots did—it's all in good
fun, if you don't find it funny you're a prude, and so on:
</p>
        <blockquote>
          <p>
I checked Twitter (hashtag <a href="http://search.twitter.com/search?q=%23flashbelt">#flashbelt</a>)
to see what the responses were.  Here are some notable remarks:
</p>
          <ul>
            <li>
              <a href="http://twitter.com/Fonx/status/2096740346">Fonx</a> is reading the #flashbelt
rants on Hoss offending the ladies w/ a few swear words &amp; a penis drawing - r
u really that prudish &amp; sexist? 
</li>
            <li>
nthitz lol @hoss69 "If you are easily offended, fuck you" #flashbelt 
</li>
            <li>
              <a href="http://twitter.com/livenootrac/status/2096075802">livenootrac</a> Ladies
of #flashbelt , I am sorry for the Hoss preso, but in the flash community he gets
a pass, kinda like Don Rickles - that's just Hoss. 
</li>
            <li>
              <a href="http://twitter.com/CujoJpn/status/2096658483">CujoJpn</a> @livenootrac And
there were many ladies at #flashbelt who were offended by Hoss' Preso some were thick
skinned and took it as is. 
</li>
          </ul>
          <p>
So, if you didn't like it then 
<br />
a) you are a prude - and sexist (?) 
<br />
b) fuck you 
<br />
c) suck it because Hoss gets a pass here in the boy's club known as "the flash
community" and 
<br />
d) you are a wimpy girl who isn't strong enough / man enough / "thick-skinned"
enough  to deal with it.
</p>
        </blockquote>
        <p>
Even more... wow. Talk about justification and marginalization. Amazing.
</p>
        <p>
Before I figuratively smack this Hoss guy around the blog for a while, let's take
a brief moment for reflection—what's going on here? Why all the misogynistic presentations
recently? Is this reflective of a general trend in the programming industry? Of society
in general? Is the world coming to an end?
</p>
        <p>
A few possibilities present themselves:
</p>
        <ul>
          <li>
            <strong>The lack of women in the IT industry means there's nobody around to act as
a "gender filter" to keep things on an even keel.</strong> In other words,
the genders constantly filter themselves based on the company they keep, and because
the boys who put these presentations together don't have female input, they simply
don't know where to draw the line for mixed company. This theory also presumes that
an industry that's made up primarily of women will also lack such a filter and "girls
will be girls" as a result. Unfortunately I have no good counterexamples at hand
to examine—anybody know of an industry populated primarily by women, and can weigh
in with experience there? The closest I get is my brief experience working in a restaurant
with an almost-all-woman serving staff, and from that brief experience, yep, the theory
holds. Solution? Easy: get more women in IT, and things will re-balance themselves
naturally.</li>
          <li>
            <strong>Programmers are principally males who have no redeeming social skills.</strong> In
other words, the industry gathers up exactly the kind of men who find objectifying
women and reveling in late-acquired testosterone overdoses to be gratifying, and this
kind of behavior is the result. If true, it leads to the conclusion that programmers
are no more evolved than the Navy sailors involved in the Tailhook scandal of a few
years ago. So go ahead, smack your wives and girlfriends around a little if they get
a little "uppity", it's OK, 'cuz u r a l33t d00d. Personally? I find the
idea ludicrous—there is definitely a strong antisocial streak that runs through the
IT ecosystem (how many of you met your friends via World of Warcraft again?), but
like all stereotypes, there's some elements of truth to it, and a lot of exaggeration.
And frankly, anybody who believes in this theory is welcome to come with me to dinner
at a No Fluff Just Stuff show and meet the other speakers, and listen in on our "boys
club" conversations, including questions like, "Which movie best represents
the book it was made after?" and "If given a mandate to create a programming
language, what language would your language most resemble?". Oh, and the odd
fart joke. We are boys, after all.</li>
          <li>
            <strong>We're hypersensitive to the subject right now.</strong> In other words, these
kind of presentations have always been going on, and it's just that we notice them
now, in the same way that you notice a particular brand of car on the road a lot more
when you're thinking about buying that brand and model of car. Frankly, I don't buy
this argument—I've been to a lot of presentations over the past decade, and I've never
seen any that were anything like this.</li>
          <li>
            <strong>This is the YouTube generation, with access to everything the Internet has
to offer, and this is "just how they do things".</strong> After all, how
much maturity, sexual discretion and adult behavior can we expect of the generation
that gave us "Girls Gone Wild" and its ilk? It's just a "generation
gap" thing, and we old fogies who didn't grow up with Internet porn just a browser-click
away just don't "get it". Hmm.... somehow, I just don't buy it. Sure, there
may be some elements of this involved here (I'm <em>really</em> curious to see what
all these "Girls Gone Wild" girls are going to say to their own daughters
in a decade or so...), but I think that's too easy an answer, and an eminently unhelpful
one.</li>
          <li>
            <strong>We have copycatters out there trying to follow the path of people they respect.</strong> If
you're looking up at this Hoss character and thinking, "I want to be just like
him!", you really should see a therapist and develop a sense of self, before
you find yourself without friends. Hoss gets a pass because of your misguided fan-boi
hero-worship. So does Paris Hilton. You want to be the Paris Hilton of your social
circle? Go for it. After all, she's highly respected and loved, right? Take a clue
from the next car wreck you drive past—everybody's slowing to look not because they
wish they were in the body bag, folks, but because we have a ghoulish fascination
with it. In the case of Ms. Hilton, that ghoulish fascination is with those who self-destruct
in spectacular fashion. (Me, I'd <em>love</em> to be the fly on the wall at the Hoss
residence when he tries to explain this whole thing to his daughter or his date/girlfriend/wife,
if he ever finds one.)</li>
          <li>
            <strong>The presenters taking this tack are looking for an easy path to fame.</strong> In
the grand traditions of Andrew Dice Clay ("Oh!"), the easiest way for a
presenter to "stand out" from the rest of the crowd of presenters is to
do something outrageous and call it "edgy", and stake out a claim on the
edge of the civilization, rather than try to integrate with the rest of the crowd
and build something up slowly. Don Box has already claimed "HTTP is dead",
I made the analogy between a technology and a military conflict, and Matt Aimonetti
claimed a data storage framework "performs like a pr0n star", so what's
left but to stake out ground even further out on the fringe and just be misogynistic?
Fortunately, history suggests that people with content-free/shock-heavy presentations
(or even content-heavy/shock-heavy ones) don't go the distance, so to speak, and that
once there's nowhere more shocking left to go, the audience comes back to the content-heavy/shock-light
discussions and stays there for a while. Unfortunately, this means we're going to
have to suffer through somebody's "Live YouPorn filming" talk first, which
I'm <em>not</em> looking forward to.</li>
        </ul>
        <p>
And now for the smacking around... but you know, I suddenly realize that the volume
of comments on the original post leave with nothing to do or say that's not already
being said, so to just "pile on" would only serve to let me vent, and I
have other outlets for that. But it would be inappropriate to just "walk away",
so to speak, so with that in mind....
</p>
        <p>
Hoss, you're an idiot. Like any sprinter, you're going to head up the pack for a bit,
but soon enough, your "shtick" is going to flame out and you'll be left
behind with all the other "shock jocks" of the 80's who found their material
unwelcome after a while. So enjoy the spotlight (such as it is) while you can. In
the meantime, I'm off to revise a few presentations, and stick with solid ideas and
analogies, and maybe dropping the odd F-bomb when I want to make a point, just for
emphasis, because I know something you apparently don't:
</p>
        <p>
Shock makes a point because of the <em>contrast</em> to the rest of the talk, not
because of its inherent "edginess".
</p>
        <p>
Meanwhile, by all means, continue to be an idiot. You just make me look better by
comparison, for which I thank you.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=49e7a9d3-c222-45d7-a049-29b5a4b25cd3" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>The &amp;quot;controversy&amp;quot; continues</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,49e7a9d3-c222-45d7-a049-29b5a4b25cd3.aspx</guid>
      <link>http://blogs.tedneward.com/2009/06/14/The+Quotcontroversyquot+Continues.aspx</link>
      <pubDate>Sun, 14 Jun 2009 22:17:44 GMT</pubDate>
      <description>&lt;p&gt;
Apparently the Rails community isn't the only one pursuing that ephemeral goal of
&amp;quot;edginess&amp;quot;—another blatantly sexist presentation came off without a hitch,
this time at a Flash conference, and if anything, it was worse than the Rails/CouchDB
presentation. I excerpt a few choice tidbits &lt;a href="http://www.geekgirlsguide.com/blog/2009/06/11/98/prude_or_professional_by_courtney_remes" target="_blank"&gt;from
an eyewitness&lt;/a&gt; here, but be warned—if you're not comfortable with language, skip
the next block paragraph.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Yesterday's afternoon keynote is this guy named &lt;a href="http://flashbelt.com/#/speakers/hoss_gifford/"&gt;Hoss
Gifford&lt;/a&gt; — I believe his major claim to fame is that viral &amp;quot;spank the monkey&amp;quot;
thing that went around a few years back.&amp;#160; Highlights of his talk:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
He opens his keynote with one of those &lt;a href="http://www.ignitempls.org/"&gt;&amp;quot;Ignite&amp;quot;-esque
presentations&lt;/a&gt; — where you have 5-minutes and 20 slides to tell a story — and the
first and last are a close-up of a woman's lower half, her legs spread (wearing stilettos,
of course) and her shaved vagina visible through some see-thru panties that say &amp;quot;drink
me,&amp;quot; with Hoss's Photoshopped, upward-looking face placed below it. 
&lt;/li&gt;
&lt;li&gt;
He later demos a drawing tool he has created (admittedly with someone else's code)
and invites a woman to come up to try it.&amp;#160; After she sits back down, he points
out that in her doodles she's drawn a &amp;quot;cock.&amp;quot; 
&lt;/li&gt;
&lt;li&gt;
Then he decides he wants to give a try at using the tool to draw a &amp;quot;cock&amp;quot;
(he loves this word) — and draws a face, then a giant dick (he redraws it three times)
that ultimately cums all over the face. 
&lt;/li&gt;
&lt;li&gt;
A multitude of references to penises and lots of swearing — and also &amp;quot;If you
are easily offended, fuck you!&amp;quot; 
&lt;/li&gt;
&lt;li&gt;
And then, to top it off, a self-made flash movie of an animated woman's face, positioned
as if she's having sex with you, who gradually orgasms based on the speed of your
mouse movement on the page. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Wow. Just... wow. To call this unprofessional smacks of calling Hitler a &amp;quot;socially
awkward individual&amp;quot;... or using a euphemism like &amp;quot;mild medical condition&amp;quot;
to refer to death. This is so far &amp;quot;over the line&amp;quot; that it's unbelievable.
Even Mr. Aimonetti's &amp;quot;CouchDB&amp;quot; presentation, as bad as it was, at least
tried to tie the analogy together in a meaningful, if offensive, way. This is just
male posturing at its worst. (I'm shocked Hoss didn't whip off his pants and demand
the women in the room bow down in worship to his obviously superior manhood.) 
&lt;/p&gt;
&lt;p&gt;
Fortunately, according to the source, the conference organizer seems to be pretty
responsive, so kudos to the one adult in the room, but....
&lt;/p&gt;
&lt;p&gt;
What's worse, apparently the presenter and more than a few of his pals are (in the
best traditions of assholery) blatantly unrepentant about the whole thing, claiming
the moral high ground in much the same way that the Rails idiots did—it's all in good
fun, if you don't find it funny you're a prude, and so on:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
I checked Twitter (hashtag &lt;a href="http://search.twitter.com/search?q=%23flashbelt"&gt;#flashbelt&lt;/a&gt;)
to see what the responses were.&amp;#160; Here are some notable remarks:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://twitter.com/Fonx/status/2096740346"&gt;Fonx&lt;/a&gt; is reading the #flashbelt
rants on Hoss offending the ladies w/ a few swear words &amp;amp; a penis drawing - r
u really that prudish &amp;amp; sexist? 
&lt;/li&gt;
&lt;li&gt;
nthitz lol @hoss69 &amp;quot;If you are easily offended, fuck you&amp;quot; #flashbelt 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://twitter.com/livenootrac/status/2096075802"&gt;livenootrac&lt;/a&gt; Ladies
of #flashbelt , I am sorry for the Hoss preso, but in the flash community he gets
a pass, kinda like Don Rickles - that's just Hoss. 
&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://twitter.com/CujoJpn/status/2096658483"&gt;CujoJpn&lt;/a&gt; @livenootrac And
there were many ladies at #flashbelt who were offended by Hoss' Preso some were thick
skinned and took it as is. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
So, if you didn't like it then 
&lt;br /&gt;
a) you are a prude - and sexist (?) 
&lt;br /&gt;
b) fuck you 
&lt;br /&gt;
c) suck it because Hoss gets a pass here in the boy's club known as &amp;quot;the flash
community&amp;quot; and 
&lt;br /&gt;
d) you are a wimpy girl who isn't strong enough / man enough / &amp;quot;thick-skinned&amp;quot;
enough&amp;#160; to deal with it.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Even more... wow. Talk about justification and marginalization. Amazing.
&lt;/p&gt;
&lt;p&gt;
Before I figuratively smack this Hoss guy around the blog for a while, let's take
a brief moment for reflection—what's going on here? Why all the misogynistic presentations
recently? Is this reflective of a general trend in the programming industry? Of society
in general? Is the world coming to an end?
&lt;/p&gt;
&lt;p&gt;
A few possibilities present themselves:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The lack of women in the IT industry means there's nobody around to act as
a &amp;quot;gender filter&amp;quot; to keep things on an even keel.&lt;/strong&gt; In other words,
the genders constantly filter themselves based on the company they keep, and because
the boys who put these presentations together don't have female input, they simply
don't know where to draw the line for mixed company. This theory also presumes that
an industry that's made up primarily of women will also lack such a filter and &amp;quot;girls
will be girls&amp;quot; as a result. Unfortunately I have no good counterexamples at hand
to examine—anybody know of an industry populated primarily by women, and can weigh
in with experience there? The closest I get is my brief experience working in a restaurant
with an almost-all-woman serving staff, and from that brief experience, yep, the theory
holds. Solution? Easy: get more women in IT, and things will re-balance themselves
naturally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Programmers are principally males who have no redeeming social skills.&lt;/strong&gt; In
other words, the industry gathers up exactly the kind of men who find objectifying
women and reveling in late-acquired testosterone overdoses to be gratifying, and this
kind of behavior is the result. If true, it leads to the conclusion that programmers
are no more evolved than the Navy sailors involved in the Tailhook scandal of a few
years ago. So go ahead, smack your wives and girlfriends around a little if they get
a little &amp;quot;uppity&amp;quot;, it's OK, 'cuz u r a l33t d00d. Personally? I find the
idea ludicrous—there is definitely a strong antisocial streak that runs through the
IT ecosystem (how many of you met your friends via World of Warcraft again?), but
like all stereotypes, there's some elements of truth to it, and a lot of exaggeration.
And frankly, anybody who believes in this theory is welcome to come with me to dinner
at a No Fluff Just Stuff show and meet the other speakers, and listen in on our &amp;quot;boys
club&amp;quot; conversations, including questions like, &amp;quot;Which movie best represents
the book it was made after?&amp;quot; and &amp;quot;If given a mandate to create a programming
language, what language would your language most resemble?&amp;quot;. Oh, and the odd
fart joke. We are boys, after all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;We're hypersensitive to the subject right now.&lt;/strong&gt; In other words, these
kind of presentations have always been going on, and it's just that we notice them
now, in the same way that you notice a particular brand of car on the road a lot more
when you're thinking about buying that brand and model of car. Frankly, I don't buy
this argument—I've been to a lot of presentations over the past decade, and I've never
seen any that were anything like this.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;This is the YouTube generation, with access to everything the Internet has
to offer, and this is &amp;quot;just how they do things&amp;quot;.&lt;/strong&gt; After all, how
much maturity, sexual discretion and adult behavior can we expect of the generation
that gave us &amp;quot;Girls Gone Wild&amp;quot; and its ilk? It's just a &amp;quot;generation
gap&amp;quot; thing, and we old fogies who didn't grow up with Internet porn just a browser-click
away just don't &amp;quot;get it&amp;quot;. Hmm.... somehow, I just don't buy it. Sure, there
may be some elements of this involved here (I'm &lt;em&gt;really&lt;/em&gt; curious to see what
all these &amp;quot;Girls Gone Wild&amp;quot; girls are going to say to their own daughters
in a decade or so...), but I think that's too easy an answer, and an eminently unhelpful
one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;We have copycatters out there trying to follow the path of people they respect.&lt;/strong&gt; If
you're looking up at this Hoss character and thinking, &amp;quot;I want to be just like
him!&amp;quot;, you really should see a therapist and develop a sense of self, before
you find yourself without friends. Hoss gets a pass because of your misguided fan-boi
hero-worship. So does Paris Hilton. You want to be the Paris Hilton of your social
circle? Go for it. After all, she's highly respected and loved, right? Take a clue
from the next car wreck you drive past—everybody's slowing to look not because they
wish they were in the body bag, folks, but because we have a ghoulish fascination
with it. In the case of Ms. Hilton, that ghoulish fascination is with those who self-destruct
in spectacular fashion. (Me, I'd &lt;em&gt;love&lt;/em&gt; to be the fly on the wall at the Hoss
residence when he tries to explain this whole thing to his daughter or his date/girlfriend/wife,
if he ever finds one.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The presenters taking this tack are looking for an easy path to fame.&lt;/strong&gt; In
the grand traditions of Andrew Dice Clay (&amp;quot;Oh!&amp;quot;), the easiest way for a
presenter to &amp;quot;stand out&amp;quot; from the rest of the crowd of presenters is to
do something outrageous and call it &amp;quot;edgy&amp;quot;, and stake out a claim on the
edge of the civilization, rather than try to integrate with the rest of the crowd
and build something up slowly. Don Box has already claimed &amp;quot;HTTP is dead&amp;quot;,
I made the analogy between a technology and a military conflict, and Matt Aimonetti
claimed a data storage framework &amp;quot;performs like a pr0n star&amp;quot;, so what's
left but to stake out ground even further out on the fringe and just be misogynistic?
Fortunately, history suggests that people with content-free/shock-heavy presentations
(or even content-heavy/shock-heavy ones) don't go the distance, so to speak, and that
once there's nowhere more shocking left to go, the audience comes back to the content-heavy/shock-light
discussions and stays there for a while. Unfortunately, this means we're going to
have to suffer through somebody's &amp;quot;Live YouPorn filming&amp;quot; talk first, which
I'm &lt;em&gt;not&lt;/em&gt; looking forward to.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
And now for the smacking around... but you know, I suddenly realize that the volume
of comments on the original post leave with nothing to do or say that's not already
being said, so to just &amp;quot;pile on&amp;quot; would only serve to let me vent, and I
have other outlets for that. But it would be inappropriate to just &amp;quot;walk away&amp;quot;,
so to speak, so with that in mind....
&lt;/p&gt;
&lt;p&gt;
Hoss, you're an idiot. Like any sprinter, you're going to head up the pack for a bit,
but soon enough, your &amp;quot;shtick&amp;quot; is going to flame out and you'll be left
behind with all the other &amp;quot;shock jocks&amp;quot; of the 80's who found their material
unwelcome after a while. So enjoy the spotlight (such as it is) while you can. In
the meantime, I'm off to revise a few presentations, and stick with solid ideas and
analogies, and maybe dropping the odd F-bomb when I want to make a point, just for
emphasis, because I know something you apparently don't:
&lt;/p&gt;
&lt;p&gt;
Shock makes a point because of the &lt;em&gt;contrast&lt;/em&gt; to the rest of the talk, not
because of its inherent &amp;quot;edginess&amp;quot;.
&lt;/p&gt;
&lt;p&gt;
Meanwhile, by all means, continue to be an idiot. You just make me look better by
comparison, for which I thank you.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=49e7a9d3-c222-45d7-a049-29b5a4b25cd3" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,49e7a9d3-c222-45d7-a049-29b5a4b25cd3.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Flash</category>
      <category>Industry</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Mac OS</category>
      <category>Review</category>
      <category>Ruby</category>
      <category>Scala</category>
      <category>Social</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=1b6d63c7-4c96-422d-b97d-3b644a9657d2</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,1b6d63c7-4c96-422d-b97d-3b644a9657d2.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,1b6d63c7-4c96-422d-b97d-3b644a9657d2.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1b6d63c7-4c96-422d-b97d-3b644a9657d2</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
These are the things I think as I wing my way out of LA fresh from this year's TechEd
2009 conference:
</p>
        <ul>
          <li>
            <strong>I think I owe the attendees at DTL309 ("Busy .NET Developer's Guide to
F#") an explanation.</strong> It's always embarrassing when your brain freezes
during a presentation, and that's precisely what happened during the F# talk—I completely
spaced on the syntax for implementing an interface on a class in F#. (To the attendees
who commented "consider preparing a bit better so you dont forget the sintax
:)" and "Not remembering the language syntax sorta comes across bad doesn't
it?", you're absolutely right, which prompts this next sentence.) I apologize <em>profusely</em> to
those who were there—I just blew it. For the record, the missing syntax looks like
this: 
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">#light<br /><br />
type IStudy =<br /><span style="color: #0000ff">abstract</span> Study: <span style="color: #0000ff">string</span> -&gt;
unit<br /><br />
type Person(firstName : <span style="color: #0000ff">string</span>, lastName : <span style="color: #0000ff">string</span>,
age : <span style="color: #0000ff">int</span>) =<br />
member p.FirstName = firstName<br />
member p.LastName = lastName<br />
member p.Age = age<br /><span style="color: #0000ff">override</span> p.ToString() = 
<br />
System.String.Format(<span style="color: #006080">"[Person: firstName={0}, lastName={1},
age={2}]"</span>,<br />
p.FirstName, p.LastName, p.Age);<br /><br />
type Student(firstName : <span style="color: #0000ff">string</span>, lastName : <span style="color: #0000ff">string</span>,
age : <span style="color: #0000ff">int</span>, subject : <span style="color: #0000ff">string</span>)
=<br />
inherit Person(firstName, lastName, age)<br /><span style="color: #0000ff">interface</span> IStudy with<br />
member s.Study(sub : <span style="color: #0000ff">string</span>) =<br />
System.Console.WriteLine(<span style="color: #006080">"Hey, Ma, I'm studying
{0}!"</span>, sub)<br />
member s.Subject = subject<br /><span style="color: #0000ff">override</span> s.ToString() =<br />
System.String.Format(<span style="color: #006080">"[Student: "</span> + <span style="color: #0000ff">base</span>.ToString()
+ <span style="color: #006080">" subject={0}]"</span>, s.Subject);<br /></pre><br /></div><a href="http://11011.net/software/vspaste"></a>Truth is, though, right now not a
lot of people (myself included) are writing types that formally implement a given
interface—the current common practice appears to be an object expression instead,
something along these lines: 
<div style="border-bottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: 'Courier New', courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"><pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: 'Courier New', courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet">let monkey =<br />
{ <span style="color: #0000ff">new</span> IStudy with<br />
member p.Study(subject : <span style="color: #0000ff">string</span>) =<br />
System.Console.WriteLine(<span style="color: #006080">"Oook eeek aah aah {0}!"</span>,
subject) }<br />
monkey.Study(<span style="color: #006080">"Visual Basic"</span>)<br /></pre><br /></div>
In this way, the object handed back still implements the interface type that the client
wants to call through, but the defined type remains anonymous (and thus provides an
extra layer of encapsulation against implementation details leaking out). The most
frustrating part about that particular snafu? I had a Notepad window open with some
prepared code snippets waiting for me (a fully-defined Person type, a fully-defined
Student type inheriting from Person, and so on) if I needed to grab that code because
typing it out was taking too long. Why didn't I use it? I just forgot. Oy..... 
</li>
          <li>
            <strong>Clearly Microsoft is thinking big things about Azure.</strong> There were
a lot of sessions around Azure and cloud computing, far more than I'd honestly expected,
given how new (and unreleased) the Azure bits are. This is a subject I would have
expected to see covered this deeply at PDC, not TechEd.</li>
          <li>
            <strong>TechEd Speaker Idol is a definite win, to me.</strong> I watched the final
round of Speaker Idol on Thursday night (before catching the redeye out to Atlanta
for the NFJS show there this weekend), and quite honestly, I was blown away by the
quality of the presentations—they were all of them better than some of the TechEd
speakers I'd seen, and it was great to hear that not only will the winner, who did
a <em>great</em> presentation on legacy application support in Windows7 (and whose
name I didn't catch, sorry) be guaranteed a slot at TechEd, but I overheard that the
runner-up, a Polish security expert who demoed how to break Process Explorer (in front
of Mark Russinovich, no less!), will also be speaking at TechEd Berlin this year.</li>
          <li>
            <strong>As always, the parties at TechEd were where the real value lay.</strong> This
may seem like an odd statement to those whose heads are a bit full right now from
five days' worth of material (six, if you attended a pre-con), but remember that I'm
a speaker, so the sessions aren't always as useful as they are to people who've not
seen this content before (or have the kind of easy access to the people building it
and/or presenting it that I'm fortunate and privileged to have). Any future attendees
should take serious note, though: networking is a serious part of this business, and
if you're not going out to the parties (or creating a few of your own while you're
there) and handing out business cards left and right, you're missing a <em>valuable</em> opportunity.</li>
          <li>
            <strong>I'm looking forward to TechEd 2010.</strong> Particularly because, thanks
to a few technical snafus, I had the chance to sit down with the folks who organize
and run TechEd and vent for a little bit about everything I found annoying (as a speaker).
Not only were my comments <em>not</em> blown off, but it started a really productive
discussion about how to make the behind-the-scenes experience for the TechEd speakers
a more pleasant and streamlined one. What's more, we're planning to revisit some of
these discussions in the months to come as they start their preparations for TechEd
2010 (in New Orleans). I'm looking forward to those conversations and (hopefully)
helping them eliminate some of the awkwardness that I've seethed over in the past.</li>
        </ul>
        <p>
New Orleans in the summer will not be an entirely wonderful experience (I'm told it
gets monstrously humid there in the summers, but it can't be any worse than Orlando
is/was), but I'm honestly very curious to get back there to see what post-Katrina
New Orleans looks and feels like, and to maybe do my (very little) part to help the
area claw its way back by maybe staying an extra day or two and taking in some of
the sights. (I'm hoping that Sara Ford will be willing to act as tour guide.....)
</p>
        <p>
In the meantime, thanks to all of you who came, and remember—if you attended a talk
and you want to say "thanks" to the speaker who gave it, the best way is
to take the five minutes to fill out the evals for that talk. (Speaking personally,
I don't even care so much about the scores you give me, but the comments are absolutely
invaluable.)
</p>
        <p>
See y'all next year!
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=1b6d63c7-4c96-422d-b97d-3b644a9657d2" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>TechEd 2009 Thoughts</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,1b6d63c7-4c96-422d-b97d-3b644a9657d2.aspx</guid>
      <link>http://blogs.tedneward.com/2009/05/16/TechEd+2009+Thoughts.aspx</link>
      <pubDate>Sat, 16 May 2009 03:18:19 GMT</pubDate>
      <description>&lt;p&gt;
These are the things I think as I wing my way out of LA fresh from this year's TechEd
2009 conference:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;I think I owe the attendees at DTL309 (&amp;quot;Busy .NET Developer's Guide to
F#&amp;quot;) an explanation.&lt;/strong&gt; It's always embarrassing when your brain freezes
during a presentation, and that's precisely what happened during the F# talk—I completely
spaced on the syntax for implementing an interface on a class in F#. (To the attendees
who commented &amp;quot;consider preparing a bit better so you dont forget the sintax
:)&amp;quot; and &amp;quot;Not remembering the language syntax sorta comes across bad doesn't
it?&amp;quot;, you're absolutely right, which prompts this next sentence.) I apologize &lt;em&gt;profusely&lt;/em&gt; to
those who were there—I just blew it. For the record, the missing syntax looks like
this: 
&lt;div style="border-bottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;#light&lt;br /&gt;
&lt;br /&gt;
type IStudy =&lt;br /&gt;
&lt;span style="color: #0000ff"&gt;abstract&lt;/span&gt; Study: &lt;span style="color: #0000ff"&gt;string&lt;/span&gt; -&amp;gt;
unit&lt;br /&gt;
&lt;br /&gt;
type Person(firstName : &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;, lastName : &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;,
age : &lt;span style="color: #0000ff"&gt;int&lt;/span&gt;) =&lt;br /&gt;
member p.FirstName = firstName&lt;br /&gt;
member p.LastName = lastName&lt;br /&gt;
member p.Age = age&lt;br /&gt;
&lt;span style="color: #0000ff"&gt;override&lt;/span&gt; p.ToString() = 
&lt;br /&gt;
System.String.Format(&lt;span style="color: #006080"&gt;&amp;quot;[Person: firstName={0}, lastName={1},
age={2}]&amp;quot;&lt;/span&gt;,&lt;br /&gt;
p.FirstName, p.LastName, p.Age);&lt;br /&gt;
&lt;br /&gt;
type Student(firstName : &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;, lastName : &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;,
age : &lt;span style="color: #0000ff"&gt;int&lt;/span&gt;, subject : &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;)
=&lt;br /&gt;
inherit Person(firstName, lastName, age)&lt;br /&gt;
&lt;span style="color: #0000ff"&gt;interface&lt;/span&gt; IStudy with&lt;br /&gt;
member s.Study(sub : &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;) =&lt;br /&gt;
System.Console.WriteLine(&lt;span style="color: #006080"&gt;&amp;quot;Hey, Ma, I'm studying
{0}!&amp;quot;&lt;/span&gt;, sub)&lt;br /&gt;
member s.Subject = subject&lt;br /&gt;
&lt;span style="color: #0000ff"&gt;override&lt;/span&gt; s.ToString() =&lt;br /&gt;
System.String.Format(&lt;span style="color: #006080"&gt;&amp;quot;[Student: &amp;quot;&lt;/span&gt; + &lt;span style="color: #0000ff"&gt;base&lt;/span&gt;.ToString()
+ &lt;span style="color: #006080"&gt;&amp;quot; subject={0}]&amp;quot;&lt;/span&gt;, s.Subject);&lt;br /&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;Truth is, though, right now not a
lot of people (myself included) are writing types that formally implement a given
interface—the current common practice appears to be an object expression instead,
something along these lines: 
&lt;div style="border-bottom: silver 1px solid; border-left: silver 1px solid; padding-bottom: 4px; line-height: 12pt; background-color: #f4f4f4; margin: 20px 0px 10px; padding-left: 4px; width: 97.5%; padding-right: 4px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; max-height: 200px; font-size: 8pt; overflow: auto; border-top: silver 1px solid; cursor: text; border-right: silver 1px solid; padding-top: 4px" id="codeSnippetWrapper"&gt;
&lt;pre style="border-bottom-style: none; padding-bottom: 0px; line-height: 12pt; border-right-style: none; background-color: #f4f4f4; margin: 0em; padding-left: 0px; width: 100%; padding-right: 0px; font-family: &amp;#39;Courier New&amp;#39;, courier, monospace; border-top-style: none; color: black; font-size: 8pt; border-left-style: none; overflow: visible; padding-top: 0px" id="codeSnippet"&gt;let monkey =&lt;br /&gt;
{ &lt;span style="color: #0000ff"&gt;new&lt;/span&gt; IStudy with&lt;br /&gt;
member p.Study(subject : &lt;span style="color: #0000ff"&gt;string&lt;/span&gt;) =&lt;br /&gt;
System.Console.WriteLine(&lt;span style="color: #006080"&gt;&amp;quot;Oook eeek aah aah {0}!&amp;quot;&lt;/span&gt;,
subject) }&lt;br /&gt;
monkey.Study(&lt;span style="color: #006080"&gt;&amp;quot;Visual Basic&amp;quot;&lt;/span&gt;)&lt;br /&gt;
&lt;/pre&gt;
&lt;br /&gt;
&lt;/div&gt;
In this way, the object handed back still implements the interface type that the client
wants to call through, but the defined type remains anonymous (and thus provides an
extra layer of encapsulation against implementation details leaking out). The most
frustrating part about that particular snafu? I had a Notepad window open with some
prepared code snippets waiting for me (a fully-defined Person type, a fully-defined
Student type inheriting from Person, and so on) if I needed to grab that code because
typing it out was taking too long. Why didn't I use it? I just forgot. Oy..... 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clearly Microsoft is thinking big things about Azure.&lt;/strong&gt; There were
a lot of sessions around Azure and cloud computing, far more than I'd honestly expected,
given how new (and unreleased) the Azure bits are. This is a subject I would have
expected to see covered this deeply at PDC, not TechEd.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;TechEd Speaker Idol is a definite win, to me.&lt;/strong&gt; I watched the final
round of Speaker Idol on Thursday night (before catching the redeye out to Atlanta
for the NFJS show there this weekend), and quite honestly, I was blown away by the
quality of the presentations—they were all of them better than some of the TechEd
speakers I'd seen, and it was great to hear that not only will the winner, who did
a &lt;em&gt;great&lt;/em&gt; presentation on legacy application support in Windows7 (and whose
name I didn't catch, sorry) be guaranteed a slot at TechEd, but I overheard that the
runner-up, a Polish security expert who demoed how to break Process Explorer (in front
of Mark Russinovich, no less!), will also be speaking at TechEd Berlin this year.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;As always, the parties at TechEd were where the real value lay.&lt;/strong&gt; This
may seem like an odd statement to those whose heads are a bit full right now from
five days' worth of material (six, if you attended a pre-con), but remember that I'm
a speaker, so the sessions aren't always as useful as they are to people who've not
seen this content before (or have the kind of easy access to the people building it
and/or presenting it that I'm fortunate and privileged to have). Any future attendees
should take serious note, though: networking is a serious part of this business, and
if you're not going out to the parties (or creating a few of your own while you're
there) and handing out business cards left and right, you're missing a &lt;em&gt;valuable&lt;/em&gt; opportunity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;I'm looking forward to TechEd 2010.&lt;/strong&gt; Particularly because, thanks
to a few technical snafus, I had the chance to sit down with the folks who organize
and run TechEd and vent for a little bit about everything I found annoying (as a speaker).
Not only were my comments &lt;em&gt;not&lt;/em&gt; blown off, but it started a really productive
discussion about how to make the behind-the-scenes experience for the TechEd speakers
a more pleasant and streamlined one. What's more, we're planning to revisit some of
these discussions in the months to come as they start their preparations for TechEd
2010 (in New Orleans). I'm looking forward to those conversations and (hopefully)
helping them eliminate some of the awkwardness that I've seethed over in the past.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
New Orleans in the summer will not be an entirely wonderful experience (I'm told it
gets monstrously humid there in the summers, but it can't be any worse than Orlando
is/was), but I'm honestly very curious to get back there to see what post-Katrina
New Orleans looks and feels like, and to maybe do my (very little) part to help the
area claw its way back by maybe staying an extra day or two and taking in some of
the sights. (I'm hoping that Sara Ford will be willing to act as tour guide.....)
&lt;/p&gt;
&lt;p&gt;
In the meantime, thanks to all of you who came, and remember—if you attended a talk
and you want to say &amp;quot;thanks&amp;quot; to the speaker who gave it, the best way is
to take the five minutes to fill out the evals for that talk. (Speaking personally,
I don't even care so much about the scores you give me, but the comments are absolutely
invaluable.)
&lt;/p&gt;
&lt;p&gt;
See y'all next year!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=1b6d63c7-4c96-422d-b97d-3b644a9657d2" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,1b6d63c7-4c96-422d-b97d-3b644a9657d2.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Languages</category>
      <category>Review</category>
      <category>Visual Basic</category>
      <category>WCF</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=d00e5d72-dc03-4261-a551-7fdd688bcbd6</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,d00e5d72-dc03-4261-a551-7fdd688bcbd6.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,d00e5d72-dc03-4261-a551-7fdd688bcbd6.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d00e5d72-dc03-4261-a551-7fdd688bcbd6</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Since a number of people have been connecting to my blog via my last post on installing
Windows 7 into a VMWare image, I thought since the Windows7 RC is now available, I'd
update my experiences with installing it.
</p>
        <p>
          <strong>I downloaded the Windows7 RC ISO image</strong> (a freakishly hideous name
containing every character on my US keyboard, plus a few in Klingon, I think.... if
you can stand it, the full name of the ISO is 7100.0.090421-1700_x86fre_client_en-us_Retail_Ultimate-GRC1CULFRER_EN_DVD)
from the Microsoft CONNECT website, not bothering with any of the other images (x64,
ia64, and a "server" image I've not explored yet), using Microsoft's File
Transfer Manager. (I know, I know, somebody's going to complain again about the ISOs
not being available via a straight HTTP download or Torrent, but this is just an RC
release, folks, and this is ostensibly to Microsoft-friendly customers who already
have the FTM utility installed.) Took about 3+ hours to download on my home connection...
or so it claimed. I went to bed after starting it last night. It was done when I woke
up. What more do you want from me?
</p>
        <p>
          <strong>I created a new VMWare image</strong>, as a "Windows Vista" VM with
1GB RAM, a 60GB IDE hard disk (by default Fusion wants to create a 40 GB SCSI disk,
but IDE seems to play nicer with the early betas of Microsoft OS'es, and I made it
all one file rather than Fusion's default "Split into 2GB files" option),
with the experimental 3D graphics turned on, battery status turned off, and (this
is HUGE) the "Allow your Mac to open applications in the virtual machine"
option turned OFF. Can't repeat this enough, for ANY VMWare VM containing Windows
inside of it, turn off that option—leaving it on sucks up HUGE amounts of CPU time.
(It's barely documented, and only determined Googling found that this was what was
rendering my VMWare Fusion 2 images all but unusable.)
</p>
        <p>
          <strong>I attached the ISO to the VMWare CD</strong> and turned the thing loose. It
takes a while, but so long as the ISO file and the VMWare VMDK disk file are on separate
drives, the perf isn't too bad—roughly twenty minutes later (or, as I measure things,
one randomly-generated map game of <a href="http://sillysoft.net/pax/">Pax Galaxia</a> later),
the image had installed all the core files on the VM disk, restarted itself, finished
the installation, and restarted itself again. (I have no idea why Win7 wants to reboot
itself twice during the install—if I remember the Vista installs correctly, it only
restarts once). As I write this, I'm starting at the "Setup is preparing your
computer for first use" screen with the funky Cylon-like flashing bar underneath
the text (I'm serious, it really looks like the graphic artists at Microsoft are paying
homage to BSG during that Setup screen). Whoops, I take it back—got through that screen
rather quickly, and now we're into the username/password/product key stage. Plug that
in, set the Update policy, the date and time, the network defaults (Public Location
for all my VMs, just because), and.... "Welcome".
</p>
        <p>
          <strong>There's no Step Four.</strong> Although, according to Windows Update, there's
already an update for Windows7 that should be downloaded and installed. *grin* Actually,
it seems like the driver it installed was for the VMWare virtual sound device, which
normally doesn't kick in until I install the VMWare Tools. It tells me that this is
an "Unsupported Creative Sound Device", however, so maybe it's an older
driver. *shrug* Not sure, don't care, because my next step is....
</p>
        <p>
          <strong>Install the VMWare Tools. </strong>I install VMWare Tools in the image, after
the Update is complete. (No restart was required, so why not?) Actually, let me rephrase
that—I <em>tried</em> to install the VMWare tools, but when I selected it from the
Fusion menu bar... nothing happened. Hmm. OK, let's do the restart and see what happens.
VM shuts down quickly enough (no having to wait for updates to finish, which was somewhat
annoying with Vista), and when I restart, it seems to restart quickly enough (again,
no obvious updates to be installed), so I get to a working desktop (640x480, how did
we <em>ever</em> think this was reasonable?!?), and try the Install VMWare Tools option
from the Fusion menubar again. It thinks for a bit, and the cursor flashes to the
"pointer-with-CD" icon for a second before flashing back, but after a few
seconds, the "What do you want to do?" (Autoplay) menu pops up as if I'd
slipped the CD into the drive, so all looks good. Go through the UAC "Continue/Cancel"
dialog (see below), choose "Complete" for the VMWare Tools install options,
and let 'er rip. Disks spin, lights flicker, and a "VMWare Shared Tools"
network folder shows up on the Win7 desktop, indicating that it's suddenly discovered
the Shared Folder (to my MacOS user account) is there. But now we're back to the Windows-display-exercise
program, which leads me to believe that it's the VMWare driver that's doing the exercise,
not Windows itself. (VMWare? Anybody listening and care to comment?)
</p>
        <p>
          <strong>And now I'm into Win7 desktop customization steps</strong>, things like display
sizing and desktop icon selection, background image, and all that other jazz that
you probably don't care about. (If you do, then I'm a bit worried about you—be an
individual! Choose your own settings!) All in all, pretty flawless and smooth.
</p>
        <p>
          <strong>Thoughts on the process</strong>:
</p>
        <ul>
          <li>
It feels like we're getting away from the "minimal install" process that
Vista tried to create. For a while, there was a meme that said that installing Windows
was too hard for the average person, and Microsoft promised to reduce the number of
steps it had to go through to install the OS. Take the date/time screen, for example:
it picked up the defaults from the underlying (virtual) hardware, why not just assume
those and skip that step? Users can always change it later.</li>
          <li>
I still have to set a Administrator password. I know that Microsoft is trying to find
that sweet-spot balance between "too secure" and "unsecure" for
desktop operating systems, but I have to hand it to the Ubuntu folks here—the "passwordless
root" idea that they use is pretty slick. MacOS uses it (for the most part) in
places, as well. I like the balance that approach achieves: it forces the user to
enter "superuser" mode to do something sensitive, but it isn't challenging
for a password (unless the superuser installs one) every time.</li>
          <li>
It's not going through display-screen calesthenics on each startup with this build.
My previous Win7 image, every time I restart the VM, goes through every possible video/monitor
size combination before settling in on the resolution I established in the last session.
That was a bit disconcerting, until I realized that it's Windows trying to get some
exercise in to be less overweight. *grin*</li>
          <li>
What, no PowerShell installed by default? Either it's not there, or it's buried pretty
deeply. Command Prompt (cmd.exe) is right where it's always been, under Accessories,
but no PowerShell.... Whoops, no, I take it back, it's in a <em>folder</em> underneath
Accessories, forcing one more click to get to it. Hey Microsoft: do me a favor and
pin that guy to the Start Menu. Make it easy for me to use, if you really want me
to believe that this is supposed to replace Command Prompt someday.</li>
          <li>
On that note, though, the PowerShell "ISE" (Interactive Scripting Environment)
is an interesting and new toy to play with.</li>
          <li>
"Pin to Taskbar" is an interesting option that I'm going to have to play
around with. Not being a huge MacOS Dock fan (which is pretty clearly the inspiration
for the new Taskbar), I'm not sure how well I'll like the new "it's the QuickLaunch
and the Taskbar combined" idea.</li>
        </ul>
        <p>
Overall, I'm looking forward to putting a few things into this image (VS 2008, VS
2010, Office, and so on) and seeing how it reacts. As always, your mileage may vary,
no implied warranties with this blog post, blah blah blah, but if you do anything
with the Windows OS, you really should get hold of the RC (build 7100) and put it
into a Virtual PC, VMWare, VirtualBox, Xen or some other virtualized box to play with.
Like it or not, it's entirely reasonable to believe that Windows7 is going to win
a few folks back from the Vista "less-than-I-expected" crowd.
</p>
        <p>
As always, <em>caveat emptor</em>, and feel free to comment....
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=d00e5d72-dc03-4261-a551-7fdd688bcbd6" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Windows 7 RC install experience</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,d00e5d72-dc03-4261-a551-7fdd688bcbd6.aspx</guid>
      <link>http://blogs.tedneward.com/2009/05/02/Windows+7+RC+Install+Experience.aspx</link>
      <pubDate>Sat, 02 May 2009 07:18:20 GMT</pubDate>
      <description>&lt;p&gt;
Since a number of people have been connecting to my blog via my last post on installing
Windows 7 into a VMWare image, I thought since the Windows7 RC is now available, I'd
update my experiences with installing it.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;I downloaded the Windows7 RC ISO image&lt;/strong&gt; (a freakishly hideous name
containing every character on my US keyboard, plus a few in Klingon, I think.... if
you can stand it, the full name of the ISO is 7100.0.090421-1700_x86fre_client_en-us_Retail_Ultimate-GRC1CULFRER_EN_DVD)
from the Microsoft CONNECT website, not bothering with any of the other images (x64,
ia64, and a &amp;quot;server&amp;quot; image I've not explored yet), using Microsoft's File
Transfer Manager. (I know, I know, somebody's going to complain again about the ISOs
not being available via a straight HTTP download or Torrent, but this is just an RC
release, folks, and this is ostensibly to Microsoft-friendly customers who already
have the FTM utility installed.) Took about 3+ hours to download on my home connection...
or so it claimed. I went to bed after starting it last night. It was done when I woke
up. What more do you want from me?
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;I created a new VMWare image&lt;/strong&gt;, as a &amp;quot;Windows Vista&amp;quot; VM with
1GB RAM, a 60GB IDE hard disk (by default Fusion wants to create a 40 GB SCSI disk,
but IDE seems to play nicer with the early betas of Microsoft OS'es, and I made it
all one file rather than Fusion's default &amp;quot;Split into 2GB files&amp;quot; option),
with the experimental 3D graphics turned on, battery status turned off, and (this
is HUGE) the &amp;quot;Allow your Mac to open applications in the virtual machine&amp;quot;
option turned OFF. Can't repeat this enough, for ANY VMWare VM containing Windows
inside of it, turn off that option—leaving it on sucks up HUGE amounts of CPU time.
(It's barely documented, and only determined Googling found that this was what was
rendering my VMWare Fusion 2 images all but unusable.)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;I attached the ISO to the VMWare CD&lt;/strong&gt; and turned the thing loose. It
takes a while, but so long as the ISO file and the VMWare VMDK disk file are on separate
drives, the perf isn't too bad—roughly twenty minutes later (or, as I measure things,
one randomly-generated map game of &lt;a href="http://sillysoft.net/pax/"&gt;Pax Galaxia&lt;/a&gt; later),
the image had installed all the core files on the VM disk, restarted itself, finished
the installation, and restarted itself again. (I have no idea why Win7 wants to reboot
itself twice during the install—if I remember the Vista installs correctly, it only
restarts once). As I write this, I'm starting at the &amp;quot;Setup is preparing your
computer for first use&amp;quot; screen with the funky Cylon-like flashing bar underneath
the text (I'm serious, it really looks like the graphic artists at Microsoft are paying
homage to BSG during that Setup screen). Whoops, I take it back—got through that screen
rather quickly, and now we're into the username/password/product key stage. Plug that
in, set the Update policy, the date and time, the network defaults (Public Location
for all my VMs, just because), and.... &amp;quot;Welcome&amp;quot;.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;There's no Step Four.&lt;/strong&gt; Although, according to Windows Update, there's
already an update for Windows7 that should be downloaded and installed. *grin* Actually,
it seems like the driver it installed was for the VMWare virtual sound device, which
normally doesn't kick in until I install the VMWare Tools. It tells me that this is
an &amp;quot;Unsupported Creative Sound Device&amp;quot;, however, so maybe it's an older
driver. *shrug* Not sure, don't care, because my next step is....
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Install the VMWare Tools. &lt;/strong&gt;I install VMWare Tools in the image, after
the Update is complete. (No restart was required, so why not?) Actually, let me rephrase
that—I &lt;em&gt;tried&lt;/em&gt; to install the VMWare tools, but when I selected it from the
Fusion menu bar... nothing happened. Hmm. OK, let's do the restart and see what happens.
VM shuts down quickly enough (no having to wait for updates to finish, which was somewhat
annoying with Vista), and when I restart, it seems to restart quickly enough (again,
no obvious updates to be installed), so I get to a working desktop (640x480, how did
we &lt;em&gt;ever&lt;/em&gt; think this was reasonable?!?), and try the Install VMWare Tools option
from the Fusion menubar again. It thinks for a bit, and the cursor flashes to the
&amp;quot;pointer-with-CD&amp;quot; icon for a second before flashing back, but after a few
seconds, the &amp;quot;What do you want to do?&amp;quot; (Autoplay) menu pops up as if I'd
slipped the CD into the drive, so all looks good. Go through the UAC &amp;quot;Continue/Cancel&amp;quot;
dialog (see below), choose &amp;quot;Complete&amp;quot; for the VMWare Tools install options,
and let 'er rip. Disks spin, lights flicker, and a &amp;quot;VMWare Shared Tools&amp;quot;
network folder shows up on the Win7 desktop, indicating that it's suddenly discovered
the Shared Folder (to my MacOS user account) is there. But now we're back to the Windows-display-exercise
program, which leads me to believe that it's the VMWare driver that's doing the exercise,
not Windows itself. (VMWare? Anybody listening and care to comment?)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;And now I'm into Win7 desktop customization steps&lt;/strong&gt;, things like display
sizing and desktop icon selection, background image, and all that other jazz that
you probably don't care about. (If you do, then I'm a bit worried about you—be an
individual! Choose your own settings!) All in all, pretty flawless and smooth.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Thoughts on the process&lt;/strong&gt;:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
It feels like we're getting away from the &amp;quot;minimal install&amp;quot; process that
Vista tried to create. For a while, there was a meme that said that installing Windows
was too hard for the average person, and Microsoft promised to reduce the number of
steps it had to go through to install the OS. Take the date/time screen, for example:
it picked up the defaults from the underlying (virtual) hardware, why not just assume
those and skip that step? Users can always change it later.&lt;/li&gt;
&lt;li&gt;
I still have to set a Administrator password. I know that Microsoft is trying to find
that sweet-spot balance between &amp;quot;too secure&amp;quot; and &amp;quot;unsecure&amp;quot; for
desktop operating systems, but I have to hand it to the Ubuntu folks here—the &amp;quot;passwordless
root&amp;quot; idea that they use is pretty slick. MacOS uses it (for the most part) in
places, as well. I like the balance that approach achieves: it forces the user to
enter &amp;quot;superuser&amp;quot; mode to do something sensitive, but it isn't challenging
for a password (unless the superuser installs one) every time.&lt;/li&gt;
&lt;li&gt;
It's not going through display-screen calesthenics on each startup with this build.
My previous Win7 image, every time I restart the VM, goes through every possible video/monitor
size combination before settling in on the resolution I established in the last session.
That was a bit disconcerting, until I realized that it's Windows trying to get some
exercise in to be less overweight. *grin*&lt;/li&gt;
&lt;li&gt;
What, no PowerShell installed by default? Either it's not there, or it's buried pretty
deeply. Command Prompt (cmd.exe) is right where it's always been, under Accessories,
but no PowerShell.... Whoops, no, I take it back, it's in a &lt;em&gt;folder&lt;/em&gt; underneath
Accessories, forcing one more click to get to it. Hey Microsoft: do me a favor and
pin that guy to the Start Menu. Make it easy for me to use, if you really want me
to believe that this is supposed to replace Command Prompt someday.&lt;/li&gt;
&lt;li&gt;
On that note, though, the PowerShell &amp;quot;ISE&amp;quot; (Interactive Scripting Environment)
is an interesting and new toy to play with.&lt;/li&gt;
&lt;li&gt;
&amp;quot;Pin to Taskbar&amp;quot; is an interesting option that I'm going to have to play
around with. Not being a huge MacOS Dock fan (which is pretty clearly the inspiration
for the new Taskbar), I'm not sure how well I'll like the new &amp;quot;it's the QuickLaunch
and the Taskbar combined&amp;quot; idea.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Overall, I'm looking forward to putting a few things into this image (VS 2008, VS
2010, Office, and so on) and seeing how it reacts. As always, your mileage may vary,
no implied warranties with this blog post, blah blah blah, but if you do anything
with the Windows OS, you really should get hold of the RC (build 7100) and put it
into a Virtual PC, VMWare, VirtualBox, Xen or some other virtualized box to play with.
Like it or not, it's entirely reasonable to believe that Windows7 is going to win
a few folks back from the Vista &amp;quot;less-than-I-expected&amp;quot; crowd.
&lt;/p&gt;
&lt;p&gt;
As always, &lt;em&gt;caveat emptor&lt;/em&gt;, and feel free to comment....
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=d00e5d72-dc03-4261-a551-7fdd688bcbd6" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,d00e5d72-dc03-4261-a551-7fdd688bcbd6.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>F#</category>
      <category>Industry</category>
      <category>Review</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=47da0b51-66ea-4463-92f0-952db1813d62</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,47da0b51-66ea-4463-92f0-952db1813d62.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,47da0b51-66ea-4463-92f0-952db1813d62.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=47da0b51-66ea-4463-92f0-952db1813d62</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I'm getting *hammered* by the Google "Windows7 VMware" hits, which I can only assume
is from people looking for hints and advice on installing Windows7 into a VMWare image,
and I feel compelled to point out that there's already a pre-built VMWare VM available
from the "Virtual Appliance" pages at VMware.com; currently, it resides <a href="http://www.vmware.com/appliances/directory/63752">here</a>.
Note that you will need to BitTorrent it down, I haven't found a straight HTTP download
link from that (off-vmware.com) site.
</p>
        <p>
I wish I knew the full legalities of making said VM available; I only hope that the
guys who are doing it have checked, but if you're at all concerned about such things,
trust me, it's pretty painless to install Win7 into your own VM of your own making.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=47da0b51-66ea-4463-92f0-952db1813d62" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Windows7 VM, pre-built</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,47da0b51-66ea-4463-92f0-952db1813d62.aspx</guid>
      <link>http://blogs.tedneward.com/2009/01/13/Windows7+VM+Prebuilt.aspx</link>
      <pubDate>Tue, 13 Jan 2009 10:55:08 GMT</pubDate>
      <description>&lt;p&gt;
I'm getting *hammered* by the Google "Windows7 VMware" hits, which I can only assume
is from people looking for hints and advice on installing Windows7 into a VMWare image,
and I feel compelled to point out that there's already a pre-built VMWare VM available
from the "Virtual Appliance" pages at VMware.com; currently, it resides &lt;a href="http://www.vmware.com/appliances/directory/63752"&gt;here&lt;/a&gt;.
Note that you will need to BitTorrent it down, I haven't found a straight HTTP download
link from that (off-vmware.com) site.
&lt;/p&gt;
&lt;p&gt;
I wish I knew the full legalities of making said VM available; I only hope that the
guys who are doing it have checked, but if you're at all concerned about such things,
trust me, it's pretty painless to install Win7 into your own VM of your own making.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=47da0b51-66ea-4463-92f0-952db1813d62" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,47da0b51-66ea-4463-92f0-952db1813d62.aspx</comments>
      <category>Review</category>
      <category>VMWare</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=89bed821-27ee-4770-bb38-065b40cea3d7</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,89bed821-27ee-4770-bb38-065b40cea3d7.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,89bed821-27ee-4770-bb38-065b40cea3d7.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=89bed821-27ee-4770-bb38-065b40cea3d7</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
For a couple of years now, I've been going around the world and giving a talk entitled
"Pragmatic Architecture", talking both about what architecture is (and what architects
really do), and ending the talk with my own "catalog" of architectural elements and
ideas, in an attempt to take some of the mystery and "cloud" nature of architecture
out of the discussion. If you've read <em>Effective Enterprise Java</em>, then you've
read the first version of that discussion, where Pragmatic Architecture was a second-generation
thought process.
</p>
        <p>
Recently, the patterns &amp; practices group at Microsoft went back and refined their <a href="http://www.codeplex.com/AppArchGuide">Application
Architecture Guide</a>, and while there's a lot about it that I wish they'd done differently
(less of a Microsoft-centric focus, for one), I think it's a great book for Microsoft-centric
architects to pick up and have nearby. In a lot of ways, this is something similar
to what I had in mind when I thought about the architectural catalog, though I'll
admit that I'd prefer to go one level "deeper" and find more of the "atoms" that make
up an architecture.
</p>
        <p>
Nevertheless, I think this is a good PDF to pull down and put somewhere on your reference
list.
</p>
        <p>
Notes and caveats: Firstly, this is a book for solution architects; if you're the
VP or CTO, don't bother with it, just hand it to somebody further on down the food
chain. Secondly, if you're not an architect, this is <em>not</em> the book to pick
up to learn how to be one. It's more in the way of a reference guide for existing
architects. In fact, my vision is that an architect faced with a new project (that
is, a new architecture to create) will think about the problem, sketch out a rough
solution in his head, then look at the book to find both potential alternatives (to
see if they fit better or worse than the one s/he has in her/his head), and potential
consequences (to the one s/he has in her/his head). Thirdly, even if you're a Java
or Ruby architect, <em>most</em> of the book is pretty technology-neutral. Just take
a black Sharpie to the parts that have the Microsoft trademark around them, and you'll
find it a pretty decent reference, too. Fourthly, in the spirit of full disclosure,
the p&amp;p guys brought me in for a day of discussion on the Guide, so I can't say
that I'm completely unbiased, but I can honestly say that I didn't write any of it,
just offered critique (in case that matters to any potential readers).
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=89bed821-27ee-4770-bb38-065b40cea3d7" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>&amp;quot;Pragmatic Architecture&amp;quot;, in book form</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,89bed821-27ee-4770-bb38-065b40cea3d7.aspx</guid>
      <link>http://blogs.tedneward.com/2009/01/05/quotPragmatic+Architecturequot+In+Book+Form.aspx</link>
      <pubDate>Mon, 05 Jan 2009 02:30:53 GMT</pubDate>
      <description>&lt;p&gt;
For a couple of years now, I've been going around the world and giving a talk entitled
"Pragmatic Architecture", talking both about what architecture is (and what architects
really do), and ending the talk with my own "catalog" of architectural elements and
ideas, in an attempt to take some of the mystery and "cloud" nature of architecture
out of the discussion. If you've read &lt;em&gt;Effective Enterprise Java&lt;/em&gt;, then you've
read the first version of that discussion, where Pragmatic Architecture was a second-generation
thought process.
&lt;/p&gt;
&lt;p&gt;
Recently, the patterns &amp;amp; practices group at Microsoft went back and refined their &lt;a href="http://www.codeplex.com/AppArchGuide"&gt;Application
Architecture Guide&lt;/a&gt;, and while there's a lot about it that I wish they'd done differently
(less of a Microsoft-centric focus, for one), I think it's a great book for Microsoft-centric
architects to pick up and have nearby. In a lot of ways, this is something similar
to what I had in mind when I thought about the architectural catalog, though I'll
admit that I'd prefer to go one level "deeper" and find more of the "atoms" that make
up an architecture.
&lt;/p&gt;
&lt;p&gt;
Nevertheless, I think this is a good PDF to pull down and put somewhere on your reference
list.
&lt;/p&gt;
&lt;p&gt;
Notes and caveats: Firstly, this is a book for solution architects; if you're the
VP or CTO, don't bother with it, just hand it to somebody further on down the food
chain. Secondly, if you're not an architect, this is &lt;em&gt;not&lt;/em&gt; the book to pick
up to learn how to be one. It's more in the way of a reference guide for existing
architects. In fact, my vision is that an architect faced with a new project (that
is, a new architecture to create) will think about the problem, sketch out a rough
solution in his head, then look at the book to find both potential alternatives (to
see if they fit better or worse than the one s/he has in her/his head), and potential
consequences (to the one s/he has in her/his head). Thirdly, even if you're a Java
or Ruby architect, &lt;em&gt;most&lt;/em&gt; of the book is pretty technology-neutral. Just take
a black Sharpie to the parts that have the Microsoft trademark around them, and you'll
find it a pretty decent reference, too. Fourthly, in the spirit of full disclosure,
the p&amp;amp;p guys brought me in for a day of discussion on the Guide, so I can't say
that I'm completely unbiased, but I can honestly say that I didn't write any of it,
just offered critique (in case that matters to any potential readers).
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=89bed821-27ee-4770-bb38-065b40cea3d7" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,89bed821-27ee-4770-bb38-065b40cea3d7.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>C++</category>
      <category>F#</category>
      <category>Flash</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Reading</category>
      <category>Review</category>
      <category>Ruby</category>
      <category>Visual Basic</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=c8a8a63d-0898-4791-87ec-e65ddb1832c0</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,c8a8a63d-0898-4791-87ec-e65ddb1832c0.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,c8a8a63d-0898-4791-87ec-e65ddb1832c0.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c8a8a63d-0898-4791-87ec-e65ddb1832c0</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Dustin Campbell, a self-professed "IDE guy", is speaking at the .NET Developer's Association
of Redmond this evening, on the future of Visual Basic in Visual Studio 2010, and
I feel compelled, based on my earlier "dissing" of VB in my thoughts of PDC post,
to give VB a little love here.
</p>
        <p>
First of all, he notes publicly that the VB and C# teams have been brought together
under one roof, organizationally, so that the two languages can evolve in parallel
to one another. I have my concerns about this. Frankly, I think the Managed Languages
team at Microsoft is making a mistake by making these two languages mirror images
of one another, no matter what their customers are telling them; it's creating an
artificial competition between them, because if you can't differentiate between the
two on a technical level, then the only thing left to differentiate them on is an
aesthetic level (do you prefer curly braces and semicolons, or keywords?). Unfortunately,
the market has already done so, to the tune of "C# developers make more than VB developers
do (on average)", leaving little doubt in the minds of VB developers where they'd
rather be... and even less doubt in the minds of C# developers where they'd rather
the VB developers remain, lest the supply and demand curves shift and move the equilibrium
point of C# developer salaries further south.
</p>
        <p>
Besides, think about this for a moment: how much time and energy has Microsoft (and
other .NET authors) had to invest in making sure that every SDK and every article
ever written has <em>both</em> C# and VB sample code? All because Microsoft refuses
to simply draw a line in the sand and say, once and for all, "C# is the best statically-typed
object-oriented language for the CLR on the planet, and Visual Basic is the best dynamically-typed
object-oriented language for the CLR on the planet", and run with it. Then at least
there would be solid technical reasons for using one or the other, and at least we
could take this out of the realm of aesthetics.
</p>
        <p>
Or, contrarily, do the logical thing and create one language with two parsers, switching
between them based on the file extension. That <em>guarantees</em> that the two evolve
in parallel, and releases resources from the languages team to work on other things.
</p>
        <p>
Next, he shows some simple spin-off-a-thread code, with the Thread constructor taking
a parameter to a function name, traditional delegate kinds of stuff, then notes the
disjoint nature of referencing a method defined elsewhere in the class but only to
be used once. Yes, he's setting up for the punchline: VB gets anonymous methods, and
"VB's support for lambda (expressions) reaches parity with C#'s" in this next release.
I don't know if this was a feature that VB really needed to get, since I don't know
that the target audience for VB is really one that cares about such things (and, before
the VB community tries to lynch me, let me be honest and say that I'm not sure the
target audience for C# does, either), but at least it's nice that such a powerful
feature is now present in the VB language. Subject to the concerns of last paragraph,
of course.
</p>
        <p>
Look, at the end of the day, I want C# and VB to be full-featured languages each with
their own <em>raison d'etre</em>, as the French say, their own "reason to be". Having
these two "evolve in parallel" or "evolve in concert" with one another is only bound
to keep the C#-vs-VB language wars going for far too long.
</p>
        <p>
Along the way, he's showing off some IDE features, which presumably will be in place
for both C# and VB (since the teams are now unified under a single banner), what he's
calling "highlights": they'll do the moral equivalent of brace matching/highlighting,
for both method names (usage as well as declaration/definition) and blocks of code.
There's also "pretty listing", where the IDE will format code appropriately, particularly
for the anonymous methods syntax. Nice, but not something I'm personally going to
get incredibly excited about--to me, IDE features like this aren't as important as
language features, but I realize I'm in something of the minority there, and that's
OK. :-)
</p>
        <p>
He demonstrates VB calling PLINQ (Parallel LINQ), pointing out some of the inherent
benefits (and drawbacks) to parallelism. This isn't really a VB "feature" per se.
&lt;&lt;MORE&gt;&gt;
</p>
        <p>
Now he gets into some more interesting stuff: he begins by saying, "Now let's talk
about the Dynamic Language Runtime (DLR)." He shows some VB code hosting the IronPython
runtime, simple boilerplate to get the IronPython bits up and running inside this
CLR process. (See the DLR Hosting Spec for details, it's pretty straightforward stuff:
call IronPython.Hosting.Python.CreateRuntime, then call GetEngine("python") and SetSearchPaths()
to tell IPy where to find the Python libs and code.) Where he's going with this is
to demonstrate using VB's late-binding capabilities to get hold of a Python file ("random.py",
using the DLR UseFile() call), and he dynamically calls the "shuffle" function from
that Python file against the array of Ints he set up earlier.
</p>
        <p>
(We get into a discussion as to why the IDE can't give Intellisense on the methods
he's calling in the Python code. I won't go into the details, but essentially, no,
VS isn't going to be able to do that, at least not for this scenario, any time soon.
Maybe if the Python code was used directly from within VS, but not in this hosted
sense--that would be a bit much for the IDE to analyze and understand.)
</p>
        <p>
Next he points out some of the "ceremony" remaining in Visual Basic, essentially showing
how VB's type inferencing is getting better, such as with array literals, including
a background compilation warning where the VB compiler finds that it can't find a
common type in the array literal declaration and assumes it to be an array of Object
(which is a nice "catch" when the wrong type shows up in the array by accident or
typo). He shows off multidimensional array literal and jagged array literal syntax
(which requires the internal array literals in the jagged array to be wrapped up in
parentheses, a la "{({1,2,3}), ({1, 2, 3, 4, 5})}", which I find a touch awkward and
counterintuitive, quite frankly), while he's at it.
</p>
        <p>
(We get into a discussion of finer-granularity color syntax highlighting options,
such as colorizing different keywords differently, as well as colorizing different
identifiers based on their type. Now <em>that's</em> an interesting idea.)
</p>
        <p>
By the way, one thing that I've always found interesting about VB is its "With" keyword,
a la "New Student With {.Id=101, .Name="bart", .Score=53, .Gender="male"}".
</p>
        <p>
He then shows how VB 10 has auto-implemented properties: "Property Gender As String"
does exactly what .NET programmers have had to do by hand for so long: create a field,
generate simple Get and Set blocks and so on. Another nice feature of this: the autogenerated
properties can have defaults, as in, "Public Property Age As Integer = 1". That's
kinda nice, and something that VB should have had years ago. :-)
</p>
        <p>
And wahoo! THE UNDERSCORE IS (almost) HISTORY! "Implicit line completion" is a feature
of VB 10. This has <em>always</em> plagued me like... well... the plague... when writing
VB code. It's not gone completely, there's a few cases where ambiguity would reign
without it, but it appears to be gone for 95% of the cases. Because this is such a
radical change, they've even gone out and created a website to help the underscores
that no longer find themselves necessary: <a href="http://www.unemployedunderscores.com">www.unemployedunderscores.com</a> .
</p>
        <p>
He goes into a bit about co- and contravariance in generic types, which VB now supports
more readily. (His example is about trying to pass a List(Of Student) into a method
taking a List(Of Person), which neither he nor I can remember if it's co- or contra-.
Sorry.) The solution is to change the method to take an IEnumerable(Of Person), instead.
Not a great solution, but not a bad one, either.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c8a8a63d-0898-4791-87ec-e65ddb1832c0" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Dustin Campbell on the Future of VB in VS2010</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,c8a8a63d-0898-4791-87ec-e65ddb1832c0.aspx</guid>
      <link>http://blogs.tedneward.com/2008/11/25/Dustin+Campbell+On+The+Future+Of+VB+In+VS2010.aspx</link>
      <pubDate>Tue, 25 Nov 2008 08:23:48 GMT</pubDate>
      <description>&lt;p&gt;
Dustin Campbell, a self-professed "IDE guy", is speaking at the .NET Developer's Association
of Redmond this evening, on the future of Visual Basic in Visual Studio 2010, and
I feel compelled, based on my earlier "dissing" of VB in my thoughts of PDC post,
to give VB a little love here.
&lt;/p&gt;
&lt;p&gt;
First of all, he notes publicly that the VB and C# teams have been brought together
under one roof, organizationally, so that the two languages can evolve in parallel
to one another. I have my concerns about this. Frankly, I think the Managed Languages
team at Microsoft is making a mistake by making these two languages mirror images
of one another, no matter what their customers are telling them; it's creating an
artificial competition between them, because if you can't differentiate between the
two on a technical level, then the only thing left to differentiate them on is an
aesthetic level (do you prefer curly braces and semicolons, or keywords?). Unfortunately,
the market has already done so, to the tune of "C# developers make more than VB developers
do (on average)", leaving little doubt in the minds of VB developers where they'd
rather be... and even less doubt in the minds of C# developers where they'd rather
the VB developers remain, lest the supply and demand curves shift and move the equilibrium
point of C# developer salaries further south.
&lt;/p&gt;
&lt;p&gt;
Besides, think about this for a moment: how much time and energy has Microsoft (and
other .NET authors) had to invest in making sure that every SDK and every article
ever written has &lt;em&gt;both&lt;/em&gt; C# and VB sample code? All because Microsoft refuses
to simply draw a line in the sand and say, once and for all, "C# is the best statically-typed
object-oriented language for the CLR on the planet, and Visual Basic is the best dynamically-typed
object-oriented language for the CLR on the planet", and run with it. Then at least
there would be solid technical reasons for using one or the other, and at least we
could take this out of the realm of aesthetics.
&lt;/p&gt;
&lt;p&gt;
Or, contrarily, do the logical thing and create one language with two parsers, switching
between them based on the file extension. That &lt;em&gt;guarantees&lt;/em&gt; that the two evolve
in parallel, and releases resources from the languages team to work on other things.
&lt;/p&gt;
&lt;p&gt;
Next, he shows some simple spin-off-a-thread code, with the Thread constructor taking
a parameter to a function name, traditional delegate kinds of stuff, then notes the
disjoint nature of referencing a method defined elsewhere in the class but only to
be used once. Yes, he's setting up for the punchline: VB gets anonymous methods, and
"VB's support for lambda (expressions) reaches parity with C#'s" in this next release.
I don't know if this was a feature that VB really needed to get, since I don't know
that the target audience for VB is really one that cares about such things (and, before
the VB community tries to lynch me, let me be honest and say that I'm not sure the
target audience for C# does, either), but at least it's nice that such a powerful
feature is now present in the VB language. Subject to the concerns of last paragraph,
of course.
&lt;/p&gt;
&lt;p&gt;
Look, at the end of the day, I want C# and VB to be full-featured languages each with
their own &lt;em&gt;raison d'etre&lt;/em&gt;, as the French say, their own "reason to be". Having
these two "evolve in parallel" or "evolve in concert" with one another is only bound
to keep the C#-vs-VB language wars going for far too long.
&lt;/p&gt;
&lt;p&gt;
Along the way, he's showing off some IDE features, which presumably will be in place
for both C# and VB (since the teams are now unified under a single banner), what he's
calling "highlights": they'll do the moral equivalent of brace matching/highlighting,
for both method names (usage as well as declaration/definition) and blocks of code.
There's also "pretty listing", where the IDE will format code appropriately, particularly
for the anonymous methods syntax. Nice, but not something I'm personally going to
get incredibly excited about--to me, IDE features like this aren't as important as
language features, but I realize I'm in something of the minority there, and that's
OK. :-)
&lt;/p&gt;
&lt;p&gt;
He demonstrates VB calling PLINQ (Parallel LINQ), pointing out some of the inherent
benefits (and drawbacks) to parallelism. This isn't really a VB "feature" per se.
&amp;lt;&amp;lt;MORE&amp;gt;&amp;gt;
&lt;/p&gt;
&lt;p&gt;
Now he gets into some more interesting stuff: he begins by saying, "Now let's talk
about the Dynamic Language Runtime (DLR)." He shows some VB code hosting the IronPython
runtime, simple boilerplate to get the IronPython bits up and running inside this
CLR process. (See the DLR Hosting Spec for details, it's pretty straightforward stuff:
call IronPython.Hosting.Python.CreateRuntime, then call GetEngine("python") and SetSearchPaths()
to tell IPy where to find the Python libs and code.) Where he's going with this is
to demonstrate using VB's late-binding capabilities to get hold of a Python file ("random.py",
using the DLR UseFile() call), and he dynamically calls the "shuffle" function from
that Python file against the array of Ints he set up earlier.
&lt;/p&gt;
&lt;p&gt;
(We get into a discussion as to why the IDE can't give Intellisense on the methods
he's calling in the Python code. I won't go into the details, but essentially, no,
VS isn't going to be able to do that, at least not for this scenario, any time soon.
Maybe if the Python code was used directly from within VS, but not in this hosted
sense--that would be a bit much for the IDE to analyze and understand.)
&lt;/p&gt;
&lt;p&gt;
Next he points out some of the "ceremony" remaining in Visual Basic, essentially showing
how VB's type inferencing is getting better, such as with array literals, including
a background compilation warning where the VB compiler finds that it can't find a
common type in the array literal declaration and assumes it to be an array of Object
(which is a nice "catch" when the wrong type shows up in the array by accident or
typo). He shows off multidimensional array literal and jagged array literal syntax
(which requires the internal array literals in the jagged array to be wrapped up in
parentheses, a la "{({1,2,3}), ({1, 2, 3, 4, 5})}", which I find a touch awkward and
counterintuitive, quite frankly), while he's at it.
&lt;/p&gt;
&lt;p&gt;
(We get into a discussion of finer-granularity color syntax highlighting options,
such as colorizing different keywords differently, as well as colorizing different
identifiers based on their type. Now &lt;em&gt;that's&lt;/em&gt; an interesting idea.)
&lt;/p&gt;
&lt;p&gt;
By the way, one thing that I've always found interesting about VB is its "With" keyword,
a la "New Student With {.Id=101, .Name="bart", .Score=53, .Gender="male"}".
&lt;/p&gt;
&lt;p&gt;
He then shows how VB 10 has auto-implemented properties: "Property Gender As String"
does exactly what .NET programmers have had to do by hand for so long: create a field,
generate simple Get and Set blocks and so on. Another nice feature of this: the autogenerated
properties can have defaults, as in, "Public Property Age As Integer = 1". That's
kinda nice, and something that VB should have had years ago. :-)
&lt;/p&gt;
&lt;p&gt;
And wahoo! THE UNDERSCORE IS (almost) HISTORY! "Implicit line completion" is a feature
of VB 10. This has &lt;em&gt;always&lt;/em&gt; plagued me like... well... the plague... when writing
VB code. It's not gone completely, there's a few cases where ambiguity would reign
without it, but it appears to be gone for 95% of the cases. Because this is such a
radical change, they've even gone out and created a website to help the underscores
that no longer find themselves necessary: &lt;a href="http://www.unemployedunderscores.com"&gt;www.unemployedunderscores.com&lt;/a&gt; .
&lt;/p&gt;
&lt;p&gt;
He goes into a bit about co- and contravariance in generic types, which VB now supports
more readily. (His example is about trying to pass a List(Of Student) into a method
taking a List(Of Person), which neither he nor I can remember if it's co- or contra-.
Sorry.) The solution is to change the method to take an IEnumerable(Of Person), instead.
Not a great solution, but not a bad one, either.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c8a8a63d-0898-4791-87ec-e65ddb1832c0" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,c8a8a63d-0898-4791-87ec-e65ddb1832c0.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>Conferences</category>
      <category>Languages</category>
      <category>Review</category>
      <category>Visual Basic</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=5e183344-918d-4ea9-a6f7-019d6e5f675b</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,5e183344-918d-4ea9-a6f7-019d6e5f675b.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,5e183344-918d-4ea9-a6f7-019d6e5f675b.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5e183344-918d-4ea9-a6f7-019d6e5f675b</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Having created a Window7 VMWare image (which I then later cloned and installed the
Windows7 SDK into, successfully, wahoo!), I turned to the Visual Studio 2010 bits
they provided on the hard drive. Not surprisingly, though a bit frustratingly, they
didn't give us an install image that I could put into a VMWare image of my own creation,
but instead gave us a VPC with everything pre-installed in it.
</p>
        <blockquote>
          <p>
            <em>I know that Microsoft prefers to promote its own products, and that it's probably
a bit much to ask them to provide both a VMWare image and a VirtualPC image for these
kind of pre-alpha things, but it's a bit of a pain considering that Virtual PC doesn't
run anymore on the Mac, that I'm aware of. Please, Microsoft, a </em>lot<em> of .NET
devs are carrying around MacBookPro machines these days, and if you're really focused
on trying to get bits in the hands of developers, it would be quite the bold move
to provide a VMWare image right next to the VPC image. Particularly since over half
the drive was unused.</em></p>
        </blockquote>
        <p>
So... I don't want to have to carry around a PC (though I do at the moment) just to
run VirtualPC just to be able to explore VS 2010, but fortunately VMWare provides
a Converter application that can take a VPC image and flip it over to a VMWare image.
Sounds like a plan. I fire up the Converter, point it at the VPC, and after the world's...
slowest... wizard... takes... my... settings... and... begins... I discover that it
will take upwards of <em>3 hours</em> to convert. Dear God.
</p>
        <p>
I decided to go to bed at that point. :-)
</p>
        <p>
When I woke up, the image had been converted successfully, but I wasn't quite finished
yet. First of all, fire it up to make sure it runs, which it does without a problem,
but at 640x480 in black-and-white mode (no, seriously, it's not much more than that).
Install the VMWare Tools, reboot, and...
</p>
        <p>
... the mouse cursor disappears. WTF?!?
</p>
        <p>
Turns out this has been a nagging problem with several versions of VMWare over the
years, and I vaguely remember running into the problem the last time I tried to create
a Windows Server 2003/2008 image, too. Ugh. Hunting around the Web doesn't reveal
an easy solution, but a couple of things do show up a few times: disconnect the CD-ROM,
change the mouse pointer acceleration, delete the VMWare Mouse driver and let Windows
rediscover the standard PS/2 mouse driver, or change the display hardware acceleration.
</p>
        <p>
Not being really interested in debugging the problem (I know, my chance at making
everybody's life better is now forever lost), I decided to take a bit of a shotgun
approach to the problem. I explicitly deleted the VMWare Mouse driver, fiddled with
the display settings (including resizing it to a more respectable 1400x1050), turned
display hardware acceleration down, couldn't find mouse hardware acceleration settings,
allowed it to reboot, and...
</p>
        <p>
... yay. I have a mouse pointer again.
</p>
        <p>
Now I have a VS2010 image on my Drive-o'-Virtual-Machines, and with it I plan on exploring
the VS2010/C# 4.0/C++ 10/VB 10 bits some more. I fire up Visual Studio 2010, intending
to poke around C# 4.0's new "dynamic" keyword and see if and how it builds on top
of the DLR (as a few people have suggested in comments in prior posts). VS comes up
pretty quickly (not bad for a pre-alpha), the new interface seems snappy, and I create
the ubiquitous "ConsoleApplicationX" C# app.
</p>
        <p>
Wait a minute...
</p>
        <p>
Something niggled at the back of my head, and I went back to File | New Project, and
... something's missing.
</p>
        <p>
There's no "Visual F#" tab. There's an item in the "Project types:" box on the left
for Visual Basic, Visual C#, Visual C++, WiX, Modeling Projects, Database Projects,
Other Project Types, and Test Projects, but no Visual F#. (And no, it doesn't show
up under "Other Project Types" either, I checked.) Considering that my understanding
was that F# was going to ship with VS 2010, I'm a little puzzled as to its absence.
Hopefully this is just a temporary oversight.
</p>
        <p>
In the meantime, I'm off to play with "dynamic" a bit more and see what comes out
of it. But guys, please, let's see some F# love out of the box? Surely, if you can
ship WiX with it, shipping F# can't be hard?
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=5e183344-918d-4ea9-a6f7-019d6e5f675b" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>More PDC 2008 bits exploration: VisualStudio_2010</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,5e183344-918d-4ea9-a6f7-019d6e5f675b.aspx</guid>
      <link>http://blogs.tedneward.com/2008/11/04/More+PDC+2008+Bits+Exploration+VisualStudio2010.aspx</link>
      <pubDate>Tue, 04 Nov 2008 01:19:06 GMT</pubDate>
      <description>&lt;p&gt;
Having created a Window7 VMWare image (which I then later cloned and installed the
Windows7 SDK into, successfully, wahoo!), I turned to the Visual Studio 2010 bits
they provided on the hard drive. Not surprisingly, though a bit frustratingly, they
didn't give us an install image that I could put into a VMWare image of my own creation,
but instead gave us a VPC with everything pre-installed in it.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;I know that Microsoft prefers to promote its own products, and that it's probably
a bit much to ask them to provide both a VMWare image and a VirtualPC image for these
kind of pre-alpha things, but it's a bit of a pain considering that Virtual PC doesn't
run anymore on the Mac, that I'm aware of. Please, Microsoft, a &lt;/em&gt;lot&lt;em&gt; of .NET
devs are carrying around MacBookPro machines these days, and if you're really focused
on trying to get bits in the hands of developers, it would be quite the bold move
to provide a VMWare image right next to the VPC image. Particularly since over half
the drive was unused.&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
So... I don't want to have to carry around a PC (though I do at the moment) just to
run VirtualPC just to be able to explore VS 2010, but fortunately VMWare provides
a Converter application that can take a VPC image and flip it over to a VMWare image.
Sounds like a plan. I fire up the Converter, point it at the VPC, and after the world's...
slowest... wizard... takes... my... settings... and... begins... I discover that it
will take upwards of &lt;em&gt;3 hours&lt;/em&gt; to convert. Dear God.
&lt;/p&gt;
&lt;p&gt;
I decided to go to bed at that point. :-)
&lt;/p&gt;
&lt;p&gt;
When I woke up, the image had been converted successfully, but I wasn't quite finished
yet. First of all, fire it up to make sure it runs, which it does without a problem,
but at 640x480 in black-and-white mode (no, seriously, it's not much more than that).
Install the VMWare Tools, reboot, and...
&lt;/p&gt;
&lt;p&gt;
... the mouse cursor disappears. WTF?!?
&lt;/p&gt;
&lt;p&gt;
Turns out this has been a nagging problem with several versions of VMWare over the
years, and I vaguely remember running into the problem the last time I tried to create
a Windows Server 2003/2008 image, too. Ugh. Hunting around the Web doesn't reveal
an easy solution, but a couple of things do show up a few times: disconnect the CD-ROM,
change the mouse pointer acceleration, delete the VMWare Mouse driver and let Windows
rediscover the standard PS/2 mouse driver, or change the display hardware acceleration.
&lt;/p&gt;
&lt;p&gt;
Not being really interested in debugging the problem (I know, my chance at making
everybody's life better is now forever lost), I decided to take a bit of a shotgun
approach to the problem. I explicitly deleted the VMWare Mouse driver, fiddled with
the display settings (including resizing it to a more respectable 1400x1050), turned
display hardware acceleration down, couldn't find mouse hardware acceleration settings,
allowed it to reboot, and...
&lt;/p&gt;
&lt;p&gt;
... yay. I have a mouse pointer again.
&lt;/p&gt;
&lt;p&gt;
Now I have a VS2010 image on my Drive-o'-Virtual-Machines, and with it I plan on exploring
the VS2010/C# 4.0/C++ 10/VB 10 bits some more. I fire up Visual Studio 2010, intending
to poke around C# 4.0's new "dynamic" keyword and see if and how it builds on top
of the DLR (as a few people have suggested in comments in prior posts). VS comes up
pretty quickly (not bad for a pre-alpha), the new interface seems snappy, and I create
the ubiquitous "ConsoleApplicationX" C# app.
&lt;/p&gt;
&lt;p&gt;
Wait a minute...
&lt;/p&gt;
&lt;p&gt;
Something niggled at the back of my head, and I went back to File | New Project, and
... something's missing.
&lt;/p&gt;
&lt;p&gt;
There's no "Visual F#" tab. There's an item in the "Project types:" box on the left
for Visual Basic, Visual C#, Visual C++, WiX, Modeling Projects, Database Projects,
Other Project Types, and Test Projects, but no Visual F#. (And no, it doesn't show
up under "Other Project Types" either, I checked.) Considering that my understanding
was that F# was going to ship with VS 2010, I'm a little puzzled as to its absence.
Hopefully this is just a temporary oversight.
&lt;/p&gt;
&lt;p&gt;
In the meantime, I'm off to play with "dynamic" a bit more and see what comes out
of it. But guys, please, let's see some F# love out of the box? Surely, if you can
ship WiX with it, shipping F# can't be hard?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=5e183344-918d-4ea9-a6f7-019d6e5f675b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,5e183344-918d-4ea9-a6f7-019d6e5f675b.aspx</comments>
      <category>.NET</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Languages</category>
      <category>Review</category>
      <category>Visual Basic</category>
      <category>VMWare</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=28837016-fb67-46ba-80d4-c92223df670f</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,28837016-fb67-46ba-80d4-c92223df670f.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,28837016-fb67-46ba-80d4-c92223df670f.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=28837016-fb67-46ba-80d4-c92223df670f</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So the first thing I do when I get back from PDC? After taking my youngest trick-or-treating
at the Redmond Town Center, and settling down into the weekend, I pull out the PDC
hard drive and have a look around.
</p>
        <p>
Obviously, I'm going to eventually spend a lot of time in the "Developer" subdirectory--lots
of yummy PDC goodness in there, like the "Oslo_Dublin_WF_WCF_4" subdirectory in which
we'll find a Virtual PC image of the latest CSD bits pre-installed, or the Visual_Studio_2010
subdirectory (another VirtualPC image), but before I start trying to covert those
over to VMWare images (so I can run them on my Mac), I figured I'd take a wild shot
at playing with Windows 7.
</p>
        <p>
That, of course, means installing it into a VMWare image. So here goes.
</p>
        <p>
First step, create the VMWare virtual machine. Because this is clearly not going to
be a stock install, I choose the custom option, and set the operating system to be
"Windows Server 2008 (experimental)". Not because I think there's anything really
different about that option (except the default options that follow), but because
it feels like the right homage to the pre-alpha nature of Windows 7. I set RAM to
512MB, chose to give it a 24GB IDE disk (<em>not</em> SCSI, as the default suggested--Windows
sometimes has a tentative relationship with SCSI drives, and this way it's just one
less thing to worry about), chose a single network adapter set to NAT, pointed the
CD to the smaller of the two ISO images on the drive (which I believe to be the non-checked
build version), and fired 'er up, not expecting much.
</p>
        <p>
Kudos to the Windows 7 team.
</p>
        <p>
The CD ISO boots, and I get the install screen, and bloody damn fast, at that. I choose
the usual options, choose to do a Custom install (since I'm not really doing an Upgrade),
and off it starts to churn. As I write this, it's 74% through the "Expanding files"
step of the install, but for the record, Vista never got this far installing into
VMWare with its first build. As a matter of fact, if I remember correctly, Vista (then
Longhorn) didn't even boot to the first installation screen, and then when it finally
did it took about a half-hour or so.
</p>
        <p>
I'll post this now, and update it as I find more information as I go, but if you were
curious about installing Windows 7 into VMWare, so far the prognosis looks good. Assuming
this all goes well, the next step will be to install the Windows 7 SDK and see what
I can build with it. After that, probably either VS 2008 or VS 2010, depending on
what ISOs they've given me. (I think VS 2010 is just a VHD, so it'll probably have
to be 2008.) But before I do any of that, I'll make a backup, just so that I can avoid
having to start over from scratch in the event that there's some kind dependency between
the two that I haven't discovered so far.
</p>
        <p>
          <strong>Update:</strong> Well, it got through "Expanding files", and going into "Starting
Windows...", and now "Setup is starting services".... So far this <em>really</em> looks
good.
</p>
        <p>
          <strong>Update:</strong> Uh, oh, possible snag: "Setup is checking video performance"....
Nope! Apparently it's OK with whatever crappy video perf numbers VMWare is going to
put up. (No, I didn't enable the experimental DirectX support for VMWare--I've had
zero luck with that so far, in any VMWare image.)
</p>
        <p>
          <strong>Update:</strong> Woo-hoo! I'm sitting at the "Windows 7 Ultimate" screen,
choosing a username and computername for the VM. This was so frickin flawless, I'm
waiting for the shoe to drop. Choosing password, time zone, networking setting (Public),
and now we're at the final lap....
</p>
        <p>
          <strong>Update:</strong> Un-FRICKIN-believable. Flawless. Absolutely flawless. I'm
in the "System and Security" Control Panel applet, and of course the first thing I
select is "User Account Control settings", because I want to see what they did here,
and it's brilliant--they set up a 4-point slider to control how much you want UAC
to bug you when you or another program changes Windows settings. I select the level
that says, "Only notify me when programs try to make changes to my computer", which
has as a note to it, "Don't notify me when I make changes to Windows settings. Note:
You will still be notified if a program tries to make changes to your computer, including
Windows settings", which seems like the right level to work from.
</p>
        <p>
But that's beyond the point right now--the point is, folks, Windows 7 installs into
a VMWare image <em>flawlessly</em>, which means it's <em>trivial</em> to start playing
with this now. Granted, it still kinda looks like Vista at the moment, which may turn
some folks off who didn't like its look and feel, but remember that Longhorn went
through a few iterations at the UI level before it shipped as Vista, too, and that
this is a pre-alpha release of Win7, so....
</p>
        <p>
I tip my hat to the Windows 7 team, at least so far. This is a great start.
</p>
        <p>
          <strong>Update:</strong> Even <em>better</em>--VMWare Tools (the additions to the
guest OS that enable better video, sound, etc) installs and works flawlessly, too.
I am impressed. Really, really impressed.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=28837016-fb67-46ba-80d4-c92223df670f" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Windows 7 + VMWare 6/VMWare Fusion 2</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,28837016-fb67-46ba-80d4-c92223df670f.aspx</guid>
      <link>http://blogs.tedneward.com/2008/11/02/Windows+7+VMWare+6VMWare+Fusion+2.aspx</link>
      <pubDate>Sun, 02 Nov 2008 02:09:48 GMT</pubDate>
      <description>&lt;p&gt;
So the first thing I do when I get back from PDC? After taking my youngest trick-or-treating
at the Redmond Town Center, and settling down into the weekend, I pull out the PDC
hard drive and have a look around.
&lt;/p&gt;
&lt;p&gt;
Obviously, I'm going to eventually spend a lot of time in the "Developer" subdirectory--lots
of yummy PDC goodness in there, like the "Oslo_Dublin_WF_WCF_4" subdirectory in which
we'll find a Virtual PC image of the latest CSD bits pre-installed, or the Visual_Studio_2010
subdirectory (another VirtualPC image), but before I start trying to covert those
over to VMWare images (so I can run them on my Mac), I figured I'd take a wild shot
at playing with Windows 7.
&lt;/p&gt;
&lt;p&gt;
That, of course, means installing it into a VMWare image. So here goes.
&lt;/p&gt;
&lt;p&gt;
First step, create the VMWare virtual machine. Because this is clearly not going to
be a stock install, I choose the custom option, and set the operating system to be
"Windows Server 2008 (experimental)". Not because I think there's anything really
different about that option (except the default options that follow), but because
it feels like the right homage to the pre-alpha nature of Windows 7. I set RAM to
512MB, chose to give it a 24GB IDE disk (&lt;em&gt;not&lt;/em&gt; SCSI, as the default suggested--Windows
sometimes has a tentative relationship with SCSI drives, and this way it's just one
less thing to worry about), chose a single network adapter set to NAT, pointed the
CD to the smaller of the two ISO images on the drive (which I believe to be the non-checked
build version), and fired 'er up, not expecting much.
&lt;/p&gt;
&lt;p&gt;
Kudos to the Windows 7 team.
&lt;/p&gt;
&lt;p&gt;
The CD ISO boots, and I get the install screen, and bloody damn fast, at that. I choose
the usual options, choose to do a Custom install (since I'm not really doing an Upgrade),
and off it starts to churn. As I write this, it's 74% through the "Expanding files"
step of the install, but for the record, Vista never got this far installing into
VMWare with its first build. As a matter of fact, if I remember correctly, Vista (then
Longhorn) didn't even boot to the first installation screen, and then when it finally
did it took about a half-hour or so.
&lt;/p&gt;
&lt;p&gt;
I'll post this now, and update it as I find more information as I go, but if you were
curious about installing Windows 7 into VMWare, so far the prognosis looks good. Assuming
this all goes well, the next step will be to install the Windows 7 SDK and see what
I can build with it. After that, probably either VS 2008 or VS 2010, depending on
what ISOs they've given me. (I think VS 2010 is just a VHD, so it'll probably have
to be 2008.) But before I do any of that, I'll make a backup, just so that I can avoid
having to start over from scratch in the event that there's some kind dependency between
the two that I haven't discovered so far.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; Well, it got through "Expanding files", and going into "Starting
Windows...", and now "Setup is starting services".... So far this &lt;em&gt;really&lt;/em&gt; looks
good.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; Uh, oh, possible snag: "Setup is checking video performance"....
Nope! Apparently it's OK with whatever crappy video perf numbers VMWare is going to
put up. (No, I didn't enable the experimental DirectX support for VMWare--I've had
zero luck with that so far, in any VMWare image.)
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; Woo-hoo! I'm sitting at the "Windows 7 Ultimate" screen,
choosing a username and computername for the VM. This was so frickin flawless, I'm
waiting for the shoe to drop. Choosing password, time zone, networking setting (Public),
and now we're at the final lap....
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; Un-FRICKIN-believable. Flawless. Absolutely flawless. I'm
in the "System and Security" Control Panel applet, and of course the first thing I
select is "User Account Control settings", because I want to see what they did here,
and it's brilliant--they set up a 4-point slider to control how much you want UAC
to bug you when you or another program changes Windows settings. I select the level
that says, "Only notify me when programs try to make changes to my computer", which
has as a note to it, "Don't notify me when I make changes to Windows settings. Note:
You will still be notified if a program tries to make changes to your computer, including
Windows settings", which seems like the right level to work from.
&lt;/p&gt;
&lt;p&gt;
But that's beyond the point right now--the point is, folks, Windows 7 installs into
a VMWare image &lt;em&gt;flawlessly&lt;/em&gt;, which means it's &lt;em&gt;trivial&lt;/em&gt; to start playing
with this now. Granted, it still kinda looks like Vista at the moment, which may turn
some folks off who didn't like its look and feel, but remember that Longhorn went
through a few iterations at the UI level before it shipped as Vista, too, and that
this is a pre-alpha release of Win7, so....
&lt;/p&gt;
&lt;p&gt;
I tip my hat to the Windows 7 team, at least so far. This is a great start.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; Even &lt;em&gt;better&lt;/em&gt;--VMWare Tools (the additions to the
guest OS that enable better video, sound, etc) installs and works flawlessly, too.
I am impressed. Really, really impressed.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=28837016-fb67-46ba-80d4-c92223df670f" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,28837016-fb67-46ba-80d4-c92223df670f.aspx</comments>
      <category>.NET</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Java/J2EE</category>
      <category>Review</category>
      <category>Visual Basic</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=277a29cb-c011-45a3-82f9-6e702d5ad5df</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,277a29cb-c011-45a3-82f9-6e702d5ad5df.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,277a29cb-c011-45a3-82f9-6e702d5ad5df.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=277a29cb-c011-45a3-82f9-6e702d5ad5df</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The full list is <a href="http://www.noop.nl/2008/09/top-100-blogs-for-development-managers-q3-2008.html">here</a>.
It's a pretty prestigious group--and I'm totally floored that I'm there next to some
pretty big names.
</p>
        <p>
In homage to Ms. Sally Fields, of so many years ago... "You like me, you really like
me". Having somebody come up to me at a conference and tell me how much they like
my blog is second on my list of "fun things to happen to me at a conference", right
behind having somebody come up to me at a conference and tell me how much they like
my blog, except for that one entry, where I said something <em>totally</em> ridiculous
(and here's why) ....
</p>
        <p>
What I find most fascinating about the list was the means by which it was constructed--the
various calculations behind page rank, technorati rating, and so on. Very cool stuff.
</p>
        <p>
Perhaps it's trite to say it, but it's still true: readers are what make writing blogs
worthwhile. Thanks to all of you.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=277a29cb-c011-45a3-82f9-6e702d5ad5df" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Apparently I'm #25 on the Top 100 Blogs for Development Managers</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,277a29cb-c011-45a3-82f9-6e702d5ad5df.aspx</guid>
      <link>http://blogs.tedneward.com/2008/09/15/Apparently+Im+25+On+The+Top+100+Blogs+For+Development+Managers.aspx</link>
      <pubDate>Mon, 15 Sep 2008 11:29:19 GMT</pubDate>
      <description>&lt;p&gt;
The full list is &lt;a href="http://www.noop.nl/2008/09/top-100-blogs-for-development-managers-q3-2008.html"&gt;here&lt;/a&gt;.
It's a pretty prestigious group--and I'm totally floored that I'm there next to some
pretty big names.
&lt;/p&gt;
&lt;p&gt;
In homage to Ms. Sally Fields, of so many years ago... "You like me, you really like
me". Having somebody come up to me at a conference and tell me how much they like
my blog is second on my list of "fun things to happen to me at a conference", right
behind having somebody come up to me at a conference and tell me how much they like
my blog, except for that one entry, where I said something &lt;em&gt;totally&lt;/em&gt; ridiculous
(and here's why) ....
&lt;/p&gt;
&lt;p&gt;
What I find most fascinating about the list was the means by which it was constructed--the
various calculations behind page rank, technorati rating, and so on. Very cool stuff.
&lt;/p&gt;
&lt;p&gt;
Perhaps it's trite to say it, but it's still true: readers are what make writing blogs
worthwhile. Thanks to all of you.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=277a29cb-c011-45a3-82f9-6e702d5ad5df" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,277a29cb-c011-45a3-82f9-6e702d5ad5df.aspx</comments>
      <category>.NET</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>Development Processes</category>
      <category>F#</category>
      <category>Flash</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>LLVM</category>
      <category>Mac OS</category>
      <category>Parrot</category>
      <category>Reading</category>
      <category>Review</category>
      <category>Ruby</category>
      <category>Security</category>
      <category>Solaris</category>
      <category>Visual Basic</category>
      <category>VMWare</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=4797eb04-09d0-48c1-8888-64f061555908</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,4797eb04-09d0-48c1-8888-64f061555908.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,4797eb04-09d0-48c1-8888-64f061555908.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4797eb04-09d0-48c1-8888-64f061555908</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This crossed my Inbox, and I have to say, I'm stunned at this incredible display of
teamwork. Frankly... well, <a href="http://tv.devexpress.com/DevExpressEarthquake.movie">see
for yourself</a>.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=4797eb04-09d0-48c1-8888-64f061555908" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>From the &amp;quot;Team-Building Exercise&amp;quot; Department</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,4797eb04-09d0-48c1-8888-64f061555908.aspx</guid>
      <link>http://blogs.tedneward.com/2008/08/01/From+The+QuotTeamBuilding+Exercisequot+Department.aspx</link>
      <pubDate>Fri, 01 Aug 2008 07:23:11 GMT</pubDate>
      <description>&lt;p&gt;
This crossed my Inbox, and I have to say, I'm stunned at this incredible display of
teamwork. Frankly... well, &lt;a href="http://tv.devexpress.com/DevExpressEarthquake.movie"&gt;see
for yourself&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=4797eb04-09d0-48c1-8888-64f061555908" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,4797eb04-09d0-48c1-8888-64f061555908.aspx</comments>
      <category>.NET</category>
      <category>Development Processes</category>
      <category>Review</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=c917a24e-d656-4d7f-be58-1eb2ae816f82</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,c917a24e-d656-4d7f-be58-1eb2ae816f82.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,c917a24e-d656-4d7f-be58-1eb2ae816f82.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c917a24e-d656-4d7f-be58-1eb2ae816f82</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I've been asked to put together a list of the "best" Java resources that every up-and-coming
Java developer should have, and I'd like this list to be as comprehensive as possible
and, more importantly, reflect more than just my own opinion. So, either through comments
or <a href="mailto:tedATtednewardDOTcom">through email</a>, let me know what you think
the best Java resources are in the following categories:
</p>
        <ul>
          <li>
Websites and developer Web portals</li>
          <li>
Weblogs/RSS feeds. (Not all have to be hand-authored blogs--if you find an RSS feed
for news on java.net projects, for example, that would count as well.)</li>
          <li>
Java packages and/or libaries. (Either those within Java Standard Edition--a la Reflection
or the Scripting API--or from Enterprise Edition--a la JMS--or even third-party packages,
a la Spring.)</li>
          <li>
Conferences, even including those that I don't speak at. ;-)</li>
          <li>
Books.</li>
          <li>
Tools. (IDEs, build tools, static analysis tools, either commercial or open source.)</li>
          <li>
Future trends you think bear watching.</li>
        </ul>
        <p>
There is, of course, no prize to be won here, and I'd please ask the vendors (commercial
or open source) who watch my blog to avoid outright advertisements in comments (though
you are free to rattle off the various advantages of your product in an email to me),
in order to avoid turning this weblog into a gigantic row of billboards along the
freeway. I <em>am</em> interested in peoples' opinions, however, and more importantly,
why you think X should be on that list, or even why Y shouldn't. Keep it civil, though,
please--I'll delete any comments that get too vindictive or offensive. (That doesn't
mean that you have to agree with me--just avoid calling anybody names. Basic 'Netiquette.)
</p>
        <p>
Oh, and if you want to be mentioned in the article (which will be published on an
international developer site), please indicate how you'd like to be accredited. Or
not. Whatever you prefer.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c917a24e-d656-4d7f-be58-1eb2ae816f82" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Best Java Resources: A Call</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,c917a24e-d656-4d7f-be58-1eb2ae816f82.aspx</guid>
      <link>http://blogs.tedneward.com/2008/06/02/Best+Java+Resources+A+Call.aspx</link>
      <pubDate>Mon, 02 Jun 2008 04:18:03 GMT</pubDate>
      <description>&lt;p&gt;
I've been asked to put together a list of the "best" Java resources that every up-and-coming
Java developer should have, and I'd like this list to be as comprehensive as possible
and, more importantly, reflect more than just my own opinion. So, either through comments
or &lt;a href="mailto:tedATtednewardDOTcom"&gt;through email&lt;/a&gt;, let me know what you think
the best Java resources are in the following categories:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Websites and developer Web portals&lt;/li&gt;
&lt;li&gt;
Weblogs/RSS feeds. (Not all have to be hand-authored blogs--if you find an RSS feed
for news on java.net projects, for example, that would count as well.)&lt;/li&gt;
&lt;li&gt;
Java packages and/or libaries. (Either those within Java Standard Edition--a la Reflection
or the Scripting API--or from Enterprise Edition--a la JMS--or even third-party packages,
a la Spring.)&lt;/li&gt;
&lt;li&gt;
Conferences, even including those that I don't speak at. ;-)&lt;/li&gt;
&lt;li&gt;
Books.&lt;/li&gt;
&lt;li&gt;
Tools. (IDEs, build tools, static analysis tools, either commercial or open source.)&lt;/li&gt;
&lt;li&gt;
Future trends you think bear watching.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
There is, of course, no prize to be won here, and I'd please ask the vendors (commercial
or open source) who watch my blog to avoid outright advertisements in comments (though
you are free to rattle off the various advantages of your product in an email to me),
in order to avoid turning this weblog into a gigantic row of billboards along the
freeway. I &lt;em&gt;am&lt;/em&gt; interested in peoples' opinions, however, and more importantly,
why you think X should be on that list, or even why Y shouldn't. Keep it civil, though,
please--I'll delete any comments that get too vindictive or offensive. (That doesn't
mean that you have to agree with me--just avoid calling anybody names. Basic 'Netiquette.)
&lt;/p&gt;
&lt;p&gt;
Oh, and if you want to be mentioned in the article (which will be published on an
international developer site), please indicate how you'd like to be accredited. Or
not. Whatever you prefer.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c917a24e-d656-4d7f-be58-1eb2ae816f82" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,c917a24e-d656-4d7f-be58-1eb2ae816f82.aspx</comments>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Mac OS</category>
      <category>Reading</category>
      <category>Review</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=94fda66c-4dda-438c-af27-a53a8e0692c8</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,94fda66c-4dda-438c-af27-a53a8e0692c8.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,94fda66c-4dda-438c-af27-a53a8e0692c8.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=94fda66c-4dda-438c-af27-a53a8e0692c8</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recently, a former student asked me,
</p>
        <blockquote>
          <p>
I was in a .NET web services training class that you gave probably 4 or so years ago
on-site at a <em>[company name]</em> office in <em>[city]</em>, north of Atlanta. 
At that time I asked you for a list of the technical blogs that you read, and I am
curious which blogs you are reading now.  I am now with a small company where
I have to be a jack of all trades, in the last year I have worked in C++ and Perl
backend type projects and web frontend projects with Java, C#, and RoR, so I find
your perspective interesting since you also work with various technologies and aren't
a zealot for a specific one.
</p>
          <p>
Any way, please either respond by email or in your blog, because I think that others
may be interested in the list also.
</p>
        </blockquote>
        <p>
As one might expect, my blog list is a bit eclectic, but I suppose that's part of
the charm of somebody looking to study Java, .NET, C++, Smalltalk, Ruby, Parrot, LLVM,
and other languages and environments. So, without further ado, I've pasted in the
contents of my OPML file for cut&amp;paste and easy import.
</p>
        <p>
Having said that, though, I would strongly suggest <em>not</em> just blindly importing
the whole set of feeds into your nearest RSS reader, but take a moment and go visit
each one before you add it. It takes longer, granted, but the time spent is a worthy
investment--you don't want to have to declare "blog bankruptcy".
</p>
        <blockquote>
          <p>
            <em>Editor's note: We pause here as readers look at each other and go... "WTF?!?"</em>
          </p>
        </blockquote>
        <p>
"Blog bankruptcy" is a condition similar to "email bankruptcy", when otherwise perfectly
high-functioning people give up on trying to catch up to the flood of messages in
their email client's Inbox and delete the whole mess (usually with some kind of public
apology explaining why and asking those who've emailed them in the past to resend
something if it was really important), effectively trying to "start over" with their
email in much the same way that Chapter Seven or Chapter Eleven allows companies to
"start over" with their creditors, or declaring bankruptcy allows private citizens
to do the same with theirs. "Blog bankruptcy" is a similar kind of condition: your
RSS reader becomes so full of stuff that you can't keep up, and you can't even remember
which blogs were the interesting ones, so you nuke the whole thing and get away from
the blog-reading thing for a while.
</p>
        <p>
This happened to me, in fact: a few years ago, when I became the editor-in-chief of
TheServerSide.NET, I asked a few folks for their OPML lists, so that I could quickly
and easily build a list of blogs that would "tune me in" to the software industry
around me, and many of them quite agreeably complied. I took my RSS reader (Newsgator,
at the time) and dutifully imported all of them, and ended up with a collection of
blogs that was easily into the hundreds of feeds long. And, over time, I found myself
reading fewer and fewer blogs, mostly because the whole set was so... <em>intimidating</em>.
I mean, I would pick at the list of blogs and their entries in the same way that I
picked at vegetables on my plate as a child--half-heartedly, with no real enthusiasm,
as if this was something my parents were forcing me to do. That just ruined the experience
of blog-reading for me, and eventually (after I left TSS.NET for other pastures),
I nuked the whole thing--even going so far as to uninstall my copy of Newsgator--and
gave up.
</p>
        <p>
Naturally, I missed it, and slowly over time began to rebuild the list, this time,
taking each feed one at a time, carefully weighing what value the feed was to me and
selecting only those that I thought had a high signal-to-noise ratio. (This is partly
why I don't include much "personal" info in this blog--I found myself routinely stripping
away those blogs that had more personal content and less technical content, and I
figured if I didn't want to read it, others probably felt the same way.) Over the
last year or two, I've rebuilt the list to the point where I probably need to prune
a bit and close a few of them back down, but for now, I'm happy with the list I've
got.
</p>
        <p>
And speaking of which....
</p>
        <div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: 'Courier New', courier, monospace; background-color: #f4f4f4">
          <div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum1" style="color: #606060"> 1:</span>
              <span style="color: #0000ff">&lt;?</span>
              <span style="color: #800000">xml</span>
              <span style="color: #ff0000">version</span>
              <span style="color: #0000ff">="1.0"</span>?<span style="color: #0000ff">&gt;</span></pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum2" style="color: #606060"> 2:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">opml</span>
              <span style="color: #ff0000">version</span>
              <span style="color: #0000ff">="1.0"</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum3" style="color: #606060"> 3:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">head</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum4" style="color: #606060"> 4:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">title</span>
              <span style="color: #0000ff">&gt;</span>OPML
exported from Outlook<span style="color: #0000ff">&lt;/</span><span style="color: #800000">title</span><span style="color: #0000ff">&gt;</span></pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum5" style="color: #606060"> 5:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">dateCreated</span>
              <span style="color: #0000ff">&gt;</span>Thu,
15 May 2008 20:55:19 -0700<span style="color: #0000ff">&lt;/</span><span style="color: #800000">dateCreated</span><span style="color: #0000ff">&gt;</span></pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum6" style="color: #606060"> 6:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">dateModified</span>
              <span style="color: #0000ff">&gt;</span>Thu,
15 May 2008 20:55:19 -0700<span style="color: #0000ff">&lt;/</span><span style="color: #800000">dateModified</span><span style="color: #0000ff">&gt;</span></pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum7" style="color: #606060"> 7:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">head</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum8" style="color: #606060"> 8:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">body</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum9" style="color: #606060"> 9:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="If
broken it is, fix it you should"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum10" style="color: #606060"> 10:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://blogs.msdn.com/tess/rss.xml"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum11" style="color: #606060"> 11:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Artima
Developer Buzz"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum12" style="color: #606060"> 12:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://www.artima.com/news/feeds/news.rss"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum13" style="color: #606060"> 13:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Artima
Weblogs"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum14" style="color: #606060"> 14:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://www.artima.com/weblogs/feeds/weblogs.rss"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum15" style="color: #606060"> 15:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Artima
Chapters Library"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum16" style="color: #606060"> 16:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://www.artima.com/chapters/feeds/chapters.rss"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum17" style="color: #606060"> 17:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Neal
Gafter's blog"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum18" style="color: #606060"> 18:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://gafter.blogspot.com/feeds/posts/default"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum19" style="color: #606060"> 19:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Room
101"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum20" style="color: #606060"> 20:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://gbracha.blogspot.com/feeds/posts/default"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum21" style="color: #606060"> 21:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Kelly
O'Hair's Blog"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum22" style="color: #606060"> 22:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://weblogs.java.net/blog/kellyohair/index.rdf"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum23" style="color: #606060"> 23:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="John
Rose @ Sun"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum24" style="color: #606060"> 24:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://blogs.sun.com/jrose/feed/entries/atom"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum25" style="color: #606060"> 25:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="The
Daily WTF"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum26" style="color: #606060"> 26:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://syndication.thedailywtf.com/TheDailyWtf"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum27" style="color: #606060"> 27:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Brad
Wilson"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum28" style="color: #606060"> 28:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://feeds.feedburner.com/BradWilson"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum29" style="color: #606060"> 29:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Mike
Stall's .NET Debugging Blog"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum30" style="color: #606060"> 30:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://blogs.msdn.com/jmstall/rss.xml"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum31" style="color: #606060"> 31:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Stevey's
Blog Rants"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum32" style="color: #606060"> 32:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://steve-yegge.blogspot.com/atom.xml"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum33" style="color: #606060"> 33:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Brendan's
Roadmap Updates"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum34" style="color: #606060"> 34:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://weblogs.mozillazine.org/roadmap/index.rdf"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum35" style="color: #606060"> 35:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="pl
patterns"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum36" style="color: #606060"> 36:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://plpatterns.blogspot.com/feeds/posts/default"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum37" style="color: #606060"> 37:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Joel
Pobar's weblog"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum38" style="color: #606060"> 38:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://feeds.feedburner.com/callvirt"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum39" style="color: #606060"> 39:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Let&amp;amp;#39;s
Kill Dave!"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum40" style="color: #606060"> 40:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://letskilldave.com/rss.aspx"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum41" style="color: #606060"> 41:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Why
does everything suck?"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum42" style="color: #606060"> 42:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://whydoeseverythingsuck.com/feeds/posts/default"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum43" style="color: #606060"> 43:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="cdiggins.com"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://cdiggins.com/feed"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum44" style="color: #606060"> 44:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="LukeH's
WebLog"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum45" style="color: #606060"> 45:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://blogs.msdn.com/lukeh/rss.xml"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum46" style="color: #606060"> 46:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Jomo
Fisher -- Sharp Things"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum47" style="color: #606060"> 47:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://blogs.msdn.com/jomo_fisher/rss.xml"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum48" style="color: #606060"> 48:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Chance
Coble"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum49" style="color: #606060"> 49:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://leibnizdream.wordpress.com/feed/"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum50" style="color: #606060"> 50:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Don
Syme's WebLog on F# and Other Research Projects"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum51" style="color: #606060"> 51:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://blogs.msdn.com/dsyme/rss.xml"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum52" style="color: #606060"> 52:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="David
Broman's CLR Profiling API Blog"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum53" style="color: #606060"> 53:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://blogs.msdn.com/davbr/rss.xml"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum54" style="color: #606060"> 54:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="JScript
Blog"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum55" style="color: #606060"> 55:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://blogs.msdn.com/jscript/rss.xml"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum56" style="color: #606060"> 56:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Yet
Another Language Geek"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum57" style="color: #606060"> 57:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://blogs.msdn.com/wesdyer/rss.xml"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum58" style="color: #606060"> 58:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">=".NET
Languages Weblog"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum59" style="color: #606060"> 59:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://www.dotnetlanguages.net/DNL/Rss.aspx"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum60" style="color: #606060"> 60:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="DevHawk"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum61" style="color: #606060"> 61:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://feeds.feedburner.com/Devhawk"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum62" style="color: #606060"> 62:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="The
Cobra Programming Language"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum63" style="color: #606060"> 63:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://cobralang.blogspot.com/feeds/posts/default"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum64" style="color: #606060"> 64:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Code
Miscellany"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum65" style="color: #606060"> 65:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://codemiscellany.blogspot.com/feeds/posts/default"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum66" style="color: #606060"> 66:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Fred,
Let it go!"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum67" style="color: #606060"> 67:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://freddy33.blogspot.com/feeds/posts/default"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum68" style="color: #606060"> 68:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Codedependent"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum69" style="color: #606060"> 69:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://graphics-geek.blogspot.com/feeds/posts/default"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum70" style="color: #606060"> 70:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Presentation
Zen"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum71" style="color: #606060"> 71:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://www.presentationzen.com/presentationzen/index.rdf"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum72" style="color: #606060"> 72:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="The
Extreme Presentation(tm) Method"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum73" style="color: #606060"> 73:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://extremepresentation.typepad.com/blog/index.rdf"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum74" style="color: #606060"> 74:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="ZapThink"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum75" style="color: #606060"> 75:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://feeds.feedburner.com/zapthink"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum76" style="color: #606060"> 76:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Chris
Smith's completely unique view"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum77" style="color: #606060"> 77:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://feeds.feedburner.com/ChrisSmithsCompletelyUniqueView"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum78" style="color: #606060"> 78:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Code
Commit"</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum79" style="color: #606060"> 79:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://feeds.codecommit.com/codecommit"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum80" style="color: #606060"> 80:</span>
              <span style="color: #0000ff">&lt;</span>
              <span style="color: #800000">outline</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum81" style="color: #606060"> 81:</span>
              <span style="color: #ff0000">text</span>
              <span style="color: #0000ff">="Comments
on Ola Bini: Programming Language Synchronicity: A New Hope: Polyglotism"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum82" style="color: #606060"> 82:</span>
              <span style="color: #ff0000">type</span>
              <span style="color: #0000ff">="rss"</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum83" style="color: #606060"> 83:</span>
              <span style="color: #ff0000">xmlUrl</span>
              <span style="color: #0000ff">="http://ola-bini.blogspot.com/feeds/5778383724683099288/comments/default"</span>
              <span style="color: #0000ff">/&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum84" style="color: #606060"> 84:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">body</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
            <pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none">
              <span id="lnum85" style="color: #606060"> 85:</span>
              <span style="color: #0000ff">&lt;/</span>
              <span style="color: #800000">opml</span>
              <span style="color: #0000ff">&gt;</span>
            </pre>
            <!--CRLF-->
          </div>
        </div>
        <p>
Happy reading.....
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=94fda66c-4dda-438c-af27-a53a8e0692c8" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Blogs I'm currently reading</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,94fda66c-4dda-438c-af27-a53a8e0692c8.aspx</guid>
      <link>http://blogs.tedneward.com/2008/05/16/Blogs+Im+Currently+Reading.aspx</link>
      <pubDate>Fri, 16 May 2008 07:08:07 GMT</pubDate>
      <description>&lt;p&gt;
Recently, a former student asked me,
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
I was in a .NET web services training class that you gave probably 4 or so years ago
on-site at a &lt;em&gt;[company name]&lt;/em&gt; office in &lt;em&gt;[city]&lt;/em&gt;, north of Atlanta.&amp;nbsp;
At that time I asked you for a list of the technical blogs that you read, and I am
curious which blogs you are reading now.&amp;nbsp; I am now with a small company where
I have to be a jack of all trades, in the last year I have worked in C++ and Perl
backend type projects and web frontend projects with Java, C#, and RoR, so I find
your perspective interesting since you also work with various technologies and aren't
a zealot for a specific one.
&lt;/p&gt;
&lt;p&gt;
Any way, please either respond by email or in your blog, because I think that others
may be interested in the list also.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
As one might expect, my blog list is a bit eclectic, but I suppose that's part of
the charm of somebody looking to study Java, .NET, C++, Smalltalk, Ruby, Parrot, LLVM,
and other languages and environments. So, without further ado, I've pasted in the
contents of my OPML file for cut&amp;amp;paste and easy import.
&lt;/p&gt;
&lt;p&gt;
Having said that, though, I would strongly suggest &lt;em&gt;not&lt;/em&gt; just blindly importing
the whole set of feeds into your nearest RSS reader, but take a moment and go visit
each one before you add it. It takes longer, granted, but the time spent is a worthy
investment--you don't want to have to declare "blog bankruptcy".
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;Editor's note: We pause here as readers look at each other and go... "WTF?!?"&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
"Blog bankruptcy" is a condition similar to "email bankruptcy", when otherwise perfectly
high-functioning people give up on trying to catch up to the flood of messages in
their email client's Inbox and delete the whole mess (usually with some kind of public
apology explaining why and asking those who've emailed them in the past to resend
something if it was really important), effectively trying to "start over" with their
email in much the same way that Chapter Seven or Chapter Eleven allows companies to
"start over" with their creditors, or declaring bankruptcy allows private citizens
to do the same with theirs. "Blog bankruptcy" is a similar kind of condition: your
RSS reader becomes so full of stuff that you can't keep up, and you can't even remember
which blogs were the interesting ones, so you nuke the whole thing and get away from
the blog-reading thing for a while.
&lt;/p&gt;
&lt;p&gt;
This happened to me, in fact: a few years ago, when I became the editor-in-chief of
TheServerSide.NET, I asked a few folks for their OPML lists, so that I could quickly
and easily build a list of blogs that would "tune me in" to the software industry
around me, and many of them quite agreeably complied. I took my RSS reader (Newsgator,
at the time) and dutifully imported all of them, and ended up with a collection of
blogs that was easily into the hundreds of feeds long. And, over time, I found myself
reading fewer and fewer blogs, mostly because the whole set was so... &lt;em&gt;intimidating&lt;/em&gt;.
I mean, I would pick at the list of blogs and their entries in the same way that I
picked at vegetables on my plate as a child--half-heartedly, with no real enthusiasm,
as if this was something my parents were forcing me to do. That just ruined the experience
of blog-reading for me, and eventually (after I left TSS.NET for other pastures),
I nuked the whole thing--even going so far as to uninstall my copy of Newsgator--and
gave up.
&lt;/p&gt;
&lt;p&gt;
Naturally, I missed it, and slowly over time began to rebuild the list, this time,
taking each feed one at a time, carefully weighing what value the feed was to me and
selecting only those that I thought had a high signal-to-noise ratio. (This is partly
why I don't include much "personal" info in this blog--I found myself routinely stripping
away those blogs that had more personal content and less technical content, and I
figured if I didn't want to read it, others probably felt the same way.) Over the
last year or two, I've rebuilt the list to the point where I probably need to prune
a bit and close a few of them back down, but for now, I'm happy with the list I've
got.
&lt;/p&gt;
&lt;p&gt;
And speaking of which....
&lt;/p&gt;
&lt;div id="codeSnippetWrapper" style="border-right: silver 1px solid; padding-right: 4px; border-top: silver 1px solid; padding-left: 4px; font-size: 8pt; padding-bottom: 4px; margin: 20px 0px 10px; overflow: auto; border-left: silver 1px solid; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; padding-top: 4px; border-bottom: silver 1px solid; font-family: 'Courier New', courier, monospace; background-color: #f4f4f4"&gt;
&lt;div id="codeSnippet" style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum1" style="color: #606060"&gt; 1:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;?&lt;/span&gt;&lt;span style="color: #800000"&gt;xml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="1.0"&lt;/span&gt;?&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum2" style="color: #606060"&gt; 2:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;opml&lt;/span&gt; &lt;span style="color: #ff0000"&gt;version&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="1.0"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum3" style="color: #606060"&gt; 3:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum4" style="color: #606060"&gt; 4:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;OPML
exported from Outlook&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;title&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum5" style="color: #606060"&gt; 5:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;dateCreated&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Thu,
15 May 2008 20:55:19 -0700&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;dateCreated&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum6" style="color: #606060"&gt; 6:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;dateModified&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;Thu,
15 May 2008 20:55:19 -0700&lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;dateModified&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum7" style="color: #606060"&gt; 7:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;head&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum8" style="color: #606060"&gt; 8:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum9" style="color: #606060"&gt; 9:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="If
broken it is, fix it you should"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum10" style="color: #606060"&gt; 10:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://blogs.msdn.com/tess/rss.xml"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum11" style="color: #606060"&gt; 11:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Artima
Developer Buzz"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum12" style="color: #606060"&gt; 12:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://www.artima.com/news/feeds/news.rss"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum13" style="color: #606060"&gt; 13:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Artima
Weblogs"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum14" style="color: #606060"&gt; 14:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://www.artima.com/weblogs/feeds/weblogs.rss"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum15" style="color: #606060"&gt; 15:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Artima
Chapters Library"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum16" style="color: #606060"&gt; 16:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://www.artima.com/chapters/feeds/chapters.rss"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum17" style="color: #606060"&gt; 17:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Neal
Gafter's blog"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum18" style="color: #606060"&gt; 18:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://gafter.blogspot.com/feeds/posts/default"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum19" style="color: #606060"&gt; 19:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Room
101"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum20" style="color: #606060"&gt; 20:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://gbracha.blogspot.com/feeds/posts/default"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum21" style="color: #606060"&gt; 21:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Kelly
O'Hair's Blog"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum22" style="color: #606060"&gt; 22:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://weblogs.java.net/blog/kellyohair/index.rdf"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum23" style="color: #606060"&gt; 23:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="John
Rose @ Sun"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum24" style="color: #606060"&gt; 24:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://blogs.sun.com/jrose/feed/entries/atom"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum25" style="color: #606060"&gt; 25:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="The
Daily WTF"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum26" style="color: #606060"&gt; 26:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://syndication.thedailywtf.com/TheDailyWtf"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum27" style="color: #606060"&gt; 27:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Brad
Wilson"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum28" style="color: #606060"&gt; 28:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://feeds.feedburner.com/BradWilson"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum29" style="color: #606060"&gt; 29:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Mike
Stall's .NET Debugging Blog"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum30" style="color: #606060"&gt; 30:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://blogs.msdn.com/jmstall/rss.xml"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum31" style="color: #606060"&gt; 31:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Stevey's
Blog Rants"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum32" style="color: #606060"&gt; 32:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://steve-yegge.blogspot.com/atom.xml"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum33" style="color: #606060"&gt; 33:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Brendan's
Roadmap Updates"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum34" style="color: #606060"&gt; 34:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://weblogs.mozillazine.org/roadmap/index.rdf"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum35" style="color: #606060"&gt; 35:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="pl
patterns"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum36" style="color: #606060"&gt; 36:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://plpatterns.blogspot.com/feeds/posts/default"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum37" style="color: #606060"&gt; 37:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Joel
Pobar's weblog"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum38" style="color: #606060"&gt; 38:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://feeds.feedburner.com/callvirt"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum39" style="color: #606060"&gt; 39:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Let&amp;amp;amp;#39;s
Kill Dave!"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum40" style="color: #606060"&gt; 40:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://letskilldave.com/rss.aspx"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum41" style="color: #606060"&gt; 41:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Why
does everything suck?"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum42" style="color: #606060"&gt; 42:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://whydoeseverythingsuck.com/feeds/posts/default"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum43" style="color: #606060"&gt; 43:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="cdiggins.com"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://cdiggins.com/feed"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum44" style="color: #606060"&gt; 44:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="LukeH's
WebLog"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum45" style="color: #606060"&gt; 45:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://blogs.msdn.com/lukeh/rss.xml"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum46" style="color: #606060"&gt; 46:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Jomo
Fisher -- Sharp Things"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum47" style="color: #606060"&gt; 47:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://blogs.msdn.com/jomo_fisher/rss.xml"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum48" style="color: #606060"&gt; 48:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Chance
Coble"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum49" style="color: #606060"&gt; 49:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://leibnizdream.wordpress.com/feed/"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum50" style="color: #606060"&gt; 50:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Don
Syme's WebLog on F# and Other Research Projects"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum51" style="color: #606060"&gt; 51:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://blogs.msdn.com/dsyme/rss.xml"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum52" style="color: #606060"&gt; 52:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="David
Broman's CLR Profiling API Blog"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum53" style="color: #606060"&gt; 53:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://blogs.msdn.com/davbr/rss.xml"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum54" style="color: #606060"&gt; 54:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="JScript
Blog"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum55" style="color: #606060"&gt; 55:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://blogs.msdn.com/jscript/rss.xml"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum56" style="color: #606060"&gt; 56:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Yet
Another Language Geek"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum57" style="color: #606060"&gt; 57:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://blogs.msdn.com/wesdyer/rss.xml"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum58" style="color: #606060"&gt; 58:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;=".NET
Languages Weblog"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum59" style="color: #606060"&gt; 59:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://www.dotnetlanguages.net/DNL/Rss.aspx"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum60" style="color: #606060"&gt; 60:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="DevHawk"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum61" style="color: #606060"&gt; 61:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://feeds.feedburner.com/Devhawk"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum62" style="color: #606060"&gt; 62:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="The
Cobra Programming Language"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum63" style="color: #606060"&gt; 63:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://cobralang.blogspot.com/feeds/posts/default"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum64" style="color: #606060"&gt; 64:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Code
Miscellany"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum65" style="color: #606060"&gt; 65:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://codemiscellany.blogspot.com/feeds/posts/default"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum66" style="color: #606060"&gt; 66:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Fred,
Let it go!"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum67" style="color: #606060"&gt; 67:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://freddy33.blogspot.com/feeds/posts/default"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum68" style="color: #606060"&gt; 68:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Codedependent"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum69" style="color: #606060"&gt; 69:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://graphics-geek.blogspot.com/feeds/posts/default"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum70" style="color: #606060"&gt; 70:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Presentation
Zen"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum71" style="color: #606060"&gt; 71:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://www.presentationzen.com/presentationzen/index.rdf"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum72" style="color: #606060"&gt; 72:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="The
Extreme Presentation(tm) Method"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum73" style="color: #606060"&gt; 73:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://extremepresentation.typepad.com/blog/index.rdf"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum74" style="color: #606060"&gt; 74:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="ZapThink"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum75" style="color: #606060"&gt; 75:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://feeds.feedburner.com/zapthink"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum76" style="color: #606060"&gt; 76:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Chris
Smith's completely unique view"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum77" style="color: #606060"&gt; 77:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://feeds.feedburner.com/ChrisSmithsCompletelyUniqueView"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum78" style="color: #606060"&gt; 78:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Code
Commit"&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum79" style="color: #606060"&gt; 79:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://feeds.codecommit.com/codecommit"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum80" style="color: #606060"&gt; 80:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #800000"&gt;outline&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum81" style="color: #606060"&gt; 81:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;text&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="Comments
on Ola Bini: Programming Language Synchronicity: A New Hope: Polyglotism"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum82" style="color: #606060"&gt; 82:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;type&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="rss"&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum83" style="color: #606060"&gt; 83:&lt;/span&gt; &lt;span style="color: #ff0000"&gt;xmlUrl&lt;/span&gt;&lt;span style="color: #0000ff"&gt;="http://ola-bini.blogspot.com/feeds/5778383724683099288/comments/default"&lt;/span&gt;&lt;span style="color: #0000ff"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum84" style="color: #606060"&gt; 84:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;body&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;&lt;pre style="padding-right: 0px; padding-left: 0px; font-size: 8pt; padding-bottom: 0px; margin: 0em; overflow: visible; width: 100%; color: black; border-top-style: none; line-height: 12pt; padding-top: 0px; font-family: 'Courier New', courier, monospace; border-right-style: none; border-left-style: none; background-color: #f4f4f4; border-bottom-style: none"&gt;&lt;span id="lnum85" style="color: #606060"&gt; 85:&lt;/span&gt; &lt;span style="color: #0000ff"&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #800000"&gt;opml&lt;/span&gt;&lt;span style="color: #0000ff"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;!--CRLF--&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;
Happy reading.....
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=94fda66c-4dda-438c-af27-a53a8e0692c8" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,94fda66c-4dda-438c-af27-a53a8e0692c8.aspx</comments>
      <category>.NET</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>LLVM</category>
      <category>Mac OS</category>
      <category>Parrot</category>
      <category>Reading</category>
      <category>Review</category>
      <category>Ruby</category>
      <category>Security</category>
      <category>Solaris</category>
      <category>Visual Basic</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=c69ffbd1-5107-4a2a-aa34-6419dd855035</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,c69ffbd1-5107-4a2a-aa34-6419dd855035.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,c69ffbd1-5107-4a2a-aa34-6419dd855035.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c69ffbd1-5107-4a2a-aa34-6419dd855035</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Apparently, I'm drawing enough of an audience through this blog that various folks
have started to send me press releases and notifications and requests for... well,
I dunno exactly, but I'm assuming some blogging love of some kind. I'm always a little
leery about that particular subject, because it always has this dangerous potential
to turn the blog into a less-credible marketing device, but people at conferences
have suggested that they really are interested in what I think about various products
and tools, so perhaps it's time to amend my stance on this.
</p>
        <p>
With that in mind, if you are a vendor and have a product that you'd like me to take
a look at and (possibly) offer up a review here, here's the basic rules:
</p>
        <ol>
          <li>
No guarantees. Sending me something will in no way guarantee that I will review your
product, for several reasons, two of which being (a) I get really busy sometimes,
and (b) I may have no interest whatsoever in your product and I refuse to pretend
to do so. (Readers can usually tell when the reviewer isn't all that excited about
the subject, I've found.)</li>
          <li>
If you're not going to send me a "real" version (meaning not the time-locked or feature-crippled
demo), don't bother. I have no idea when I will get around to a review, and I have
no desire to review something that isn't "the real deal". I will in turn promise that
the licensed version you send me (if necessary) will not be used for any purpose other
than my own research and exploration (signing contract if necessary to give you that
"fresh-from-the-lawyer's-office" warm and fuzzy feeling).</li>
          <li>
I say what I think, pro and con. I will not edit my review to suit your marketing
purpose, and if you ask me to do so I will simply note in the review that you have
asked me to do so. I retain full editorial control over what I say about your product.</li>
          <li>
Having established #1, I will try to be as fair as I can about your product, and point
out things that I liked and things that I didn't. (Of course, if I hated it from top
to bottom, I may end up with the only positive thing being "It didn't set the atmosphere
on fire when I started the app", but hey, that's something positive, right?)</li>
          <li>
Also in the spirit of #1, if you send me mail answering questions or complaints in
my review, I will of course amend the review with your comments. You are always welcome
to post comments to the blog entry itself, too. Unless you insult my grandmother,
then I will have to get all DELETE-key on you.</li>
        </ol>
        <p>
The reason I'm posting this here is twofold: one, so my faithful audience of four
blog readers will know the rules under which I'm looking at these products and (hopefully)
realize that I'm not financially vested in any of these products, and two, so the
various vendor folks can read this and know what the rules are up front before even
asking.
</p>
        <p>
I know it sounds a little cheeky to lay this out. The image I get in my head is that
of the kid at Christmas declaring to his grandparents as they walk through the door,
presents in hand, "Make sure it's not a scratchy sweater, I hate scratchy sweaters.
And G.I. Joe was only popular when my Dad was a kid. And if you give me another lunchbox
I will scream until you buy me something cool, like a new GameBoy." Ugh. But I value
the trust that people seem to have in me, and so I risk the perception of cheekiness
for this tiny window in time in order to (hopefully) establish full disclosure over
the reviews that come to pass (which, by the way, will always have the category "review"
applied to them, so you know which is an official review and which is just me exploring,
like the LLVM and Parrot posts of recent time).
</p>
        <p>
We now return you to the regularly-scheduled blog.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c69ffbd1-5107-4a2a-aa34-6419dd855035" />
        <br />
        <hr />
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. <a href="mailto:ted@tedneward.com">Contact
me for details</a>.</body>
      <title>Rules for Review</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,c69ffbd1-5107-4a2a-aa34-6419dd855035.aspx</guid>
      <link>http://blogs.tedneward.com/2008/03/28/Rules+For+Review.aspx</link>
      <pubDate>Fri, 28 Mar 2008 11:18:12 GMT</pubDate>
      <description>&lt;p&gt;
Apparently, I'm drawing enough of an audience through this blog that various folks
have started to send me press releases and notifications and requests for... well,
I dunno exactly, but I'm assuming some blogging love of some kind. I'm always a little
leery about that particular subject, because it always has this dangerous potential
to turn the blog into a less-credible marketing device, but people at conferences
have suggested that they really are interested in what I think about various products
and tools, so perhaps it's time to amend my stance on this.
&lt;/p&gt;
&lt;p&gt;
With that in mind, if you are a vendor and have a product that you'd like me to take
a look at and (possibly) offer up a review here, here's the basic rules:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
No guarantees. Sending me something will in no way guarantee that I will review your
product, for several reasons, two of which being (a) I get really busy sometimes,
and (b) I may have no interest whatsoever in your product and I refuse to pretend
to do so. (Readers can usually tell when the reviewer isn't all that excited about
the subject, I've found.)&lt;/li&gt;
&lt;li&gt;
If you're not going to send me a "real" version (meaning not the time-locked or feature-crippled
demo), don't bother. I have no idea when I will get around to a review, and I have
no desire to review something that isn't "the real deal". I will in turn promise that
the licensed version you send me (if necessary) will not be used for any purpose other
than my own research and exploration (signing contract if necessary to give you that
"fresh-from-the-lawyer's-office" warm and fuzzy feeling).&lt;/li&gt;
&lt;li&gt;
I say what I think, pro and con. I will not edit my review to suit your marketing
purpose, and if you ask me to do so I will simply note in the review that you have
asked me to do so. I retain full editorial control over what I say about your product.&lt;/li&gt;
&lt;li&gt;
Having established #1, I will try to be as fair as I can about your product, and point
out things that I liked and things that I didn't. (Of course, if I hated it from top
to bottom, I may end up with the only positive thing being "It didn't set the atmosphere
on fire when I started the app", but hey, that's something positive, right?)&lt;/li&gt;
&lt;li&gt;
Also in the spirit of #1, if you send me mail answering questions or complaints in
my review, I will of course amend the review with your comments. You are always welcome
to post comments to the blog entry itself, too. Unless you insult my grandmother,
then I will have to get all DELETE-key on you.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
The reason I'm posting this here is twofold: one, so my faithful audience of four
blog readers will know the rules under which I'm looking at these products and (hopefully)
realize that I'm not financially vested in any of these products, and two, so the
various vendor folks can read this and know what the rules are up front before even
asking.
&lt;/p&gt;
&lt;p&gt;
I know it sounds a little cheeky to lay this out. The image I get in my head is that
of the kid at Christmas declaring to his grandparents as they walk through the door,
presents in hand, "Make sure it's not a scratchy sweater, I hate scratchy sweaters.
And G.I. Joe was only popular when my Dad was a kid. And if you give me another lunchbox
I will scream until you buy me something cool, like a new GameBoy." Ugh. But I value
the trust that people seem to have in me, and so I risk the perception of cheekiness
for this tiny window in time in order to (hopefully) establish full disclosure over
the reviews that come to pass (which, by the way, will always have the category "review"
applied to them, so you know which is an official review and which is just me exploring,
like the LLVM and Parrot posts of recent time).
&lt;/p&gt;
&lt;p&gt;
We now return you to the regularly-scheduled blog.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c69ffbd1-5107-4a2a-aa34-6419dd855035" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
Enterprise consulting, mentoring or instruction. Java, C++, .NET or XML services.
1-day or multi-day workshops available. &lt;a href="mailto:ted@tedneward.com"&gt;Contact
me for details&lt;/a&gt;.</description>
      <comments>http://blogs.tedneward.com/CommentView,guid,c69ffbd1-5107-4a2a-aa34-6419dd855035.aspx</comments>
      <category>.NET</category>
      <category>C++</category>
      <category>Flash</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>LLVM</category>
      <category>Mac OS</category>
      <category>Parrot</category>
      <category>Reading</category>
      <category>Review</category>
      <category>Ruby</category>
      <category>Security</category>
      <category>Solaris</category>
      <category>VMWare</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
  </channel>
</rss>