<?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 - Conferences</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=7e7d1388-4091-49a5-ada5-4d607df5fe9e</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,7e7d1388-4091-49a5-ada5-4d607df5fe9e.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,7e7d1388-4091-49a5-ada5-4d607df5fe9e.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=7e7d1388-4091-49a5-ada5-4d607df5fe9e</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The <a href="http://jz10.java.no" target="_blank">JavaZone</a> conference has just
become one of my favorite conferences, EVAH. Check out <a href="http://jz10.java.no/java-4-ever-trailer.html" target="_blank">this
trailer</a> they put together, entitled "Java 4-Ever". Yes, Microsofties,
you should watch, too. Just leave off the evangelism for a moment and enjoy the humor
of it. You've had your own fun over the years, too, or need I remind you of the Matrix
video with Gates and Ballmer and the blue pill/red pill? ;-)
</p>
        <p>
This video brings several things to mind:
</p>
        <ul>
          <li>
Wow, that's well done. And take heed, the "R" rating at the front of the
trailer is actually pretty serious. NSFW.</li>
          <li>
I remember speaking at JavaZone a half-dozen years ago, and remember it fondly. Which
reminds me, I need to get back there before long. I missed NDC this year, and I need
my Oslo on before long.</li>
          <li>
Whatever happened to Microsoft marketing? They used to do things like this on a more
regular basis, but it seems they've been silent over the past few years. C'mon back,
guys! The water's fine!</li>
        </ul>
        <p>
Oh, and by the way, pay absolutely no attention to most of the comments that appeared
on the trailer page—most of them are ridiculous and stupid. (To the .NET advocate
who said that ".NET doesn't use a virtual machine", you're the biggest idiot
of the lot.)
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=7e7d1388-4091-49a5-ada5-4d607df5fe9e" />
        <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>A well-done &amp;quot;movie trailer&amp;quot;</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,7e7d1388-4091-49a5-ada5-4d607df5fe9e.aspx</guid>
      <link>http://blogs.tedneward.com/2010/07/01/A+Welldone+Quotmovie+Trailerquot.aspx</link>
      <pubDate>Thu, 01 Jul 2010 10:06:35 GMT</pubDate>
      <description>&lt;p&gt;
The &lt;a href="http://jz10.java.no" target="_blank"&gt;JavaZone&lt;/a&gt; conference has just
become one of my favorite conferences, EVAH. Check out &lt;a href="http://jz10.java.no/java-4-ever-trailer.html" target="_blank"&gt;this
trailer&lt;/a&gt; they put together, entitled &amp;quot;Java 4-Ever&amp;quot;. Yes, Microsofties,
you should watch, too. Just leave off the evangelism for a moment and enjoy the humor
of it. You've had your own fun over the years, too, or need I remind you of the Matrix
video with Gates and Ballmer and the blue pill/red pill? ;-)
&lt;/p&gt;
&lt;p&gt;
This video brings several things to mind:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Wow, that's well done. And take heed, the &amp;quot;R&amp;quot; rating at the front of the
trailer is actually pretty serious. NSFW.&lt;/li&gt;
&lt;li&gt;
I remember speaking at JavaZone a half-dozen years ago, and remember it fondly. Which
reminds me, I need to get back there before long. I missed NDC this year, and I need
my Oslo on before long.&lt;/li&gt;
&lt;li&gt;
Whatever happened to Microsoft marketing? They used to do things like this on a more
regular basis, but it seems they've been silent over the past few years. C'mon back,
guys! The water's fine!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Oh, and by the way, pay absolutely no attention to most of the comments that appeared
on the trailer page—most of them are ridiculous and stupid. (To the .NET advocate
who said that &amp;quot;.NET doesn't use a virtual machine&amp;quot;, you're the biggest idiot
of the lot.)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=7e7d1388-4091-49a5-ada5-4d607df5fe9e" /&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,7e7d1388-4091-49a5-ada5-4d607df5fe9e.aspx</comments>
      <category>.NET</category>
      <category>Android</category>
      <category>C#</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Industry</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Scala</category>
      <category>Social</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=479e3371-5ecf-4379-b9d4-f7cf070aae82</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,479e3371-5ecf-4379-b9d4-f7cf070aae82.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,479e3371-5ecf-4379-b9d4-f7cf070aae82.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=479e3371-5ecf-4379-b9d4-f7cf070aae82</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
By now, the Twitter messages have spread, and the word is out: at Uberconf this year,
I did a session ("Pragmatic Architecture"), which I've done at other venues
before, but this time we made it into a 180-minute workshop instead of a 90-minute
session, and the workshop included breaking the room up into small (10-ish, which
was still a teensy bit too big) groups and giving each one an "architectural
kata" to work on.
</p>
        <p>
The architectural kata is a take on PragDave's coding kata, except taken to a higher
level: the architectural kata is an exercise in which the group seeks to create an
architecture to solve the problem presented. The inspiration for this came from Frederick
Brooks' latest book, <em>The Design of Design</em>, in which he points out that the
only way to get great designers is to get them to design. The corollary, of course,
is that in order to create great architects, we have to get them to architect. But
few architects get a chance to architect a system more than a half-dozen times or
so over the lifetime of a career, and that's only for those who are fortunate to be
given the opportunity to architect in the first place. Of course, the problem here
is, you have to be an architect in order to get hired as an architect, but if you're
not an architect, then how can you architect in order to become an architect?
</p>
        <p>
Um... hang on, let me make sure I wrote that right.
</p>
        <p>
Anyway, the "rules" around the kata (which makes it more difficult to consume
the kata but makes the scenario more realistic, IMHO):
</p>
        <ul>
          <li>
you may ask the instructor questions about the project</li>
          <li>
you must be prepared to present a rough architectural vision of the project and defend
questions about it</li>
          <li>
you must be prepared to ask questions of other participants' presentations</li>
          <li>
you may safely make assumptions about technologies you don't know well as long as
those assumptions are clearly defined and spelled out</li>
          <li>
you may not assume you have hiring/firing authority over the development team</li>
          <li>
any technology is fair game (but you must justify its use)</li>
          <li>
any other rules, you may ask about</li>
        </ul>
        <p>
The groups were given 30 minutes in which to formulate some ideas, and then three
of them were given a few minutes to present their ideas and defend it against some
questions from the crowd.
</p>
        <p>
An example kata is below:
</p>
        <blockquote>
          <p>
            <strong>Architectural Kata #5: I'll have the BLT</strong>
          </p>
          <p>
a national sandwich shop wants to enable "fax in your order" but over the
Internet instead
</p>
          <p>
users: millions+
</p>
          <p>
requirements: users will place their order, then be given a time to pick up their
sandwich and directions to the shop (which must integrate with Google Maps); if the
shop offers a delivery service, dispatch the driver with the sandwich to the user;
mobile-device accessibility; offer national daily promotionals/specials; offer local
daily promotionals/specials; accept payment online or in person/on delivery
</p>
        </blockquote>
        <p>
As you can tell, it's vague in some ways, and this is somewhat deliberate—as one group
discovered, part of the architect's job is to ask questions of the project champion
(me), and they didn't, and felt like they failed pretty miserably. (In their defense,
the kata they drew—randomly—was pretty much universally thought to be the hardest
of the lot.) But overall, the exercise was well-received, lots of people found it
a great opportunity to try being an architect, and even the team that failed felt
that it was a valuable exercise.
</p>
        <p>
I'm definitely going to do more of these, and refine the whole thing a little. (Thanks
to everyone who participated and gave me great feedback on how to make it better.)
If you're interested in having it done as a practice exercise for your development
team before the start of a big project, ping me. I think this would be a *great* exercise
to do during a user group meeting, too.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=479e3371-5ecf-4379-b9d4-f7cf070aae82" />
        <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>Architectural Katas</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,479e3371-5ecf-4379-b9d4-f7cf070aae82.aspx</guid>
      <link>http://blogs.tedneward.com/2010/06/17/Architectural+Katas.aspx</link>
      <pubDate>Thu, 17 Jun 2010 08:42:47 GMT</pubDate>
      <description>&lt;p&gt;
By now, the Twitter messages have spread, and the word is out: at Uberconf this year,
I did a session (&amp;quot;Pragmatic Architecture&amp;quot;), which I've done at other venues
before, but this time we made it into a 180-minute workshop instead of a 90-minute
session, and the workshop included breaking the room up into small (10-ish, which
was still a teensy bit too big) groups and giving each one an &amp;quot;architectural
kata&amp;quot; to work on.
&lt;/p&gt;
&lt;p&gt;
The architectural kata is a take on PragDave's coding kata, except taken to a higher
level: the architectural kata is an exercise in which the group seeks to create an
architecture to solve the problem presented. The inspiration for this came from Frederick
Brooks' latest book, &lt;em&gt;The Design of Design&lt;/em&gt;, in which he points out that the
only way to get great designers is to get them to design. The corollary, of course,
is that in order to create great architects, we have to get them to architect. But
few architects get a chance to architect a system more than a half-dozen times or
so over the lifetime of a career, and that's only for those who are fortunate to be
given the opportunity to architect in the first place. Of course, the problem here
is, you have to be an architect in order to get hired as an architect, but if you're
not an architect, then how can you architect in order to become an architect?
&lt;/p&gt;
&lt;p&gt;
Um... hang on, let me make sure I wrote that right.
&lt;/p&gt;
&lt;p&gt;
Anyway, the &amp;quot;rules&amp;quot; around the kata (which makes it more difficult to consume
the kata but makes the scenario more realistic, IMHO):
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
you may ask the instructor questions about the project&lt;/li&gt;
&lt;li&gt;
you must be prepared to present a rough architectural vision of the project and defend
questions about it&lt;/li&gt;
&lt;li&gt;
you must be prepared to ask questions of other participants' presentations&lt;/li&gt;
&lt;li&gt;
you may safely make assumptions about technologies you don't know well as long as
those assumptions are clearly defined and spelled out&lt;/li&gt;
&lt;li&gt;
you may not assume you have hiring/firing authority over the development team&lt;/li&gt;
&lt;li&gt;
any technology is fair game (but you must justify its use)&lt;/li&gt;
&lt;li&gt;
any other rules, you may ask about&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
The groups were given 30 minutes in which to formulate some ideas, and then three
of them were given a few minutes to present their ideas and defend it against some
questions from the crowd.
&lt;/p&gt;
&lt;p&gt;
An example kata is below:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Architectural Kata #5: I'll have the BLT&lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
a national sandwich shop wants to enable &amp;quot;fax in your order&amp;quot; but over the
Internet instead
&lt;/p&gt;
&lt;p&gt;
users: millions+
&lt;/p&gt;
&lt;p&gt;
requirements: users will place their order, then be given a time to pick up their
sandwich and directions to the shop (which must integrate with Google Maps); if the
shop offers a delivery service, dispatch the driver with the sandwich to the user;
mobile-device accessibility; offer national daily promotionals/specials; offer local
daily promotionals/specials; accept payment online or in person/on delivery
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
As you can tell, it's vague in some ways, and this is somewhat deliberate—as one group
discovered, part of the architect's job is to ask questions of the project champion
(me), and they didn't, and felt like they failed pretty miserably. (In their defense,
the kata they drew—randomly—was pretty much universally thought to be the hardest
of the lot.) But overall, the exercise was well-received, lots of people found it
a great opportunity to try being an architect, and even the team that failed felt
that it was a valuable exercise.
&lt;/p&gt;
&lt;p&gt;
I'm definitely going to do more of these, and refine the whole thing a little. (Thanks
to everyone who participated and gave me great feedback on how to make it better.)
If you're interested in having it done as a practice exercise for your development
team before the start of a big project, ping me. I think this would be a *great* exercise
to do during a user group meeting, too.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=479e3371-5ecf-4379-b9d4-f7cf070aae82" /&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,479e3371-5ecf-4379-b9d4-f7cf070aae82.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>Ruby</category>
      <category>Scala</category>
      <category>Security</category>
      <category>Social</category>
      <category>Solaris</category>
      <category>Visual Basic</category>
      <category>WCF</category>
      <category>XML Services</category>
      <category>XNA</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=a2b21a39-22ae-4ba7-88a4-1bcb10e8429b</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,a2b21a39-22ae-4ba7-88a4-1bcb10e8429b.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,a2b21a39-22ae-4ba7-88a4-1bcb10e8429b.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a2b21a39-22ae-4ba7-88a4-1bcb10e8429b</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
As a part of my program to learn how to use the Mac OS more effectively (mostly to
counteract my lack of Mac-command-line kung fu, but partly to get Neal Ford off my
back ;-) ), I set the home page in Firefox to point to the <a href="http://osxdaily.com/" target="_blank">OSX
Daily</a> website. This morning, <a href="http://osxdaily.com/2010/05/13/print-screen-mac/" target="_blank">this
particular page</a> popped up as the "tip of the day", and a particular
thing about it struck my fancy. Go ahead and glance at it before you continue on.
</p>
        <p>
On its own merits, there's nothing particularly interesting about it—it's a tip about
how to do a screen-capture in OS X, which is hardly a breakthrough feature. But something
about the tenor struck me: "You’ve probably noticed there is no ‘Print Screen’
button on a Mac keyboard, this is to both simplify the keyboard and also because it’s
unnecessary. Instead of hitting a “Print Screen” button, you’ll hit one of several
keyboard combination shortcuts, depending on the exact screen capture action you want
taken. ... Command+Shift+3 takes a screenshot of the full screen ... Command+Shift+4
brings up a selection box .... Command+Shift+4, then spacebar, then click a window
takes a screenshot of the window...."
</p>
        <p>
Wait a second. This is <em>simpler</em>?
</p>
        <p>
If "you're a PC", you're probably rolling on the floor with laughter at
this moment, determined to go find a Mac fanboi and Lord it over him that it requires
the use of no less than three keystrokes to take a friggin' screenshot.
</p>
        <p>
If, on the other hand, you love the Mac, you're probably chuckling at the idiocy of
PC manufacturers who continue to keep a key on the keyboard dating back from the terminal
days (right next to "Scroll Lock") that rarely, if ever, gets used.
</p>
        <p>
Who's right? Who's the idiot?
</p>
        <p>
You both are.
</p>
        <p>
See, the fact is, your perceptions of a particular element of the different platforms
(the menubar at the top of the screen vs. in the main window of the app, the one-button
vs. two-button mouse, and so on) colors your response. If you have emotionally committed
to the Mac, then anything it does is naturally right and obvious; if you've emotionally
committed to Windows, then ditto. This is a natural psychological response—it happens
to everybody, to some degree or another. We need, at a subconscious level, to know
that our decisions were the right ones to have made, so we look for those facts which
confirm the decision, and avoid the facts that question it. (It's this same psychological
drive that causes battered wives to defend their battering husbands to the police
and intervening friends/family, and for people who've already committed to one political
party or the other to see huge gaping holes in logic in the opponents' debate responses,
but to gloss over their own candidates'.)
</p>
        <p>
Why bring it up? Because this also is what drives developers to justify the decisions
they've made in developing software—when a user or another developer questions a particular
decision, the temptation is to defend it to the dying breath, because it was a decision
we made. We start looking for justifications to back it, we start aggressively questioning
the challenger's competency or right to question the decision, you name it. It's a
hard thing, to admit we might have been wrong, and even harder to admit that even
though we might have been right, we were for the wrong reasons, or the decision still
was the wrong one, or—perhaps hardest of all—the users simply like it the other way,
even though this way is vastly more efficient and sane.
</p>
        <p>
Have you admitted you were wrong lately?
</p>
        <p>
(Check out <em><a href="http://www.amazon.com/Predictably-Irrational-Hidden-Forces-Decisions/dp/006135323X/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1273833371&amp;sr=8-1" target="_blank">Predictably
Irrational</a></em>, <em><a href="http://www.amazon.com/How-We-Decide-Jonah-Lehrer/dp/0547247990/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1273833400&amp;sr=8-1" target="_blank">How
We Decide</a></em>, and <em><a href="http://www.amazon.com/Why-We-Make-Mistakes-Without/dp/0767928067/ref=sr_1_1?ie=UTF8&amp;s=books&amp;qid=1273833436&amp;sr=8-1" target="_blank">Why
We Make Mistakes</a></em> for more details on the psychology of decision-making.)
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=a2b21a39-22ae-4ba7-88a4-1bcb10e8429b" />
        <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>Emotional commitment colors everything</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,a2b21a39-22ae-4ba7-88a4-1bcb10e8429b.aspx</guid>
      <link>http://blogs.tedneward.com/2010/05/14/Emotional+Commitment+Colors+Everything.aspx</link>
      <pubDate>Fri, 14 May 2010 10:40:33 GMT</pubDate>
      <description>&lt;p&gt;
As a part of my program to learn how to use the Mac OS more effectively (mostly to
counteract my lack of Mac-command-line kung fu, but partly to get Neal Ford off my
back ;-) ), I set the home page in Firefox to point to the &lt;a href="http://osxdaily.com/" target="_blank"&gt;OSX
Daily&lt;/a&gt; website. This morning, &lt;a href="http://osxdaily.com/2010/05/13/print-screen-mac/" target="_blank"&gt;this
particular page&lt;/a&gt; popped up as the &amp;quot;tip of the day&amp;quot;, and a particular
thing about it struck my fancy. Go ahead and glance at it before you continue on.
&lt;/p&gt;
&lt;p&gt;
On its own merits, there's nothing particularly interesting about it—it's a tip about
how to do a screen-capture in OS X, which is hardly a breakthrough feature. But something
about the tenor struck me: &amp;quot;You’ve probably noticed there is no ‘Print Screen’
button on a Mac keyboard, this is to both simplify the keyboard and also because it’s
unnecessary. Instead of hitting a “Print Screen” button, you’ll hit one of several
keyboard combination shortcuts, depending on the exact screen capture action you want
taken. ... Command+Shift+3 takes a screenshot of the full screen ... Command+Shift+4
brings up a selection box .... Command+Shift+4, then spacebar, then click a window
takes a screenshot of the window....&amp;quot;
&lt;/p&gt;
&lt;p&gt;
Wait a second. This is &lt;em&gt;simpler&lt;/em&gt;?
&lt;/p&gt;
&lt;p&gt;
If &amp;quot;you're a PC&amp;quot;, you're probably rolling on the floor with laughter at
this moment, determined to go find a Mac fanboi and Lord it over him that it requires
the use of no less than three keystrokes to take a friggin' screenshot.
&lt;/p&gt;
&lt;p&gt;
If, on the other hand, you love the Mac, you're probably chuckling at the idiocy of
PC manufacturers who continue to keep a key on the keyboard dating back from the terminal
days (right next to &amp;quot;Scroll Lock&amp;quot;) that rarely, if ever, gets used.
&lt;/p&gt;
&lt;p&gt;
Who's right? Who's the idiot?
&lt;/p&gt;
&lt;p&gt;
You both are.
&lt;/p&gt;
&lt;p&gt;
See, the fact is, your perceptions of a particular element of the different platforms
(the menubar at the top of the screen vs. in the main window of the app, the one-button
vs. two-button mouse, and so on) colors your response. If you have emotionally committed
to the Mac, then anything it does is naturally right and obvious; if you've emotionally
committed to Windows, then ditto. This is a natural psychological response—it happens
to everybody, to some degree or another. We need, at a subconscious level, to know
that our decisions were the right ones to have made, so we look for those facts which
confirm the decision, and avoid the facts that question it. (It's this same psychological
drive that causes battered wives to defend their battering husbands to the police
and intervening friends/family, and for people who've already committed to one political
party or the other to see huge gaping holes in logic in the opponents' debate responses,
but to gloss over their own candidates'.)
&lt;/p&gt;
&lt;p&gt;
Why bring it up? Because this also is what drives developers to justify the decisions
they've made in developing software—when a user or another developer questions a particular
decision, the temptation is to defend it to the dying breath, because it was a decision
we made. We start looking for justifications to back it, we start aggressively questioning
the challenger's competency or right to question the decision, you name it. It's a
hard thing, to admit we might have been wrong, and even harder to admit that even
though we might have been right, we were for the wrong reasons, or the decision still
was the wrong one, or—perhaps hardest of all—the users simply like it the other way,
even though this way is vastly more efficient and sane.
&lt;/p&gt;
&lt;p&gt;
Have you admitted you were wrong lately?
&lt;/p&gt;
&lt;p&gt;
(Check out &lt;em&gt;&lt;a href="http://www.amazon.com/Predictably-Irrational-Hidden-Forces-Decisions/dp/006135323X/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1273833371&amp;amp;sr=8-1" target="_blank"&gt;Predictably
Irrational&lt;/a&gt;&lt;/em&gt;, &lt;em&gt;&lt;a href="http://www.amazon.com/How-We-Decide-Jonah-Lehrer/dp/0547247990/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1273833400&amp;amp;sr=8-1" target="_blank"&gt;How
We Decide&lt;/a&gt;&lt;/em&gt;, and &lt;em&gt;&lt;a href="http://www.amazon.com/Why-We-Make-Mistakes-Without/dp/0767928067/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1273833436&amp;amp;sr=8-1" target="_blank"&gt;Why
We Make Mistakes&lt;/a&gt;&lt;/em&gt; for more details on the psychology of decision-making.)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=a2b21a39-22ae-4ba7-88a4-1bcb10e8429b" /&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,a2b21a39-22ae-4ba7-88a4-1bcb10e8429b.aspx</comments>
      <category>Conferences</category>
      <category>Development Processes</category>
      <category>Industry</category>
      <category>Mac OS</category>
      <category>Reading</category>
      <category>Solaris</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=39927a30-8b67-4c6d-8656-c855f1ba008c</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,39927a30-8b67-4c6d-8656-c855f1ba008c.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,39927a30-8b67-4c6d-8656-c855f1ba008c.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=39927a30-8b67-4c6d-8656-c855f1ba008c</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://tirania.org/blog/archive/2010/Mar-25.html" target="_blank">Miguel
de Icaza wrote up a good response</a> to the <a href="http://74.125.93.132/search?q=cache:LPFDjfqGMRMJ:www.sdtimes.com/link/34203+Does+Windows+cost+Microsoft+opportunities&amp;cd=1&amp;hl=en&amp;ct=clnk&amp;gl=us" target="_blank">SDTimes
article</a> in which both of us were quoted, and I thought it might serve to flesh
out the discussion a bit more to chime in with my part in the piece.
</p>
        <p>
First and foremost, Miguel notes:
</p>
        <blockquote>
          <p>
David quotes Ted Neward (a speaker on the .NET and Java circuits, but not an open
source guy by any stretch of the imagination). 
</p>
        </blockquote>
        <p>
Amen to that—I have never tried to promote myself as an open source guy, and certainly
not somebody that can go toe-to-toe on open-source issues like Miguel can. David contacted
me specifically to comment on some of Miguel's points, and that's what I tried to
do.
</p>
        <blockquote>
          <p>
Ted tried to refute my point about Java and innovation but seemed to have missed the
point. 
</p>
        </blockquote>
        <p>
Again, I don't think I can argue with that. Your point becomes more clear in your
blog entry, Miguel, and as you'll see in a second, I disagree with only part of the
point, and perhaps it's a semantic discussion that isn't one you (or anybody else)
wants to have, but seems important to note, at least in my mind. :-)
</p>
        <blockquote>
          <p>
The article attributed this to Ted: <i>"Microsoft has made an open-source CLI
implementation codenamed 'Rotor' freely available, but it has had little or no uptake".</i></p>
          <p>
There is a very simple reason for that. Rotor was not open source and it was doomed
to failure the moment it came out. When Microsoft released Rotor in 2002 or 2003 they
had no idea what they were doing and basically botched the whole effort by using a
proprietary license for Rotor. 
</p>
        </blockquote>
        <p>
And there we have it: "Rotor was not open source". This is the entire point
on which the disagreement (or lack thereof) hinges.
</p>
        <p>
Some time ago, on a panel, I mentioned that there are three kinds of common usage
when people use the term "open source". (I'm not arguing the 'proper' definition
here—I'm arguing the common lay usage, which may or may not actually be correct according
to those who define such things.) Those three definitions are:
</p>
        <ol>
          <li>
Free. ("I didn't have to pay for it!")</li>
          <li>
Source-available. ("I can build it!")</li>
          <li>
Accepting community contributions, and as a result, forkable. ("I can submit
patches!" or "I don't like the direction you're taking it, so I'm taking
the source and forking it and going in a different direction!")</li>
        </ol>
        <p>
Rotor fit the definitions of the first 2, though #1 usually implies an ability to
use it in a production environment, something the Shared Source license (the license
applying to Rotor at the time of its release) didn't permit in any way shape or form.
</p>
        <p>
And Miguel's exactly right—according to the #3 definition of the above, or <a href="http://www.opensource.org/docs/definition.php" target="_blank">the
linked definition he cites</a>, Rotor does not fit that. Period.
</p>
        <p>
Alas, it is to the detriment of our industry that people don't use terms according
to their actual definitions, but a looser, less precise, usage model. Not being an
"open-source guy", I fall into the trap of using the looser definition,
and that's what I was using when I read Miguel's point and made my counterpoint.
</p>
        <p>
As to the rest of Miguel's point, that Microsoft "botched" the release of
Rotor, I'm not sure that's the case—what I think was happening was a difference of
intent versus interpretation of that intent. I don't want to put words in Miguel's
mouth, so forgive me if I'm (again) not reading it right, but contrary to what Miguel
seems to believe, Microsoft never really intended Rotor as an "open source"
implementation in the sense that Mono was.
</p>
        <p>
Instead, Microsoft intended Rotor to be an implementation that universities and research
groups could use to hack on the CLR or build languages for the CLR, in an effort to
promote .NET and its usage among researchers and universities. Based on the discussions
I had with David Stutz during the <em>Shared Source CLI Essentials</em> writing, Microsoft
never really thought that Rotor would be all that interesting as an open-source "platform",
per se—hence the reason that the GC and JIT that appear in Rotor are "simplified"
and "not all that interesting" (David's words, as best I can remember them).
At the time, they felt that these (GC and JIT) would be areas that students and companies
would want to research around those areas, so a production-ready implementation of
either was really not necessary. 
</p>
        <p>
In other words, Microsoft saw Rotor as JikesRVM, not as Mono. And definitely not as
OpenJDK.
</p>
        <p>
Which gets us right back to Miguel's point, a spot-on analysis:
</p>
        <blockquote>
          <p>
Had Microsoft been an open company in 2001 and had embraced diversity we would live
in a different world. The awesome Mono team would probably be bigger, and the existing
team members would have longer vacations. 
</p>
        </blockquote>
        <p>
The Microsoft of 2001 was categorically and absolutely afraid of the open-source community.
In fact, I seem to recall David listing a litany of things he'd had to do to get Rotor
pushed out the door, even with the license it had. Had David not been as high up in
the organization as he was, we probably wouldn't have seen Rotor. And, I believe,
we wouldn't see Microsoft being where they are now...
</p>
        <blockquote>
          <p>
But for everyone that missed the point, luckily, Microsoft has new management, new
employees that know open source, fresh new ideas, is becoming more open and is working
actively on interoperability with third parties. They even launched the CodePlex Foundation. 
</p>
        </blockquote>
        <p>
... without it, because Rotor made it clear to the powers-that-be that even if they
turn loose the "keys to the kingdom" (as the CLR was thought to be, in some
quarters) out to the world, Microsoft doesn't go bankrupt. A steady yet slowly-emerging
"new Microsoft" is coming, one which is figuring out how to interact with
open source in ways that the "old Microsoft" could never consider. (Remember,
this is not IBM, a company that makes more money on services than on software sales—this
is a firm that makes its money principally from commercial software sales. Anybody
who thinks they've got that part of the open source market figured out should probably
run out and start a company, because that's a hell of a trick.)
</p>
        <p>
And lest it seem like I'm harshing a bit too much on Microsoft, let's take one of
Miguel's points and turn it over for a second:
</p>
        <blockquote>
          <p>
But my point about the ecosystem goes beyond the JVM, it is about the Java ecosystem
in general vs the .NET ecosystem. Java was able to capitalize on having implementations
on Linux and Unix, which accounts for more than half the web today. The Apache Foundation
is a big hub for Java-based development and it grew organically.
</p>
        </blockquote>
        <p>
All of which was good for <em>Java</em>.... but not necessarily for <em>Sun</em>,
who as most of you know, just recently got acquired by one of their former competitors.
We can moan and groan and complain about the slow pace Microsoft has been taking to
come to open source, particularly when compared to Sun's approach, but in the end,
one of these companies is still in business and listed on the NYSE, and the other
isn't.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=39927a30-8b67-4c6d-8656-c855f1ba008c" />
        <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>Comments on the SDTimes article</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,39927a30-8b67-4c6d-8656-c855f1ba008c.aspx</guid>
      <link>http://blogs.tedneward.com/2010/03/27/Comments+On+The+SDTimes+Article.aspx</link>
      <pubDate>Sat, 27 Mar 2010 00:03:14 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://tirania.org/blog/archive/2010/Mar-25.html" target="_blank"&gt;Miguel
de Icaza wrote up a good response&lt;/a&gt; to the &lt;a href="http://74.125.93.132/search?q=cache:LPFDjfqGMRMJ:www.sdtimes.com/link/34203+Does+Windows+cost+Microsoft+opportunities&amp;amp;cd=1&amp;amp;hl=en&amp;amp;ct=clnk&amp;amp;gl=us" target="_blank"&gt;SDTimes
article&lt;/a&gt; in which both of us were quoted, and I thought it might serve to flesh
out the discussion a bit more to chime in with my part in the piece.
&lt;/p&gt;
&lt;p&gt;
First and foremost, Miguel notes:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
David quotes Ted Neward (a speaker on the .NET and Java circuits, but not an open
source guy by any stretch of the imagination). 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Amen to that—I have never tried to promote myself as an open source guy, and certainly
not somebody that can go toe-to-toe on open-source issues like Miguel can. David contacted
me specifically to comment on some of Miguel's points, and that's what I tried to
do.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Ted tried to refute my point about Java and innovation but seemed to have missed the
point. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Again, I don't think I can argue with that. Your point becomes more clear in your
blog entry, Miguel, and as you'll see in a second, I disagree with only part of the
point, and perhaps it's a semantic discussion that isn't one you (or anybody else)
wants to have, but seems important to note, at least in my mind. :-)
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
The article attributed this to Ted: &lt;i&gt;&amp;quot;Microsoft has made an open-source CLI
implementation codenamed 'Rotor' freely available, but it has had little or no uptake&amp;quot;.&lt;/i&gt;
&lt;/p&gt;
&lt;p&gt;
There is a very simple reason for that. Rotor was not open source and it was doomed
to failure the moment it came out. When Microsoft released Rotor in 2002 or 2003 they
had no idea what they were doing and basically botched the whole effort by using a
proprietary license for Rotor. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
And there we have it: &amp;quot;Rotor was not open source&amp;quot;. This is the entire point
on which the disagreement (or lack thereof) hinges.
&lt;/p&gt;
&lt;p&gt;
Some time ago, on a panel, I mentioned that there are three kinds of common usage
when people use the term &amp;quot;open source&amp;quot;. (I'm not arguing the 'proper' definition
here—I'm arguing the common lay usage, which may or may not actually be correct according
to those who define such things.) Those three definitions are:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Free. (&amp;quot;I didn't have to pay for it!&amp;quot;)&lt;/li&gt;
&lt;li&gt;
Source-available. (&amp;quot;I can build it!&amp;quot;)&lt;/li&gt;
&lt;li&gt;
Accepting community contributions, and as a result, forkable. (&amp;quot;I can submit
patches!&amp;quot; or &amp;quot;I don't like the direction you're taking it, so I'm taking
the source and forking it and going in a different direction!&amp;quot;)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Rotor fit the definitions of the first 2, though #1 usually implies an ability to
use it in a production environment, something the Shared Source license (the license
applying to Rotor at the time of its release) didn't permit in any way shape or form.
&lt;/p&gt;
&lt;p&gt;
And Miguel's exactly right—according to the #3 definition of the above, or &lt;a href="http://www.opensource.org/docs/definition.php" target="_blank"&gt;the
linked definition he cites&lt;/a&gt;, Rotor does not fit that. Period.
&lt;/p&gt;
&lt;p&gt;
Alas, it is to the detriment of our industry that people don't use terms according
to their actual definitions, but a looser, less precise, usage model. Not being an
&amp;quot;open-source guy&amp;quot;, I fall into the trap of using the looser definition,
and that's what I was using when I read Miguel's point and made my counterpoint.
&lt;/p&gt;
&lt;p&gt;
As to the rest of Miguel's point, that Microsoft &amp;quot;botched&amp;quot; the release of
Rotor, I'm not sure that's the case—what I think was happening was a difference of
intent versus interpretation of that intent. I don't want to put words in Miguel's
mouth, so forgive me if I'm (again) not reading it right, but contrary to what Miguel
seems to believe, Microsoft never really intended Rotor as an &amp;quot;open source&amp;quot;
implementation in the sense that Mono was.
&lt;/p&gt;
&lt;p&gt;
Instead, Microsoft intended Rotor to be an implementation that universities and research
groups could use to hack on the CLR or build languages for the CLR, in an effort to
promote .NET and its usage among researchers and universities. Based on the discussions
I had with David Stutz during the &lt;em&gt;Shared Source CLI Essentials&lt;/em&gt; writing, Microsoft
never really thought that Rotor would be all that interesting as an open-source &amp;quot;platform&amp;quot;,
per se—hence the reason that the GC and JIT that appear in Rotor are &amp;quot;simplified&amp;quot;
and &amp;quot;not all that interesting&amp;quot; (David's words, as best I can remember them).
At the time, they felt that these (GC and JIT) would be areas that students and companies
would want to research around those areas, so a production-ready implementation of
either was really not necessary. 
&lt;/p&gt;
&lt;p&gt;
In other words, Microsoft saw Rotor as JikesRVM, not as Mono. And definitely not as
OpenJDK.
&lt;/p&gt;
&lt;p&gt;
Which gets us right back to Miguel's point, a spot-on analysis:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Had Microsoft been an open company in 2001 and had embraced diversity we would live
in a different world. The awesome Mono team would probably be bigger, and the existing
team members would have longer vacations. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
The Microsoft of 2001 was categorically and absolutely afraid of the open-source community.
In fact, I seem to recall David listing a litany of things he'd had to do to get Rotor
pushed out the door, even with the license it had. Had David not been as high up in
the organization as he was, we probably wouldn't have seen Rotor. And, I believe,
we wouldn't see Microsoft being where they are now...
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
But for everyone that missed the point, luckily, Microsoft has new management, new
employees that know open source, fresh new ideas, is becoming more open and is working
actively on interoperability with third parties. They even launched the CodePlex Foundation. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
... without it, because Rotor made it clear to the powers-that-be that even if they
turn loose the &amp;quot;keys to the kingdom&amp;quot; (as the CLR was thought to be, in some
quarters) out to the world, Microsoft doesn't go bankrupt. A steady yet slowly-emerging
&amp;quot;new Microsoft&amp;quot; is coming, one which is figuring out how to interact with
open source in ways that the &amp;quot;old Microsoft&amp;quot; could never consider. (Remember,
this is not IBM, a company that makes more money on services than on software sales—this
is a firm that makes its money principally from commercial software sales. Anybody
who thinks they've got that part of the open source market figured out should probably
run out and start a company, because that's a hell of a trick.)
&lt;/p&gt;
&lt;p&gt;
And lest it seem like I'm harshing a bit too much on Microsoft, let's take one of
Miguel's points and turn it over for a second:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
But my point about the ecosystem goes beyond the JVM, it is about the Java ecosystem
in general vs the .NET ecosystem. Java was able to capitalize on having implementations
on Linux and Unix, which accounts for more than half the web today. The Apache Foundation
is a big hub for Java-based development and it grew organically.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
All of which was good for &lt;em&gt;Java&lt;/em&gt;.... but not necessarily for &lt;em&gt;Sun&lt;/em&gt;,
who as most of you know, just recently got acquired by one of their former competitors.
We can moan and groan and complain about the slow pace Microsoft has been taking to
come to open source, particularly when compared to Sun's approach, but in the end,
one of these companies is still in business and listed on the NYSE, and the other
isn't.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=39927a30-8b67-4c6d-8656-c855f1ba008c" /&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,39927a30-8b67-4c6d-8656-c855f1ba008c.aspx</comments>
      <category>.NET</category>
      <category>Android</category>
      <category>C#</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Industry</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Mac OS</category>
      <category>Reading</category>
      <category>Visual Basic</category>
      <category>WCF</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=00f3b327-66ab-4323-a64d-858fad572367</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,00f3b327-66ab-4323-a64d-858fad572367.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,00f3b327-66ab-4323-a64d-858fad572367.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=00f3b327-66ab-4323-a64d-858fad572367</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Apparently April will be a pretty Florida-heavy month for me; on top of the No Fluff
Just Stuff conference in Tampa on April 16th/17th/18th, I'm going to hit three Floridian
user groups shortly therafter:
</p>
        <ul>
          <li>
West Palm user group on Tuesday 4/27/2010 
</li>
          <li>
Tampa Architecture Group on Wednesday 4/28/2010 
</li>
          <li>
Pensacola SQL Server User Group on Thursday 4/29/2010 
</li>
        </ul>
        <p>
... before I head up to Reston, VA for the NFJS show there. Should be a fun time,
seeing how the other corner of the US lives.....
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=00f3b327-66ab-4323-a64d-858fad572367" />
        <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>Swinging through Florida</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,00f3b327-66ab-4323-a64d-858fad572367.aspx</guid>
      <link>http://blogs.tedneward.com/2010/03/26/Swinging+Through+Florida.aspx</link>
      <pubDate>Fri, 26 Mar 2010 23:28:11 GMT</pubDate>
      <description>&lt;p&gt;
Apparently April will be a pretty Florida-heavy month for me; on top of the No Fluff
Just Stuff conference in Tampa on April 16th/17th/18th, I'm going to hit three Floridian
user groups shortly therafter:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
West Palm user group on Tuesday 4/27/2010 
&lt;/li&gt;
&lt;li&gt;
Tampa Architecture Group on Wednesday 4/28/2010 
&lt;/li&gt;
&lt;li&gt;
Pensacola SQL Server User Group on Thursday 4/29/2010 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
... before I head up to Reston, VA for the NFJS show there. Should be a fun time,
seeing how the other corner of the US lives.....
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=00f3b327-66ab-4323-a64d-858fad572367" /&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,00f3b327-66ab-4323-a64d-858fad572367.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>Conferences</category>
      <category>Industry</category>
      <category>Java/J2EE</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=8dd248aa-f023-4739-8f37-0a51ad70c20b</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,8dd248aa-f023-4739-8f37-0a51ad70c20b.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,8dd248aa-f023-4739-8f37-0a51ad70c20b.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8dd248aa-f023-4739-8f37-0a51ad70c20b</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Michael Easter called me out over Twitter tonight, entirely fairly. This blog post
is to attempt to make right.
</p>
        <p>
Context: Tonight was a <a href="http://dotnetda.org/wp/?p=421" target="_blank">.NET
Developer Association meeting in Redmond</a>, during which we had two presentations:
one on Entity Framework, and one on F#. The talk on F#, while well-meaning and delivered
by somebody I've not yet met personally, suffered from several failures that I believe
to be endemic to Microsoft's approach to presenting F#. I don't fault the speaker—I
think Michael was set up to fail from the very beginning. Thus, I decided that it
was time for me to "put up" and describe the structural failures I've seen
in several talks attempting to describe F# to the general .NET computing community.
(I think these could probably be generalized to presenting a new language to any general
computing community, but I'll keep it focused on F# for now.)
</p>
        <p>
In no particular order:
</p>
        <ul>
          <li>
            <strong>
              <em>DON'T</em> use a demo based on a mathematical principle (like Fibonacci,
factorial, or some other exponent-hugging formula).</strong> I ask you, how many developers
find themselves writing that kind of code on a daily basis? If you offer up purely
mathematical examples, you will create the impression that F# is only good for high-scale
numerical and mathematical computing, such as what scientists use, and you will essentially
convince everybody in the room that F# belongs in that class of programming language
that doesn't have anything to do with them.</li>
          <li>
            <strong>
              <em>DO </em>use a demo based on real-world environments or problems.</strong> Use
domain types that could have come from a regular line-of-business scenario; my favorite
is "Person", since that can serve as a base type for other, more domain-specific,
types (like "Student", "Instructor", "Employee", and
whatever).</li>
          <li>
            <strong>
              <em>DON'T</em> stress the F# Interactive environment.</strong> Yes, it's great
that F# has an interactive environment and a REPL. But accept that this is <em>not</em> what
the general development community cares about, or even sees value in. In fact, the
more you stress the REPL/interactive window in F#, the more likely you are to get
a question at the end of the talk asking you to compare F# to Python or Perl. Then
you end up having to argue the benefits of static typing and type inference over dynamic/duck
typing, which really makes no sense in a scripting tool, which is only on the questioners'
mind <em>because you put it there by stressing the REPL.</em></li>
          <li>
            <strong>
              <em>DO </em>show F# code being called by other assemblies, and vice versa.</strong> At
the end of the day, the watchword here should be "interoperability", because
no matter how eloquent your presentation, you're not going to get the audience to
suddenly abandon their C# and Visual Basic and switch over to writing everything in
F#, because there's just too many scenarios where F# is not the right answer (UI "top
of the stack" kinds of things being at the top of my "not great for F#"
list). Stress how an F# type is just a class, with methods that can be invoked from
C# and vice versa.</li>
          <li>
            <strong>
              <em>DON'T</em> answer the inevitable "why should I care?" question
with the word "productivity".</strong> I hate to be the one to point this
out, but <em>every</em> language ever introduced has held this up as a reason to switch
to it, and none of them have ever really <em>felt</em> like they were a productivity
boost, at least not in the long run. And if you answer with, "Because I just
think that way", that's a FAIL on your part, because I can't see how <em>your</em> thinking
changes mine. (You may also like the Pittsburgh Steelers, while I know they can't
hold a candle to the New Orleans Saints—now where are we?)</li>
          <li>
            <strong>
              <em>DO</em> answer the inevitable "why should I care?" question
with tangible real-world scenarios or examples.</strong> Give two or three cases,
abstract or concrete, where F# makes the developers' life easier, and how. And frankly,
I would sprinkle in a few cases where F# <em>isn't</em> a net win, because everybody
knows, deep down, that no one language is perfect for all scenarios. (Only marketing
and sales people seem to think there is.)</li>
          <li>
            <strong>
              <em>DON'T</em> jump straight into all this functional jazz.</strong>
            <em>
            </em>I
hate to tell you this, but most of the developer community is not convinced that functional
programming is "obviously" the right way to program. Attempting to take
them deep into functional mojo is only going to lose them and overwhelm them and quite
likely convince them that functional programming is for math majors. Use of the terms
"catamorphism" or "monad" or "partial application" or
"currying" in your introductory talk is an exercise in stroking your own
ego, not in teaching the audience something useful.</li>
          <li>
            <strong>
              <em>DO</em> stress that F# can do everything C# or Visual Basic can do.</strong> Developers
like to start with the familiar—it's why every programming language starts with the
"Hello World" example, not only because it's simple and straightforward
but because developers have come to expect it. F# can build types just like C# can,
so do that, and use that as a framework from which to build up their understanding
of the syntax and semantics.</li>
          <li>
            <strong>
              <em>DON'T</em> assume you can give an introduction to a programming language
in 20 minutes.</strong> I don't care how good you are as a presenter, it can't be
done. 50 minutes would be pushing it. 90 minutes is maybe just enough to get through
enough syntax to get the audience to the point where they can read a commonplace F#
program. Maybe.</li>
          <li>
            <strong>
              <em>DO </em>tease the hell out of them for 20 minutes.</strong> If you only
have 20 minutes, then create a super-sexy demo (not a math-based or scripting-based
one), show them the demo, then point out that this is written in 35 lines of F#, and
if they want to understand what's going on in that 35 lines, here's some resources
to go learn F#. Leave them wanting more.</li>
        </ul>
        <p>
Again, I'm not faulting Michael (tonight's speaker): I think he bravely attempted
what was likely to be a failure regardless of who was giving the talk. My hope is
that as others start to step up to talk about F# to their coworkers and fellow user
group members, this will help avoid a few more "Oh, so F# is totally irrelevant
to me" reactions.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=8dd248aa-f023-4739-8f37-0a51ad70c20b" />
        <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>How to (and not to) give a talk on F#</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,8dd248aa-f023-4739-8f37-0a51ad70c20b.aspx</guid>
      <link>http://blogs.tedneward.com/2010/03/23/How+To+And+Not+To+Give+A+Talk+On+F.aspx</link>
      <pubDate>Tue, 23 Mar 2010 06:34:57 GMT</pubDate>
      <description>&lt;p&gt;
Michael Easter called me out over Twitter tonight, entirely fairly. This blog post
is to attempt to make right.
&lt;/p&gt;
&lt;p&gt;
Context: Tonight was a &lt;a href="http://dotnetda.org/wp/?p=421" target="_blank"&gt;.NET
Developer Association meeting in Redmond&lt;/a&gt;, during which we had two presentations:
one on Entity Framework, and one on F#. The talk on F#, while well-meaning and delivered
by somebody I've not yet met personally, suffered from several failures that I believe
to be endemic to Microsoft's approach to presenting F#. I don't fault the speaker—I
think Michael was set up to fail from the very beginning. Thus, I decided that it
was time for me to &amp;quot;put up&amp;quot; and describe the structural failures I've seen
in several talks attempting to describe F# to the general .NET computing community.
(I think these could probably be generalized to presenting a new language to any general
computing community, but I'll keep it focused on F# for now.)
&lt;/p&gt;
&lt;p&gt;
In no particular order:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;DON'T&lt;/em&gt; use a demo based on a mathematical principle (like Fibonacci,
factorial, or some other exponent-hugging formula).&lt;/strong&gt; I ask you, how many developers
find themselves writing that kind of code on a daily basis? If you offer up purely
mathematical examples, you will create the impression that F# is only good for high-scale
numerical and mathematical computing, such as what scientists use, and you will essentially
convince everybody in the room that F# belongs in that class of programming language
that doesn't have anything to do with them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;DO &lt;/em&gt;use a demo based on real-world environments or problems.&lt;/strong&gt; Use
domain types that could have come from a regular line-of-business scenario; my favorite
is &amp;quot;Person&amp;quot;, since that can serve as a base type for other, more domain-specific,
types (like &amp;quot;Student&amp;quot;, &amp;quot;Instructor&amp;quot;, &amp;quot;Employee&amp;quot;, and
whatever).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;DON'T&lt;/em&gt; stress the F# Interactive environment.&lt;/strong&gt; Yes, it's great
that F# has an interactive environment and a REPL. But accept that this is &lt;em&gt;not&lt;/em&gt; what
the general development community cares about, or even sees value in. In fact, the
more you stress the REPL/interactive window in F#, the more likely you are to get
a question at the end of the talk asking you to compare F# to Python or Perl. Then
you end up having to argue the benefits of static typing and type inference over dynamic/duck
typing, which really makes no sense in a scripting tool, which is only on the questioners'
mind &lt;em&gt;because you put it there by stressing the REPL.&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;DO &lt;/em&gt;show F# code being called by other assemblies, and vice versa.&lt;/strong&gt; At
the end of the day, the watchword here should be &amp;quot;interoperability&amp;quot;, because
no matter how eloquent your presentation, you're not going to get the audience to
suddenly abandon their C# and Visual Basic and switch over to writing everything in
F#, because there's just too many scenarios where F# is not the right answer (UI &amp;quot;top
of the stack&amp;quot; kinds of things being at the top of my &amp;quot;not great for F#&amp;quot;
list). Stress how an F# type is just a class, with methods that can be invoked from
C# and vice versa.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;DON'T&lt;/em&gt; answer the inevitable &amp;quot;why should I care?&amp;quot; question
with the word &amp;quot;productivity&amp;quot;.&lt;/strong&gt; I hate to be the one to point this
out, but &lt;em&gt;every&lt;/em&gt; language ever introduced has held this up as a reason to switch
to it, and none of them have ever really &lt;em&gt;felt&lt;/em&gt; like they were a productivity
boost, at least not in the long run. And if you answer with, &amp;quot;Because I just
think that way&amp;quot;, that's a FAIL on your part, because I can't see how &lt;em&gt;your&lt;/em&gt; thinking
changes mine. (You may also like the Pittsburgh Steelers, while I know they can't
hold a candle to the New Orleans Saints—now where are we?)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;DO&lt;/em&gt; answer the inevitable &amp;quot;why should I care?&amp;quot; question
with tangible real-world scenarios or examples.&lt;/strong&gt; Give two or three cases,
abstract or concrete, where F# makes the developers' life easier, and how. And frankly,
I would sprinkle in a few cases where F# &lt;em&gt;isn't&lt;/em&gt; a net win, because everybody
knows, deep down, that no one language is perfect for all scenarios. (Only marketing
and sales people seem to think there is.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;DON'T&lt;/em&gt; jump straight into all this functional jazz.&lt;/strong&gt;&lt;em&gt; &lt;/em&gt;I
hate to tell you this, but most of the developer community is not convinced that functional
programming is &amp;quot;obviously&amp;quot; the right way to program. Attempting to take
them deep into functional mojo is only going to lose them and overwhelm them and quite
likely convince them that functional programming is for math majors. Use of the terms
&amp;quot;catamorphism&amp;quot; or &amp;quot;monad&amp;quot; or &amp;quot;partial application&amp;quot; or
&amp;quot;currying&amp;quot; in your introductory talk is an exercise in stroking your own
ego, not in teaching the audience something useful.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;DO&lt;/em&gt; stress that F# can do everything C# or Visual Basic can do.&lt;/strong&gt; Developers
like to start with the familiar—it's why every programming language starts with the
&amp;quot;Hello World&amp;quot; example, not only because it's simple and straightforward
but because developers have come to expect it. F# can build types just like C# can,
so do that, and use that as a framework from which to build up their understanding
of the syntax and semantics.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;DON'T&lt;/em&gt; assume you can give an introduction to a programming language
in 20 minutes.&lt;/strong&gt; I don't care how good you are as a presenter, it can't be
done. 50 minutes would be pushing it. 90 minutes is maybe just enough to get through
enough syntax to get the audience to the point where they can read a commonplace F#
program. Maybe.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;DO &lt;/em&gt;tease the hell out of them for 20 minutes.&lt;/strong&gt; If you only
have 20 minutes, then create a super-sexy demo (not a math-based or scripting-based
one), show them the demo, then point out that this is written in 35 lines of F#, and
if they want to understand what's going on in that 35 lines, here's some resources
to go learn F#. Leave them wanting more.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Again, I'm not faulting Michael (tonight's speaker): I think he bravely attempted
what was likely to be a failure regardless of who was giving the talk. My hope is
that as others start to step up to talk about F# to their coworkers and fellow user
group members, this will help avoid a few more &amp;quot;Oh, so F# is totally irrelevant
to me&amp;quot; reactions.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=8dd248aa-f023-4739-8f37-0a51ad70c20b" /&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,8dd248aa-f023-4739-8f37-0a51ad70c20b.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Industry</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Python</category>
      <category>Scala</category>
      <category>Visual Basic</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=4b2137dd-11cc-4ad5-8771-5906f2759273</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,4b2137dd-11cc-4ad5-8771-5906f2759273.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,4b2137dd-11cc-4ad5-8771-5906f2759273.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4b2137dd-11cc-4ad5-8771-5906f2759273</wfw:commentRss>
      <slash:comments>2</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Cruising the Web late last night, I ran across <a href="http://blogs.techrepublic.com.com/10things/?p=1297" target="_blank">"10
things you can do to advance your career as a developer"</a>, summarized below:
</p>
        <ol>
          <li>
Build a PC 
</li>
          <li>
Participate in an online forum and help others 
</li>
          <li>
Man the help desk 
</li>
          <li>
Perform field service 
</li>
          <li>
Perform DBA functions 
</li>
          <li>
Perform all phases of the project lifecycle 
</li>
          <li>
Recognize and learn the latest technologies 
</li>
          <li>
Be an independent contractor 
</li>
          <li>
Lead a project, supervise, or manage 
</li>
          <li>
Seek additional education 
</li>
        </ol>
        <p>
I agreed with some of them, I disagreed with others, and in general felt like they
were a little too high-level to be of real use. For example, "Seek additional
education" seems entirely too vague: In what? How much? How often? And "Recognize
and learn the latest technologies" is something like offering advice to the Olympic
fencing silver medalist and saying, "You should have tried harder".
</p>
        <p>
So, in the great spirit of "Not Invented Here", I present my own list; as
usual, I welcome comment and argument. And, also as usual, caveats apply, since not
everybody will be in precisely the same place and be looking for the same things.
In general, though, whether you're looking to kick-start your career or just "kick
it up a notch", I believe this list will help, because these ideas have been
of help to me at some point or another in my own career.
</p>
        <h3>
          <strong>
            <em>10: Build a PC.</em>
          </strong>
        </h3>
        <p>
Yes, even developers have to know about hardware. More importantly, a developer at
a small organization or team will find himself in a position where he has to take
on some system administrator roles, and sometimes that means grabbing a screwdriver,
getting a little dusty and dirty, and swapping hardware around. Having said this,
though, once you've done it once or twice, leave it alone—the hardware game is an
ever-shifting and ever-changing game (much like software is, surprise surprise), and
it's been my experience that most of us only really have the time to pursue one or
the other.
</p>
        <p>
By the way, "PC" there is something of a generic term—build a Linux box,
build a Windows box, or "build" a Mac OS box (meaning, buy a Mac Pro and
trick it out a little—add more memory, add another hard drive, and so on), they all
get you comfortable with snapping parts together, and discovering just how ridiculously
simple the whole thing really is.
</p>
        <p>
And for the record, once you've done it, go ahead and go back to buying pre-built
systems or laptops—I've never found building a PC to be any cheaper than buying one
pre-built. Particularly for PC systems, I prefer to use smaller local vendors where
I can customize and trick out the box. If you're a Mac, that's not really an option
unless you're into the "Hackintosh" thing, which is quite possibly the logical
equivalent to "Build a PC". Having never done it myself, though, I can't
say how useful that is as an educational action.
</p>
        <h3>
        </h3>
        <h3>
        </h3>
        <h3>
        </h3>
        <h3>
          <strong>
            <em>9: Pick a destination</em>
          </strong>
        </h3>
        <p>
Do you want to run a team of your own? Become an independent contractor? Teach programming
classes? Speak at conferences? Move up into higher management and get out of the programming
game altogether? Everybody's got a different idea of what they consider to be the
"ideal" career, but it's amazing how many people don't really think about
what they want their career path to be.
</p>
        <p>
A wise man once said, "The journey of a thousand miles begins with a single step."
I disagree: The journey of a thousand miles begins with the damn map. You have to
know where you want to go, and a rough idea of how to get there, before you can really
start with that single step. Otherwise, you're just wandering, which in itself isn't
a bad thing, but isn't going to get you to a destination except by random chance.
(Sometimes that's not a bad result, but at least then you're openly admitting that
you're leaving your career in the hands of chance. If you're OK with that, skip to
the next item. If you're not, read on.)
</p>
        <p>
Lay out explicitly (as in, write it down someplace) what kind of job you're wanting
to grow into, and then lay out a couple of scenarios that move you closer towards
that goal. Can you grow within the company you're in? (Have others been able to?)
Do you need to quit and strike out on your own? Do you want to lead a team of your
own? (Are there new projects coming in to the company that you could put yourself
forward as a potential tech lead?) And so on.
</p>
        <p>
Once you've identified the destination, now you can start thinking about steps to
get there. 
</p>
        <p>
If you want to become a speaker, put your name forward to give some presentations
at the local technology user group, or volunteer to hold a "brown bag" session
at the company. Sign up with Toastmasters to hone your speaking technique. Watch other
speakers give technical talks, and see what they do that you don't, and vice versa. 
</p>
        <p>
If you want to be a tech lead, start by quietly assisting other members of the team
get their work done. Help them debug thorny problems. Answer questions they have.
Offer yourself up as a resource for dealing with hard problems.
</p>
        <p>
If you want to slowly move up the management chain, look to get into the project management
side of things. Offer to be a point of contact for the users. Learn the business better.
Sit down next to one of your users and watch their interaction with the existing software,
and try to see the system from their point of view.
</p>
        <p>
And so on.
</p>
        <h3>
          <strong>
            <em>8: Be a bell curve</em>
          </strong>
        </h3>
        <p>
Frequently, at conferences, attendees ask me how I got to know so much on so many
things. In some ways, I'm reminded of the story of a world-famous concert pianist
giving a concert at Carnegie Hall—when a gushing fan said, "I'd give my life
to be able to play like that", the pianist responded quietly, "I did".
But as much as I'd like to leave you with the impression that I've dedicated my entire
life to knowing everything I could about this industry, that would be something of
a lie. The truth is, I don't know anywhere near as much as I'd like, and I'm always
poking my head into new areas. Thank God for my ADD, that's all I can say on that
one.
</p>
        <p>
For the rest of you, though, that's not feasible, and not really practical, particularly
since I have an advantage that the "working" programmer doesn't—I have set
aside weeks or months in which to do nothing more than study a new technology or language.
</p>
        <p>
Back in the early days of my career, though, when I was holding down the 9-to-5, I
was a Windows/C++ programmer. I was working with the Borland C++ compiler and its
associated framework, the ObjectWindows Library (OWL), extending and maintaining applications
written in it. One contracting client wanted me to work with Microsoft MFC instead
of OWL. Another one was storing data into a relational database using ODBC. And so
on. Slowly, over time, I built up a "bell curve"-looking collection of skills
that sort of "hovered" around the central position of C++/Windows.
</p>
        <p>
Then, one day, a buddy of mine mentioned the team on which he was a project manager
was looking for new blood. They were doing web applications, something with which
I had zero experience—this was completely outside of my bell curve. HTML, HTTP, Cold
Fusion, NetDynamics (an early Java app server), this was way out of my range, though
at least NetDynamics was a <em>little</em> similar, since it was basically a server-side
application framework, and I had some experience with app frameworks from my C++ days.
So, resting on my C++ experience, I started flirting with Java, and so on.
</p>
        <p>
Before long, my "bell curve" had been readjusted to have Java more or less
at its center, and I found that experience in C++ still worked out here—what I knew
about ODBC turned out to be incredibly useful in understanding JDBC, what I knew about
DLLs from Windows turned out to be helpful in understanding Java's dynamic loading
model, and of course syntactically Java looked a lot like C++ even though it behaved
a little bit differently under the hood. (One article author suggested that Java was
closer to Smalltalk than C++, and that prompted me to briefly flirt with Smalltalk
before I concluded said author was out of his frakking mind.)
</p>
        <p>
All of this happened over roughly a three-year period, by the way.
</p>
        <p>
The point here is that you won't be able to assimilate the entire industry in a single
sitting, so pick something that's relatively close to what you already know, and use
your experience as a springboard to learn something that's new, yet possibly-if-not-probably
useful to your current job. You don't have to be a deep expert in it, and the further
away it is from what you do, the less you really need to know about it (hence the
bell curve metaphor), but you're still exposing yourself to new ideas and new concepts
and new tools/technologies that still could be applicable to what you do on a daily
basis. Over time the "center" of your bell curve may drift away from what
you've done to include new things, and that's OK.
</p>
        <h3>
          <strong>
            <em>7: Learn one new thing every year</em>
          </strong>
        </h3>
        <p>
In the last tip, I told you to branch out slowly from what you know. In this tip,
I'm telling you to go throw a dart at something entirely unfamiliar to you and learn
it. Yes, I realize this sounds contradictory. It's because those who stick to only
what they know end up missing the radical shifts of direction that the industry hits
every half-decade or so until it's mainstream and commonplace and "everybody's
doing it".
</p>
        <p>
In their amazing book "The Pragmatic Programmer", Dave Thomas and Andy Hunt
suggest that you learn one new programming language every year. I'm going to amend
that somewhat—not because there aren't enough languages in the world to keep you on
that pace for the rest of your life—far from it, if that's what you want, go learn
Ruby, F#, Scala, Groovy, Clojure, Icon, Io, Erlang, Haskell and Smalltalk, then come
back to me for the list for 2020—but because languages aren't the only thing that
we as developers need to explore. There's a lot of movement going on in areas beyond
languages, and you don't want to be the last kid on the block to know they're happening.
</p>
        <p>
Consider this list: object databases (<a href="http://www.db4o.com" target="_blank">db4o</a>)
and/or the "NoSQL" movement (<a href="http://www.mongodb.org/display/DOCS/Tutorial" target="_blank">MongoDB</a>).
Dependency injection and composable architectures (<a href="http://www.springframework.org" target="_blank">Spring</a>, <a href="http://mef.codeplex.com" target="_blank">MEF</a>).
A dynamic language (<a href="http://www.rubyforge.org" target="_blank">Ruby</a>, <a href="http://www.python.org" target="_blank">Python</a>, <a href="http://www.ecmascript.org" target="_blank">ECMAScript</a>).
A functional language (<a href="http://msdn.microsoft.com/en-us/fsharp/default.aspx" target="_blank">F#</a>, <a href="http://www.scala-lang.org" target="_blank">Scala</a>, <a href="http://www.haskell.org" target="_blank">Haskell</a>).
A Lisp (Common Lisp, <a href="http://clojure.org" target="_blank">Clojure</a>, Scheme,
Nu). A mobile platform (iPhone, Android). "Space"-based architecture (<a href="http://www.gigaspaces.com" target="_blank">Gigaspaces</a>,
Terracotta). Rich UI platforms (Flash/Flex, Silverlight). Browser enhancements (AJAX,
jQuery, HTML 5) and how they're different from the rich UI platforms. And this is
without adding any of the "obvious" stuff, like Cloud, to the list.
</p>
        <p>
(I'm not convinced Cloud is something worth learning this year, anyway.)
</p>
        <p>
You get through that list, you're operating outside of your comfort zone, and chances
are, your boss' comfort zone, which puts you into the enviable position of being somebody
who can advise him around those technologies. <em>DO NOT TAKE THIS TO MEAN YOU MUST
KNOW THEM DEEPLY.</em> Just having a passing familiarity with them can be enough. <em>DO
NOT TAKE THIS TO MEAN YOU SHOULD PROPOSE USING THEM ON THE NEXT PROJECT.</em> In fact,
sometimes the most compelling evidence that you really know where and when they should
be used is when you suggest stealing ideas from the thing, rather than trying to force-fit
the thing onto the project as a whole.
</p>
        <h3>
          <strong>
            <em>6: Practice, practice, practice</em>
          </strong>
        </h3>
        <p>
Speaking of the concert pianist, somebody once asked him how to get to Carnegie Hall.
HIs answer: "Practice, my boy, practice."
</p>
        <p>
The same is true here. You're not going to get to be a better developer without practice.
Volunteer some time—even if it's just an hour a week—on an open-source project, or
start one of your own. Heck, it doesn't even have to be an "open source"
project—just create some requirements of your own, solve a problem that a family member
is having, or rewrite the project you're on as an interesting side-project. Do the
Nike thing and "Just do it". Write some Scala code. Write some F# code.
Once you're past "hello world", write the Scala code to use db4o as a persistent
storage. Wire it up behind Tapestry. Or write straight servlets in Scala. And so on.
</p>
        <h3>
          <strong>
            <em>5: Turn off the TV</em>
          </strong>
        </h3>
        <p>
Speaking of marketing slogans, if you're like most Americans, surveys have shown that
you watch about four hours of TV a day, or 28 hours of TV a week. In that same amount
of time (28 hours over 1 week), you could read the entire set of poems by Maya Angelou,
one F. Scott Fitzgerald novel, all poems by T.S.Eliot, 2 plays by Thornton Wilder,
or all 150 Psalms of the Bible. An average reader, reading just one hour a day, can
finish an "average-sized" book (let's assume about the size of a novel)
in a week, which translates to 52 books a year.
</p>
        <p>
Let's assume a technical book is going to take slightly longer, since it's a bit deeper
in concept and requires you to spend some time experimenting and typing in code; let's
assume that reading and going through the exercises of an average technical book will
require 4 weeks (a month) instead of just one week. That's 12 new tools/languages/frameworks/ideas
you'd be learning per year.
</p>
        <p>
All because you stopped watching David Caruso turn to the camera, whip his sunglasses
off and say something stupid. (I guess it's not his fault; <em>CSI:Miami</em> is a
crap show. The other two are actually not bad, but <em>Miami</em> just makes me retch.) 
</p>
        <p>
After all, when's the last time that David Caruso or the rest of that show did anything
that was even remotely realistic from a computer perspective? (I always laugh out
loud every time they run a database search against some national database on a completely
non-indexable criteria—like a partial license plate number—and it comes back in seconds.
What the hell database are THEY using? I want it!) Soon as you hear The Who break
into that riff, flip off the TV (or set it to mute) and pick up the book on the nightstand
and boost your career. (And hopefully sink Caruso's.)
</p>
        <p>
Or, if you just can't give up your weekly dose of Caruso, then put the book in the
bathroom. Think about it—how much time do you spend in there a week?
</p>
        <p>
And this gets even better when you get a Kindle or other e-reader that accepts PDFs,
or the book you're interested in is natively supported in the e-readers' format. Now
you have it with you for lunch, waiting at dinner for your food to arrive, or while
you're sitting guard on your 10-year-old so he doesn't sneak out of his room after
his bedtime to play more XBox.
</p>
        <h3>
          <strong>
            <em>4: Have a life</em>
          </strong>
        </h3>
        <p>
Speaking of XBox, don't slave your life to work. Pursue other things. Scientists have
repeatedly discovered that exercise helps keep the mind in shape, so take a couple
of hours a week (buh-bye, <em>American Idol</em>) and go get some exercise. Pick up
a new sport you've never played before, or just go work out at the gym. (This year
I'm doing Hopkido and fencing.) Read some nontechnical books. (I recommend anything
by Malcolm Gladwell as a starting point.) Spend time with your family, if you have
one—mine spends at least six or seven hours a week playing "family games"
like <a href="http://www.realitycheckgames.com/Products/127-the-settlers-of-catan.aspx" target="_blank">Settlers
of Catan</a>, <a href="http://www.realitycheckgames.com/Products/113-dominion.aspx" target="_blank">Dominion</a>, <a href="http://www.realitycheckgames.com/Products/88-to-court-the-king.aspx" target="_blank">To
Court The King</a>, <a href="http://www.realitycheckgames.com/Products/98-munchkin.aspx" target="_blank">Munchkin</a>,
and other non-traditional games, usually over lunch or dinner. I also belong to an
informal "Game Night club" in Redmond consisting of several Microsoft employees
and their families, as well as outsiders. And so on. Heck, go to a local bar and watch
the game, and you'll meet some really interesting people. And some boring people,
too, but you don't have to talk to them during the next game if you don't want.
</p>
        <p>
This isn't just about maintaining a healthy work-life balance—it's also about having
interests that other people can latch on to, qualities that will make you more "human"
and more interesting as a person, and make you more attractive and "connectable"
and stand out better in their mind when they hear that somebody they know is looking
for a software developer. This will also help you connect better with your users,
because like it or not, they do <em>not</em> get your puns involving Klingon. (Besides,
the geek stereotype is SO 90's, and it's time we let the world know that.)
</p>
        <p>
Besides, you never know when having some depth in other areas—philosophy, music, art,
physics, sports, whatever—will help you create an analogy that will explain some thorny
computer science concept to a non-technical person and get past a communication roadblock.
</p>
        <h3>
          <strong>
            <em>3: Practice on a cadaver</em>
          </strong>
        </h3>
        <p>
Long before they scrub up for their first surgery on a human, medical students practice
on dead bodies. It's grisly, it's not something we really want to think about, but
when you're the one going under the general anesthesia, would you rather see the surgeon
flipping through the "How-To" manual, "just to refresh himself"?
</p>
        <p>
Diagnosing and debugging a software system can be a hugely puzzling trial, largely
because there are so many possible "moving parts" that are creating the
problem. Compound that with certain bugs that only appear when multiple users are
interacting at the same time, and you've got a recipe for disaster when a production
bug suddenly threatens to jeopardize the company's online revenue stream. Do you really
want to be sitting in the production center, flipping through "How-To"'s
and FAQs online while your boss looks on and your CEO is counting every minute by
the thousands of dollars?
</p>
        <p>
Take a tip from the med student: long before the thing goes into production, introduce
a bug, deploy the code into a virtual machine, then hand it over to a buddy and let
him try to track it down. Have him do the same for you. Or if you can't find a buddy
to help you, do it to yourself (but try not to cheat or let your knowledge of where
the bug is color your reactions). How do you know the bug is there? Once you know
it's there, how do you determine what kind of bug it is? Where do you start looking
for it? How would you track it down without attaching a debugger or otherwise disrupting
the system's operations? (Remember, we can't always just attach an IDE and step through
the code on a production server.) How do you patch the running system? And so on.
</p>
        <p>
Remember, you can either learn these things under controlled circumstances, learn
them while you're in the "hot seat", so to speak, or not learn them at all
and see how long the company keeps you around.
</p>
        <h3>
          <strong>
            <em>2: Administer the system</em>
          </strong>
        </h3>
        <p>
Take off your developer hat for a while—a week, a month, a quarter, whatever—and be
one of those thankless folks who have to keep the system running. Wear the pager that
goes off at 3AM when a server goes down. Stay all night doing one of those "server
upgrades" that have to be done in the middle of the night because the system
can't be upgraded while users are using it. Answer the phones or chat requests of
those hapless users who can't figure out why they can't find the record they just
entered into the system, and after a half-hour of thinking it must be a bug, ask them
if they remembered to check the "Save this record" checkbox on the UI (which
had to be there because the developers were told it had to be there) before submitting
the form. Try adding a user. Try removing a user. Try changing the user's password.
Learn what a real joy having seven different properties/XML/configuration files scattered
all over the system really is.
</p>
        <p>
Once you've done that, particularly on a system that you built and tossed over the
fence into production and thought that was the end of it, you'll understand just why
it's so important to keep the system administrators in mind when you're building a
system for production. And why it's critical to be able to have a system that tells
you when it's down, instead of having to go hunting up the answer when a VP tells
you it is (usually because he's just gotten an outage message from a customer or client).
</p>
        <h3>
          <strong>
            <em>1: Cultivate a peer group</em>
          </strong>
        </h3>
        <p>
Yes, you can join an online forum, ask questions, answer questions, and learn that
way, but that's a poor substitute for physical human contact once in a while. Like
it or not, various sociological and psychological studies confirm that a "connection"
is really still best made when eyeballs meet flesh. (The "disassociative"
nature of email is what makes it so easy to be rude or flamboyant or downright violent
in email when we would never say such things in person.) Go to conferences, join a
user group, even start one of your own if you can't find one. Yes, the online avenues
are still open to you—read blogs, join mailing lists or newsgroups—but don't lose
sight of human-to-human contact.
</p>
        <p>
While we're at it, don't create a peer group of people that all look to you for answers—as
flattering as that feels, and as much as we do learn by providing answers, frequently
we rise (or fall) to the level of our peers—have at least one peer group that's overwhelmingly
smarter than you, and as scary as it might be, venture to offer an answer or two to
that group when a question comes up. You don't have to be right—in fact, it's often
vastly more educational to be wrong. Just maintain an attitude that says "I have
no ego wrapped up in being right or wrong", and take the entire experience as
a learning opportunity.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=4b2137dd-11cc-4ad5-8771-5906f2759273" />
        <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>10 Things To Improve Your Development Career</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,4b2137dd-11cc-4ad5-8771-5906f2759273.aspx</guid>
      <link>http://blogs.tedneward.com/2010/01/19/10+Things+To+Improve+Your+Development+Career.aspx</link>
      <pubDate>Tue, 19 Jan 2010 10:02:01 GMT</pubDate>
      <description>&lt;p&gt;
Cruising the Web late last night, I ran across &lt;a href="http://blogs.techrepublic.com.com/10things/?p=1297" target="_blank"&gt;&amp;quot;10
things you can do to advance your career as a developer&amp;quot;&lt;/a&gt;, summarized below:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Build a PC 
&lt;/li&gt;
&lt;li&gt;
Participate in an online forum and help others 
&lt;/li&gt;
&lt;li&gt;
Man the help desk 
&lt;/li&gt;
&lt;li&gt;
Perform field service 
&lt;/li&gt;
&lt;li&gt;
Perform DBA functions 
&lt;/li&gt;
&lt;li&gt;
Perform all phases of the project lifecycle 
&lt;/li&gt;
&lt;li&gt;
Recognize and learn the latest technologies 
&lt;/li&gt;
&lt;li&gt;
Be an independent contractor 
&lt;/li&gt;
&lt;li&gt;
Lead a project, supervise, or manage 
&lt;/li&gt;
&lt;li&gt;
Seek additional education 
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
I agreed with some of them, I disagreed with others, and in general felt like they
were a little too high-level to be of real use. For example, &amp;quot;Seek additional
education&amp;quot; seems entirely too vague: In what? How much? How often? And &amp;quot;Recognize
and learn the latest technologies&amp;quot; is something like offering advice to the Olympic
fencing silver medalist and saying, &amp;quot;You should have tried harder&amp;quot;.
&lt;/p&gt;
&lt;p&gt;
So, in the great spirit of &amp;quot;Not Invented Here&amp;quot;, I present my own list; as
usual, I welcome comment and argument. And, also as usual, caveats apply, since not
everybody will be in precisely the same place and be looking for the same things.
In general, though, whether you're looking to kick-start your career or just &amp;quot;kick
it up a notch&amp;quot;, I believe this list will help, because these ideas have been
of help to me at some point or another in my own career.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;&lt;em&gt;10: Build a PC.&lt;/em&gt;&lt;/strong&gt; 
&lt;/h3&gt;
&lt;p&gt;
Yes, even developers have to know about hardware. More importantly, a developer at
a small organization or team will find himself in a position where he has to take
on some system administrator roles, and sometimes that means grabbing a screwdriver,
getting a little dusty and dirty, and swapping hardware around. Having said this,
though, once you've done it once or twice, leave it alone—the hardware game is an
ever-shifting and ever-changing game (much like software is, surprise surprise), and
it's been my experience that most of us only really have the time to pursue one or
the other.
&lt;/p&gt;
&lt;p&gt;
By the way, &amp;quot;PC&amp;quot; there is something of a generic term—build a Linux box,
build a Windows box, or &amp;quot;build&amp;quot; a Mac OS box (meaning, buy a Mac Pro and
trick it out a little—add more memory, add another hard drive, and so on), they all
get you comfortable with snapping parts together, and discovering just how ridiculously
simple the whole thing really is.
&lt;/p&gt;
&lt;p&gt;
And for the record, once you've done it, go ahead and go back to buying pre-built
systems or laptops—I've never found building a PC to be any cheaper than buying one
pre-built. Particularly for PC systems, I prefer to use smaller local vendors where
I can customize and trick out the box. If you're a Mac, that's not really an option
unless you're into the &amp;quot;Hackintosh&amp;quot; thing, which is quite possibly the logical
equivalent to &amp;quot;Build a PC&amp;quot;. Having never done it myself, though, I can't
say how useful that is as an educational action.
&lt;/p&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;&lt;strong&gt;&lt;em&gt;9: Pick a destination&lt;/em&gt;&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
Do you want to run a team of your own? Become an independent contractor? Teach programming
classes? Speak at conferences? Move up into higher management and get out of the programming
game altogether? Everybody's got a different idea of what they consider to be the
&amp;quot;ideal&amp;quot; career, but it's amazing how many people don't really think about
what they want their career path to be.
&lt;/p&gt;
&lt;p&gt;
A wise man once said, &amp;quot;The journey of a thousand miles begins with a single step.&amp;quot;
I disagree: The journey of a thousand miles begins with the damn map. You have to
know where you want to go, and a rough idea of how to get there, before you can really
start with that single step. Otherwise, you're just wandering, which in itself isn't
a bad thing, but isn't going to get you to a destination except by random chance.
(Sometimes that's not a bad result, but at least then you're openly admitting that
you're leaving your career in the hands of chance. If you're OK with that, skip to
the next item. If you're not, read on.)
&lt;/p&gt;
&lt;p&gt;
Lay out explicitly (as in, write it down someplace) what kind of job you're wanting
to grow into, and then lay out a couple of scenarios that move you closer towards
that goal. Can you grow within the company you're in? (Have others been able to?)
Do you need to quit and strike out on your own? Do you want to lead a team of your
own? (Are there new projects coming in to the company that you could put yourself
forward as a potential tech lead?) And so on.
&lt;/p&gt;
&lt;p&gt;
Once you've identified the destination, now you can start thinking about steps to
get there. 
&lt;/p&gt;
&lt;p&gt;
If you want to become a speaker, put your name forward to give some presentations
at the local technology user group, or volunteer to hold a &amp;quot;brown bag&amp;quot; session
at the company. Sign up with Toastmasters to hone your speaking technique. Watch other
speakers give technical talks, and see what they do that you don't, and vice versa. 
&lt;/p&gt;
&lt;p&gt;
If you want to be a tech lead, start by quietly assisting other members of the team
get their work done. Help them debug thorny problems. Answer questions they have.
Offer yourself up as a resource for dealing with hard problems.
&lt;/p&gt;
&lt;p&gt;
If you want to slowly move up the management chain, look to get into the project management
side of things. Offer to be a point of contact for the users. Learn the business better.
Sit down next to one of your users and watch their interaction with the existing software,
and try to see the system from their point of view.
&lt;/p&gt;
&lt;p&gt;
And so on.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;&lt;em&gt;8: Be a bell curve&lt;/em&gt;&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
Frequently, at conferences, attendees ask me how I got to know so much on so many
things. In some ways, I'm reminded of the story of a world-famous concert pianist
giving a concert at Carnegie Hall—when a gushing fan said, &amp;quot;I'd give my life
to be able to play like that&amp;quot;, the pianist responded quietly, &amp;quot;I did&amp;quot;.
But as much as I'd like to leave you with the impression that I've dedicated my entire
life to knowing everything I could about this industry, that would be something of
a lie. The truth is, I don't know anywhere near as much as I'd like, and I'm always
poking my head into new areas. Thank God for my ADD, that's all I can say on that
one.
&lt;/p&gt;
&lt;p&gt;
For the rest of you, though, that's not feasible, and not really practical, particularly
since I have an advantage that the &amp;quot;working&amp;quot; programmer doesn't—I have set
aside weeks or months in which to do nothing more than study a new technology or language.
&lt;/p&gt;
&lt;p&gt;
Back in the early days of my career, though, when I was holding down the 9-to-5, I
was a Windows/C++ programmer. I was working with the Borland C++ compiler and its
associated framework, the ObjectWindows Library (OWL), extending and maintaining applications
written in it. One contracting client wanted me to work with Microsoft MFC instead
of OWL. Another one was storing data into a relational database using ODBC. And so
on. Slowly, over time, I built up a &amp;quot;bell curve&amp;quot;-looking collection of skills
that sort of &amp;quot;hovered&amp;quot; around the central position of C++/Windows.
&lt;/p&gt;
&lt;p&gt;
Then, one day, a buddy of mine mentioned the team on which he was a project manager
was looking for new blood. They were doing web applications, something with which
I had zero experience—this was completely outside of my bell curve. HTML, HTTP, Cold
Fusion, NetDynamics (an early Java app server), this was way out of my range, though
at least NetDynamics was a &lt;em&gt;little&lt;/em&gt; similar, since it was basically a server-side
application framework, and I had some experience with app frameworks from my C++ days.
So, resting on my C++ experience, I started flirting with Java, and so on.
&lt;/p&gt;
&lt;p&gt;
Before long, my &amp;quot;bell curve&amp;quot; had been readjusted to have Java more or less
at its center, and I found that experience in C++ still worked out here—what I knew
about ODBC turned out to be incredibly useful in understanding JDBC, what I knew about
DLLs from Windows turned out to be helpful in understanding Java's dynamic loading
model, and of course syntactically Java looked a lot like C++ even though it behaved
a little bit differently under the hood. (One article author suggested that Java was
closer to Smalltalk than C++, and that prompted me to briefly flirt with Smalltalk
before I concluded said author was out of his frakking mind.)
&lt;/p&gt;
&lt;p&gt;
All of this happened over roughly a three-year period, by the way.
&lt;/p&gt;
&lt;p&gt;
The point here is that you won't be able to assimilate the entire industry in a single
sitting, so pick something that's relatively close to what you already know, and use
your experience as a springboard to learn something that's new, yet possibly-if-not-probably
useful to your current job. You don't have to be a deep expert in it, and the further
away it is from what you do, the less you really need to know about it (hence the
bell curve metaphor), but you're still exposing yourself to new ideas and new concepts
and new tools/technologies that still could be applicable to what you do on a daily
basis. Over time the &amp;quot;center&amp;quot; of your bell curve may drift away from what
you've done to include new things, and that's OK.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;&lt;em&gt;7: Learn one new thing every year&lt;/em&gt;&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
In the last tip, I told you to branch out slowly from what you know. In this tip,
I'm telling you to go throw a dart at something entirely unfamiliar to you and learn
it. Yes, I realize this sounds contradictory. It's because those who stick to only
what they know end up missing the radical shifts of direction that the industry hits
every half-decade or so until it's mainstream and commonplace and &amp;quot;everybody's
doing it&amp;quot;.
&lt;/p&gt;
&lt;p&gt;
In their amazing book &amp;quot;The Pragmatic Programmer&amp;quot;, Dave Thomas and Andy Hunt
suggest that you learn one new programming language every year. I'm going to amend
that somewhat—not because there aren't enough languages in the world to keep you on
that pace for the rest of your life—far from it, if that's what you want, go learn
Ruby, F#, Scala, Groovy, Clojure, Icon, Io, Erlang, Haskell and Smalltalk, then come
back to me for the list for 2020—but because languages aren't the only thing that
we as developers need to explore. There's a lot of movement going on in areas beyond
languages, and you don't want to be the last kid on the block to know they're happening.
&lt;/p&gt;
&lt;p&gt;
Consider this list: object databases (&lt;a href="http://www.db4o.com" target="_blank"&gt;db4o&lt;/a&gt;)
and/or the &amp;quot;NoSQL&amp;quot; movement (&lt;a href="http://www.mongodb.org/display/DOCS/Tutorial" target="_blank"&gt;MongoDB&lt;/a&gt;).
Dependency injection and composable architectures (&lt;a href="http://www.springframework.org" target="_blank"&gt;Spring&lt;/a&gt;, &lt;a href="http://mef.codeplex.com" target="_blank"&gt;MEF&lt;/a&gt;).
A dynamic language (&lt;a href="http://www.rubyforge.org" target="_blank"&gt;Ruby&lt;/a&gt;, &lt;a href="http://www.python.org" target="_blank"&gt;Python&lt;/a&gt;, &lt;a href="http://www.ecmascript.org" target="_blank"&gt;ECMAScript&lt;/a&gt;).
A functional language (&lt;a href="http://msdn.microsoft.com/en-us/fsharp/default.aspx" target="_blank"&gt;F#&lt;/a&gt;, &lt;a href="http://www.scala-lang.org" target="_blank"&gt;Scala&lt;/a&gt;, &lt;a href="http://www.haskell.org" target="_blank"&gt;Haskell&lt;/a&gt;).
A Lisp (Common Lisp, &lt;a href="http://clojure.org" target="_blank"&gt;Clojure&lt;/a&gt;, Scheme,
Nu). A mobile platform (iPhone, Android). &amp;quot;Space&amp;quot;-based architecture (&lt;a href="http://www.gigaspaces.com" target="_blank"&gt;Gigaspaces&lt;/a&gt;,
Terracotta). Rich UI platforms (Flash/Flex, Silverlight). Browser enhancements (AJAX,
jQuery, HTML 5) and how they're different from the rich UI platforms. And this is
without adding any of the &amp;quot;obvious&amp;quot; stuff, like Cloud, to the list.
&lt;/p&gt;
&lt;p&gt;
(I'm not convinced Cloud is something worth learning this year, anyway.)
&lt;/p&gt;
&lt;p&gt;
You get through that list, you're operating outside of your comfort zone, and chances
are, your boss' comfort zone, which puts you into the enviable position of being somebody
who can advise him around those technologies. &lt;em&gt;DO NOT TAKE THIS TO MEAN YOU MUST
KNOW THEM DEEPLY.&lt;/em&gt; Just having a passing familiarity with them can be enough. &lt;em&gt;DO
NOT TAKE THIS TO MEAN YOU SHOULD PROPOSE USING THEM ON THE NEXT PROJECT.&lt;/em&gt; In fact,
sometimes the most compelling evidence that you really know where and when they should
be used is when you suggest stealing ideas from the thing, rather than trying to force-fit
the thing onto the project as a whole.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;&lt;em&gt;6: Practice, practice, practice&lt;/em&gt;&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
Speaking of the concert pianist, somebody once asked him how to get to Carnegie Hall.
HIs answer: &amp;quot;Practice, my boy, practice.&amp;quot;
&lt;/p&gt;
&lt;p&gt;
The same is true here. You're not going to get to be a better developer without practice.
Volunteer some time—even if it's just an hour a week—on an open-source project, or
start one of your own. Heck, it doesn't even have to be an &amp;quot;open source&amp;quot;
project—just create some requirements of your own, solve a problem that a family member
is having, or rewrite the project you're on as an interesting side-project. Do the
Nike thing and &amp;quot;Just do it&amp;quot;. Write some Scala code. Write some F# code.
Once you're past &amp;quot;hello world&amp;quot;, write the Scala code to use db4o as a persistent
storage. Wire it up behind Tapestry. Or write straight servlets in Scala. And so on.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;&lt;em&gt;5: Turn off the TV&lt;/em&gt;&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
Speaking of marketing slogans, if you're like most Americans, surveys have shown that
you watch about four hours of TV a day, or 28 hours of TV a week. In that same amount
of time (28 hours over 1 week), you could read the entire set of poems by Maya Angelou,
one F. Scott Fitzgerald novel, all poems by T.S.Eliot, 2 plays by Thornton Wilder,
or all 150 Psalms of the Bible. An average reader, reading just one hour a day, can
finish an &amp;quot;average-sized&amp;quot; book (let's assume about the size of a novel)
in a week, which translates to 52 books a year.
&lt;/p&gt;
&lt;p&gt;
Let's assume a technical book is going to take slightly longer, since it's a bit deeper
in concept and requires you to spend some time experimenting and typing in code; let's
assume that reading and going through the exercises of an average technical book will
require 4 weeks (a month) instead of just one week. That's 12 new tools/languages/frameworks/ideas
you'd be learning per year.
&lt;/p&gt;
&lt;p&gt;
All because you stopped watching David Caruso turn to the camera, whip his sunglasses
off and say something stupid. (I guess it's not his fault; &lt;em&gt;CSI:Miami&lt;/em&gt; is a
crap show. The other two are actually not bad, but &lt;em&gt;Miami&lt;/em&gt; just makes me retch.) 
&lt;/p&gt;
&lt;p&gt;
After all, when's the last time that David Caruso or the rest of that show did anything
that was even remotely realistic from a computer perspective? (I always laugh out
loud every time they run a database search against some national database on a completely
non-indexable criteria—like a partial license plate number—and it comes back in seconds.
What the hell database are THEY using? I want it!) Soon as you hear The Who break
into that riff, flip off the TV (or set it to mute) and pick up the book on the nightstand
and boost your career. (And hopefully sink Caruso's.)
&lt;/p&gt;
&lt;p&gt;
Or, if you just can't give up your weekly dose of Caruso, then put the book in the
bathroom. Think about it—how much time do you spend in there a week?
&lt;/p&gt;
&lt;p&gt;
And this gets even better when you get a Kindle or other e-reader that accepts PDFs,
or the book you're interested in is natively supported in the e-readers' format. Now
you have it with you for lunch, waiting at dinner for your food to arrive, or while
you're sitting guard on your 10-year-old so he doesn't sneak out of his room after
his bedtime to play more XBox.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;&lt;em&gt;4: Have a life&lt;/em&gt;&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
Speaking of XBox, don't slave your life to work. Pursue other things. Scientists have
repeatedly discovered that exercise helps keep the mind in shape, so take a couple
of hours a week (buh-bye, &lt;em&gt;American Idol&lt;/em&gt;) and go get some exercise. Pick up
a new sport you've never played before, or just go work out at the gym. (This year
I'm doing Hopkido and fencing.) Read some nontechnical books. (I recommend anything
by Malcolm Gladwell as a starting point.) Spend time with your family, if you have
one—mine spends at least six or seven hours a week playing &amp;quot;family games&amp;quot;
like &lt;a href="http://www.realitycheckgames.com/Products/127-the-settlers-of-catan.aspx" target="_blank"&gt;Settlers
of Catan&lt;/a&gt;, &lt;a href="http://www.realitycheckgames.com/Products/113-dominion.aspx" target="_blank"&gt;Dominion&lt;/a&gt;, &lt;a href="http://www.realitycheckgames.com/Products/88-to-court-the-king.aspx" target="_blank"&gt;To
Court The King&lt;/a&gt;, &lt;a href="http://www.realitycheckgames.com/Products/98-munchkin.aspx" target="_blank"&gt;Munchkin&lt;/a&gt;,
and other non-traditional games, usually over lunch or dinner. I also belong to an
informal &amp;quot;Game Night club&amp;quot; in Redmond consisting of several Microsoft employees
and their families, as well as outsiders. And so on. Heck, go to a local bar and watch
the game, and you'll meet some really interesting people. And some boring people,
too, but you don't have to talk to them during the next game if you don't want.
&lt;/p&gt;
&lt;p&gt;
This isn't just about maintaining a healthy work-life balance—it's also about having
interests that other people can latch on to, qualities that will make you more &amp;quot;human&amp;quot;
and more interesting as a person, and make you more attractive and &amp;quot;connectable&amp;quot;
and stand out better in their mind when they hear that somebody they know is looking
for a software developer. This will also help you connect better with your users,
because like it or not, they do &lt;em&gt;not&lt;/em&gt; get your puns involving Klingon. (Besides,
the geek stereotype is SO 90's, and it's time we let the world know that.)
&lt;/p&gt;
&lt;p&gt;
Besides, you never know when having some depth in other areas—philosophy, music, art,
physics, sports, whatever—will help you create an analogy that will explain some thorny
computer science concept to a non-technical person and get past a communication roadblock.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;&lt;em&gt;3: Practice on a cadaver&lt;/em&gt;&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
Long before they scrub up for their first surgery on a human, medical students practice
on dead bodies. It's grisly, it's not something we really want to think about, but
when you're the one going under the general anesthesia, would you rather see the surgeon
flipping through the &amp;quot;How-To&amp;quot; manual, &amp;quot;just to refresh himself&amp;quot;?
&lt;/p&gt;
&lt;p&gt;
Diagnosing and debugging a software system can be a hugely puzzling trial, largely
because there are so many possible &amp;quot;moving parts&amp;quot; that are creating the
problem. Compound that with certain bugs that only appear when multiple users are
interacting at the same time, and you've got a recipe for disaster when a production
bug suddenly threatens to jeopardize the company's online revenue stream. Do you really
want to be sitting in the production center, flipping through &amp;quot;How-To&amp;quot;'s
and FAQs online while your boss looks on and your CEO is counting every minute by
the thousands of dollars?
&lt;/p&gt;
&lt;p&gt;
Take a tip from the med student: long before the thing goes into production, introduce
a bug, deploy the code into a virtual machine, then hand it over to a buddy and let
him try to track it down. Have him do the same for you. Or if you can't find a buddy
to help you, do it to yourself (but try not to cheat or let your knowledge of where
the bug is color your reactions). How do you know the bug is there? Once you know
it's there, how do you determine what kind of bug it is? Where do you start looking
for it? How would you track it down without attaching a debugger or otherwise disrupting
the system's operations? (Remember, we can't always just attach an IDE and step through
the code on a production server.) How do you patch the running system? And so on.
&lt;/p&gt;
&lt;p&gt;
Remember, you can either learn these things under controlled circumstances, learn
them while you're in the &amp;quot;hot seat&amp;quot;, so to speak, or not learn them at all
and see how long the company keeps you around.
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;&lt;em&gt;2: Administer the system&lt;/em&gt;&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
Take off your developer hat for a while—a week, a month, a quarter, whatever—and be
one of those thankless folks who have to keep the system running. Wear the pager that
goes off at 3AM when a server goes down. Stay all night doing one of those &amp;quot;server
upgrades&amp;quot; that have to be done in the middle of the night because the system
can't be upgraded while users are using it. Answer the phones or chat requests of
those hapless users who can't figure out why they can't find the record they just
entered into the system, and after a half-hour of thinking it must be a bug, ask them
if they remembered to check the &amp;quot;Save this record&amp;quot; checkbox on the UI (which
had to be there because the developers were told it had to be there) before submitting
the form. Try adding a user. Try removing a user. Try changing the user's password.
Learn what a real joy having seven different properties/XML/configuration files scattered
all over the system really is.
&lt;/p&gt;
&lt;p&gt;
Once you've done that, particularly on a system that you built and tossed over the
fence into production and thought that was the end of it, you'll understand just why
it's so important to keep the system administrators in mind when you're building a
system for production. And why it's critical to be able to have a system that tells
you when it's down, instead of having to go hunting up the answer when a VP tells
you it is (usually because he's just gotten an outage message from a customer or client).
&lt;/p&gt;
&lt;h3&gt;&lt;strong&gt;&lt;em&gt;1: Cultivate a peer group&lt;/em&gt;&lt;/strong&gt;
&lt;/h3&gt;
&lt;p&gt;
Yes, you can join an online forum, ask questions, answer questions, and learn that
way, but that's a poor substitute for physical human contact once in a while. Like
it or not, various sociological and psychological studies confirm that a &amp;quot;connection&amp;quot;
is really still best made when eyeballs meet flesh. (The &amp;quot;disassociative&amp;quot;
nature of email is what makes it so easy to be rude or flamboyant or downright violent
in email when we would never say such things in person.) Go to conferences, join a
user group, even start one of your own if you can't find one. Yes, the online avenues
are still open to you—read blogs, join mailing lists or newsgroups—but don't lose
sight of human-to-human contact.
&lt;/p&gt;
&lt;p&gt;
While we're at it, don't create a peer group of people that all look to you for answers—as
flattering as that feels, and as much as we do learn by providing answers, frequently
we rise (or fall) to the level of our peers—have at least one peer group that's overwhelmingly
smarter than you, and as scary as it might be, venture to offer an answer or two to
that group when a question comes up. You don't have to be right—in fact, it's often
vastly more educational to be wrong. Just maintain an attitude that says &amp;quot;I have
no ego wrapped up in being right or wrong&amp;quot;, and take the entire experience as
a learning opportunity.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=4b2137dd-11cc-4ad5-8771-5906f2759273" /&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,4b2137dd-11cc-4ad5-8771-5906f2759273.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>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=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=9eb4738e-4c53-4fbb-bf8e-e8712050c5ec</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,9eb4738e-4c53-4fbb-bf8e-e8712050c5ec.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,9eb4738e-4c53-4fbb-bf8e-e8712050c5ec.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=9eb4738e-4c53-4fbb-bf8e-e8712050c5ec</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Those of you who've seen me speak on Java 7 at various conferences have heard me lament
(in a small way) the fact that Sun decided last year (Dec 2008) to forgo the idea
of including closures in the Java language. Imagine my surprise, then, to check my
Twitter feed and discover that, to everyone's surprise, closures <a href="http://puredanger.com/tech/2009/11/18/closures-after-all/" target="_blank">are
back in as a consideration for the Java7 release</a>.
</p>
        <p>
Several thoughts come to mind:
</p>
        <ul>
          <li>
            <strong>
              <em>"WTF?!?!? This is a community effort?"</em>
            </strong> Originally,
when Sun created the Java Community Process, the tradeoff for a committee-based development
process was against the open and fair inclusion of ideas from outside of Sun. But
with the Java7 release still lacking a JSR (as of a few weeks ago, anyway; I haven't
checked today to see if it was opened), and both the Modules facility and language
extensions deferred to "Projects" (not JSRs), it seems Sun is now abandoning
the JCP in favor of a Sun-dominant process that is certainly solicitous of the community
at large, but not constrained or defined by it. And for the life of me, I can't tell
if this is a good thing or a bad thing. It's good in that now we don't have to garner
a critical mass of community momentum to get something included into the platform
or language, but it's bad in that Sun has historically been the bigger drag on innovation
there, not the community. 
</li>
          <li>
            <strong>
              <em>"Can we please stop calling them closures?"</em>
            </strong> This
is a nit, but technically what we're talking about adding here are either lambda expressions
or anonymous methods, depending on whose glossary you're using when you're talking.
A true closure is one that will compute all referenced variables from the enclosing
scope and automatically include them in the generated code, which (so far as I can
tell) none of the Java anonymous method or lambda expression proposals currently include.
But it's a nit, so I'll say it this once and then drop it. 
</li>
          <li>
            <strong>
              <em>"Will Groovy, Scala, Clojure and all other JVM languages please report
to the refactoring room?"</em>
            </strong> People look at me quizzically when I
say I'd like to see Java have closures in the language, because in general my take
on language features in Java is that the Java language is more or less dead, and I
could care less what happens to it; I'd vastly prefer to code in Groovy or Scala or
Clojure or JRuby before writing something in Java. My rationale for wanting closures
in Java, however, is this: by defining a common <em>implementation</em> for closures
in Java, all of the above languages can refactor their implementations of anonymous
methods/lambda expressions/etc into something that uses Java's closure implementation,
and that'll make calling Groovy anonymous methods from Scala much much easier. 
</li>
          <li>
            <strong>
              <em>"Why there, now?"</em>
            </strong> Devoxx is apparently turning
into JavaOne Winter, because Sun's been making a lot of pretty big announcements at
that show, including last year's "no closures, no built-in XML support, ..."
announcement about Java7, and now this year's "well, we lied, we're thinking
about closures again". Fortunately I think the Devoxx folks have much better
skills at keeping their conference relevant to the Java community than JavaOne's organizers
did. And I say that <em>despite</em> the fact (or perhaps because of the fact) that
I didn't speak there this year. ;-) 
</li>
          <li>
            <strong>
              <em>"When is this all supposed to ship again?"</em>
            </strong> Originally,
my understanding was that JDK7 was slated to ship in the early part of 2010, but now
rumor has it slipping to this time next year (2010). That is a huge postponement,
and gives Microsoft a bit of an edge, since Visual Studio 2010 and .NET 4.0 are (again,
according to rumor) supposed to ship somewhere around the end of 1Q2010. If Sun/Oracle
keeps this up, we could very well be seeing a 2-.NET-releases-to-1-Java-release pattern,
and that's disturbing in its own right. (Anybody else remember the days when Sun withdrew
Java from ECMA, ISO and ANSI standardization consideration because they wanted to
"innovate on the platform faster"?) 
</li>
          <li>
            <strong>
              <em>"We really have no clue what we're talking about."</em>
            </strong> Aside
from rumors and hearsay (including the one that says that Mark Reinhold, who made
the announcement, made up the syntax on the flight from the US to Belgium), we really
don't have much by way of Sun-blessed <em>official</em> discussions of what this will
look like or act like, at least none so far as I've been able to find, so any sort
of supposition on whether it will be good or suck like an inverted hurricane is a
tad premature. Trust me, I want to see where this goes, too, so I'll be keeping an
eye out. 
</li>
        </ul>
        <p>
In the meantime, if you want to keep on top of the Java space, maybe it's time to <a href="http://www.devoxx.com" target="_blank">consider
a trip to Antwerp</a> this time next year, since, if the new ship date rumors are
to be believed,  it looks like Sun (once again) is planning to use Devoxx as
the platform from which to make a large announcement, this time the release Java7
itself.
</p>
        <hr />
        <p>
          <strong>Update:</strong>
          <a href="http://olabini.com" target="_blank">Ola Bini</a> noted
that...
</p>
        <blockquote>
          <p>
Two things:
</p>
          <ul>
            <li>
They are <u>definitely</u> closures. Calling them anonymous functions are incorrect,
since they aren't really functions. Lambda expression is an OK name, but it has connotations
that aren't really correct for a language like Java. A closure is defined as an anonymous
piece of code that closes over at least one free variable, which in the case of this
proposal will definitely happen. In fact, all of these will be closures, since they
will be closing over the this at least. 
</li>
            <li>
This is mostly on the level of compiler, syntax and type checking, and will NOT have
any real implications for runtime. This means there will be no real sharing of implementation
- at most JRuby, Groovy and Scala blocks will implement another interface (but all
of them already implement Runnable and Callable so it's a limited win). 
</li>
          </ul>
        </blockquote>
        <p>
which prompted me to respond thusly:
</p>
        <p>
First off, I actually never used the term "anonymous function"; instead,
I said "anonymous method", which, as I understand it, is how the underlying
implementation of these proposals will work: the syntax "#() return 42"
will create an anonymous inner class instance of an interface defined by the library
(in its "SimpleClosure" example, the BGGA compiler uses the interface "javax.lang.function.I",
which has one method on it, "invoke()"), which, thus, makes this an anonymous
method. We can't call them "anonymous functions" because Java has no function
type, and probably never will. (And yes, it may seem like we're splitting hairs somewhat
to differentiate between functions and methods,but once you've explored ML, Haskell,
Scala, or F#, you really begin to see a huge difference in those terms, so it's important
to be precise with our terminology, or else the conversation becomes almost entirely
meaningless.)
</p>
        <p>
Neal Gafter uses the definition "A closure is a function that captures the bindings
of free variables in its lexical context." (<a href="http://gafter.blogspot.com/2007/01/definition-of-closures.html)">http://gafter.blogspot.com/2007/01/definition-of-closures.html)</a> Given
that said same post also claims that Java has no function type (and therefore, by
his definition, can't really have a closure), I suppose we could split the hairs even
further and suggest that Java will never have closures until it has true function
types. Personally, I'm happy to say that we can swap in "methods" for "functions"
in this particular discussion, but my understanding is that capturing free variables
also implies capturing variables referenced in the enclosing lexical context, which
the current "closures" proposal (as reported by Alex Miller's closures page)
will not do. (Non-final enclosing parameters will not be accessible, only those passed
in formally as parameters. <a href="http://www.jroller.com/scolebourne/entry/closures_in_jdk_7" target="_blank">Stephen
Colebourne</a> reports as much: "[Mark Reinhold] also indicated that access to
non-final variables was unlikely.")
</p>
        <p>
Given that the current proposal suggests the new #() syntax will essentially generate
an anonymous inner class with a method of the appropriate signature (though I do believe
that method handles are targeted for use at some point, based on what I've been hearing
through the rumor mill), to me it feels like the "closures" implementation
is generating an anonymous method of an anonymous class with a few other restrictions
included--hence my commentary above.
</p>
        <p>
(Having said all that, the <a href="http://docs.google.com/View?docid=ddhp95vd_6hg3qhc" target="_blank">FCM
proposal</a> does provide complete capture of all referenced variables in enclosing
scope, but Mark's keynote hasn't officially endorsed either the BGGA proposal or the
FCM proposal, and if Sun keeps to their habits, they won't. They'll build something
that's an amalgamation of all of them. Right now the current consensus seems to be
to adopt the BGGA implementation behind the FCM syntax, which jives with Neal's 0.6a
specification proposal.)
</p>
        <p>
On top of that, the comment "all of these will be closures, since they will be
closing over the this at least" is not, I don't think, entirely true. The details
of the closures proposal aren't clear, but the "outer this" (which I believe
is the "this" Ola refers to above) hasn't been explicitly mentioned in any
of the closures proposals I've seen, nor have I seen any text suggesting that they
will honor it, so I don't know that this is true. Of course, in absence of a specification
or real working bits, all we can do is just speculate. However, having said that,
playing around a bit with the BGGA prototype compiler (which, admittedly, is still
one minor rev back from Neal's revised proposal), I saw no generated "outer this"
in the generated code for the generated inner class implementation of the closure.
If the comment above is meant to refer to the "this" of the inner class
instance, then that would make all methods of an object-oriented language that provided
an implicit "this" a closure, and somehow I doubt that's what Ola means,
though I could, as always, be wrong.
</p>
        <p>
As for the runtime implementation, as I said earlier I believe the plan is to use
method handles (already on the table for JDK 7), which do have some runtime implications
(generally good ones, from what I can tell so far), but not beyond what was already
on the table for 7.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=9eb4738e-4c53-4fbb-bf8e-e8712050c5ec" />
        <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>Closures are back again!</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,9eb4738e-4c53-4fbb-bf8e-e8712050c5ec.aspx</guid>
      <link>http://blogs.tedneward.com/2009/11/19/Closures+Are+Back+Again.aspx</link>
      <pubDate>Thu, 19 Nov 2009 08:10:11 GMT</pubDate>
      <description>&lt;p&gt;
Those of you who've seen me speak on Java 7 at various conferences have heard me lament
(in a small way) the fact that Sun decided last year (Dec 2008) to forgo the idea
of including closures in the Java language. Imagine my surprise, then, to check my
Twitter feed and discover that, to everyone's surprise, closures &lt;a href="http://puredanger.com/tech/2009/11/18/closures-after-all/" target="_blank"&gt;are
back in as a consideration for the Java7 release&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Several thoughts come to mind:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&amp;quot;WTF?!?!? This is a community effort?&amp;quot;&lt;/em&gt;&lt;/strong&gt; Originally,
when Sun created the Java Community Process, the tradeoff for a committee-based development
process was against the open and fair inclusion of ideas from outside of Sun. But
with the Java7 release still lacking a JSR (as of a few weeks ago, anyway; I haven't
checked today to see if it was opened), and both the Modules facility and language
extensions deferred to &amp;quot;Projects&amp;quot; (not JSRs), it seems Sun is now abandoning
the JCP in favor of a Sun-dominant process that is certainly solicitous of the community
at large, but not constrained or defined by it. And for the life of me, I can't tell
if this is a good thing or a bad thing. It's good in that now we don't have to garner
a critical mass of community momentum to get something included into the platform
or language, but it's bad in that Sun has historically been the bigger drag on innovation
there, not the community. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&amp;quot;Can we please stop calling them closures?&amp;quot;&lt;/em&gt;&lt;/strong&gt; This
is a nit, but technically what we're talking about adding here are either lambda expressions
or anonymous methods, depending on whose glossary you're using when you're talking.
A true closure is one that will compute all referenced variables from the enclosing
scope and automatically include them in the generated code, which (so far as I can
tell) none of the Java anonymous method or lambda expression proposals currently include.
But it's a nit, so I'll say it this once and then drop it. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&amp;quot;Will Groovy, Scala, Clojure and all other JVM languages please report
to the refactoring room?&amp;quot;&lt;/em&gt;&lt;/strong&gt; People look at me quizzically when I
say I'd like to see Java have closures in the language, because in general my take
on language features in Java is that the Java language is more or less dead, and I
could care less what happens to it; I'd vastly prefer to code in Groovy or Scala or
Clojure or JRuby before writing something in Java. My rationale for wanting closures
in Java, however, is this: by defining a common &lt;em&gt;implementation&lt;/em&gt; for closures
in Java, all of the above languages can refactor their implementations of anonymous
methods/lambda expressions/etc into something that uses Java's closure implementation,
and that'll make calling Groovy anonymous methods from Scala much much easier. 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&amp;quot;Why there, now?&amp;quot;&lt;/em&gt;&lt;/strong&gt; Devoxx is apparently turning
into JavaOne Winter, because Sun's been making a lot of pretty big announcements at
that show, including last year's &amp;quot;no closures, no built-in XML support, ...&amp;quot;
announcement about Java7, and now this year's &amp;quot;well, we lied, we're thinking
about closures again&amp;quot;. Fortunately I think the Devoxx folks have much better
skills at keeping their conference relevant to the Java community than JavaOne's organizers
did. And I say that &lt;em&gt;despite&lt;/em&gt; the fact (or perhaps because of the fact) that
I didn't speak there this year. ;-) 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&amp;quot;When is this all supposed to ship again?&amp;quot;&lt;/em&gt;&lt;/strong&gt; Originally,
my understanding was that JDK7 was slated to ship in the early part of 2010, but now
rumor has it slipping to this time next year (2010). That is a huge postponement,
and gives Microsoft a bit of an edge, since Visual Studio 2010 and .NET 4.0 are (again,
according to rumor) supposed to ship somewhere around the end of 1Q2010. If Sun/Oracle
keeps this up, we could very well be seeing a 2-.NET-releases-to-1-Java-release pattern,
and that's disturbing in its own right. (Anybody else remember the days when Sun withdrew
Java from ECMA, ISO and ANSI standardization consideration because they wanted to
&amp;quot;innovate on the platform faster&amp;quot;?) 
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;em&gt;&amp;quot;We really have no clue what we're talking about.&amp;quot;&lt;/em&gt;&lt;/strong&gt; Aside
from rumors and hearsay (including the one that says that Mark Reinhold, who made
the announcement, made up the syntax on the flight from the US to Belgium), we really
don't have much by way of Sun-blessed &lt;em&gt;official&lt;/em&gt; discussions of what this will
look like or act like, at least none so far as I've been able to find, so any sort
of supposition on whether it will be good or suck like an inverted hurricane is a
tad premature. Trust me, I want to see where this goes, too, so I'll be keeping an
eye out. 
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
In the meantime, if you want to keep on top of the Java space, maybe it's time to &lt;a href="http://www.devoxx.com" target="_blank"&gt;consider
a trip to Antwerp&lt;/a&gt; this time next year, since, if the new ship date rumors are
to be believed,&amp;#160; it looks like Sun (once again) is planning to use Devoxx as
the platform from which to make a large announcement, this time the release Java7
itself.
&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; &lt;a href="http://olabini.com" target="_blank"&gt;Ola Bini&lt;/a&gt; noted
that...
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Two things:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
They are &lt;u&gt;definitely&lt;/u&gt; closures. Calling them anonymous functions are incorrect,
since they aren't really functions. Lambda expression is an OK name, but it has connotations
that aren't really correct for a language like Java. A closure is defined as an anonymous
piece of code that closes over at least one free variable, which in the case of this
proposal will definitely happen. In fact, all of these will be closures, since they
will be closing over the this at least. 
&lt;/li&gt;
&lt;li&gt;
This is mostly on the level of compiler, syntax and type checking, and will NOT have
any real implications for runtime. This means there will be no real sharing of implementation
- at most JRuby, Groovy and Scala blocks will implement another interface (but all
of them already implement Runnable and Callable so it's a limited win). 
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
which prompted me to respond thusly:
&lt;/p&gt;
&lt;p&gt;
First off, I actually never used the term &amp;quot;anonymous function&amp;quot;; instead,
I said &amp;quot;anonymous method&amp;quot;, which, as I understand it, is how the underlying
implementation of these proposals will work: the syntax &amp;quot;#() return 42&amp;quot;
will create an anonymous inner class instance of an interface defined by the library
(in its &amp;quot;SimpleClosure&amp;quot; example, the BGGA compiler uses the interface &amp;quot;javax.lang.function.I&amp;quot;,
which has one method on it, &amp;quot;invoke()&amp;quot;), which, thus, makes this an anonymous
method. We can't call them &amp;quot;anonymous functions&amp;quot; because Java has no function
type, and probably never will. (And yes, it may seem like we're splitting hairs somewhat
to differentiate between functions and methods,but once you've explored ML, Haskell,
Scala, or F#, you really begin to see a huge difference in those terms, so it's important
to be precise with our terminology, or else the conversation becomes almost entirely
meaningless.)
&lt;/p&gt;
&lt;p&gt;
Neal Gafter uses the definition &amp;quot;A closure is a function that captures the bindings
of free variables in its lexical context.&amp;quot; (&lt;a href="http://gafter.blogspot.com/2007/01/definition-of-closures.html)"&gt;http://gafter.blogspot.com/2007/01/definition-of-closures.html)&lt;/a&gt; Given
that said same post also claims that Java has no function type (and therefore, by
his definition, can't really have a closure), I suppose we could split the hairs even
further and suggest that Java will never have closures until it has true function
types. Personally, I'm happy to say that we can swap in &amp;quot;methods&amp;quot; for &amp;quot;functions&amp;quot;
in this particular discussion, but my understanding is that capturing free variables
also implies capturing variables referenced in the enclosing lexical context, which
the current &amp;quot;closures&amp;quot; proposal (as reported by Alex Miller's closures page)
will not do. (Non-final enclosing parameters will not be accessible, only those passed
in formally as parameters. &lt;a href="http://www.jroller.com/scolebourne/entry/closures_in_jdk_7" target="_blank"&gt;Stephen
Colebourne&lt;/a&gt; reports as much: &amp;quot;[Mark Reinhold] also indicated that access to
non-final variables was unlikely.&amp;quot;)
&lt;/p&gt;
&lt;p&gt;
Given that the current proposal suggests the new #() syntax will essentially generate
an anonymous inner class with a method of the appropriate signature (though I do believe
that method handles are targeted for use at some point, based on what I've been hearing
through the rumor mill), to me it feels like the &amp;quot;closures&amp;quot; implementation
is generating an anonymous method of an anonymous class with a few other restrictions
included--hence my commentary above.
&lt;/p&gt;
&lt;p&gt;
(Having said all that, the &lt;a href="http://docs.google.com/View?docid=ddhp95vd_6hg3qhc" target="_blank"&gt;FCM
proposal&lt;/a&gt; does provide complete capture of all referenced variables in enclosing
scope, but Mark's keynote hasn't officially endorsed either the BGGA proposal or the
FCM proposal, and if Sun keeps to their habits, they won't. They'll build something
that's an amalgamation of all of them. Right now the current consensus seems to be
to adopt the BGGA implementation behind the FCM syntax, which jives with Neal's 0.6a
specification proposal.)
&lt;/p&gt;
&lt;p&gt;
On top of that, the comment &amp;quot;all of these will be closures, since they will be
closing over the this at least&amp;quot; is not, I don't think, entirely true. The details
of the closures proposal aren't clear, but the &amp;quot;outer this&amp;quot; (which I believe
is the &amp;quot;this&amp;quot; Ola refers to above) hasn't been explicitly mentioned in any
of the closures proposals I've seen, nor have I seen any text suggesting that they
will honor it, so I don't know that this is true. Of course, in absence of a specification
or real working bits, all we can do is just speculate. However, having said that,
playing around a bit with the BGGA prototype compiler (which, admittedly, is still
one minor rev back from Neal's revised proposal), I saw no generated &amp;quot;outer this&amp;quot;
in the generated code for the generated inner class implementation of the closure.
If the comment above is meant to refer to the &amp;quot;this&amp;quot; of the inner class
instance, then that would make all methods of an object-oriented language that provided
an implicit &amp;quot;this&amp;quot; a closure, and somehow I doubt that's what Ola means,
though I could, as always, be wrong.
&lt;/p&gt;
&lt;p&gt;
As for the runtime implementation, as I said earlier I believe the plan is to use
method handles (already on the table for JDK 7), which do have some runtime implications
(generally good ones, from what I can tell so far), but not beyond what was already
on the table for 7.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=9eb4738e-4c53-4fbb-bf8e-e8712050c5ec" /&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,9eb4738e-4c53-4fbb-bf8e-e8712050c5ec.aspx</comments>
      <category>Conferences</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Ruby</category>
      <category>Scala</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=f9d4f3dc-bf96-4f4b-8794-6a053ab2d7da</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,f9d4f3dc-bf96-4f4b-8794-6a053ab2d7da.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,f9d4f3dc-bf96-4f4b-8794-6a053ab2d7da.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f9d4f3dc-bf96-4f4b-8794-6a053ab2d7da</wfw:commentRss>
      <slash:comments>12</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Phil Haack wrote <a href="http://haacked.com/archive/2009/10/13/software-externalities.aspx" target="_blank">a
thoughtful, insightful and absolutely correct response</a> to <a href="http://blogs.tedneward.com/2009/10/12/quotAgile+Is+Treating+The+Symptoms+Not+The+Diseasequot.aspx" target="_blank">my
earlier blog post</a>. But he's still missing the point.
</p>
        <p>
The short version: Phil's right when he says, "<strong>Agile is less about managing
the complexity of an application itself and more about managing the complexity of
building an application</strong>." Agile is by far the best approach to take
when building complex software. 
</p>
        <p>
But that's not where I'm going with this. 
</p>
        <p>
As a starting point in the discussion, I'd like to call attention to one of Phil's
sidebars: I find it curious (and indicative of the larger point) his earlier comment
about "<em>I have to wonder, why is that little school district in western Pennsylvania
engaging in custom software development in the first place?</em>" At what point
does standing a small Access database up qualify as "custom software development"?
And I take <em>huge</em> issue with Phil's comment immediately thereafter: ""
That's totally untrue, Phil—you are, in fact, creating custom educational curricula,
for your children at home. Not for popular usage, not for commercial use, but clearly
you're educating your children at home, because you'd be a pretty crappy parent if
you didn't. You also practice an informal form of medicine ("Let me kiss the
boo-boo"), psychology ("Now, come on, share the truck"), culinary arts
("Would you like mac and cheese tonight?"), acting ("Aaar! I'm the
Tickle Monster!") and a vastly larger array of "professional" skills
that any of the "professionals" will do vastly better than you.
</p>
        <p>
In other words, you're not a professional actor/chef/shrink/doctor, you're an amateur
one, and you want tools that let you practice your amateur "professions"
as you wish, without requiring the skills and trappings (and overhead) of a professional
in the same arena.
</p>
        <p>
Consider this, Phil: your child decides it's time to have a puppy. (We all know the
kids are the ones who make these choices, not us, right?) So, being the conscientious
parent that you are, you decide to build a doghouse for the new puppy to use to sleep
outdoors (forgetting, as all parents do, that the puppy will actually end up sleeping
in the bed with your child, but that's another discussion for another day). So immediately
you head on down to Home Depot, grab some lumber, some nails, maybe a hammer and a
screwdriver, some paint, and head on home.
</p>
        <p>
Whoa, there, turbo. Aren't you forgetting a few things? For starters, you need to
get the concrete for the foundation, rebar to support the concrete in the event of
a bad earthquake, drywall, fire extinguishers, sirens for the emergency exit doors...
And of course, you'll need a foreman to coordinate all the work, to make sure the
foundation is poured before the carpenters show up to put up the trusses, which in
turn has to happen before the drywall can go up...
</p>
        <p>
We in this industry have a jealous and irrational attitude towards the amateur software
developer. This was even apparent in the Twitter comments that accompanied the conversation
around my blog post: "@<a href="http://twitter.com/tedneward">tedneward</a> treating
the disease would mean... have the client have all their ideas correct from the start"
(from <a href="http://twitter.com/kelps/statuses/4839762645" target="_blank">@kelps</a>).
In other words, "bad client! No biscuit!"?
</p>
        <p>
Why is it that we, IT professionals, consider anything that involves doing something
other than simply putting content into an application to be "custom software
development"? Why can't end-users create tools of their own to solve their own
problems at a scale appropriate to their local problem?
</p>
        <p>
Phil offers a few examples of why end-users creating their own tools is a Bad Idea:
</p>
        <blockquote>
          <p>
I remember one rescue operation for a company drowning in the complexity of a “simple”
Access application they used to run their business. It was simple until they started
adding new business processes they needed to track. It was simple until they started <em>emailing
copies around </em>and were unsure which was the “master copy”. Not to mention all
the data integrity issues and difficulty in changing the monolithic procedural application
code.
</p>
        </blockquote>
        <blockquote>
          <p>
I also remember helping a teachers union who started off with a simple attendance
tracker style app (to use an example Ted mentions) and just scaled it up to an atrociously
complex Access database with stranded data and manual processes where they printed
excel spreadsheets to paper, then manually entered it into another application.
</p>
        </blockquote>
        <p>
And you know what? 
</p>
        <p>
This is not a bad state of affairs. 
</p>
        <p>
Oh, of course, we, the IT professionals, will immediately pounce on all the things
wrong with their attempts to extend the once-simple application/solution in ways beyond
its capabilities, and we will scoff at their solutions, but you know what? That just
speaks to our insecurities, not the effort expended. You think Wolfgang Puck isn't
going to throw back his head and roar at my lame attempts at culinary experimentation?
You think Frank Lloyd Wright wouldn't cringe in horror at my cobbled-together doghouse?
And I'll bet Maya Angelou will be so shocked at the ugliness of my poetry that she'll
post it somewhere on the "So You Think You're A Poet" website.
</p>
        <p>
Does that mean I need to abandon my efforts to all of these things?
</p>
        <p>
The agilists' community reaction to my post would seem to imply so. "If you aren't
a professional, don't even attempt this?" Really? Is that the message we're preaching
these days?
</p>
        <p>
End users have just as much a desire and right to be amateur software developers as
we do at being amateur cooks, photographers, poets, construction foremen, and musicians.
And what do you do when you want to add an addition to your house instead of just
building a doghouse? Or when you want to cook for several hundred people instead of
just your family?
</p>
        <p>
You hire a professional, and let them do the project professionally.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=f9d4f3dc-bf96-4f4b-8794-6a053ab2d7da" />
        <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>Haacked, but not content; agile still treats the disease</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,f9d4f3dc-bf96-4f4b-8794-6a053ab2d7da.aspx</guid>
      <link>http://blogs.tedneward.com/2009/10/13/Haacked+But+Not+Content+Agile+Still+Treats+The+Disease.aspx</link>
      <pubDate>Tue, 13 Oct 2009 20:42:22 GMT</pubDate>
      <description>&lt;p&gt;
Phil Haack wrote &lt;a href="http://haacked.com/archive/2009/10/13/software-externalities.aspx" target="_blank"&gt;a
thoughtful, insightful and absolutely correct response&lt;/a&gt; to &lt;a href="http://blogs.tedneward.com/2009/10/12/quotAgile+Is+Treating+The+Symptoms+Not+The+Diseasequot.aspx" target="_blank"&gt;my
earlier blog post&lt;/a&gt;. But he's still missing the point.
&lt;/p&gt;
&lt;p&gt;
The short version: Phil's right when he says, &amp;quot;&lt;strong&gt;Agile is less about managing
the complexity of an application itself and more about managing the complexity of
building an application&lt;/strong&gt;.&amp;quot; Agile is by far the best approach to take
when building complex software. 
&lt;/p&gt;
&lt;p&gt;
But that's not where I'm going with this. 
&lt;/p&gt;
&lt;p&gt;
As a starting point in the discussion, I'd like to call attention to one of Phil's
sidebars: I find it curious (and indicative of the larger point) his earlier comment
about &amp;quot;&lt;em&gt;I have to wonder, why is that little school district in western Pennsylvania
engaging in custom software development in the first place?&lt;/em&gt;&amp;quot; At what point
does standing a small Access database up qualify as &amp;quot;custom software development&amp;quot;?
And I take &lt;em&gt;huge&lt;/em&gt; issue with Phil's comment immediately thereafter: &amp;quot;&amp;quot;
That's totally untrue, Phil—you are, in fact, creating custom educational curricula,
for your children at home. Not for popular usage, not for commercial use, but clearly
you're educating your children at home, because you'd be a pretty crappy parent if
you didn't. You also practice an informal form of medicine (&amp;quot;Let me kiss the
boo-boo&amp;quot;), psychology (&amp;quot;Now, come on, share the truck&amp;quot;), culinary arts
(&amp;quot;Would you like mac and cheese tonight?&amp;quot;), acting (&amp;quot;Aaar! I'm the
Tickle Monster!&amp;quot;) and a vastly larger array of &amp;quot;professional&amp;quot; skills
that any of the &amp;quot;professionals&amp;quot; will do vastly better than you.
&lt;/p&gt;
&lt;p&gt;
In other words, you're not a professional actor/chef/shrink/doctor, you're an amateur
one, and you want tools that let you practice your amateur &amp;quot;professions&amp;quot;
as you wish, without requiring the skills and trappings (and overhead) of a professional
in the same arena.
&lt;/p&gt;
&lt;p&gt;
Consider this, Phil: your child decides it's time to have a puppy. (We all know the
kids are the ones who make these choices, not us, right?) So, being the conscientious
parent that you are, you decide to build a doghouse for the new puppy to use to sleep
outdoors (forgetting, as all parents do, that the puppy will actually end up sleeping
in the bed with your child, but that's another discussion for another day). So immediately
you head on down to Home Depot, grab some lumber, some nails, maybe a hammer and a
screwdriver, some paint, and head on home.
&lt;/p&gt;
&lt;p&gt;
Whoa, there, turbo. Aren't you forgetting a few things? For starters, you need to
get the concrete for the foundation, rebar to support the concrete in the event of
a bad earthquake, drywall, fire extinguishers, sirens for the emergency exit doors...
And of course, you'll need a foreman to coordinate all the work, to make sure the
foundation is poured before the carpenters show up to put up the trusses, which in
turn has to happen before the drywall can go up...
&lt;/p&gt;
&lt;p&gt;
We in this industry have a jealous and irrational attitude towards the amateur software
developer. This was even apparent in the Twitter comments that accompanied the conversation
around my blog post: &amp;quot;@&lt;a href="http://twitter.com/tedneward"&gt;tedneward&lt;/a&gt; treating
the disease would mean... have the client have all their ideas correct from the start&amp;quot;
(from &lt;a href="http://twitter.com/kelps/statuses/4839762645" target="_blank"&gt;@kelps&lt;/a&gt;).
In other words, &amp;quot;bad client! No biscuit!&amp;quot;?
&lt;/p&gt;
&lt;p&gt;
Why is it that we, IT professionals, consider anything that involves doing something
other than simply putting content into an application to be &amp;quot;custom software
development&amp;quot;? Why can't end-users create tools of their own to solve their own
problems at a scale appropriate to their local problem?
&lt;/p&gt;
&lt;p&gt;
Phil offers a few examples of why end-users creating their own tools is a Bad Idea:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
I remember one rescue operation for a company drowning in the complexity of a “simple”
Access application they used to run their business. It was simple until they started
adding new business processes they needed to track. It was simple until they started &lt;em&gt;emailing
copies around &lt;/em&gt;and were unsure which was the “master copy”. Not to mention all
the data integrity issues and difficulty in changing the monolithic procedural application
code.
&lt;/p&gt;
&lt;/blockquote&gt; &lt;blockquote&gt; 
&lt;p&gt;
I also remember helping a teachers union who started off with a simple attendance
tracker style app (to use an example Ted mentions) and just scaled it up to an atrociously
complex Access database with stranded data and manual processes where they printed
excel spreadsheets to paper, then manually entered it into another application.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
And you know what? 
&lt;/p&gt;
&lt;p&gt;
This is not a bad state of affairs. 
&lt;/p&gt;
&lt;p&gt;
Oh, of course, we, the IT professionals, will immediately pounce on all the things
wrong with their attempts to extend the once-simple application/solution in ways beyond
its capabilities, and we will scoff at their solutions, but you know what? That just
speaks to our insecurities, not the effort expended. You think Wolfgang Puck isn't
going to throw back his head and roar at my lame attempts at culinary experimentation?
You think Frank Lloyd Wright wouldn't cringe in horror at my cobbled-together doghouse?
And I'll bet Maya Angelou will be so shocked at the ugliness of my poetry that she'll
post it somewhere on the &amp;quot;So You Think You're A Poet&amp;quot; website.
&lt;/p&gt;
&lt;p&gt;
Does that mean I need to abandon my efforts to all of these things?
&lt;/p&gt;
&lt;p&gt;
The agilists' community reaction to my post would seem to imply so. &amp;quot;If you aren't
a professional, don't even attempt this?&amp;quot; Really? Is that the message we're preaching
these days?
&lt;/p&gt;
&lt;p&gt;
End users have just as much a desire and right to be amateur software developers as
we do at being amateur cooks, photographers, poets, construction foremen, and musicians.
And what do you do when you want to add an addition to your house instead of just
building a doghouse? Or when you want to cook for several hundred people instead of
just your family?
&lt;/p&gt;
&lt;p&gt;
You hire a professional, and let them do the project professionally.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=f9d4f3dc-bf96-4f4b-8794-6a053ab2d7da" /&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,f9d4f3dc-bf96-4f4b-8794-6a053ab2d7da.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>Ruby</category>
      <category>Scala</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=53f9b658-3b27-4f1a-b93e-14d3a57a8ec1</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,53f9b658-3b27-4f1a-b93e-14d3a57a8ec1.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,53f9b658-3b27-4f1a-b93e-14d3a57a8ec1.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=53f9b658-3b27-4f1a-b93e-14d3a57a8ec1</wfw:commentRss>
      <slash:comments>35</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The above quote was tossed off by Billy Hollis at the patterns&amp;practices Summit
this week in Redmond. I passed the quote out to the Twitter masses, along with my
+1, and predictably, the comments started coming in shortly thereafter. Rather than
limit the thoughts to the 120 or so characters that Twitter limits us to, I thought
this subject deserved some greater expansion.
</p>
        <p>
But before I do, let me try (badly) to paraphrase the lightning talk that Billy gave
here, which sets context for the discussion:
</p>
        <ul>
          <li>
Keeping track of all the stuff Microsoft is releasing is hard work: LINQ, EF, Silverlight,
ASP.NET MVC, Enterprise Library, Azure, Prism, Sparkle, MEF, WCF, WF, WPF, InfoCard,
CardSpace, the list goes on and on, and frankly, nobody (and I mean nobody) can track
it all.</li>
          <li>
Microsoft released all this stuff because they were chasing the "enterprise"
part of the developer/business curve, as opposed to the "long tail" part
of the curve that they used to chase down. They did this because they believed that
this was good business practice—like banks, "enterprises are where the money
is". (If you're not familiar with this curve, imagine a graph with a single curve
asymptotically reaching for both axes, where Y is the number of developers on the
project, and X is the number of projects. What you get is a curve of a few high-developer-population
projects on the left, to a large number of projects with just 1 or 2 developers. This
right-hand portion of the curve is known as "the long tail" of the software
industry.)</li>
          <li>
A lot of software written back in the 90's was written by 1 or 2 guys working for
just a few months to slam something out and see if it was useful. What chances do
those kinds of projects have today? What tools would you use to build them?</li>
          <li>
The problem is the complexity of the tools we have available to us today preclude
that kind of software development.</li>
          <li>
Agile doesn't solve this problem—the agile movement suggests that we have to create
story cards, we have to build unit tests, we have to have a continuous integration
server, we have to have standup meetings every day, .... In short, particularly among
the agile evangelists (by which we really mean <em>zealots</em>), if you aren't doing
a full agile process, you are simply failing. <em>(If this is true, how on earth did
all those thousands of applications written in FoxPro or Access ever manage to succeed?
–-Me)</em> At one point, an agilist said point-blank, "If you don't do agile,
what happens when your project reaches a thousand users?" As Billy put it, "Think
about that for a second: This agile guy is <em>threatening</em> us with success."</li>
          <li>
Agile is for managing complexity. What we need is to recognize that there is a place
for outright simplicity instead.</li>
        </ul>
        <p>
By the way, let me say this out loud: if you have not heard Billy Hollis speak, you
should. Even if you're a Java or Ruby developer, you should listen to what he has
to say. He's been developing software for a long time, has seen a lot of these technology-industry
trends come and go, and even if you disagree with him, you need to listen to him.
</p>
        <p>
Let me rephrase Billy's talk this way:
</p>
        <blockquote>
          <p>
            <em>Where is this decade's Access?</em>
          </p>
        </blockquote>
        <p>
It may seem like a snarky and trolling question, but think about it for a moment:
for a decade or so, I was brought into project after project that was designed to
essentially rebuild/rearchitect the Access database created by one of the department's
more tech-savvy employees into something that could scale beyond just the department. 
</p>
        <blockquote>
          <p>
            <em>(Actually, in about half of them, the goal wasn't even to scale it up, it was
just to put it on the web. It was only in the subsequent meetings and discussions
that the issues of scale came up, and if my memory is accurate, I was the one who
raised those issues, not the customer. I wonder now, looking back at it, if that was
pure gold-plating on my part.)</em>
          </p>
        </blockquote>
        <p>
Others, including many people I care about (Rod Paddock, Markus Eggers, Ken Levy,
Cathi Gero, for starters) made a healthy living off of building "line of business"
applications in FoxPro, which Microsoft has now officially shut down. For those who
did Office applications, Visual Basic for Applications has now been officially deprecated
in favor of VSTO (Visual Studio Tools for Office), a set of libraries that are available
for use by any .NET application language, and of course classic Visual Basic itself
has been "brought into the fold" by making it a fully-fledged object-oriented
language complete with XML literals and LINQ query capabilities.
</p>
        <p>
Which means, if somebody working for a small school district in western Pennsylvania
wants to build a simple application for tracking students' attendance (rather than
tracking it on paper anymore), what do they do?
</p>
        <p>
Bruce Tate alluded to this in his <em>Beyond Java</em>, based on the realization that
the Java space was no better—to bring a college/university student up to speed on
all the necessary technologies required of a "productive" Java developer,
he calculated at least five or six weeks of training was required. And that's not
a bad estimate, and might even be a bit on the shortened side. You can maybe get away
with less if they're joining a team which collectively has these skills distributed
across the entire team, but if we're talking about a standalone developer who's going
to be building software by himself, it's a pretty impressive list. Here's my back-of-the-envelope
calculations:
</p>
        <ul>
          <li>
Week one: Java language. (Nobody ever comes out of college knowing all the Java language
they need.)</li>
          <li>
Week two: Java virtual machine: threading/concurrency, ClassLoaders, Serialization,
RMI, XML parsing, reference types (weak, soft, phantom).</li>
          <li>
Week three: Infrastructure: Ant, JUnit, continuous integration, Spring.</li>
          <li>
Week four: Data access: JDBC, Hibernate. (Yes, I think you need a full week on Hibernate
to be able to use it effectively.)</li>
          <li>
Week five: Web: HTTP, HTML, servlets, filters, servlet context and listeners, JSP,
model-view-controller, and probably some Ajax to boot.</li>
        </ul>
        <p>
I could go on (seriously! no JMS? no REST? no Web services?), but you get the point.
And lest the .NET community start feeling complacent, put together a similar list
for the standalone .NET developer, and you'll come out to something pretty equivalent.
(Just look at the <a href="http://www.pluralsight.com/main/ilt/Courses.aspx" target="_blank">Pluralsight
list of courses</a>—name the <em>one</em> course you would give that college kid to
bring him up to speed. Stumped? Don't feel bad—I can't, either. And it's not them—pick
on any of the training companies.)
</p>
        <p>
Now throw agile into that mix: <em>how does an agile process reduce the complexity
load?</em> And the answer, of course, is that it doesn't—it simply tries to muddle
through as best it can, by doing all of the things that developers need to be doing:
gathering as much feedback from every corner of their world as they can, through tests,
customer interaction, and frequent releases. <em>All of which is good</em>. I'm <em>not</em> here
to suggest that we should all give up agile and immediately go back to waterfall and
Big Design Up Front. Anybody who uses Billy's quote as a sound bite to suggest that
is a subversive and a terrorist and should have their arguments refuted with <em>extreme
prejudice</em>.
</p>
        <p>
But agile is not going to reduce the technology complexity load, which is the root
cause of the problem.
</p>
        <p>
Or, perhaps, let me ask it this way: your 16-year-old wants to build a system to track
the cards in his Magic deck. What language do you teach him?
</p>
        <p>
We are in <em>desperate</em> need of simplicity in this industry. Whoever gets that,
and gets it right, defines the "Next Big Thing".
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=53f9b658-3b27-4f1a-b93e-14d3a57a8ec1" />
        <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;Agile is treating the symptoms, not the disease&amp;quot;</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,53f9b658-3b27-4f1a-b93e-14d3a57a8ec1.aspx</guid>
      <link>http://blogs.tedneward.com/2009/10/12/quotAgile+Is+Treating+The+Symptoms+Not+The+Diseasequot.aspx</link>
      <pubDate>Mon, 12 Oct 2009 23:51:39 GMT</pubDate>
      <description>&lt;p&gt;
The above quote was tossed off by Billy Hollis at the patterns&amp;amp;practices Summit
this week in Redmond. I passed the quote out to the Twitter masses, along with my
+1, and predictably, the comments started coming in shortly thereafter. Rather than
limit the thoughts to the 120 or so characters that Twitter limits us to, I thought
this subject deserved some greater expansion.
&lt;/p&gt;
&lt;p&gt;
But before I do, let me try (badly) to paraphrase the lightning talk that Billy gave
here, which sets context for the discussion:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Keeping track of all the stuff Microsoft is releasing is hard work: LINQ, EF, Silverlight,
ASP.NET MVC, Enterprise Library, Azure, Prism, Sparkle, MEF, WCF, WF, WPF, InfoCard,
CardSpace, the list goes on and on, and frankly, nobody (and I mean nobody) can track
it all.&lt;/li&gt;
&lt;li&gt;
Microsoft released all this stuff because they were chasing the &amp;quot;enterprise&amp;quot;
part of the developer/business curve, as opposed to the &amp;quot;long tail&amp;quot; part
of the curve that they used to chase down. They did this because they believed that
this was good business practice—like banks, &amp;quot;enterprises are where the money
is&amp;quot;. (If you're not familiar with this curve, imagine a graph with a single curve
asymptotically reaching for both axes, where Y is the number of developers on the
project, and X is the number of projects. What you get is a curve of a few high-developer-population
projects on the left, to a large number of projects with just 1 or 2 developers. This
right-hand portion of the curve is known as &amp;quot;the long tail&amp;quot; of the software
industry.)&lt;/li&gt;
&lt;li&gt;
A lot of software written back in the 90's was written by 1 or 2 guys working for
just a few months to slam something out and see if it was useful. What chances do
those kinds of projects have today? What tools would you use to build them?&lt;/li&gt;
&lt;li&gt;
The problem is the complexity of the tools we have available to us today preclude
that kind of software development.&lt;/li&gt;
&lt;li&gt;
Agile doesn't solve this problem—the agile movement suggests that we have to create
story cards, we have to build unit tests, we have to have a continuous integration
server, we have to have standup meetings every day, .... In short, particularly among
the agile evangelists (by which we really mean &lt;em&gt;zealots&lt;/em&gt;), if you aren't doing
a full agile process, you are simply failing. &lt;em&gt;(If this is true, how on earth did
all those thousands of applications written in FoxPro or Access ever manage to succeed?
–-Me)&lt;/em&gt; At one point, an agilist said point-blank, &amp;quot;If you don't do agile,
what happens when your project reaches a thousand users?&amp;quot; As Billy put it, &amp;quot;Think
about that for a second: This agile guy is &lt;em&gt;threatening&lt;/em&gt; us with success.&amp;quot;&lt;/li&gt;
&lt;li&gt;
Agile is for managing complexity. What we need is to recognize that there is a place
for outright simplicity instead.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
By the way, let me say this out loud: if you have not heard Billy Hollis speak, you
should. Even if you're a Java or Ruby developer, you should listen to what he has
to say. He's been developing software for a long time, has seen a lot of these technology-industry
trends come and go, and even if you disagree with him, you need to listen to him.
&lt;/p&gt;
&lt;p&gt;
Let me rephrase Billy's talk this way:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;Where is this decade's Access?&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
It may seem like a snarky and trolling question, but think about it for a moment:
for a decade or so, I was brought into project after project that was designed to
essentially rebuild/rearchitect the Access database created by one of the department's
more tech-savvy employees into something that could scale beyond just the department. 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;(Actually, in about half of them, the goal wasn't even to scale it up, it was
just to put it on the web. It was only in the subsequent meetings and discussions
that the issues of scale came up, and if my memory is accurate, I was the one who
raised those issues, not the customer. I wonder now, looking back at it, if that was
pure gold-plating on my part.)&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Others, including many people I care about (Rod Paddock, Markus Eggers, Ken Levy,
Cathi Gero, for starters) made a healthy living off of building &amp;quot;line of business&amp;quot;
applications in FoxPro, which Microsoft has now officially shut down. For those who
did Office applications, Visual Basic for Applications has now been officially deprecated
in favor of VSTO (Visual Studio Tools for Office), a set of libraries that are available
for use by any .NET application language, and of course classic Visual Basic itself
has been &amp;quot;brought into the fold&amp;quot; by making it a fully-fledged object-oriented
language complete with XML literals and LINQ query capabilities.
&lt;/p&gt;
&lt;p&gt;
Which means, if somebody working for a small school district in western Pennsylvania
wants to build a simple application for tracking students' attendance (rather than
tracking it on paper anymore), what do they do?
&lt;/p&gt;
&lt;p&gt;
Bruce Tate alluded to this in his &lt;em&gt;Beyond Java&lt;/em&gt;, based on the realization that
the Java space was no better—to bring a college/university student up to speed on
all the necessary technologies required of a &amp;quot;productive&amp;quot; Java developer,
he calculated at least five or six weeks of training was required. And that's not
a bad estimate, and might even be a bit on the shortened side. You can maybe get away
with less if they're joining a team which collectively has these skills distributed
across the entire team, but if we're talking about a standalone developer who's going
to be building software by himself, it's a pretty impressive list. Here's my back-of-the-envelope
calculations:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Week one: Java language. (Nobody ever comes out of college knowing all the Java language
they need.)&lt;/li&gt;
&lt;li&gt;
Week two: Java virtual machine: threading/concurrency, ClassLoaders, Serialization,
RMI, XML parsing, reference types (weak, soft, phantom).&lt;/li&gt;
&lt;li&gt;
Week three: Infrastructure: Ant, JUnit, continuous integration, Spring.&lt;/li&gt;
&lt;li&gt;
Week four: Data access: JDBC, Hibernate. (Yes, I think you need a full week on Hibernate
to be able to use it effectively.)&lt;/li&gt;
&lt;li&gt;
Week five: Web: HTTP, HTML, servlets, filters, servlet context and listeners, JSP,
model-view-controller, and probably some Ajax to boot.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I could go on (seriously! no JMS? no REST? no Web services?), but you get the point.
And lest the .NET community start feeling complacent, put together a similar list
for the standalone .NET developer, and you'll come out to something pretty equivalent.
(Just look at the &lt;a href="http://www.pluralsight.com/main/ilt/Courses.aspx" target="_blank"&gt;Pluralsight
list of courses&lt;/a&gt;—name the &lt;em&gt;one&lt;/em&gt; course you would give that college kid to
bring him up to speed. Stumped? Don't feel bad—I can't, either. And it's not them—pick
on any of the training companies.)
&lt;/p&gt;
&lt;p&gt;
Now throw agile into that mix: &lt;em&gt;how does an agile process reduce the complexity
load?&lt;/em&gt; And the answer, of course, is that it doesn't—it simply tries to muddle
through as best it can, by doing all of the things that developers need to be doing:
gathering as much feedback from every corner of their world as they can, through tests,
customer interaction, and frequent releases. &lt;em&gt;All of which is good&lt;/em&gt;. I'm &lt;em&gt;not&lt;/em&gt; here
to suggest that we should all give up agile and immediately go back to waterfall and
Big Design Up Front. Anybody who uses Billy's quote as a sound bite to suggest that
is a subversive and a terrorist and should have their arguments refuted with &lt;em&gt;extreme
prejudice&lt;/em&gt;.
&lt;/p&gt;
&lt;p&gt;
But agile is not going to reduce the technology complexity load, which is the root
cause of the problem.
&lt;/p&gt;
&lt;p&gt;
Or, perhaps, let me ask it this way: your 16-year-old wants to build a system to track
the cards in his Magic deck. What language do you teach him?
&lt;/p&gt;
&lt;p&gt;
We are in &lt;em&gt;desperate&lt;/em&gt; need of simplicity in this industry. Whoever gets that,
and gets it right, defines the &amp;quot;Next Big Thing&amp;quot;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=53f9b658-3b27-4f1a-b93e-14d3a57a8ec1" /&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,53f9b658-3b27-4f1a-b93e-14d3a57a8ec1.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>Parrot</category>
      <category>Python</category>
      <category>Reading</category>
      <category>Ruby</category>
      <category>Scala</category>
      <category>Social</category>
      <category>Solaris</category>
      <category>Visual Basic</category>
      <category>WCF</category>
      <category>Windows</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=be86b355-6dfb-4395-bfa9-d09783f21428</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,be86b355-6dfb-4395-bfa9-d09783f21428.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,be86b355-6dfb-4395-bfa9-d09783f21428.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=be86b355-6dfb-4395-bfa9-d09783f21428</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Well, OK, the title is trolling ever so slightly, but there is an interesting trend
at work, and I'm genuinely concerned about its ultimate expression if the trend continues
to its logical conclusion. <a href="http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-The-Death-of-the-Professional-Conference-Speaker/" target="_blank">Have
a look</a> and tell me if you agree or disagree.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=be86b355-6dfb-4395-bfa9-d09783f21428" />
        <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>Interview with Scott Bellware and Scott Hanselman on the Death of the Professional Speaker</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,be86b355-6dfb-4395-bfa9-d09783f21428.aspx</guid>
      <link>http://blogs.tedneward.com/2009/06/18/Interview+With+Scott+Bellware+And+Scott+Hanselman+On+The+Death+Of+The+Professional+Speaker.aspx</link>
      <pubDate>Thu, 18 Jun 2009 13:40:28 GMT</pubDate>
      <description>&lt;p&gt;
Well, OK, the title is trolling ever so slightly, but there is an interesting trend
at work, and I'm genuinely concerned about its ultimate expression if the trend continues
to its logical conclusion. &lt;a href="http://channel9.msdn.com/posts/Glucose/Hanselminutes-on-9-The-Death-of-the-Professional-Conference-Speaker/" target="_blank"&gt;Have
a look&lt;/a&gt; and tell me if you agree or disagree.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=be86b355-6dfb-4395-bfa9-d09783f21428" /&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,be86b355-6dfb-4395-bfa9-d09783f21428.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>Parrot</category>
      <category>Ruby</category>
      <category>Scala</category>
      <category>Social</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=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=dd85708f-48d8-47dc-a9c6-cc4a1287ad31</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,dd85708f-48d8-47dc-a9c6-cc4a1287ad31.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,dd85708f-48d8-47dc-a9c6-cc4a1287ad31.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=dd85708f-48d8-47dc-a9c6-cc4a1287ad31</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <blockquote>
          <p>
            <strong>Update:</strong> See below, but I wanted to include the text Mike Abercrombie
(DM's owner) posted as a comment to this post, in the body of the blog post itself. <em>"Ted
- All of us at DevelopMentor greatly appreciate your admiration. We're also grateful
for your contributions to DevelopMentor when you were part of our staff. However,
all of us that work here, especially our technical staff that write and delivery our
courses today, would appreciate it if you would check your sources before writing
our eulogy. DevelopMentor is open for business and delivering courses this week and
we intend to remain doing so."</em> Duly noted, Mike. Apology offered (and hopefully
accepted).
</p>
        </blockquote>
        <p>
An email crossed my desk today, announcing that DevelopMentor, home to so many good
people and fond memories, has (at least temporarily) closed its doors.
</p>
        <p>
I admit to a small, carefully-cushioned place in my heart where I mourn over this.
</p>
        <p>
DevelopMentor was such a transcendent place for me. Much, if not most or all, of the
acceleration that came in my career came not only while I was there, but <em>because</em> I
was there.
</p>
        <p>
          <em>So</em> much of my speaking persona and skill I owe to Ron Sumida, who took a
half-baked neophyte of intermediate speaking skill, and in an eight-hour marathon
session still referred to in my mental memoirs as my "Night with Scary Ron",
shaped me and taught me tricks about speaking that I continue to use to this day.
That I got to know him as a friend and confidant later still to this day ranks as
one of my greatest blessings.
</p>
        <p>
I remember my first DM Instructor Retreat, where I met so many of the names I'd read
about or heard about, and feeling "Oh, my God" fanboy-ish. I remember Tim
Ewald giving a talk on transactions at that retreat that left me agape—I seriously
didn't understand half of what he was saying, and rather than feeling overwhelmed
or ashamed, I remember distinctly thinking, "Wow—I have found a home where I
can learn SO much more." It was like waking up one morning to find that your
writing workshop group suddenly included Neal Stephenson, Stephen Pinker, C.S. Lewis
and Ernest Hemingway. (Yes, I know those last two are dead. Work with me here.)
</p>
        <p>
I remember the day that Lorie (the ops manager at the time) called me to say that
Don Box wanted me to work with him on the C# course. I was convinced that she'd called
the wrong Ted, meaning instead to reach for Ted Pattison in her Rolodex and coming
up a few letters shy. She tartly informed me, "No, I know exactly who I'm talking
to, and are you interested or not?" How could I refuse? Help the Diety of COM
write DM's flagship course on Microsoft's flagship technology for the next decade?
"Hmm...", I say out loud, not because I needed time to think about it, but
because a thread in the back of my head says, "Is there <em>any</em> scenario
here where I say no?"
</p>
        <p>
I still fondly recall doing a Guerilla .NET at the Torrance Hilton shortly after the
.NET 1.0 release, and having a conversation with Don in my hotel room later that night;
that was when he told me "Microsoft is working on an open-source version of the
CLR". I was stunned—I had no idea that said version would factor pretty largely
in my life later. But it opened my eyes, in a very practical way, to how deeply-connected
DevelopMentor was to Microsoft, and how that could play out in a direct fashion.
</p>
        <p>
When Peter Drayton joined, he asked me to do a quick review pass on the reference
section of his <em>C# in a Nutshell</em>, and I agreed because Peter was a good guy
(and somebody I'd hoped would become a friend), and wanted to see the book do well.
That went from informal review to formal review to "well, could you maybe make
it an editing pass?" to "Would you like to write a few chapters?" to
"Well, let's sign you up as a co-author...". That project is what introduced
me to John Osborn, which in turn led him to call me one day and say, "Some guys
at Microsoft are working on an open-source version of the CLR, and would like to have
a 'professional writer' help them write a book on it. Interested?" That led to <em>SSCLI
Internals</em>, working with David Stutz, and wow, did I learn a helluvalot from <em>that</em> project,
too.
</p>
        <p>
          <em>Effective Enterprise Java</em> came through DevelopMentor, thanks again to Don
Box, who introduced me to the folks at Addison-Wesley that put the contract (and Scott
Meyers, another blessing) in front of me.
</p>
        <p>
DM got me my start in the conference circuit, as well. In 2002, John Lam pinged me
over email—he'd recently become track chair for Connections down in Orlando, and was
I interested in speaking there? I was such a newbie to the whole idea, but having
taught classes roughly twice every month, I wasn't worried about the speaking part,
but the rest of the process. John walked me through the process, and in doing so,
set me down a path that would almost completely redefine my career within a year or
so.
</p>
        <p>
Even my Java chops got built up—the head of our Java curriculum was Stu Halloway (recently
of Clojure fame), and between him, Kevin Jones, Si Horrell, Brian Maso and Owen Tallman,
man, did I feel simultaneously like a small child among giants and like a kid in a
candy store. Every time I turned around, they'd discovered something new about the
Java platform that floored me. Bob Beauchemin has forgotten more about databases in
general than I will ever learn, and he had some insights on the intersection of Java
+ databases that still hang with me today.
</p>
        <p>
And my start with No Fluff Just Stuff came through DevelopMentor, too. Jason Whittington
heard through a mutual friend (Erik Hatcher, of Ant fame) about this cool little conference
being held in Denver, and maybe I should look into it. That led to an email intro
to Jay Zimmerman, a dinner together while I was teaching in Denver a few weeks later,
and before I knew it, I was on the Denver NFJS schedule, including the speaker panel,
where I uttered the then-infamous line, "Swing sucks. Get over it."
</p>
        <p>
DevelopMentor, you shaped my career—and my life—in so many ways, you will always be
a source of pleasant memories and a group of friends and acquaintances that I would
never have had otherwise. Thank you <em>so</em> much.
</p>
        <p>
Rest in peace.
</p>
        <p>
          <strong>Update:</strong> Well, as it turns out, I have to rescind at least part of
my eulogy, as the post itself generated quite a stir—the folks at DevelopMentor were
pretty quick to email me, pointing out that they're still alive and well. In fact,
as one of them (a friend of mine still working there) put it, "We were all kinda
surprised when we came to work this morning and discovered that we could go home."
Fortunately, the DevelopMentor folks were pretty gracious about what could've been
a <em>very</em> ugly situation, and I apologize for to them for the misunderstanding—all
I can say is that my "source" must've also been mistaken, and I'm glad that
we're all still good. And lest it need to be said out loud, I <em>heartily</em> want
nothing but the best for DM, and hope that I never have to write this message again.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=dd85708f-48d8-47dc-a9c6-cc4a1287ad31" />
        <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>A eulogy: DevelopMentor, RIP</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,dd85708f-48d8-47dc-a9c6-cc4a1287ad31.aspx</guid>
      <link>http://blogs.tedneward.com/2009/06/01/A+Eulogy+DevelopMentor+RIP.aspx</link>
      <pubDate>Mon, 01 Jun 2009 06:32:07 GMT</pubDate>
      <description>&lt;blockquote&gt; 
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; See below, but I wanted to include the text Mike Abercrombie
(DM's owner) posted as a comment to this post, in the body of the blog post itself. &lt;em&gt;&amp;quot;Ted
- All of us at DevelopMentor greatly appreciate your admiration. We're also grateful
for your contributions to DevelopMentor when you were part of our staff. However,
all of us that work here, especially our technical staff that write and delivery our
courses today, would appreciate it if you would check your sources before writing
our eulogy. DevelopMentor is open for business and delivering courses this week and
we intend to remain doing so.&amp;quot;&lt;/em&gt; Duly noted, Mike. Apology offered (and hopefully
accepted).
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
An email crossed my desk today, announcing that DevelopMentor, home to so many good
people and fond memories, has (at least temporarily) closed its doors.
&lt;/p&gt;
&lt;p&gt;
I admit to a small, carefully-cushioned place in my heart where I mourn over this.
&lt;/p&gt;
&lt;p&gt;
DevelopMentor was such a transcendent place for me. Much, if not most or all, of the
acceleration that came in my career came not only while I was there, but &lt;em&gt;because&lt;/em&gt; I
was there.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;So&lt;/em&gt; much of my speaking persona and skill I owe to Ron Sumida, who took a
half-baked neophyte of intermediate speaking skill, and in an eight-hour marathon
session still referred to in my mental memoirs as my &amp;quot;Night with Scary Ron&amp;quot;,
shaped me and taught me tricks about speaking that I continue to use to this day.
That I got to know him as a friend and confidant later still to this day ranks as
one of my greatest blessings.
&lt;/p&gt;
&lt;p&gt;
I remember my first DM Instructor Retreat, where I met so many of the names I'd read
about or heard about, and feeling &amp;quot;Oh, my God&amp;quot; fanboy-ish. I remember Tim
Ewald giving a talk on transactions at that retreat that left me agape—I seriously
didn't understand half of what he was saying, and rather than feeling overwhelmed
or ashamed, I remember distinctly thinking, &amp;quot;Wow—I have found a home where I
can learn SO much more.&amp;quot; It was like waking up one morning to find that your
writing workshop group suddenly included Neal Stephenson, Stephen Pinker, C.S. Lewis
and Ernest Hemingway. (Yes, I know those last two are dead. Work with me here.)
&lt;/p&gt;
&lt;p&gt;
I remember the day that Lorie (the ops manager at the time) called me to say that
Don Box wanted me to work with him on the C# course. I was convinced that she'd called
the wrong Ted, meaning instead to reach for Ted Pattison in her Rolodex and coming
up a few letters shy. She tartly informed me, &amp;quot;No, I know exactly who I'm talking
to, and are you interested or not?&amp;quot; How could I refuse? Help the Diety of COM
write DM's flagship course on Microsoft's flagship technology for the next decade?
&amp;quot;Hmm...&amp;quot;, I say out loud, not because I needed time to think about it, but
because a thread in the back of my head says, &amp;quot;Is there &lt;em&gt;any&lt;/em&gt; scenario
here where I say no?&amp;quot;
&lt;/p&gt;
&lt;p&gt;
I still fondly recall doing a Guerilla .NET at the Torrance Hilton shortly after the
.NET 1.0 release, and having a conversation with Don in my hotel room later that night;
that was when he told me &amp;quot;Microsoft is working on an open-source version of the
CLR&amp;quot;. I was stunned—I had no idea that said version would factor pretty largely
in my life later. But it opened my eyes, in a very practical way, to how deeply-connected
DevelopMentor was to Microsoft, and how that could play out in a direct fashion.
&lt;/p&gt;
&lt;p&gt;
When Peter Drayton joined, he asked me to do a quick review pass on the reference
section of his &lt;em&gt;C# in a Nutshell&lt;/em&gt;, and I agreed because Peter was a good guy
(and somebody I'd hoped would become a friend), and wanted to see the book do well.
That went from informal review to formal review to &amp;quot;well, could you maybe make
it an editing pass?&amp;quot; to &amp;quot;Would you like to write a few chapters?&amp;quot; to
&amp;quot;Well, let's sign you up as a co-author...&amp;quot;. That project is what introduced
me to John Osborn, which in turn led him to call me one day and say, &amp;quot;Some guys
at Microsoft are working on an open-source version of the CLR, and would like to have
a 'professional writer' help them write a book on it. Interested?&amp;quot; That led to &lt;em&gt;SSCLI
Internals&lt;/em&gt;, working with David Stutz, and wow, did I learn a helluvalot from &lt;em&gt;that&lt;/em&gt; project,
too.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Effective Enterprise Java&lt;/em&gt; came through DevelopMentor, thanks again to Don
Box, who introduced me to the folks at Addison-Wesley that put the contract (and Scott
Meyers, another blessing) in front of me.
&lt;/p&gt;
&lt;p&gt;
DM got me my start in the conference circuit, as well. In 2002, John Lam pinged me
over email—he'd recently become track chair for Connections down in Orlando, and was
I interested in speaking there? I was such a newbie to the whole idea, but having
taught classes roughly twice every month, I wasn't worried about the speaking part,
but the rest of the process. John walked me through the process, and in doing so,
set me down a path that would almost completely redefine my career within a year or
so.
&lt;/p&gt;
&lt;p&gt;
Even my Java chops got built up—the head of our Java curriculum was Stu Halloway (recently
of Clojure fame), and between him, Kevin Jones, Si Horrell, Brian Maso and Owen Tallman,
man, did I feel simultaneously like a small child among giants and like a kid in a
candy store. Every time I turned around, they'd discovered something new about the
Java platform that floored me. Bob Beauchemin has forgotten more about databases in
general than I will ever learn, and he had some insights on the intersection of Java
+ databases that still hang with me today.
&lt;/p&gt;
&lt;p&gt;
And my start with No Fluff Just Stuff came through DevelopMentor, too. Jason Whittington
heard through a mutual friend (Erik Hatcher, of Ant fame) about this cool little conference
being held in Denver, and maybe I should look into it. That led to an email intro
to Jay Zimmerman, a dinner together while I was teaching in Denver a few weeks later,
and before I knew it, I was on the Denver NFJS schedule, including the speaker panel,
where I uttered the then-infamous line, &amp;quot;Swing sucks. Get over it.&amp;quot;
&lt;/p&gt;
&lt;p&gt;
DevelopMentor, you shaped my career—and my life—in so many ways, you will always be
a source of pleasant memories and a group of friends and acquaintances that I would
never have had otherwise. Thank you &lt;em&gt;so&lt;/em&gt; much.
&lt;/p&gt;
&lt;p&gt;
Rest in peace.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; Well, as it turns out, I have to rescind at least part of
my eulogy, as the post itself generated quite a stir—the folks at DevelopMentor were
pretty quick to email me, pointing out that they're still alive and well. In fact,
as one of them (a friend of mine still working there) put it, &amp;quot;We were all kinda
surprised when we came to work this morning and discovered that we could go home.&amp;quot;
Fortunately, the DevelopMentor folks were pretty gracious about what could've been
a &lt;em&gt;very&lt;/em&gt; ugly situation, and I apologize for to them for the misunderstanding—all
I can say is that my &amp;quot;source&amp;quot; must've also been mistaken, and I'm glad that
we're all still good. And lest it need to be said out loud, I &lt;em&gt;heartily&lt;/em&gt; want
nothing but the best for DM, and hope that I never have to write this message again.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=dd85708f-48d8-47dc-a9c6-cc4a1287ad31" /&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,dd85708f-48d8-47dc-a9c6-cc4a1287ad31.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>Reading</category>
      <category>Scala</category>
      <category>Security</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=a2f6f427-643e-4c21-b204-16a839caaa8e</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,a2f6f427-643e-4c21-b204-16a839caaa8e.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,a2f6f427-643e-4c21-b204-16a839caaa8e.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a2f6f427-643e-4c21-b204-16a839caaa8e</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Yep, you heard that right—Aaron Erickson, author of <em>The Nomadic Developer</em>,
is now a ThoughtWorker.
</p>
        <p>
For those of who you don't know Aaron, he's been a consultant at another consulting
company for a while, and has been exploring a number of different topics in the .NET
space for a few years now, not least of which is one of my favorites (F#) and one
of THoughtWorks' favorites (agile). He's been speaking at a number of events, including
the Connections conferences, and he's going to bring some serious market-development
potential to our Chicago office, something that's obviously of concern right now in
these current economic conditions.
</p>
        <p>
He also cooks a mean bacon-wrapped scallop, but that's another story for another day.
</p>
        <p>
I'm looking forward to having him be a part of the growing collection of .NET rock
stars at ThoughtWorks. Wanna come join us? Always room for a few more....
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=a2f6f427-643e-4c21-b204-16a839caaa8e" />
        <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>He was Aaron Erickson... Now he's Aaron Erickson, ThoughtWorker</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,a2f6f427-643e-4c21-b204-16a839caaa8e.aspx</guid>
      <link>http://blogs.tedneward.com/2009/05/24/He+Was+Aaron+Erickson+Now+Hes+Aaron+Erickson+ThoughtWorker.aspx</link>
      <pubDate>Sun, 24 May 2009 02:05:09 GMT</pubDate>
      <description>&lt;p&gt;
Yep, you heard that right—Aaron Erickson, author of &lt;em&gt;The Nomadic Developer&lt;/em&gt;,
is now a ThoughtWorker.
&lt;/p&gt;
&lt;p&gt;
For those of who you don't know Aaron, he's been a consultant at another consulting
company for a while, and has been exploring a number of different topics in the .NET
space for a few years now, not least of which is one of my favorites (F#) and one
of THoughtWorks' favorites (agile). He's been speaking at a number of events, including
the Connections conferences, and he's going to bring some serious market-development
potential to our Chicago office, something that's obviously of concern right now in
these current economic conditions.
&lt;/p&gt;
&lt;p&gt;
He also cooks a mean bacon-wrapped scallop, but that's another story for another day.
&lt;/p&gt;
&lt;p&gt;
I'm looking forward to having him be a part of the growing collection of .NET rock
stars at ThoughtWorks. Wanna come join us? Always room for a few more....
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=a2f6f427-643e-4c21-b204-16a839caaa8e" /&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,a2f6f427-643e-4c21-b204-16a839caaa8e.aspx</comments>
      <category>.NET</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Languages</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=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=8da33b92-cb5f-466a-b2d1-a20f4355ed73</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,8da33b92-cb5f-466a-b2d1-a20f4355ed73.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,8da33b92-cb5f-466a-b2d1-a20f4355ed73.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8da33b92-cb5f-466a-b2d1-a20f4355ed73</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It's been going around in developer circles now for a few days, this whole controversy
about the "Perform like a pr0n star" <a href="http://www.slideshare.net/mattetti/couchdb-perform-like-a-pr0n-star">presentation</a> from
the <a href="http://gogaruco.com/">Golden Gate Ruby Conference</a> and the related
accusations of misogyny and sexism and overblown accusations and double-standardisms
and what-all else, and I've deliberately waited to let opinions in my head settle
out before blogging on the whole thing. <a href="http://girldeveloper.com/intar-social-commentary/c-mon-you-guys-we-can-do-better-than-this/">Sara
J Chipps reacts on her blog</a>, and the comments to her comments are also somewhat...
interesting... to note.
</p>
        <p>
Without any particular implied importance or order:
</p>
        <ul>
          <li>
            <strong>Matt Aimonetti, you are an idiot.</strong> You had to know that this was going
to generate more than a few strong reactions. I'll admit, it's a funny title, and
it definitely generated a ton of buzz around your name, but for the rest of your life,
you're going to be "the porno Rails guy", and in about a year or so, it's
not going to be funny anymore. You've touched off a firestorm, and you can't very
well hide from it, and frankly, I think the short-term boost to your public recognizance
is going to be more than outweighed by the long-term judgments that will be levied
against you. "Wait, <em>this</em> is the guy who did that talk? Wow. I bet he's
a good developer, but can I risk him pulling the same kind of stunt at a meeting with
our VP or clients? Nah, I'll go for this other guy...."</li>
          <li>
            <strong>Clearly we have a lot of issues to work out in the programming industry.</strong> I'm
not going to go into the rights or wrongs of putting those images into his talk. I'm
talking about the discussion that followed (one comment here says, "Matt Aimonetti
is obviously an antisocial twerp still living in his mothers basement at the age of
35 who has never even been able to muster up the courage to actually talk to a real-life
woman, let alone respect one.", and a follow-up comment says, "Great presentation,
nevermind the jackasses, keep up the good work!"), and the fact that at no point
in the time leading up to this presentation did anybody pull Mr. Aimonetti off to
one side and say, "Dude, it was funny when we thought of it, sure, but it's time
to stop." If ever we wanted to convince the rest of the world that the programming
industry wasn't populated by a bunch of 13-year-olds giggling over the fact that somebody
said, "Boobies".... well, maybe next year.</li>
          <li>
            <strong>Ruby community, you have a long way to go if you want to convince people to
spend money on you.</strong> Maybe you don't mind that corporations think that you
guys are clearly unstable and immature. If/when you want to gain some degree of corporate
acceptance, and maybe make it out of your parents' basement someday, you're going
to have to learn that how you handle yourself in public goes a long way towards establishing
peoples' attitudes towards you as professionals, and right now, you all collectively
look like a bunch of 13-year-olds, what between this and DHH's famous "FUCK YOU"
presentation of a few years ago. If you're OK with not being taken seriously, then
cool, more power to you. But personally, I like the idea of making money at things
I like to do and have fun doing, and you're not helping yourselves.</li>
          <li>
            <strong>Why are we such prudes?</strong> Whether you agree or not with the rightness
of the "porn" metaphor, you have to admit that there is factual basis in
the bones of this particular comment: "This is probably the least offensive thing
I've seen in 3 weeks." Glance at the billboards in the airport next time you're
walking to the gate. Glance at the racks of magazines in the grocery store as you
prepare to check out. Glance at the beer commercials on TV during prime-time. In every
case, sexy, young, attractive, scantily-clad men and women seek to create an instinctive
emotional reaction inside your head to subconsciously create a feel-good link between
whatever product is being hawked and your id. Honestly, the photos in the presentation
are hardly all that titillating—and a very long ways from the kind of commercials
you can see on TV in Europe—so why are we getting up in arms over this?</li>
          <li>
            <strong>Matt Aimonetti, you are an idiot.</strong> Notice how nobody's talking about
the actual subject of your presentation? A good presenter knows that the message should
never outstrip the delivery mechanism, just like a sauce should never overpower the
flavor of the dish it accompanies. For all that the <em>content</em> of your presentation
might have been spot-on, the lessons that might have been learned from the presentation
have drowned in the "He's a pig!" "No he's not!" that has followed.
Great job there, mate. Way to get your message across.</li>
          <li>
            <strong>To the commenter on the presentation page who said, "ps [sic] feminism
is dead", get a clue.</strong> Women still, on average, get paid less than men
do for an equivalently-skilled employee in the same job. Maybe it's not $.50 to every
$1 as it used to be, but so long as it's even measurable, there's work to be done.
This industry in particular has absolutely no reason for gender discrimination in
any form, since there's absolutely nothing "physical" about what we do.
(Ditto for medicine and law, for that matter.)</li>
          <li>
            <strong>Presentations reach far beyond just the attendees.</strong> One commenter
on Sara's blog notes, "What an over reaction, there was nothing wrong with that
presentation, i wouldn't show it to a board room but as far as showing it to a ruby
developers conference then no probs." Frankly, that's a short-sighted attitude,
making the presumption that someone of the suit-and-tie set (those supposedly inhabiting
the "board room" where this kind of presentation isn't appropriate) wouldn't
actually be in the audience at a ruby developers conference. Oh, granted, when in
Rome, one has to expect Romans to act like Romans, but that just means that the Ruby
community isn't welcome inside the board room, right? (Somehow I doubt this is what
the numerous people who are trying to make money off of Ruby really want.) Fact is,
that presentation is now captured by the Internet for all time, and it will forever
be known as "The Ruby Porno Presentation", and it's an even money bet that
somebody in that board room has seen the presentation (and the video, and the play-by-play
from the people who had friends who had friends that were there....).</li>
          <li>
            <strong>To the commenters who say, "You asked for it", get a clue.</strong> Commenters
have suggested that the title should have clued people into what was coming: "I'm
totally flabbergasted no one has stated the obvious here: if you see a presentation
labeled "CouchDB: Perform like a pr0n star" and you choose to go to it,
don't act all surprised when R-rated images are used as props." Sorry, no biscuit.
Presenters use analogies and imagery all the time in their titles in order to "sell"
their talks. Recently I was part of a talk that was labeled as a "smackdown"—did
that mean the audience should have expected to see images of physical violence? If
I title my next talk as something that's "hard-core", should you expect
to see images of ball gags and snuff film clips? This is what happens when we co-opt
terms like "smackdown" and "hard-core"—you can't fall back to
the original meanings and then claim ignorance when people misunderstand how you're
going to use them. (God only knows what Mr. Aimonetti would have done for a presentation
on "Naked Objects". *shudder*)</li>
          <li>
            <strong>Matt Aimonetti, you are an idiot. </strong>You could have had your joke and
keep it tasteful too. You do, in fact, from time to time in the early part of the
presentation: the photo of the "little blue pills" was perfect, offering
a hint as to what you meant while keeping the <em>double-entendre</em> alive. Every
single "objectionable" photo in that presentation could have been replaced
by a more subtle one that kept everybody's mind on the subject and still got the point
across. The fact that you resorted to the heavy-handed imagery only proves that you
wanted to beat the audience's head with it.</li>
          <li>
            <strong>Please, let the one-ups-manship stop.</strong> Can we please agree that moving
and powerful presentations can be done without having to resort to cheap tricks? They
almost always come off badly, particularly when you have to keep the gag running for
a full hour or so. Anybody remember Marc Fleury's "Joker" retinue at TheServerSide
a half-decade ago? Can you tell me what his presentation was about? Now, consider
Dave Thomas' "Cargo Cults" talk from NFJS around the same time—what was
he covering? If you were there for both talks, chances are you remember Dave's talk
far better than you remember the Fleury keynote beyond the fact that he wore Joker
face paint the entire time. Good presentations are about using humor to underscore
and support the message, and not making humor the central point of the message. Think
about that before you start reaching for the bad innuendo.</li>
          <li>
            <strong>Is this really the kind of industry we want?</strong> Granted, it may seem
like all of this is way overblown if you're a 25-year-old guy recently graduated from
college and hacking on your first or second Rails project. "What do these grumpy
idiots not understand about 'it's a joke'? My God, is everybody nuts? Are they trying
to say that we can't have fun at work or with what we do?" To which all I can
say is two things: one, check in with yourself five or ten years from now, when your
daughters are learning about body images by staring at pictures of women who are entirely
artificial (and yes, guys, those pictures you see are entirely artificial, having
been touched up and enhanced in many ways), and two, you're more than welcome to have
whatever jokes you like at whomever's expense you like, in private. This wasn't in
private. A developer conference is not a private locale. More importantly, though,
think about it—when you bring your girlfriend to work, do you want her hearing those
same jokes that buddies toss off back and forth? What seems like "harmless fun"
now, may have a very different feel to it for you a few years from now.</li>
        </ul>
        <p>
I'll freely admit, I drop profanity from time to time in my presentations. And to
everyone who comes up afterwords (figuratively and literally) saying I shouldn't use
such offensive language, I apologize, and point out that I did so in order to underscore
the point, knowing that I'm taking that risk, and knowing that I may be required to
offer up apologies after the fact for having offended them. (To date, those apologies
still number in the single digits.) So perhaps I am no better than Mr. Aimonetti in
the final accounting of things.
</p>
        <p>
But all of this loses sight of a core principle. Regardless of the efficacy of his
presentation, regardless of your feelings about the subject matter, regardless of
your thoughts around the overblown-or-not nature of this discussion, a deeper principle
is at stake here, that of professional presentation etiquette: Mr. Aimonetti, you
owe an apology to anyone and everyone that was offended by your presentation (for
whatever reason). Failure to deliver that, in my mind, equates to a personal and professional
FAIL on your part. 
</p>
        <p>
When you stand up on stage, and you say something that somebody finds offensive, you
owe that person an apology, even if you think their reasoning or rationale is bogus.
</p>
        <p>
It's simple common courtesy.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=8da33b92-cb5f-466a-b2d1-a20f4355ed73" />
        <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>On speaking, trolling, inciting and growing</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,8da33b92-cb5f-466a-b2d1-a20f4355ed73.aspx</guid>
      <link>http://blogs.tedneward.com/2009/05/01/On+Speaking+Trolling+Inciting+And+Growing.aspx</link>
      <pubDate>Fri, 01 May 2009 06:03:32 GMT</pubDate>
      <description>&lt;p&gt;
It's been going around in developer circles now for a few days, this whole controversy
about the &amp;quot;Perform like a pr0n star&amp;quot; &lt;a href="http://www.slideshare.net/mattetti/couchdb-perform-like-a-pr0n-star"&gt;presentation&lt;/a&gt; from
the &lt;a href="http://gogaruco.com/"&gt;Golden Gate Ruby Conference&lt;/a&gt; and the related
accusations of misogyny and sexism and overblown accusations and double-standardisms
and what-all else, and I've deliberately waited to let opinions in my head settle
out before blogging on the whole thing. &lt;a href="http://girldeveloper.com/intar-social-commentary/c-mon-you-guys-we-can-do-better-than-this/"&gt;Sara
J Chipps reacts on her blog&lt;/a&gt;, and the comments to her comments are also somewhat...
interesting... to note.
&lt;/p&gt;
&lt;p&gt;
Without any particular implied importance or order:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Matt Aimonetti, you are an idiot.&lt;/strong&gt; You had to know that this was going
to generate more than a few strong reactions. I'll admit, it's a funny title, and
it definitely generated a ton of buzz around your name, but for the rest of your life,
you're going to be &amp;quot;the porno Rails guy&amp;quot;, and in about a year or so, it's
not going to be funny anymore. You've touched off a firestorm, and you can't very
well hide from it, and frankly, I think the short-term boost to your public recognizance
is going to be more than outweighed by the long-term judgments that will be levied
against you. &amp;quot;Wait, &lt;em&gt;this&lt;/em&gt; is the guy who did that talk? Wow. I bet he's
a good developer, but can I risk him pulling the same kind of stunt at a meeting with
our VP or clients? Nah, I'll go for this other guy....&amp;quot;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Clearly we have a lot of issues to work out in the programming industry.&lt;/strong&gt; I'm
not going to go into the rights or wrongs of putting those images into his talk. I'm
talking about the discussion that followed (one comment here says, &amp;quot;Matt Aimonetti
is obviously an antisocial twerp still living in his mothers basement at the age of
35 who has never even been able to muster up the courage to actually talk to a real-life
woman, let alone respect one.&amp;quot;, and a follow-up comment says, &amp;quot;Great presentation,
nevermind the jackasses, keep up the good work!&amp;quot;), and the fact that at no point
in the time leading up to this presentation did anybody pull Mr. Aimonetti off to
one side and say, &amp;quot;Dude, it was funny when we thought of it, sure, but it's time
to stop.&amp;quot; If ever we wanted to convince the rest of the world that the programming
industry wasn't populated by a bunch of 13-year-olds giggling over the fact that somebody
said, &amp;quot;Boobies&amp;quot;.... well, maybe next year.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ruby community, you have a long way to go if you want to convince people to
spend money on you.&lt;/strong&gt; Maybe you don't mind that corporations think that you
guys are clearly unstable and immature. If/when you want to gain some degree of corporate
acceptance, and maybe make it out of your parents' basement someday, you're going
to have to learn that how you handle yourself in public goes a long way towards establishing
peoples' attitudes towards you as professionals, and right now, you all collectively
look like a bunch of 13-year-olds, what between this and DHH's famous &amp;quot;FUCK YOU&amp;quot;
presentation of a few years ago. If you're OK with not being taken seriously, then
cool, more power to you. But personally, I like the idea of making money at things
I like to do and have fun doing, and you're not helping yourselves.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Why are we such prudes?&lt;/strong&gt; Whether you agree or not with the rightness
of the &amp;quot;porn&amp;quot; metaphor, you have to admit that there is factual basis in
the bones of this particular comment: &amp;quot;This is probably the least offensive thing
I've seen in 3 weeks.&amp;quot; Glance at the billboards in the airport next time you're
walking to the gate. Glance at the racks of magazines in the grocery store as you
prepare to check out. Glance at the beer commercials on TV during prime-time. In every
case, sexy, young, attractive, scantily-clad men and women seek to create an instinctive
emotional reaction inside your head to subconsciously create a feel-good link between
whatever product is being hawked and your id. Honestly, the photos in the presentation
are hardly all that titillating—and a very long ways from the kind of commercials
you can see on TV in Europe—so why are we getting up in arms over this?&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Matt Aimonetti, you are an idiot.&lt;/strong&gt; Notice how nobody's talking about
the actual subject of your presentation? A good presenter knows that the message should
never outstrip the delivery mechanism, just like a sauce should never overpower the
flavor of the dish it accompanies. For all that the &lt;em&gt;content&lt;/em&gt; of your presentation
might have been spot-on, the lessons that might have been learned from the presentation
have drowned in the &amp;quot;He's a pig!&amp;quot; &amp;quot;No he's not!&amp;quot; that has followed.
Great job there, mate. Way to get your message across.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;To the commenter on the presentation page who said, &amp;quot;ps [sic] feminism
is dead&amp;quot;, get a clue.&lt;/strong&gt; Women still, on average, get paid less than men
do for an equivalently-skilled employee in the same job. Maybe it's not $.50 to every
$1 as it used to be, but so long as it's even measurable, there's work to be done.
This industry in particular has absolutely no reason for gender discrimination in
any form, since there's absolutely nothing &amp;quot;physical&amp;quot; about what we do.
(Ditto for medicine and law, for that matter.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Presentations reach far beyond just the attendees.&lt;/strong&gt; One commenter
on Sara's blog notes, &amp;quot;What an over reaction, there was nothing wrong with that
presentation, i wouldn't show it to a board room but as far as showing it to a ruby
developers conference then no probs.&amp;quot; Frankly, that's a short-sighted attitude,
making the presumption that someone of the suit-and-tie set (those supposedly inhabiting
the &amp;quot;board room&amp;quot; where this kind of presentation isn't appropriate) wouldn't
actually be in the audience at a ruby developers conference. Oh, granted, when in
Rome, one has to expect Romans to act like Romans, but that just means that the Ruby
community isn't welcome inside the board room, right? (Somehow I doubt this is what
the numerous people who are trying to make money off of Ruby really want.) Fact is,
that presentation is now captured by the Internet for all time, and it will forever
be known as &amp;quot;The Ruby Porno Presentation&amp;quot;, and it's an even money bet that
somebody in that board room has seen the presentation (and the video, and the play-by-play
from the people who had friends who had friends that were there....).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;To the commenters who say, &amp;quot;You asked for it&amp;quot;, get a clue.&lt;/strong&gt; Commenters
have suggested that the title should have clued people into what was coming: &amp;quot;I'm
totally flabbergasted no one has stated the obvious here: if you see a presentation
labeled &amp;quot;CouchDB: Perform like a pr0n star&amp;quot; and you choose to go to it,
don't act all surprised when R-rated images are used as props.&amp;quot; Sorry, no biscuit.
Presenters use analogies and imagery all the time in their titles in order to &amp;quot;sell&amp;quot;
their talks. Recently I was part of a talk that was labeled as a &amp;quot;smackdown&amp;quot;—did
that mean the audience should have expected to see images of physical violence? If
I title my next talk as something that's &amp;quot;hard-core&amp;quot;, should you expect
to see images of ball gags and snuff film clips? This is what happens when we co-opt
terms like &amp;quot;smackdown&amp;quot; and &amp;quot;hard-core&amp;quot;—you can't fall back to
the original meanings and then claim ignorance when people misunderstand how you're
going to use them. (God only knows what Mr. Aimonetti would have done for a presentation
on &amp;quot;Naked Objects&amp;quot;. *shudder*)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Matt Aimonetti, you are an idiot. &lt;/strong&gt;You could have had your joke and
keep it tasteful too. You do, in fact, from time to time in the early part of the
presentation: the photo of the &amp;quot;little blue pills&amp;quot; was perfect, offering
a hint as to what you meant while keeping the &lt;em&gt;double-entendre&lt;/em&gt; alive. Every
single &amp;quot;objectionable&amp;quot; photo in that presentation could have been replaced
by a more subtle one that kept everybody's mind on the subject and still got the point
across. The fact that you resorted to the heavy-handed imagery only proves that you
wanted to beat the audience's head with it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Please, let the one-ups-manship stop.&lt;/strong&gt; Can we please agree that moving
and powerful presentations can be done without having to resort to cheap tricks? They
almost always come off badly, particularly when you have to keep the gag running for
a full hour or so. Anybody remember Marc Fleury's &amp;quot;Joker&amp;quot; retinue at TheServerSide
a half-decade ago? Can you tell me what his presentation was about? Now, consider
Dave Thomas' &amp;quot;Cargo Cults&amp;quot; talk from NFJS around the same time—what was
he covering? If you were there for both talks, chances are you remember Dave's talk
far better than you remember the Fleury keynote beyond the fact that he wore Joker
face paint the entire time. Good presentations are about using humor to underscore
and support the message, and not making humor the central point of the message. Think
about that before you start reaching for the bad innuendo.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Is this really the kind of industry we want?&lt;/strong&gt; Granted, it may seem
like all of this is way overblown if you're a 25-year-old guy recently graduated from
college and hacking on your first or second Rails project. &amp;quot;What do these grumpy
idiots not understand about 'it's a joke'? My God, is everybody nuts? Are they trying
to say that we can't have fun at work or with what we do?&amp;quot; To which all I can
say is two things: one, check in with yourself five or ten years from now, when your
daughters are learning about body images by staring at pictures of women who are entirely
artificial (and yes, guys, those pictures you see are entirely artificial, having
been touched up and enhanced in many ways), and two, you're more than welcome to have
whatever jokes you like at whomever's expense you like, in private. This wasn't in
private. A developer conference is not a private locale. More importantly, though,
think about it—when you bring your girlfriend to work, do you want her hearing those
same jokes that buddies toss off back and forth? What seems like &amp;quot;harmless fun&amp;quot;
now, may have a very different feel to it for you a few years from now.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
I'll freely admit, I drop profanity from time to time in my presentations. And to
everyone who comes up afterwords (figuratively and literally) saying I shouldn't use
such offensive language, I apologize, and point out that I did so in order to underscore
the point, knowing that I'm taking that risk, and knowing that I may be required to
offer up apologies after the fact for having offended them. (To date, those apologies
still number in the single digits.) So perhaps I am no better than Mr. Aimonetti in
the final accounting of things.
&lt;/p&gt;
&lt;p&gt;
But all of this loses sight of a core principle. Regardless of the efficacy of his
presentation, regardless of your feelings about the subject matter, regardless of
your thoughts around the overblown-or-not nature of this discussion, a deeper principle
is at stake here, that of professional presentation etiquette: Mr. Aimonetti, you
owe an apology to anyone and everyone that was offended by your presentation (for
whatever reason). Failure to deliver that, in my mind, equates to a personal and professional
FAIL on your part. 
&lt;/p&gt;
&lt;p&gt;
When you stand up on stage, and you say something that somebody finds offensive, you
owe that person an apology, even if you think their reasoning or rationale is bogus.
&lt;/p&gt;
&lt;p&gt;
It's simple common courtesy.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=8da33b92-cb5f-466a-b2d1-a20f4355ed73" /&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,8da33b92-cb5f-466a-b2d1-a20f4355ed73.aspx</comments>
      <category>Conferences</category>
      <category>Industry</category>
      <category>Ruby</category>
      <category>Social</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=f91e4cd6-29a5-43db-b13b-1c8ff868949d</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,f91e4cd6-29a5-43db-b13b-1c8ff868949d.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,f91e4cd6-29a5-43db-b13b-1c8ff868949d.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f91e4cd6-29a5-43db-b13b-1c8ff868949d</wfw:commentRss>
      <slash:comments>12</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A friend of mine, from Canada, <a href="http://geekswithblogs.net/dlussier/archive/2009/04/07/130812.aspx">recently
decided not to come to the US anymore</a>.
</p>
        <blockquote>
          <p>
Today was my final time trying to enter the US to do what many other people have done
in my industry before: go and speak at a conference.
</p>
          <p>
The reason I was given this time was that although I had forfeit the speaking fee
they were going to pay me, I was still going to be speaking at a conference where
other speakers were getting paid, and that there was no reason an American couldn’t
fill that spot. When I asked if there would have been any issue if the conference
was a free one and nobody was getting paid, I didn’t get an answer.
</p>
        </blockquote>
        <p>
D'Arcy's experience at the border control reflects a growing dilemma that other speakers
in my industry have also been facing: when you travel overseas to speak at a conference,
and you get the dreaded "What are you here for?" question, should you tell
them the truth and face the battery of questions that boil down to "Are you taking
any money out of the country?", or should you lie, claim you're on vacation,
and point out how you're putting money <em>into</em> the country in question?
</p>
        <p>
Particularly when the organizers of the conference have <em>every reason</em> to prefer
people at home—financial, lack of cultural barriers, reduced language barriers, and
more—and invite me to come speak, anyway?
</p>
        <p>
Note that because the US Border Patrol apparently Googles people when they stop at
the border, 
</p>
        <blockquote>
          <p>
This all started of course when I was up-front and honest about the speaking engagement
the first time I went through, which flagged me in their system. This became very
obvious this past weekend when I attended the Twin Cities Code Camp and was at the
border for an hour. On that entry I specified that I was going for a shopping weekend,
which I was; I was also planning on going to the Twin Cities Code Camp, a free event
and one that I was volunteering at. I didn’t mention that because why confuse the
issue trying to explain what a code camp was, that it was free, and why I would consider
speaking for free. This was a mistake for two reasons…
</p>
          <p>
For one, they do have internet at CBP offices. So if you’re flagged, and you have
to go for secondary interviewing, realize that you may be Googled. And as such, blog
posts talking about said code camp or eating a Chipotle Burrito may appear as well
(“So how was the burrito?” was a question I was asked).
</p>
        </blockquote>
        <p>
... and because there's no reason to assume other nations' border patrol won't do
the same thing, I'm not going to answer that question. I don't want my views aired
on a public forum and in the context of a particular discussion acting as a convenient
reason for a bureaucrat to create heartache for the citizens of his country that are
expecting me to come and help them be more useful and productive and competitive.
</p>
        <p>
D'Arcy's spot-on right on one point, and I applaud him for saying it:
</p>
        <blockquote>
          <p>
Canadians have long taken for granted our border with the USA. If there’s one thing
this experience has taught me, its that there is an air of entitlement that we’ve
had in regards to being able to cross over and do whatever we want in the US. We assume
that we’ll be as welcome as we were in the past, and that there really isn’t that
much difference between us: we drive the same cars, watch the same television and
movies, listen to the same music, read the same books.
</p>
        </blockquote>
        <p>
That "entitlement" isn't limited to just Canadians—other citizens of other
Western nations, including my own, feel that same sense of entitlement. Border control
is just a hassle, just another annoying obstacle keeping me from my travel destination,
just like airport security and agricultural inspections. (Having lived in Stamford,
CT in the 70s when entire forests were being depopulated by some sort of caterpiller/moth
infestation, and in LA in the 80s when we had to stay indoors at night as the authorities
did overhead spraying of Malathion over our house at night to kill off the fruit fly
infestation, I'm really kinda sensitive to the need for those ag inspections.)
</p>
        <p>
But the fact is, you are leaving your country, and the laws you grew up with, and
entering a new country, one which <em>owes you nothing</em>.
</p>
        <blockquote>
          <p>
But we <strong>are</strong> different. We are separate, independent entities with
different history, values, and morals. So to the second reason why that was a mistake:
I, as a Canadian, have no right to make a call as to whether I’m of a benefit to a
neighbouring country. I can rationalize all I want that the event is free, and that
I’m actually trying to help other Americans by sharing my knowledge, but that’s not
my call to make.
</p>
          <p>
The US is in a state of protectionism right now whether they admit it or not. When
you continue to hear about the vast number of jobs being lost, it makes sense that
they want to ensure their people are being protected first and foremost. Many of those
people include friends of mine whose companies are laying off people.
</p>
        </blockquote>
        <p>
(By the way, D'Arcy, you misspelled "neighboring".)
</p>
        <p>
As much as D'Arcy has the right attitude about the ways in which nations get to make
decisions for their little plots of land upon the earth, and our ability to argue
with them, I still want to point out that the whole economic protectionist argument
has been used before, and it's pretty much been debunked at a number of levels. (I'm
not going down the path of talking about border security, which is a different issue
entirely and not what stops D'Arcy from coming to the US.)
</p>
        <p>
The debate around protectionism has been around as long as people have studied economics
as a formal "science", and the end results are pretty clear: everybody benefits
when the borders are open and unrestricted. The "multiplier effect" that
macroeconomists talk about <em>more than makes up for whatever "drain" a
foreigner imposes on the local economy</em>. 
</p>
        <blockquote>
          <p>
            <em>Note: For those of you who haven't heard of the multiplier effect, it works like
this: while in the US to speak at whatever conference he wants to speak at, D'Arcy
spends a dollar at a hotel gift shop, of which the hotel uses $.95 to pay its local
worker's hourly wage, of which the worker spends $.90 on a hot dog for lunch, of which
the hot dog stand operator uses $.85 to buy buns for tomorrow's customers.... And
so on. Why aren't we spending the full dollar each time? Mostly because people will
often save some portion of that dollar (unless you're American, because we don't save
anything, it seems), and because the government will take some portion of that dollar
each time in taxes. What this means, though, is that the US$1 that D'Arcy spent turned
into US$4 or US$5 or more towards the total GDP of the country. Econ is a fascinating
subject sometimes.</em>
          </p>
        </blockquote>
        <p>
And, of course, ask any three economists a question, and you'll get five different
answers. This subject is no different: protectionism has its proponents, too, usually
when the local economy is taking a hit... like now. It feels right, protecting those
who are "close to home" (and believe me, I'm sympathetic, I've had friends
who've pinged me about finding a new job within the last six months), but in the end,
everything it does is artificial—in much the same way that unions artificially keep
wages high for union workers, and impose some serious constraints on the companies
that employ them. (I don't think it's an accident that industries being hammered mercilessly
by the soft economy—the auto manufacturers and the airlines—are also ones with large
union populations.) Protectionism is almost always a short-term gain, long-term loss
kind of operation. The "perennial gale of creative destruction" (from Alan
Greenspan's <em>Age of Turbulence</em>) isn't always gentle, but it is necessary.
</p>
        <p>
D'Arcy, in the end, closes his piece with a fond wish:
</p>
        <blockquote>
          <p>
My hope is that at some point the US and Canada will be able to get back to where
our countries were before 9/11. At the same time though, I hope that Canada realizes
during this time that it has its own identity; that we are more than just who we border
against. Maybe locking down the border will become a good thing after all.
</p>
        </blockquote>
        <p>
Frankly, my wish would be for Canadians to realize their own identity (and I think
Canadians are pretty aware of this in the same way that Americans don't even realize
that it's a problem), as well, assuming that's even a problem. What's more, I think
that Canadians will find that they don't need the US nearly as much as Americans like
to think they do.
</p>
        <p>
But locking down the border is going to affect more than just Canadians—my fear is
that this protectionist attitude will in fact deter other really bright people from
coming to the US and sharing their knowledge and wisdom, or even just participating
in our economy for a while. Assume for just a moment that the million or so H-1B visas
currently allocated are suddenly all revoked and their holders must return to their
countries of origin—how many rent checks, car payments, utility bills, movie nights,
dinners at local restaurants and bank accounts are going to be exiled with them? And
this doesn't even begin to touch the potentials for racism that lurk hidden within
the system—granting visas and citizenship more easily to "Westerners" (Brits,
Germans, Australians, whatever) than "foreigners" (Hispanics, Indians, Chinese).
</p>
        <p>
The fact is, this "locking down the border" won't help us, in the long-term.
Whatever benefits we as Americans accrue from keeping our jobs intact will be lost
when those barriers finally come down and we find we can't compete on the global scale.
The "perennial gale of creative destruction" can't be bought off, it can
only be delayed. (Ask the <strike>Soviets</strike> Russians about their success with
the high-protectionist tactic the next time you're in Moscow or St. Petersburg.)
</p>
        <p>
At some point, the borderless Internet is going to come crashing against the bordered
"real world", and it's not going to be a pretty fight. And we, those of
us who define and shape and act as the primary consumer and producer of the Internet's
benefits, are going to find ourselves facing some uncomfortable choices.
</p>
        <p>
In the meantime, however this story ends, I want to be able to say that my country
acted in its own defense, but without prejudice, malice, or ignorance. But I'm very
worried that I won't be able to say that... and I'm worried what damage we will do
to ourselves in the interim.
</p>
        <blockquote>
          <p>
            <em>(Editor's note: It will be fascinating to see how many people call me an ignorant
racist based on nothing more than the blog title. You want to disagree with me, that's
fine, just do so on a material basis from the body of the post, not just the title.)</em>
          </p>
        </blockquote>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=f91e4cd6-29a5-43db-b13b-1c8ff868949d" />
        <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>Out, out, you damn foreigners!</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,f91e4cd6-29a5-43db-b13b-1c8ff868949d.aspx</guid>
      <link>http://blogs.tedneward.com/2009/04/08/Out+Out+You+Damn+Foreigners.aspx</link>
      <pubDate>Wed, 08 Apr 2009 21:47:21 GMT</pubDate>
      <description>&lt;p&gt;
A friend of mine, from Canada, &lt;a href="http://geekswithblogs.net/dlussier/archive/2009/04/07/130812.aspx"&gt;recently
decided not to come to the US anymore&lt;/a&gt;.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Today was my final time trying to enter the US to do what many other people have done
in my industry before: go and speak at a conference.
&lt;/p&gt;
&lt;p&gt;
The reason I was given this time was that although I had forfeit the speaking fee
they were going to pay me, I was still going to be speaking at a conference where
other speakers were getting paid, and that there was no reason an American couldn’t
fill that spot. When I asked if there would have been any issue if the conference
was a free one and nobody was getting paid, I didn’t get an answer.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
D'Arcy's experience at the border control reflects a growing dilemma that other speakers
in my industry have also been facing: when you travel overseas to speak at a conference,
and you get the dreaded &amp;quot;What are you here for?&amp;quot; question, should you tell
them the truth and face the battery of questions that boil down to &amp;quot;Are you taking
any money out of the country?&amp;quot;, or should you lie, claim you're on vacation,
and point out how you're putting money &lt;em&gt;into&lt;/em&gt; the country in question?
&lt;/p&gt;
&lt;p&gt;
Particularly when the organizers of the conference have &lt;em&gt;every reason&lt;/em&gt; to prefer
people at home—financial, lack of cultural barriers, reduced language barriers, and
more—and invite me to come speak, anyway?
&lt;/p&gt;
&lt;p&gt;
Note that because the US Border Patrol apparently Googles people when they stop at
the border, 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
This all started of course when I was up-front and honest about the speaking engagement
the first time I went through, which flagged me in their system. This became very
obvious this past weekend when I attended the Twin Cities Code Camp and was at the
border for an hour. On that entry I specified that I was going for a shopping weekend,
which I was; I was also planning on going to the Twin Cities Code Camp, a free event
and one that I was volunteering at. I didn’t mention that because why confuse the
issue trying to explain what a code camp was, that it was free, and why I would consider
speaking for free. This was a mistake for two reasons…
&lt;/p&gt;
&lt;p&gt;
For one, they do have internet at CBP offices. So if you’re flagged, and you have
to go for secondary interviewing, realize that you may be Googled. And as such, blog
posts talking about said code camp or eating a Chipotle Burrito may appear as well
(“So how was the burrito?” was a question I was asked).
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
... and because there's no reason to assume other nations' border patrol won't do
the same thing, I'm not going to answer that question. I don't want my views aired
on a public forum and in the context of a particular discussion acting as a convenient
reason for a bureaucrat to create heartache for the citizens of his country that are
expecting me to come and help them be more useful and productive and competitive.
&lt;/p&gt;
&lt;p&gt;
D'Arcy's spot-on right on one point, and I applaud him for saying it:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Canadians have long taken for granted our border with the USA. If there’s one thing
this experience has taught me, its that there is an air of entitlement that we’ve
had in regards to being able to cross over and do whatever we want in the US. We assume
that we’ll be as welcome as we were in the past, and that there really isn’t that
much difference between us: we drive the same cars, watch the same television and
movies, listen to the same music, read the same books.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
That &amp;quot;entitlement&amp;quot; isn't limited to just Canadians—other citizens of other
Western nations, including my own, feel that same sense of entitlement. Border control
is just a hassle, just another annoying obstacle keeping me from my travel destination,
just like airport security and agricultural inspections. (Having lived in Stamford,
CT in the 70s when entire forests were being depopulated by some sort of caterpiller/moth
infestation, and in LA in the 80s when we had to stay indoors at night as the authorities
did overhead spraying of Malathion over our house at night to kill off the fruit fly
infestation, I'm really kinda sensitive to the need for those ag inspections.)
&lt;/p&gt;
&lt;p&gt;
But the fact is, you are leaving your country, and the laws you grew up with, and
entering a new country, one which &lt;em&gt;owes you nothing&lt;/em&gt;.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
But we &lt;strong&gt;are&lt;/strong&gt; different. We are separate, independent entities with
different history, values, and morals. So to the second reason why that was a mistake:
I, as a Canadian, have no right to make a call as to whether I’m of a benefit to a
neighbouring country. I can rationalize all I want that the event is free, and that
I’m actually trying to help other Americans by sharing my knowledge, but that’s not
my call to make.
&lt;/p&gt;
&lt;p&gt;
The US is in a state of protectionism right now whether they admit it or not. When
you continue to hear about the vast number of jobs being lost, it makes sense that
they want to ensure their people are being protected first and foremost. Many of those
people include friends of mine whose companies are laying off people.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
(By the way, D'Arcy, you misspelled &amp;quot;neighboring&amp;quot;.)
&lt;/p&gt;
&lt;p&gt;
As much as D'Arcy has the right attitude about the ways in which nations get to make
decisions for their little plots of land upon the earth, and our ability to argue
with them, I still want to point out that the whole economic protectionist argument
has been used before, and it's pretty much been debunked at a number of levels. (I'm
not going down the path of talking about border security, which is a different issue
entirely and not what stops D'Arcy from coming to the US.)
&lt;/p&gt;
&lt;p&gt;
The debate around protectionism has been around as long as people have studied economics
as a formal &amp;quot;science&amp;quot;, and the end results are pretty clear: everybody benefits
when the borders are open and unrestricted. The &amp;quot;multiplier effect&amp;quot; that
macroeconomists talk about &lt;em&gt;more than makes up for whatever &amp;quot;drain&amp;quot; a
foreigner imposes on the local economy&lt;/em&gt;. 
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;Note: For those of you who haven't heard of the multiplier effect, it works like
this: while in the US to speak at whatever conference he wants to speak at, D'Arcy
spends a dollar at a hotel gift shop, of which the hotel uses $.95 to pay its local
worker's hourly wage, of which the worker spends $.90 on a hot dog for lunch, of which
the hot dog stand operator uses $.85 to buy buns for tomorrow's customers.... And
so on. Why aren't we spending the full dollar each time? Mostly because people will
often save some portion of that dollar (unless you're American, because we don't save
anything, it seems), and because the government will take some portion of that dollar
each time in taxes. What this means, though, is that the US$1 that D'Arcy spent turned
into US$4 or US$5 or more towards the total GDP of the country. Econ is a fascinating
subject sometimes.&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
And, of course, ask any three economists a question, and you'll get five different
answers. This subject is no different: protectionism has its proponents, too, usually
when the local economy is taking a hit... like now. It feels right, protecting those
who are &amp;quot;close to home&amp;quot; (and believe me, I'm sympathetic, I've had friends
who've pinged me about finding a new job within the last six months), but in the end,
everything it does is artificial—in much the same way that unions artificially keep
wages high for union workers, and impose some serious constraints on the companies
that employ them. (I don't think it's an accident that industries being hammered mercilessly
by the soft economy—the auto manufacturers and the airlines—are also ones with large
union populations.) Protectionism is almost always a short-term gain, long-term loss
kind of operation. The &amp;quot;perennial gale of creative destruction&amp;quot; (from Alan
Greenspan's &lt;em&gt;Age of Turbulence&lt;/em&gt;) isn't always gentle, but it is necessary.
&lt;/p&gt;
&lt;p&gt;
D'Arcy, in the end, closes his piece with a fond wish:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
My hope is that at some point the US and Canada will be able to get back to where
our countries were before 9/11. At the same time though, I hope that Canada realizes
during this time that it has its own identity; that we are more than just who we border
against. Maybe locking down the border will become a good thing after all.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Frankly, my wish would be for Canadians to realize their own identity (and I think
Canadians are pretty aware of this in the same way that Americans don't even realize
that it's a problem), as well, assuming that's even a problem. What's more, I think
that Canadians will find that they don't need the US nearly as much as Americans like
to think they do.
&lt;/p&gt;
&lt;p&gt;
But locking down the border is going to affect more than just Canadians—my fear is
that this protectionist attitude will in fact deter other really bright people from
coming to the US and sharing their knowledge and wisdom, or even just participating
in our economy for a while. Assume for just a moment that the million or so H-1B visas
currently allocated are suddenly all revoked and their holders must return to their
countries of origin—how many rent checks, car payments, utility bills, movie nights,
dinners at local restaurants and bank accounts are going to be exiled with them? And
this doesn't even begin to touch the potentials for racism that lurk hidden within
the system—granting visas and citizenship more easily to &amp;quot;Westerners&amp;quot; (Brits,
Germans, Australians, whatever) than &amp;quot;foreigners&amp;quot; (Hispanics, Indians, Chinese).
&lt;/p&gt;
&lt;p&gt;
The fact is, this &amp;quot;locking down the border&amp;quot; won't help us, in the long-term.
Whatever benefits we as Americans accrue from keeping our jobs intact will be lost
when those barriers finally come down and we find we can't compete on the global scale.
The &amp;quot;perennial gale of creative destruction&amp;quot; can't be bought off, it can
only be delayed. (Ask the &lt;strike&gt;Soviets&lt;/strike&gt; Russians about their success with
the high-protectionist tactic the next time you're in Moscow or St. Petersburg.)
&lt;/p&gt;
&lt;p&gt;
At some point, the borderless Internet is going to come crashing against the bordered
&amp;quot;real world&amp;quot;, and it's not going to be a pretty fight. And we, those of
us who define and shape and act as the primary consumer and producer of the Internet's
benefits, are going to find ourselves facing some uncomfortable choices.
&lt;/p&gt;
&lt;p&gt;
In the meantime, however this story ends, I want to be able to say that my country
acted in its own defense, but without prejudice, malice, or ignorance. But I'm very
worried that I won't be able to say that... and I'm worried what damage we will do
to ourselves in the interim.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;(Editor's note: It will be fascinating to see how many people call me an ignorant
racist based on nothing more than the blog title. You want to disagree with me, that's
fine, just do so on a material basis from the body of the post, not just the title.)&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=f91e4cd6-29a5-43db-b13b-1c8ff868949d" /&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,f91e4cd6-29a5-43db-b13b-1c8ff868949d.aspx</comments>
      <category>Conferences</category>
      <category>Industry</category>
      <category>Social</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=236aa3a3-83db-4c81-bb14-3085d551dad3</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,236aa3a3-83db-4c81-bb14-3085d551dad3.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,236aa3a3-83db-4c81-bb14-3085d551dad3.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=236aa3a3-83db-4c81-bb14-3085d551dad3</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This email crossed my Inbox last week while I was on the road:
</p>
        <blockquote>
          <p>
Due to the current economic situation, TechWeb has made the difficult decision to
discontinue the Software Development events, including SD West, SD Best Practices
and Architecture &amp; Design World. We are grateful for your support during SD's
twenty-four year history and are disappointed to see the events end.
</p>
        </blockquote>
        <p>
This really bums me out, because the SD shows were some of the best shows I’ve been
to, particularly SD West, which always had a great cross-cutting collection of experts
from all across the industry’s big technical areas: C++, Java, .NET, security, agile,
and more. It was also where I got to meet and interview Bjarne Stroustrup, a personal
hero of mine from back in my days as a C++ developer, where I got to hang out each
year with Scott Meyers, another personal hero (and now a good friend) as well as editor
on <em>Effective Enterprise Java</em>, and Mike Cohn, another good friend as well
as a great guy to work for. It was where I first met Gary McGraw, in a rather embarrassing
fashion—in the middle of his presentation on security, my cell phone went off with
a klaxon alarm ring tone loud enough to be heard throughout the entire room, and as
every head turned to look at me, he commented dryly, “That’s the buffer overrun alarm—somewhere
in the world, a buffer overrun attack is taking place.”
</p>
        <p>
On a positive note, however, the email goes on to say that “<a href="http://TIG.cmptechnetwork.com/cgi-bin4/DM/y/nBP5n0JjIlP0ZFX0HEjd0Eu">Cloud
Connect</a> [will] take over SD West's dates in March 2010 at the Santa Clara Convention
Center”, which is good news, since it means (hopefully) that I’ll still get a chance
to make my yearly pilgrimage to In-N-Out....
</p>
        <p>
Rest in peace, SD. You will be missed.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=236aa3a3-83db-4c81-bb14-3085d551dad3" />
        <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>SDWest, SDBestPractices, SDArch&amp;amp;Design: RIP, 1975 - 2009</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,236aa3a3-83db-4c81-bb14-3085d551dad3.aspx</guid>
      <link>http://blogs.tedneward.com/2009/03/24/SDWest+SDBestPractices+SDArchampDesign+RIP+1975+2009.aspx</link>
      <pubDate>Tue, 24 Mar 2009 00:22:43 GMT</pubDate>
      <description>&lt;p&gt;
This email crossed my Inbox last week while I was on the road:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Due to the current economic situation, TechWeb has made the difficult decision to
discontinue the Software Development events, including SD West, SD Best Practices
and Architecture &amp;amp; Design World. We are grateful for your support during SD's
twenty-four year history and are disappointed to see the events end.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
This really bums me out, because the SD shows were some of the best shows I’ve been
to, particularly SD West, which always had a great cross-cutting collection of experts
from all across the industry’s big technical areas: C++, Java, .NET, security, agile,
and more. It was also where I got to meet and interview Bjarne Stroustrup, a personal
hero of mine from back in my days as a C++ developer, where I got to hang out each
year with Scott Meyers, another personal hero (and now a good friend) as well as editor
on &lt;em&gt;Effective Enterprise Java&lt;/em&gt;, and Mike Cohn, another good friend as well
as a great guy to work for. It was where I first met Gary McGraw, in a rather embarrassing
fashion—in the middle of his presentation on security, my cell phone went off with
a klaxon alarm ring tone loud enough to be heard throughout the entire room, and as
every head turned to look at me, he commented dryly, “That’s the buffer overrun alarm—somewhere
in the world, a buffer overrun attack is taking place.”
&lt;/p&gt;
&lt;p&gt;
On a positive note, however, the email goes on to say that “&lt;a href="http://TIG.cmptechnetwork.com/cgi-bin4/DM/y/nBP5n0JjIlP0ZFX0HEjd0Eu"&gt;Cloud
Connect&lt;/a&gt; [will] take over SD West's dates in March 2010 at the Santa Clara Convention
Center”, which is good news, since it means (hopefully) that I’ll still get a chance
to make my yearly pilgrimage to In-N-Out....
&lt;/p&gt;
&lt;p&gt;
Rest in peace, SD. You will be missed.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=236aa3a3-83db-4c81-bb14-3085d551dad3" /&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,236aa3a3-83db-4c81-bb14-3085d551dad3.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>Java/J2EE</category>
      <category>Languages</category>
      <category>Ruby</category>
      <category>Security</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=b002a7e5-4308-4d6d-aab5-076011e6adcf</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,b002a7e5-4308-4d6d-aab5-076011e6adcf.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,b002a7e5-4308-4d6d-aab5-076011e6adcf.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b002a7e5-4308-4d6d-aab5-076011e6adcf</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Interesting little tidbit crossed my Inbox today...
</p>
        <blockquote>
          <p>
Only 8% members of the Scientific Research Society agreed that "peer review works
well as it is". (Chubin and Hackett, 1990; p.192). 
</p>
          <p>
"A recent U.S. Supreme Court decision and an analysis of the peer review system substantiate
complaints about this fundamental aspect of scientific research." (Horrobin, 2001) 
</p>
          <p>
Horrobin concludes that peer review "is a non-validated charade whose processes generate
results little better than does chance." (Horrobin, 2001). This has been statistically
proven and reported by an increasing number of journal editors. 
</p>
          <p>
But, "Peer Review is one of the sacred pillars of the scientific edifice" (Goodstein,
2000), it is a necessary condition in quality assurance for Scientific/Engineering
publications, and "Peer Review is central to the organization of modern science…why
not apply scientific [and engineering] methods to the peer review process" (Horrobin,
2001). 
</p>
          <p>
... 
</p>
          <p>
Chubin, D. R. and Hackett E. J., 1990, Peerless Science, Peer Review and U.S. Science
Policy; New York, State University of New York Press. 
</p>
          <p>
Horrobin, D., 2001, "Something Rotten at the Core of Science?" Trends in Pharmacological
Sciences, Vol. 22, No. 2, February 2001. Also at <a href="http://www.whale.to/vaccine/sci.html">http://www.whale.to/vaccine/sci.html</a> and <a href="http://post.queensu.ca/~forsdyke/peerrev4.htm">http://post.queensu.ca/~forsdyke/peerrev4.htm</a> (both
pages were accessed on February 1, 2009) 
</p>
          <p>
Goodstein, D., 2000, "How Science Works", U.S. Federal Judiciary Reference Manual
on Evidence, pp. 66-72 (referenced in Hoorobin, 2000)
</p>
        </blockquote>
        <p>
I know that we don't generally cite the scientific process as part of the rationale
for justifying code reviews, but it seems to have a distinct relationship. If the
peer review process is similar in concept to the code review process, and the scientific
types are starting to doubt the efficacy of peer reviews, what does that say about
the code review? 
</p>
        <p>
          <em>(Note: I'm not a scientist, so my familiarity with peer review is third-hand at
best; I'm wide open to education here. How are the code review and peer review processes
different, if in fact, they are different?)</em>
        </p>
        <p>
The Horrobin "sacred pillars" quote, in particular, makes me curious: Don't we already
apply "scientific [and engineering] methods" to the peer review process? And can we
honestly say that we in the software industry apply "scientific [and engineering]"
methods to the code review process? Can we iterate the list? Or do we just trust that
intuition and "more eyeballs" will help spot any obvious defects?
</p>
        <p>
The implications here, when tied up next to the open source fundamental principle
that states that "more eyeballs is better", are interesting to consider. <em>If</em> review
is not a scientifically-proven or "engineeringly-sound" principle, then the open source
folks are kidding themselves in thinking they're more secure or better-engineered. <em>If</em> we
conduct a scientific measurement of code-reviewed code and find that it is "a non-validated
charade whose processes generate results little better than does chance", we've at
least conducted the study, and can start thinking about ways to make it better. (I
do wish the email author had cited sources that provide the background to the statement,
"This has been statistically proven", though.)
</p>
        <p>
I know this is going to seem like a trolling post, but I'm genuinely curious--do we,
in the software industry, have any scientifically-conducted studies with quantifiable
metrics that imply that code-reviewed code is better than non-reviewed code? Or are
we just taking it as another article of faith?
</p>
        <p>
(For those who are curious, the email that triggered all this was an invitation to
a conference on peer review.
</p>
        <blockquote>
          <p>
This is the purpose of the International Symposium on Peer Reviewing: ISPR (<a href="http://www.ICTconfer.org/ispr">http://www.ICTconfer.org/ispr</a>)
being organized in the context of The 3rd International Conference on Knowledge Generation,
Communication and Management: KGCM 2009 (<a href="http://www.ICTconfer.org/kgcm">http://www.ICTconfer.org/kgcm</a>),
which will be held on July 10-13, 2009, in Orlando, Florida, USA.
</p>
        </blockquote>
        <p>
I doubt it has any direct relevance to software, but I could be wrong. If you go,
let me know of your adventures and conclusions. ;-) )
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=b002a7e5-4308-4d6d-aab5-076011e6adcf" />
        <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>As for Peer Review, Code Review?</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,b002a7e5-4308-4d6d-aab5-076011e6adcf.aspx</guid>
      <link>http://blogs.tedneward.com/2009/02/22/As+For+Peer+Review+Code+Review.aspx</link>
      <pubDate>Sun, 22 Feb 2009 18:36:43 GMT</pubDate>
      <description>&lt;p&gt;
Interesting little tidbit crossed my Inbox today...
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Only 8% members of the Scientific Research Society agreed that "peer review works
well as it is". (Chubin and Hackett, 1990; p.192). 
&lt;p&gt;
"A recent U.S. Supreme Court decision and an analysis of the peer review system substantiate
complaints about this fundamental aspect of scientific research." (Horrobin, 2001) 
&lt;p&gt;
Horrobin concludes that peer review "is a non-validated charade whose processes generate
results little better than does chance." (Horrobin, 2001). This has been statistically
proven and reported by an increasing number of journal editors. 
&lt;p&gt;
But, "Peer Review is one of the sacred pillars of the scientific edifice" (Goodstein,
2000), it is a necessary condition in quality assurance for Scientific/Engineering
publications, and "Peer Review is central to the organization of modern science…why
not apply scientific [and engineering] methods to the peer review process" (Horrobin,
2001). 
&lt;p&gt;
... 
&lt;p&gt;
Chubin, D. R. and Hackett E. J., 1990, Peerless Science, Peer Review and U.S. Science
Policy; New York, State University of New York Press. 
&lt;p&gt;
Horrobin, D., 2001, "Something Rotten at the Core of Science?" Trends in Pharmacological
Sciences, Vol. 22, No. 2, February 2001. Also at &lt;a href="http://www.whale.to/vaccine/sci.html"&gt;http://www.whale.to/vaccine/sci.html&lt;/a&gt; and &lt;a href="http://post.queensu.ca/~forsdyke/peerrev4.htm"&gt;http://post.queensu.ca/~forsdyke/peerrev4.htm&lt;/a&gt; (both
pages were accessed on February 1, 2009) 
&lt;p&gt;
Goodstein, D., 2000, "How Science Works", U.S. Federal Judiciary Reference Manual
on Evidence, pp. 66-72 (referenced in Hoorobin, 2000)
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I know that we don't generally cite the scientific process as part of the rationale
for justifying code reviews, but it seems to have a distinct relationship. If the
peer review process is similar in concept to the code review process, and the scientific
types are starting to doubt the efficacy of peer reviews, what does that say about
the code review? 
&lt;p&gt;
&lt;em&gt;(Note: I'm not a scientist, so my familiarity with peer review is third-hand at
best; I'm wide open to education here. How are the code review and peer review processes
different, if in fact, they are different?)&lt;/em&gt; 
&lt;p&gt;
The Horrobin "sacred pillars" quote, in particular, makes me curious: Don't we already
apply "scientific [and engineering] methods" to the peer review process? And can we
honestly say that we in the software industry apply "scientific [and engineering]"
methods to the code review process? Can we iterate the list? Or do we just trust that
intuition and "more eyeballs" will help spot any obvious defects?
&lt;/p&gt;
&lt;p&gt;
The implications here, when tied up next to the open source fundamental principle
that states that "more eyeballs is better", are interesting to consider. &lt;em&gt;If&lt;/em&gt; review
is not a scientifically-proven or "engineeringly-sound" principle, then the open source
folks are kidding themselves in thinking they're more secure or better-engineered. &lt;em&gt;If&lt;/em&gt; we
conduct a scientific measurement of code-reviewed code and find that it is "a non-validated
charade whose processes generate results little better than does chance", we've at
least conducted the study, and can start thinking about ways to make it better. (I
do wish the email author had cited sources that provide the background to the statement,
"This has been statistically proven", though.)
&lt;/p&gt;
&lt;p&gt;
I know this is going to seem like a trolling post, but I'm genuinely curious--do we,
in the software industry, have any scientifically-conducted studies with quantifiable
metrics that imply that code-reviewed code is better than non-reviewed code? Or are
we just taking it as another article of faith?
&lt;/p&gt;
&lt;p&gt;
(For those who are curious, the email that triggered all this was an invitation to
a conference on peer review.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
This is the purpose of the International Symposium on Peer Reviewing: ISPR (&lt;a href="http://www.ICTconfer.org/ispr"&gt;http://www.ICTconfer.org/ispr&lt;/a&gt;)
being organized in the context of The 3rd International Conference on Knowledge Generation,
Communication and Management: KGCM 2009 (&lt;a href="http://www.ICTconfer.org/kgcm"&gt;http://www.ICTconfer.org/kgcm&lt;/a&gt;),
which will be held on July 10-13, 2009, in Orlando, Florida, USA.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I doubt it has any direct relevance to software, but I could be wrong. If you go,
let me know of your adventures and conclusions. ;-) )
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=b002a7e5-4308-4d6d-aab5-076011e6adcf" /&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,b002a7e5-4308-4d6d-aab5-076011e6adcf.aspx</comments>
      <category>Conferences</category>
      <category>Development Processes</category>
      <category>Security</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=97cfa0a6-2f42-4fe1-b756-222ff3350b12</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,97cfa0a6-2f42-4fe1-b756-222ff3350b12.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,97cfa0a6-2f42-4fe1-b756-222ff3350b12.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=97cfa0a6-2f42-4fe1-b756-222ff3350b12</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Just got this email from Chris Sells:
</p>
        <blockquote>
          <p>
For twelve 45-minute slots at this year’s <a href="http://www.sellsbrothers.com/conference/">DSL
DevCon</a> (April 16-17 in Redmond, WA), we had 49 proposals. You have been selected
as speakers for the following talks. Please confirm that you’ll be there for both
days so that I can put together the schedule and post it on the conference site. This
DevCon should rock. Thanks! 
</p>
          <p>
Martin Fowler - Keynote 
</p>
          <p>
Paul Vick + Gio - Mgrammar Deep Dive 
</p>
          <p>
Tom Rodgers - Domain Specific Languages for automated testing of equity order management
systems and trading machines 
</p>
          <p>
Paul Cowan - DSLs in the Horn Package Manager 
</p>
          <p>
Guillaume Laforge - How to implement DSLs with Groovy 
</p>
          <p>
Markus Voelter - Eclipse tooling for Model-Driven stuff 
</p>
          <p>
Dionysios G. Synodinos - JavaScript DSLs for the Client Side 
</p>
          <p>
Ted Neward, Bradford Cross - Functional vs. Dynamic DSLs: The Smackdown 
</p>
          <p>
Gilad Bracha - embedding EBNF in a general purpose language 
</p>
          <p>
Umit Yalcinalp, Tilman Giese - RUMBA: RUby Managed Business data for Applications 
</p>
          <p>
Bob Archer - A DSL for Cool Effects in Adobe Pixel Blender 
</p>
          <p>
Chance Coble - Language Oriented Programming in F#
</p>
        </blockquote>
        <p>
As my 15-year-old son Michael has grown fond of saying... w00t! The list of topics
is fascinating, and I'm really looking forward to most, if not all, of them. Chance's
talk on LOP in F# should be good, I'm really curious to see Gilad's discussion of
EBNF (and wondering if this is Newspeak we'll be seeing), and Guillaume is always
fun to watch when he's going on about Groovy. Of course, I'm also excited to be paired
up with Brad, who's an insanely smart guy--I have a feeling I'll learn a lot just
by standing next to him. (Sort of a speakers' osmosis.)
</p>
        <p>
If you're not planning to be here for this (and the <a href="http://www.langnetsymposium.com/">Lang.NET
Symposium</a>), either you have life-saving surgery scheduled that can't be pushed
back, or you're clearly not interested in DSLs. For your own sake, I hope it's the
latter. ;-)
</p>
        <p>
Seriously, come for the full week. The Lang.NET Symposium last year was an amazing
event, for a number of reasons, not the least of which is that it saw Sun celebrities
John Rose, Charlie Nutter and Brian Goetz step on to the Microsoft campus, deliver
a great presentation on the JVM, MLVM/invokedynamic, and JRuby, and get good feedback
and discussion from Microsoft engineers and other notables. You don't get to see <em>that</em> every
day. :-)
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=97cfa0a6-2f42-4fe1-b756-222ff3350b12" />
        <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>Woo-hoo! Speaking at DSL DevCon 2009!</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,97cfa0a6-2f42-4fe1-b756-222ff3350b12.aspx</guid>
      <link>http://blogs.tedneward.com/2009/02/19/Woohoo+Speaking+At+DSL+DevCon+2009.aspx</link>
      <pubDate>Thu, 19 Feb 2009 00:29:25 GMT</pubDate>
      <description>&lt;p&gt;
Just got this email from Chris Sells:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
For twelve 45-minute slots at this year’s &lt;a href="http://www.sellsbrothers.com/conference/"&gt;DSL
DevCon&lt;/a&gt; (April 16-17 in Redmond, WA), we had 49 proposals. You have been selected
as speakers for the following talks. Please confirm that you’ll be there for both
days so that I can put together the schedule and post it on the conference site. This
DevCon should rock. Thanks! 
&lt;p&gt;
Martin Fowler - Keynote 
&lt;p&gt;
Paul Vick + Gio - Mgrammar Deep Dive 
&lt;p&gt;
Tom Rodgers - Domain Specific Languages for automated testing of equity order management
systems and trading machines 
&lt;p&gt;
Paul Cowan - DSLs in the Horn Package Manager 
&lt;p&gt;
Guillaume Laforge - How to implement DSLs with Groovy 
&lt;p&gt;
Markus Voelter - Eclipse tooling for Model-Driven stuff 
&lt;p&gt;
Dionysios G. Synodinos - JavaScript DSLs for the Client Side 
&lt;p&gt;
Ted Neward, Bradford Cross - Functional vs. Dynamic DSLs: The Smackdown 
&lt;p&gt;
Gilad Bracha - embedding EBNF in a general purpose language 
&lt;p&gt;
Umit Yalcinalp, Tilman Giese - RUMBA: RUby Managed Business data for Applications 
&lt;p&gt;
Bob Archer - A DSL for Cool Effects in Adobe Pixel Blender 
&lt;p&gt;
Chance Coble - Language Oriented Programming in F#
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
As my 15-year-old son Michael has grown fond of saying... w00t! The list of topics
is fascinating, and I'm really looking forward to most, if not all, of them. Chance's
talk on LOP in F# should be good, I'm really curious to see Gilad's discussion of
EBNF (and wondering if this is Newspeak we'll be seeing), and Guillaume is always
fun to watch when he's going on about Groovy. Of course, I'm also excited to be paired
up with Brad, who's an insanely smart guy--I have a feeling I'll learn a lot just
by standing next to him. (Sort of a speakers' osmosis.)
&lt;/p&gt;
&lt;p&gt;
If you're not planning to be here for this (and the &lt;a href="http://www.langnetsymposium.com/"&gt;Lang.NET
Symposium&lt;/a&gt;), either you have life-saving surgery scheduled that can't be pushed
back, or you're clearly not interested in DSLs. For your own sake, I hope it's the
latter. ;-)
&lt;/p&gt;
&lt;p&gt;
Seriously, come for the full week. The Lang.NET Symposium last year was an amazing
event, for a number of reasons, not the least of which is that it saw Sun celebrities
John Rose, Charlie Nutter and Brian Goetz step on to the Microsoft campus, deliver
a great presentation on the JVM, MLVM/invokedynamic, and JRuby, and get good feedback
and discussion from Microsoft engineers and other notables. You don't get to see &lt;em&gt;that&lt;/em&gt; every
day. :-)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=97cfa0a6-2f42-4fe1-b756-222ff3350b12" /&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,97cfa0a6-2f42-4fe1-b756-222ff3350b12.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Flash</category>
      <category>Java/J2EE</category>
      <category>Languages</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=9f331171-c446-4c83-8126-e8a949a707ac</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,9f331171-c446-4c83-8126-e8a949a707ac.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,9f331171-c446-4c83-8126-e8a949a707ac.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=9f331171-c446-4c83-8126-e8a949a707ac</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Answer: <a href="http://serialseb.blogspot.com/2009/02/altnet-london-beers-6.html">"I
don't know, but I'm damn well going to find out!"</a></p>
        <p>
(Now I really wish I were in London. Ah, well, will just have to go see Ward Cunningham
speak at Alt.NET Seattle, instead.)
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=9f331171-c446-4c83-8126-e8a949a707ac" />
        <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 do beer, London, Alt.NET and ThoughtWorks have in common?</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,9f331171-c446-4c83-8126-e8a949a707ac.aspx</guid>
      <link>http://blogs.tedneward.com/2009/02/17/What+Do+Beer+London+AltNET+And+ThoughtWorks+Have+In+Common.aspx</link>
      <pubDate>Tue, 17 Feb 2009 18:26:00 GMT</pubDate>
      <description>&lt;p&gt;
Answer: &lt;a href="http://serialseb.blogspot.com/2009/02/altnet-london-beers-6.html"&gt;"I
don't know, but I'm damn well going to find out!"&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
(Now I really wish I were in London. Ah, well, will just have to go see Ward Cunningham
speak at Alt.NET Seattle, instead.)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=9f331171-c446-4c83-8126-e8a949a707ac" /&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,9f331171-c446-4c83-8126-e8a949a707ac.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Languages</category>
      <category>Social</category>
      <category>WCF</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=1788b4cc-fc8f-4f79-bef6-6dcb784819ee</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,1788b4cc-fc8f-4f79-bef6-6dcb784819ee.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,1788b4cc-fc8f-4f79-bef6-6dcb784819ee.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=1788b4cc-fc8f-4f79-bef6-6dcb784819ee</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Last year I had the opportunity to return to the land of my roots, Poland, and speak
at Java Developer Days (JDD). Just today, the organizers from JDD sent me a link with <a href="http://www.youtube.com/watch?v=AJy8NrkmEko">a
nice little photo montage from the conference</a>. (I did notice a few photos from
the after-party were selectively left out of the montage, however, which is probably
a good thing because that was the first time I'd ever met a Polish Mad Dog, and boy
did they all go down easy...)
</p>
        <p>
If you're anywhere in the area around Krakow in March, you definitely should swing
by for their follow-up conference, <a href="http://4developers.org.pl/">4Developers</a>--it
sounds like it's going to be another fun event, and this time it's going to reach
out to more than just the Java folks, but also the .NET crowd (and a few others),
as well.
</p>
        <p>
(I don't really expect any of the readers of this blog living outside Poland to really
pack up and head over to Krakow for a weekend, mind you, but if you're a technology
speaker and you're interested in hanging with an extremely good group of people, the
people who put these shows on--ProIdea--are top-notch, take great care of the speakers,
and overall make the entire experience well worth the trip.)
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=1788b4cc-fc8f-4f79-bef6-6dcb784819ee" />
        <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>Nice little montage from JDD08</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,1788b4cc-fc8f-4f79-bef6-6dcb784819ee.aspx</guid>
      <link>http://blogs.tedneward.com/2009/02/06/Nice+Little+Montage+From+JDD08.aspx</link>
      <pubDate>Fri, 06 Feb 2009 10:17:15 GMT</pubDate>
      <description>&lt;p&gt;
Last year I had the opportunity to return to the land of my roots, Poland, and speak
at Java Developer Days (JDD). Just today, the organizers from JDD sent me a link with &lt;a href="http://www.youtube.com/watch?v=AJy8NrkmEko"&gt;a
nice little photo montage from the conference&lt;/a&gt;. (I did notice a few photos from
the after-party were selectively left out of the montage, however, which is probably
a good thing because that was the first time I'd ever met a Polish Mad Dog, and boy
did they all go down easy...)
&lt;/p&gt;
&lt;p&gt;
If you're anywhere in the area around Krakow in March, you definitely should swing
by for their follow-up conference, &lt;a href="http://4developers.org.pl/"&gt;4Developers&lt;/a&gt;--it
sounds like it's going to be another fun event, and this time it's going to reach
out to more than just the Java folks, but also the .NET crowd (and a few others),
as well.
&lt;/p&gt;
&lt;p&gt;
(I don't really expect any of the readers of this blog living outside Poland to really
pack up and head over to Krakow for a weekend, mind you, but if you're a technology
speaker and you're interested in hanging with an extremely good group of people, the
people who put these shows on--ProIdea--are top-notch, take great care of the speakers,
and overall make the entire experience well worth the trip.)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=1788b4cc-fc8f-4f79-bef6-6dcb784819ee" /&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,1788b4cc-fc8f-4f79-bef6-6dcb784819ee.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Parrot</category>
      <category>Ruby</category>
      <category>WCF</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=c8fbfc22-056a-41c9-a756-fe520994abb6</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,c8fbfc22-056a-41c9-a756-fe520994abb6.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,c8fbfc22-056a-41c9-a756-fe520994abb6.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c8fbfc22-056a-41c9-a756-fe520994abb6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
From <a href="http://www.hanselman.com/blog/SeattleRedmondBellevueNerdDinnerJan192009.aspx">Scott
Hanselman's blog</a>:
</p>
        <blockquote>
          <p>
Are you in King County/Seattle/Redmond/Bellevue Washington and surrounding areas?
Are you a huge nerd? Perhaps a geek? No? Maybe a dork, dweeb or wonk. Maybe you're
in town for an SDR (Software Design Review) visiting BillG. Quite possibly you're
just a normal person. 
</p>
          <p>
Regardless, why not join us for some Mall Food at the Crossroads Bellevue Mall Food
Court on Monday, January 19th around 6:30pm? 
</p>
          <p>
... 
</p>
          <p>
NOTE: RSVP by leaving a comment <a href="http://www.hanselman.com/blog/SeattleRedmondBellevueNerdDinnerJan192009.aspx">here</a> and
show up on January 19th at 6:30pm! Feel free to bring friends, kids or family. Bring
a Ruby or Java person!
</p>
        </blockquote>
        <p>
Any of the SeaJUG want to attend? (Anybody know of a Ruby JUG in the Eastside area,
by the way?) I'm game....
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c8fbfc22-056a-41c9-a756-fe520994abb6" />
        <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>Seattle/Redmond/Bellevue Nerd Dinner</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,c8fbfc22-056a-41c9-a756-fe520994abb6.aspx</guid>
      <link>http://blogs.tedneward.com/2009/01/18/SeattleRedmondBellevue+Nerd+Dinner.aspx</link>
      <pubDate>Sun, 18 Jan 2009 09:01:19 GMT</pubDate>
      <description>&lt;p&gt;
From &lt;a href="http://www.hanselman.com/blog/SeattleRedmondBellevueNerdDinnerJan192009.aspx"&gt;Scott
Hanselman's blog&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Are you in King County/Seattle/Redmond/Bellevue Washington and surrounding areas?
Are you a huge nerd? Perhaps a geek? No? Maybe a dork, dweeb or wonk. Maybe you're
in town for an SDR (Software Design Review) visiting BillG. Quite possibly you're
just a normal person. 
&lt;p&gt;
Regardless, why not join us for some Mall Food at the Crossroads Bellevue Mall Food
Court on Monday, January 19th around 6:30pm? 
&lt;p&gt;
... 
&lt;p&gt;
NOTE: RSVP by leaving a comment &lt;a href="http://www.hanselman.com/blog/SeattleRedmondBellevueNerdDinnerJan192009.aspx"&gt;here&lt;/a&gt; and
show up on January 19th at 6:30pm! Feel free to bring friends, kids or family. Bring
a Ruby or Java person!
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Any of the SeaJUG want to attend? (Anybody know of a Ruby JUG in the Eastside area,
by the way?) I'm game....
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c8fbfc22-056a-41c9-a756-fe520994abb6" /&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,c8fbfc22-056a-41c9-a756-fe520994abb6.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>C++</category>
      <category>Conferences</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>Ruby</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=c68b5a0f-0ea5-4272-b555-3eef96f1ceab</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,c68b5a0f-0ea5-4272-b555-3eef96f1ceab.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,c68b5a0f-0ea5-4272-b555-3eef96f1ceab.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c68b5a0f-0ea5-4272-b555-3eef96f1ceab</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Chris Sells, an acquaintance (and perhaps friend, when he's not picking on me for
my Java leanings) of mine from my DevelopMentor days, has a habit of putting on a
"DevCon" whenever a technology seems to have reached a certain maturity level. He
did it with XML a few years ago, and ATL before that, both of which were pretty amazing
events, filled with the sharpest guys in the subject, gathered into a single room
to share ideas and shoot each others' pet theories full of holes.
</p>
        <p>
He's at it again, this time with DSLs; from <a href="http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2232">the
announcement on his blog</a>:
</p>
        <blockquote>
          <p>
Are you interested in presenting a 45-minute talk on some Domain Specific Language
(DSL) related topic? It doesn't matter which platform or OS you're targeting. It also
doesn't matter whether you're an author, a vendor, a professional speaker or a developer
in the trenches (in fact, I tend to be biased toward the latter). We're after interesting
and unique applications of DSL technology and if you're doing good work in that area,
then I need you to <a href="mailto:csells@microsoft.com?subject=DSL%20DevCon%20Abstract%20Submission">send
me a session topic and 2-4 sentence abstract along with a little bit about yourself</a>. 
</p>
          <p>
I'll be taking submissions 'til February 9th, 2009, but <a href="mailto:csells@microsoft.com?subject=DSL%20DevCon%20Abstract%20Submission">don't
delay</a>. Passion and a burning story to tell count twice as much as anything else. 
</p>
          <p>
And don't be shy about spreading this announcement around! I've got good coverage
in the .NET and Windows communities, but don't know very many folks in the Java or
Unix or hardcore modeling worlds, so if you're in that world, let those guys know!
Thanks. 
</p>
          <p>
The <a href="http://sellsbrothers.com/conference/">DSL DevCon</a> itself will be in
Redmond, WA on the Microsoft campus April 16-17, 2009, right after <a href="http://www.langnetsymposium.com/">the
Lang.NET conference</a>. Lang.NET will be focused on general-purpose languages, whereas
the DSL DevCon will focus on domain-specific languages. The idea is that if you want
to attend one or the other or both, that's totally fine. We'll have 2.5 days of Lang.NET
on April 14-16 and then 1.5 days of DSL DevCon content. 
</p>
          <p>
Oh, and the cost for both conferences is the same: $0. 
</p>
          <p>
We're only accepting 150 attendees to either conference. Every one of the five previous
DevCons have sold out, so when we open registration, you'll want to be quick about
getting your name on the list. 
</p>
          <p>
            <a href="mailto:csells@microsoft.com?subject=DSL%20DevCon%20Abstract%20Submission">Submit
your DSL-related talk idea!</a>
          </p>
        </blockquote>
        <p>
For those of you who are deep in the Java or Ruby space, I really urge you to take
a chance here and come to the event--just because it's being held on the Microsoft
campus doesn't mean you're going to be forcibly plugged into the Matrix; the same
goes for the Lang.NET event in the earlier part of the week, too. Don't believe me?
I have proof: Brian Goetz, John Rose, and Charlie Nutter, Sun employees all, attended
last years Lang.NET event, talked about the JVM and JRuby, and not only did they <em>not</em> have
to give up their "sun.com" email addresses, but they came away with some new appreciations
for the CLR, the ecosystem there, and even a few insights about their own platform
in comparison to the JVM. (I won't say this as an absolute fact, but I think a lot
of John's work on method handles for Java7 came out of conversations he'd had with
some of the CLR guys that week.)
</p>
        <p>
This is a DevCon, not a MarCon or a SaleCon. If you're a dev, you're welcome to come
here. Frankly, I'd love to see the Java and Ruby (and LLVM and Parrot and ...) guys
storm the castle, so to speak, if for no other reason than so Chris will stop teasing
me about being a Java guy. ;-)
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c68b5a0f-0ea5-4272-b555-3eef96f1ceab" />
        <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>DSLs: Ready for Prime-Time?</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,c68b5a0f-0ea5-4272-b555-3eef96f1ceab.aspx</guid>
      <link>http://blogs.tedneward.com/2009/01/14/DSLs+Ready+For+PrimeTime.aspx</link>
      <pubDate>Wed, 14 Jan 2009 06:33:42 GMT</pubDate>
      <description>&lt;p&gt;
Chris Sells, an acquaintance (and perhaps friend, when he's not picking on me for
my Java leanings) of mine from my DevelopMentor days, has a habit of putting on a
"DevCon" whenever a technology seems to have reached a certain maturity level. He
did it with XML a few years ago, and ATL before that, both of which were pretty amazing
events, filled with the sharpest guys in the subject, gathered into a single room
to share ideas and shoot each others' pet theories full of holes.
&lt;/p&gt;
&lt;p&gt;
He's at it again, this time with DSLs; from &lt;a href="http://www.sellsbrothers.com/news/showTopic.aspx?ixTopic=2232"&gt;the
announcement on his blog&lt;/a&gt;:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Are you interested in presenting a 45-minute talk on some Domain Specific Language
(DSL) related topic? It doesn't matter which platform or OS you're targeting. It also
doesn't matter whether you're an author, a vendor, a professional speaker or a developer
in the trenches (in fact, I tend to be biased toward the latter). We're after interesting
and unique applications of DSL technology and if you're doing good work in that area,
then I need you to &lt;a href="mailto:csells@microsoft.com?subject=DSL%20DevCon%20Abstract%20Submission"&gt;send
me a session topic and 2-4 sentence abstract along with a little bit about yourself&lt;/a&gt;. 
&lt;p&gt;
I'll be taking submissions 'til February 9th, 2009, but &lt;a href="mailto:csells@microsoft.com?subject=DSL%20DevCon%20Abstract%20Submission"&gt;don't
delay&lt;/a&gt;. Passion and a burning story to tell count twice as much as anything else. 
&lt;p&gt;
And don't be shy about spreading this announcement around! I've got good coverage
in the .NET and Windows communities, but don't know very many folks in the Java or
Unix or hardcore modeling worlds, so if you're in that world, let those guys know!
Thanks. 
&lt;p&gt;
The &lt;a href="http://sellsbrothers.com/conference/"&gt;DSL DevCon&lt;/a&gt; itself will be in
Redmond, WA on the Microsoft campus April 16-17, 2009, right after &lt;a href="http://www.langnetsymposium.com/"&gt;the
Lang.NET conference&lt;/a&gt;. Lang.NET will be focused on general-purpose languages, whereas
the DSL DevCon will focus on domain-specific languages. The idea is that if you want
to attend one or the other or both, that's totally fine. We'll have 2.5 days of Lang.NET
on April 14-16 and then 1.5 days of DSL DevCon content. 
&lt;p&gt;
Oh, and the cost for both conferences is the same: $0. 
&lt;p&gt;
We're only accepting 150 attendees to either conference. Every one of the five previous
DevCons have sold out, so when we open registration, you'll want to be quick about
getting your name on the list. 
&lt;p&gt;
&lt;a href="mailto:csells@microsoft.com?subject=DSL%20DevCon%20Abstract%20Submission"&gt;Submit
your DSL-related talk idea!&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
For those of you who are deep in the Java or Ruby space, I really urge you to take
a chance here and come to the event--just because it's being held on the Microsoft
campus doesn't mean you're going to be forcibly plugged into the Matrix; the same
goes for the Lang.NET event in the earlier part of the week, too. Don't believe me?
I have proof: Brian Goetz, John Rose, and Charlie Nutter, Sun employees all, attended
last years Lang.NET event, talked about the JVM and JRuby, and not only did they &lt;em&gt;not&lt;/em&gt; have
to give up their "sun.com" email addresses, but they came away with some new appreciations
for the CLR, the ecosystem there, and even a few insights about their own platform
in comparison to the JVM. (I won't say this as an absolute fact, but I think a lot
of John's work on method handles for Java7 came out of conversations he'd had with
some of the CLR guys that week.)
&lt;/p&gt;
&lt;p&gt;
This is a DevCon, not a MarCon or a SaleCon. If you're a dev, you're welcome to come
here. Frankly, I'd love to see the Java and Ruby (and LLVM and Parrot and ...) guys
storm the castle, so to speak, if for no other reason than so Chris will stop teasing
me about being a Java guy. ;-)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c68b5a0f-0ea5-4272-b555-3eef96f1ceab" /&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,c68b5a0f-0ea5-4272-b555-3eef96f1ceab.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Flash</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>LLVM</category>
      <category>Parrot</category>
      <category>Ruby</category>
      <category>Visual Basic</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=00149e2d-6ba7-4f43-9e55-96f2f83d0884</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,00149e2d-6ba7-4f43-9e55-96f2f83d0884.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,00149e2d-6ba7-4f43-9e55-96f2f83d0884.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=00149e2d-6ba7-4f43-9e55-96f2f83d0884</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A friend of mine and fellow NFJS speaker, Ken Sipe, <a href="http://kensipe.blogspot.com/2009/01/windows-7-download-frustration.html">blogged
about his experiences with Windows 7</a>, and unfortunately, they're not positive.
In fact, they're downright painful to read.
</p>
        <p>
And he hasn't even begun the installation process yet:
</p>
        <blockquote>
          <p>
First I went to the public beta site... and selected the 64-bit version in english
and got this [screen shot]. WTF?? Repeated attempts resulted in the same. An oops
page with a pre-canned search. Where did I go wrong? Well as you can tell, I'm on
my Mac. So I pulled out fusion to launch Windows XP for round 2 of the attempt.
</p>
          <p>
I thought this is just wrong, but determined to get a look, I switch to windows and
my suspicions were confirmed when I got one page further. I got the download page
with a couple of large buttons on the bottm of the page and one read "Download Now".
Hey, that's what I want... I want to download now. I clicked the button and... nothing.
Click... Nothing... No way... they didn't. Round 2 was in XP, but with firefox.
</p>
          <p>
Round 3 as you would expect is XP with IE. That combination was successful and I'm
now 29% into my download.
</p>
          <p>
BTW... In the process of testing a few more times in writing up this blog, the round
1 mac failure was fixed to the point where you will get download page (nice response
time msft), however the download button fails.
</p>
          <p>
Why is it necessary to be like this? Why is it so hard to put up a link to a download
which is platform neutral? Wouldn't Microsoft want to attract customers from other
platforms? Does it always have to be all or nothing?
</p>
        </blockquote>
        <p>
Ken, for whatever it's worth, I ran into exactly the same roadblocks you did, in almost
precisely the same sequence you did. The only saving grace for me, personally, was
that after Firefox (on the Mac instead of inside the VM) couldn't download the image,
I thought that maybe Microsoft wanted to use their custom "File Transfer Manager"
utility (that allows for multiple connections, suspends and restarts, etc) to do the
download, so I fired up the VM that has that utility installed, and surfed to the
MSDN Subscriber Download page instead of the public download page.
</p>
        <p>
Now, I could go into spin/defense mode and try to point out that the vast majority
of the people interested in working with Windows 7 are, in all likelihood, going to
be that same community of users that use IE, and that Microsoft is only really beholden
to those folks, or that Microsoft knows that the beta images will scream through the
Internet over BitTorrent streams anyway, or that Microsoft wants to make sure that
it's available to those IE users first, or .... But that would all be a pretty slippery
slope, and quite frankly, I don't really believe in any of those arguments, anyway.
</p>
        <p>
Why does Microsoft do this? Honestly, in the spirit of "Never attribute to malice
that which can be explained by stupidity or ignorance" (one of another NFJS speaker's
favorite quote), I think the causation here is pretty simple to explain: I doubt anybody
at Microsoft tested it with any other browser beyond IE. I could be wrong, of course,
but I'm guessing that the conversation went something like this:
</p>
        <blockquote>
          <p>
Manager: "Dilbert!"
</p>
          <p>
Dilbert-the-website-dev: "Yes, boss?"
</p>
          <p>
Manager: "Steve Ballmer, you remember him? He wants a public web page for downloading
the Windows 7 beta, and he wants it <em>yesterday</em>. Make it happen!"
</p>
          <p>
Dilbert: "Yes, boss. But what about--"
</p>
          <p>
Manager: "No buts! This is TOP PRIORITY. Make it happen!"
</p>
        </blockquote>
        <p>
Stupid? Yep. An attempt to exclude anybody except those on IE from downloading it?
I doubt it.
</p>
        <p>
Stay strong, Ken. It really does get better after this. Really.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=00149e2d-6ba7-4f43-9e55-96f2f83d0884" />
        <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;Windows 7 Download Frustration&amp;quot;, Defended</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,00149e2d-6ba7-4f43-9e55-96f2f83d0884.aspx</guid>
      <link>http://blogs.tedneward.com/2009/01/12/quotWindows+7+Download+Frustrationquot+Defended.aspx</link>
      <pubDate>Mon, 12 Jan 2009 08:34:29 GMT</pubDate>
      <description>&lt;p&gt;
A friend of mine and fellow NFJS speaker, Ken Sipe, &lt;a href="http://kensipe.blogspot.com/2009/01/windows-7-download-frustration.html"&gt;blogged
about his experiences with Windows 7&lt;/a&gt;, and unfortunately, they're not positive.
In fact, they're downright painful to read.
&lt;/p&gt;
&lt;p&gt;
And he hasn't even begun the installation process yet:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
First I went to the public beta site... and selected the 64-bit version in english
and got this [screen shot]. WTF?? Repeated attempts resulted in the same. An oops
page with a pre-canned search. Where did I go wrong? Well as you can tell, I'm on
my Mac. So I pulled out fusion to launch Windows XP for round 2 of the attempt.
&lt;/p&gt;
&lt;p&gt;
I thought this is just wrong, but determined to get a look, I switch to windows and
my suspicions were confirmed when I got one page further. I got the download page
with a couple of large buttons on the bottm of the page and one read "Download Now".
Hey, that's what I want... I want to download now. I clicked the button and... nothing.
Click... Nothing... No way... they didn't. Round 2 was in XP, but with firefox.
&lt;/p&gt;
&lt;p&gt;
Round 3 as you would expect is XP with IE. That combination was successful and I'm
now 29% into my download.
&lt;/p&gt;
&lt;p&gt;
BTW... In the process of testing a few more times in writing up this blog, the round
1 mac failure was fixed to the point where you will get download page (nice response
time msft), however the download button fails.
&lt;/p&gt;
&lt;p&gt;
Why is it necessary to be like this? Why is it so hard to put up a link to a download
which is platform neutral? Wouldn't Microsoft want to attract customers from other
platforms? Does it always have to be all or nothing?
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Ken, for whatever it's worth, I ran into exactly the same roadblocks you did, in almost
precisely the same sequence you did. The only saving grace for me, personally, was
that after Firefox (on the Mac instead of inside the VM) couldn't download the image,
I thought that maybe Microsoft wanted to use their custom "File Transfer Manager"
utility (that allows for multiple connections, suspends and restarts, etc) to do the
download, so I fired up the VM that has that utility installed, and surfed to the
MSDN Subscriber Download page instead of the public download page.
&lt;/p&gt;
&lt;p&gt;
Now, I could go into spin/defense mode and try to point out that the vast majority
of the people interested in working with Windows 7 are, in all likelihood, going to
be that same community of users that use IE, and that Microsoft is only really beholden
to those folks, or that Microsoft knows that the beta images will scream through the
Internet over BitTorrent streams anyway, or that Microsoft wants to make sure that
it's available to those IE users first, or .... But that would all be a pretty slippery
slope, and quite frankly, I don't really believe in any of those arguments, anyway.
&lt;/p&gt;
&lt;p&gt;
Why does Microsoft do this? Honestly, in the spirit of "Never attribute to malice
that which can be explained by stupidity or ignorance" (one of another NFJS speaker's
favorite quote), I think the causation here is pretty simple to explain: I doubt anybody
at Microsoft tested it with any other browser beyond IE. I could be wrong, of course,
but I'm guessing that the conversation went something like this:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Manager: "Dilbert!"
&lt;/p&gt;
&lt;p&gt;
Dilbert-the-website-dev: "Yes, boss?"
&lt;/p&gt;
&lt;p&gt;
Manager: "Steve Ballmer, you remember him? He wants a public web page for downloading
the Windows 7 beta, and he wants it &lt;em&gt;yesterday&lt;/em&gt;. Make it happen!"
&lt;/p&gt;
&lt;p&gt;
Dilbert: "Yes, boss. But what about--"
&lt;/p&gt;
&lt;p&gt;
Manager: "No buts! This is TOP PRIORITY. Make it happen!"
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Stupid? Yep. An attempt to exclude anybody except those on IE from downloading it?
I doubt it.
&lt;/p&gt;
&lt;p&gt;
Stay strong, Ken. It really does get better after this. Really.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=00149e2d-6ba7-4f43-9e55-96f2f83d0884" /&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,00149e2d-6ba7-4f43-9e55-96f2f83d0884.aspx</comments>
      <category>.NET</category>
      <category>C#</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Visual Basic</category>
      <category>VMWare</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=3d7ca4f4-a058-40d4-b028-e2f1d2f661f5</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,3d7ca4f4-a058-40d4-b028-e2f1d2f661f5.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,3d7ca4f4-a058-40d4-b028-e2f1d2f661f5.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3d7ca4f4-a058-40d4-b028-e2f1d2f661f5</wfw:commentRss>
      <slash:comments>3</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Thanks again to the folks at Microsoft who've been gracious enough to award me MVP
Architect status again this year, and to the INETA Speakers Bureau, who've decided
that I'm to remain an INETA speaker for another twelve months.
</p>
        <p>
What's more impressive is the list of new speakers that INETA has added, including <a href="http://rachelappel.com/">Rachel
Appel</a>, <a href="http://netcave.org">Alan Stevens</a>, and <a href="http://platinumbay.com">Steve
Andrews</a>, among others. Congratulations to all three of you, you deserve it. Looking
forward to seeing you guys on the road in 2009!
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=3d7ca4f4-a058-40d4-b028-e2f1d2f661f5" />
        <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>Re-MVP'ed, Re-INETA'ed</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,3d7ca4f4-a058-40d4-b028-e2f1d2f661f5.aspx</guid>
      <link>http://blogs.tedneward.com/2009/01/02/ReMVPed+ReINETAed.aspx</link>
      <pubDate>Fri, 02 Jan 2009 07:09:33 GMT</pubDate>
      <description>&lt;p&gt;
Thanks again to the folks at Microsoft who've been gracious enough to award me MVP
Architect status again this year, and to the INETA Speakers Bureau, who've decided
that I'm to remain an INETA speaker for another twelve months.
&lt;/p&gt;
&lt;p&gt;
What's more impressive is the list of new speakers that INETA has added, including &lt;a href="http://rachelappel.com/"&gt;Rachel
Appel&lt;/a&gt;, &lt;a href="http://netcave.org"&gt;Alan Stevens&lt;/a&gt;, and &lt;a href="http://platinumbay.com"&gt;Steve
Andrews&lt;/a&gt;, among others. Congratulations to all three of you, you deserve it. Looking
forward to seeing you guys on the road in 2009!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=3d7ca4f4-a058-40d4-b028-e2f1d2f661f5" /&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,3d7ca4f4-a058-40d4-b028-e2f1d2f661f5.aspx</comments>
      <category>.NET</category>
      <category>Conferences</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=5394a334-8042-40ca-b80b-748b50ce9253</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,5394a334-8042-40ca-b80b-748b50ce9253.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,5394a334-8042-40ca-b80b-748b50ce9253.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5394a334-8042-40ca-b80b-748b50ce9253</wfw:commentRss>
      <slash:comments>5</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
It's once again that time of year, and in keeping with my tradition, I'll revisit
the 2008 predictions to see how close I came before I start waxing prophetic on the
coming year. (I'm thinking that maybe the next year--2010's edition--I should actually
take a shot at predicting the next decade, but I'm not sure if I'd remember to go
back and revisit it in 2020 to see how I did. Anybody want to set a calendar reminder
for Dec 31 2019 and remind me, complete with URL? ;-) )
</p>
        <p>
Without further preamble, here's what I said for 2008:
</p>
        <ul>
          <li>
            <strong>THEN: </strong>
            <em>General</em>: The buzz around building custom languages
will only continue to build. More and more tools are emerging to support the creation
of custom programming languages, like Microsoft's Phoenix, Scala's parser combinators,
the Microsoft DLR, SOOT, Javassist, JParsec/NParsec, and so on. Suddenly, the whole
"write your own lexer and parser and AST from scratch" idea seems about as outmoded
as the idea of building your own String class. Granted, there are cases where a from-hand
scanner/lexer/parser/AST/etc is the Right Thing To Do, but there are times when building
your own String class is the Right Thing To Do, too. Between the rich ecosystem of
dynamic languages that could be ported to the JVM/CLR, and the interesting strides
being made on both platforms (JVM and CLR) to make them more "dynamic-friendly" (such
as being able to reify classes or access the call stack directly), the probability
that your company will find a need that is best answered by building a custom language
are only going to rise. <strong>NOW: </strong>The buzz has definitely continued to
build, but buzz can only take us so far. There's been some scattershot use of custom
languages in a few scattershot situations, but it's certainly not "taken the world
by storm" in any meaningful way yet.</li>
          <li>
            <strong>THEN: </strong>
            <em>General</em>: The hype surrounding "domain-specific languages"
will peak in 2008, and start to generate a backlash. Let's be honest: when somebody
looks you straight in the eye and suggests that "scattered, smothered and covered"
is a domain-specific language, the term has lost all meaning. A lexicon unique to
an industry is not a domain-specific language; it's a lexicon. Period. If you can
incorporate said lexicon into your software, thus making it accessible to non-technical
professionals, that's a good thing. But simply using the lexicon doesn't make it a
domain-specific language. Or, alternatively, if you like, every single API designed
for a particular purpose is itself a domain-specific language. This means that Spring
configuration files are a DSL. Deployment descriptors are a DSL. The Java language
is a DSL (since the domain is that of programmers familiar with the Java language).
See how nonsensical this can get? Until somebody comes up with a workable definition
of the term "domain" in "domain-specific language", it's a nonsensical term. The idea
is a powerful one, mind you--creating something that's more "in tune" with what users
understand and can use easily is a technique that's been proven for decades now. Anybody
who's ever watched an accountant rip an entirely new set of predictions for the new
fiscal outlook based entirely on a few seed numbers and a deeply-nested set of Excel
macros knows this already. Whether you call them domain-specific languages or "little
languages" or "user-centric languages" or "macro language" is really up to you. <strong>NOW:</strong> The
backlash hasn't begun, but only because the DSL buzz hasn't materialized in much way
yet--see previous note. It generally takes a year or two of deployments (and hard-earned
experience) before a backlash begins, and we haven't hit that "deployments" stage
yet in anything yet resembling "critical mass" yet. But the DSL/custom language buzz
continues to grow, and the more the buzz grows, the more the backlash is likey.</li>
          <li>
            <strong>THEN: </strong>
            <em>General</em>: Functional languages will begin to make their
presence felt. Between Microsoft's productization plans for F# and the growing community
of Scala programmers, not to mention the inherently functional concepts buried inside
of LINQ and the concurrency-friendly capabilities of side-effect-free programming,
the world is going to find itself working its way into functional thinking either
directly or indirectly. And when programmers start to see the inherent capabilities
inside of Scala (such as Actors) and/or F# (such as asynchronous workflows), they're
going to embrace the strange new world of functional/object hybrid and never look
back. <strong>NOW:</strong> Several books on F# and Scala (and even one or two on
Haskell!) were published in 2008, and several more (including one of my own) are on
the way. The functional buzz is building, and lots of disparate groups are each evaluating
it (functional programming) independently.</li>
          <li>
            <strong>THEN: </strong>
            <em>General</em>: MacOS is going to start posting some serious
market share numbers, leading lots of analysts to predict that Microsoft Windows has
peaked and is due to collapse sometime within the remainder of the decade. Mac's not
only a wonderful OS, but it's some of the best hardware to run Vista on. That will
lead not a few customers to buy Mac hardware, wipe the machine, and install Vista,
as many of the uber-geeks in the Windows world are already doing. This will in turn
lead Gartner (always on the lookout for an established trend they can "predict" on)
to suggest that Mac is going to end up with 115% market share by 2012 (.8 probability),
then sell you this wisdom for a mere price of $1.5 million (per copy). <strong>NOW:</strong> Can't
speak to the Gartner report--I didn't have $1.5 million handy--but certainly the MacOS
is growing in popularity. More on that later.</li>
          <li>
            <strong>THEN:</strong>
            <em>General</em>: Ted will be hired by Gartner... if only to
keep him from smacking them around so much. .0001 probability, with probability going
up exponentially as my salary offer goes up exponentially. (Hey, I've got kids headed
for college in a few years.) <strong>NOW:</strong> Well, Gartner appears to have lost
my email address and phone number, but I'm sure they were planning to make me that
offer.</li>
          <li>
            <strong>THEN: </strong>
            <em>General</em>: MacOS is going to start creaking in a few
places. The Mac OS is a wonderful OS, but it's got its own creaky parts, and the more
users that come to Mac OS, the more that software packages are going to exploit some
of those creaky parts, leading to some instability in the Mac OS. It won't be widespread,
but for those who are interested in finding it, they're there. Assuming current trends
(of customers adopting Mac OS) hold, the Mac OS 10.6 upgrade is going to be a very
interesting process, indeed. <strong>NOW:</strong> Shhh. Don't tell anybody, but I've
been seeing it starting to happen. Don't get me wrong, Apple still does a pretty good
job with the OS, but the law of numbers has started to create some bad upgrade scenarios
for some people.</li>
          <li>
            <strong>THEN: </strong>
            <em>General</em>: Somebody is going to realize that iTunes
is the world's biggest monopoly on music, and Apple will be forced to defend itself
in the court of law, the court of public opinion, or both. Let's be frank: if this
were Microsoft, offering music that can only be played on Microsoft music players,
the world would be through the roof. All UI goodness to one side, the iPod represents
just as much of a monopoly in the music player business as Internet Explorer did in
the operating system business, and if the world doesn't start taking Apple to task
over this, then "justice" is a word that only applies when losers in an industry want
to drag down the market leader (which I firmly believe to be the case--nobody likes
more than to pile on the successful guy). <strong>NOW:</strong> Nothing this year.</li>
          <li>
            <strong>THEN: </strong>
            <em>General</em>: Somebody is going to realize that the iPhone's
"nothing we didn't write will survive the next upgrade process" policy is nothing
short of draconian. As my father, who gets it right every once in a while, says, "If
I put a third-party stereo in my car, the dealer doesn't get to rip it out and replace
it with one of their own (or nothing at all!) the next time I take it in for an oil
change". Fact is, if I buy the phone, I own the phone, and I own what's on it. Unfortunately,
this takes us squarely into the realm of DRM and IP ownership, and we all know how
clear-cut that is... But once the general public starts to understand some of these
issues--and I think the iPhone and iTunes may just be the vehicle that will teach
them--look out, folks, because the backlash will be huge. As in, "Move over, Mr. Gates,
you're about to be joined in infamy by your other buddy Steve...." <strong>NOW:</strong> Apple
released iPhone 2.0, and with it, the iPhone SDK, so at least Apple has opened the
dashboard to third-party stereos. But the deployment model (AppStore) is still a bit
draconian, and Apple still jealously holds the reins over which apps can be deployed
there and which ones can't, so maybe they haven't learned their lesson yet, after
all....</li>
          <li>
            <strong>THEN: </strong>
            <em>Java</em>: The OpenJDK in Mercurial will slowly start to
see some external contributions. The whole point of Mercurial is to allow for deeper
control over which changes you incorporate into your build tree, so once people figure
out how to build the JDK and how to hack on it, the local modifications will start
to seep across the Internet.... <strong>NOW:</strong> OpenJDK has started to collect
contributions from external (to Sun) sources, but still in relatively small doses,
it seems. None of the local modifications I envisioned creeping across the 'Net have
begun, that I can see, so maybe it's still waiting to happen. Or maybe the OpenJDK
is too complicated to really allow for that kind of customization, and it never will.</li>
          <li>
            <strong>THEN:</strong>
            <em>Java</em>: SpringSource will soon be seen as a vendor like
BEA or IBM or Sun. Perhaps with a bit better reputation to begin, but a vendor all
the same. <strong>NOW:</strong> SpringSource's acquisition of G2One (the company behind
Groovy just as SpringSource backs Spring) only reinforced this image, but it seems
it's still something that some fail to realize or acknowledge due to Spring's open-source
(?) nature. (I'm not a Spring expert by any means, but apparently Spring 3 was pulled
back inside the SpringSource borders, leading some people to wonder what SpringSource
is up to, and whether or not Spring will continue to be open source after all.)</li>
          <li>
            <strong>THEN:</strong>
            <em>.NET</em>: Interest in OpenJDK will bootstrap similar interest
in Rotor/SSCLI. After all, they're both VMs, with lots of interesting ideas and information
about how the managed platforms work. <strong>NOW:</strong> Nope, hasn't really happened
yet, that I can see. Not even the 2nd edition of the SSCLI book (by Joel Pobar and
yours truly, yes that was a plug) seemed to foster the kind of attention or interest
that I'd expected, or at least, not on the scale I'd thought might happen.</li>
          <li>
            <strong>THEN: </strong>
            <em>C++/Native</em>: If you've not heard of LLVM before this,
you will. It's a compiler and bytecode toolchain aimed at the native platforms, complete
with JIT and GC. <strong>NOW:</strong> Apple sank a lot of investment into LLVM, including
hosting an LLVM conference at the corporate headquarters.</li>
          <li>
            <strong>THEN:</strong>
            <em>Java</em>: Somebody will create Yet Another Rails-Killer
Web Framework. 'Nuff said. <strong>NOW:</strong> You know what? I honestly can't say
whether this happened or not; I was completely not paying attention.</li>
          <li>
            <strong>THEN:</strong>
            <em>Native</em>: Developers looking for a native programming
language will discover D, and be happy. Considering D is from the same mind that was
the core behind the Zortech C++ compiler suite, and that D has great native platform
integration (building DLLs, calling into DLLs easily, and so on), not to mention automatic
memory management (except for those areas where you want manual memory management),
it's definitely worth looking into. <a href="http://www.digitalmars.com">www.digitalmars.com</a><strong>NOW:</strong> D
had its own get-together as well, and appears to still be going strong, among the
group of developers who still work on native apps (and aren't simply maintaining legacy
C/C++ apps).</li>
        </ul>
        <p>
Now, for the 2009 predictions. The last set was a little verbose, so let me see if
I can trim the list down a little and keep it short and sweet:
</p>
        <ul>
          <li>
            <em>General:</em> "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.)</li>
          <li>
            <em>Java</em>: Interest in Scala will continue to rise, as will the number of detractors
who point out that Scala is too hard to learn.</li>
          <li>
            <em>.NET</em>: 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.)</li>
          <li>
            <em>General:</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.</li>
          <li>
            <em>General:</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.</li>
          <li>
            <em>.NET</em>: 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.</li>
          <li>
            <em>.NET</em>: 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).</li>
          <li>
            <em>Java</em>: 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.</li>
          <li>
            <em>Java</em>: The invokedynamic JSR will leapfrog in importance to the top of the
list.</li>
          <li>
            <em>Windows</em>: 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.</li>
          <li>
            <em>Mac OS</em>: 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.)</li>
          <li>
            <em>Languages</em>: 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.</li>
          <li>
            <em>XML Services</em>: 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.</li>
          <li>
            <em>Parrot</em>: 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.</li>
          <li>
            <em>Agile</em>: 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.</li>
          <li>
            <em>Flash</em>: 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.</li>
          <li>
            <em>Personal</em>: Gartner will still come knocking, looking to hire me for outrageous
sums of money to do nothing but blog and wax prophetic.</li>
        </ul>
        <p>
Well, so much for brief or short. See you all again next year....
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=5394a334-8042-40ca-b80b-748b50ce9253" />
        <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>2009 Predictions, 2008 Predictions Revisited</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,5394a334-8042-40ca-b80b-748b50ce9253.aspx</guid>
      <link>http://blogs.tedneward.com/2009/01/01/2009+Predictions+2008+Predictions+Revisited.aspx</link>
      <pubDate>Thu, 01 Jan 2009 07:54:29 GMT</pubDate>
      <description>&lt;p&gt;
It's once again that time of year, and in keeping with my tradition, I'll revisit
the 2008 predictions to see how close I came before I start waxing prophetic on the
coming year. (I'm thinking that maybe the next year--2010's edition--I should actually
take a shot at predicting the next decade, but I'm not sure if I'd remember to go
back and revisit it in 2020 to see how I did. Anybody want to set a calendar reminder
for Dec 31 2019 and remind me, complete with URL? ;-) )
&lt;/p&gt;
&lt;p&gt;
Without further preamble, here's what I said for 2008:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;THEN: &lt;/strong&gt;&lt;em&gt;General&lt;/em&gt;: The buzz around building custom languages
will only continue to build. More and more tools are emerging to support the creation
of custom programming languages, like Microsoft's Phoenix, Scala's parser combinators,
the Microsoft DLR, SOOT, Javassist, JParsec/NParsec, and so on. Suddenly, the whole
"write your own lexer and parser and AST from scratch" idea seems about as outmoded
as the idea of building your own String class. Granted, there are cases where a from-hand
scanner/lexer/parser/AST/etc is the Right Thing To Do, but there are times when building
your own String class is the Right Thing To Do, too. Between the rich ecosystem of
dynamic languages that could be ported to the JVM/CLR, and the interesting strides
being made on both platforms (JVM and CLR) to make them more "dynamic-friendly" (such
as being able to reify classes or access the call stack directly), the probability
that your company will find a need that is best answered by building a custom language
are only going to rise. &lt;strong&gt;NOW: &lt;/strong&gt;The buzz has definitely continued to
build, but buzz can only take us so far. There's been some scattershot use of custom
languages in a few scattershot situations, but it's certainly not "taken the world
by storm" in any meaningful way yet.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN: &lt;/strong&gt;&lt;em&gt;General&lt;/em&gt;: The hype surrounding "domain-specific languages"
will peak in 2008, and start to generate a backlash. Let's be honest: when somebody
looks you straight in the eye and suggests that "scattered, smothered and covered"
is a domain-specific language, the term has lost all meaning. A lexicon unique to
an industry is not a domain-specific language; it's a lexicon. Period. If you can
incorporate said lexicon into your software, thus making it accessible to non-technical
professionals, that's a good thing. But simply using the lexicon doesn't make it a
domain-specific language. Or, alternatively, if you like, every single API designed
for a particular purpose is itself a domain-specific language. This means that Spring
configuration files are a DSL. Deployment descriptors are a DSL. The Java language
is a DSL (since the domain is that of programmers familiar with the Java language).
See how nonsensical this can get? Until somebody comes up with a workable definition
of the term "domain" in "domain-specific language", it's a nonsensical term. The idea
is a powerful one, mind you--creating something that's more "in tune" with what users
understand and can use easily is a technique that's been proven for decades now. Anybody
who's ever watched an accountant rip an entirely new set of predictions for the new
fiscal outlook based entirely on a few seed numbers and a deeply-nested set of Excel
macros knows this already. Whether you call them domain-specific languages or "little
languages" or "user-centric languages" or "macro language" is really up to you. &lt;strong&gt;NOW:&lt;/strong&gt; The
backlash hasn't begun, but only because the DSL buzz hasn't materialized in much way
yet--see previous note. It generally takes a year or two of deployments (and hard-earned
experience) before a backlash begins, and we haven't hit that "deployments" stage
yet in anything yet resembling "critical mass" yet. But the DSL/custom language buzz
continues to grow, and the more the buzz grows, the more the backlash is likey.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN: &lt;/strong&gt;&lt;em&gt;General&lt;/em&gt;: Functional languages will begin to make their
presence felt. Between Microsoft's productization plans for F# and the growing community
of Scala programmers, not to mention the inherently functional concepts buried inside
of LINQ and the concurrency-friendly capabilities of side-effect-free programming,
the world is going to find itself working its way into functional thinking either
directly or indirectly. And when programmers start to see the inherent capabilities
inside of Scala (such as Actors) and/or F# (such as asynchronous workflows), they're
going to embrace the strange new world of functional/object hybrid and never look
back. &lt;strong&gt;NOW:&lt;/strong&gt; Several books on F# and Scala (and even one or two on
Haskell!) were published in 2008, and several more (including one of my own) are on
the way. The functional buzz is building, and lots of disparate groups are each evaluating
it (functional programming) independently.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN: &lt;/strong&gt;&lt;em&gt;General&lt;/em&gt;: MacOS is going to start posting some serious
market share numbers, leading lots of analysts to predict that Microsoft Windows has
peaked and is due to collapse sometime within the remainder of the decade. Mac's not
only a wonderful OS, but it's some of the best hardware to run Vista on. That will
lead not a few customers to buy Mac hardware, wipe the machine, and install Vista,
as many of the uber-geeks in the Windows world are already doing. This will in turn
lead Gartner (always on the lookout for an established trend they can "predict" on)
to suggest that Mac is going to end up with 115% market share by 2012 (.8 probability),
then sell you this wisdom for a mere price of $1.5 million (per copy). &lt;strong&gt;NOW:&lt;/strong&gt; Can't
speak to the Gartner report--I didn't have $1.5 million handy--but certainly the MacOS
is growing in popularity. More on that later.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN:&lt;/strong&gt; &lt;em&gt;General&lt;/em&gt;: Ted will be hired by Gartner... if only to
keep him from smacking them around so much. .0001 probability, with probability going
up exponentially as my salary offer goes up exponentially. (Hey, I've got kids headed
for college in a few years.) &lt;strong&gt;NOW:&lt;/strong&gt; Well, Gartner appears to have lost
my email address and phone number, but I'm sure they were planning to make me that
offer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN: &lt;/strong&gt;&lt;em&gt;General&lt;/em&gt;: MacOS is going to start creaking in a few
places. The Mac OS is a wonderful OS, but it's got its own creaky parts, and the more
users that come to Mac OS, the more that software packages are going to exploit some
of those creaky parts, leading to some instability in the Mac OS. It won't be widespread,
but for those who are interested in finding it, they're there. Assuming current trends
(of customers adopting Mac OS) hold, the Mac OS 10.6 upgrade is going to be a very
interesting process, indeed. &lt;strong&gt;NOW:&lt;/strong&gt; Shhh. Don't tell anybody, but I've
been seeing it starting to happen. Don't get me wrong, Apple still does a pretty good
job with the OS, but the law of numbers has started to create some bad upgrade scenarios
for some people.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN: &lt;/strong&gt;&lt;em&gt;General&lt;/em&gt;: Somebody is going to realize that iTunes
is the world's biggest monopoly on music, and Apple will be forced to defend itself
in the court of law, the court of public opinion, or both. Let's be frank: if this
were Microsoft, offering music that can only be played on Microsoft music players,
the world would be through the roof. All UI goodness to one side, the iPod represents
just as much of a monopoly in the music player business as Internet Explorer did in
the operating system business, and if the world doesn't start taking Apple to task
over this, then "justice" is a word that only applies when losers in an industry want
to drag down the market leader (which I firmly believe to be the case--nobody likes
more than to pile on the successful guy). &lt;strong&gt;NOW:&lt;/strong&gt; Nothing this year.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN: &lt;/strong&gt;&lt;em&gt;General&lt;/em&gt;: Somebody is going to realize that the iPhone's
"nothing we didn't write will survive the next upgrade process" policy is nothing
short of draconian. As my father, who gets it right every once in a while, says, "If
I put a third-party stereo in my car, the dealer doesn't get to rip it out and replace
it with one of their own (or nothing at all!) the next time I take it in for an oil
change". Fact is, if I buy the phone, I own the phone, and I own what's on it. Unfortunately,
this takes us squarely into the realm of DRM and IP ownership, and we all know how
clear-cut that is... But once the general public starts to understand some of these
issues--and I think the iPhone and iTunes may just be the vehicle that will teach
them--look out, folks, because the backlash will be huge. As in, "Move over, Mr. Gates,
you're about to be joined in infamy by your other buddy Steve...." &lt;strong&gt;NOW:&lt;/strong&gt; Apple
released iPhone 2.0, and with it, the iPhone SDK, so at least Apple has opened the
dashboard to third-party stereos. But the deployment model (AppStore) is still a bit
draconian, and Apple still jealously holds the reins over which apps can be deployed
there and which ones can't, so maybe they haven't learned their lesson yet, after
all....&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN: &lt;/strong&gt;&lt;em&gt;Java&lt;/em&gt;: The OpenJDK in Mercurial will slowly start to
see some external contributions. The whole point of Mercurial is to allow for deeper
control over which changes you incorporate into your build tree, so once people figure
out how to build the JDK and how to hack on it, the local modifications will start
to seep across the Internet.... &lt;strong&gt;NOW:&lt;/strong&gt; OpenJDK has started to collect
contributions from external (to Sun) sources, but still in relatively small doses,
it seems. None of the local modifications I envisioned creeping across the 'Net have
begun, that I can see, so maybe it's still waiting to happen. Or maybe the OpenJDK
is too complicated to really allow for that kind of customization, and it never will.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN:&lt;/strong&gt; &lt;em&gt;Java&lt;/em&gt;: SpringSource will soon be seen as a vendor like
BEA or IBM or Sun. Perhaps with a bit better reputation to begin, but a vendor all
the same. &lt;strong&gt;NOW:&lt;/strong&gt; SpringSource's acquisition of G2One (the company behind
Groovy just as SpringSource backs Spring) only reinforced this image, but it seems
it's still something that some fail to realize or acknowledge due to Spring's open-source
(?) nature. (I'm not a Spring expert by any means, but apparently Spring 3 was pulled
back inside the SpringSource borders, leading some people to wonder what SpringSource
is up to, and whether or not Spring will continue to be open source after all.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN:&lt;/strong&gt; &lt;em&gt;.NET&lt;/em&gt;: Interest in OpenJDK will bootstrap similar interest
in Rotor/SSCLI. After all, they're both VMs, with lots of interesting ideas and information
about how the managed platforms work. &lt;strong&gt;NOW:&lt;/strong&gt; Nope, hasn't really happened
yet, that I can see. Not even the 2nd edition of the SSCLI book (by Joel Pobar and
yours truly, yes that was a plug) seemed to foster the kind of attention or interest
that I'd expected, or at least, not on the scale I'd thought might happen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN: &lt;/strong&gt;&lt;em&gt;C++/Native&lt;/em&gt;: If you've not heard of LLVM before this,
you will. It's a compiler and bytecode toolchain aimed at the native platforms, complete
with JIT and GC. &lt;strong&gt;NOW:&lt;/strong&gt; Apple sank a lot of investment into LLVM, including
hosting an LLVM conference at the corporate headquarters.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN:&lt;/strong&gt; &lt;em&gt;Java&lt;/em&gt;: Somebody will create Yet Another Rails-Killer
Web Framework. 'Nuff said. &lt;strong&gt;NOW:&lt;/strong&gt; You know what? I honestly can't say
whether this happened or not; I was completely not paying attention.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;THEN:&lt;/strong&gt; &lt;em&gt;Native&lt;/em&gt;: Developers looking for a native programming
language will discover D, and be happy. Considering D is from the same mind that was
the core behind the Zortech C++ compiler suite, and that D has great native platform
integration (building DLLs, calling into DLLs easily, and so on), not to mention automatic
memory management (except for those areas where you want manual memory management),
it's definitely worth looking into. &lt;a href="http://www.digitalmars.com"&gt;www.digitalmars.com&lt;/a&gt; &lt;strong&gt;NOW:&lt;/strong&gt; D
had its own get-together as well, and appears to still be going strong, among the
group of developers who still work on native apps (and aren't simply maintaining legacy
C/C++ apps).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Now, for the 2009 predictions. The last set was a little verbose, so let me see if
I can trim the list down a little and keep it short and sweet:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;General:&lt;/em&gt; "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.)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Java&lt;/em&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;/li&gt;
&lt;li&gt;
&lt;em&gt;.NET&lt;/em&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;/li&gt;
&lt;li&gt;
&lt;em&gt;General:&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 "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.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;General:&lt;/em&gt; 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.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;.NET&lt;/em&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;/li&gt;
&lt;li&gt;
&lt;em&gt;.NET&lt;/em&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;/li&gt;
&lt;li&gt;
&lt;em&gt;Java&lt;/em&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 "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.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Java&lt;/em&gt;: The invokedynamic JSR will leapfrog in importance to the top of the
list.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Windows&lt;/em&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 "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.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Mac OS&lt;/em&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;/li&gt;
&lt;li&gt;
&lt;em&gt;Languages&lt;/em&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;/li&gt;
&lt;li&gt;
&lt;em&gt;XML Services&lt;/em&gt;: 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 &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 "REST"ful
will equate to "I did it myself!", complete with expectations of a gold star and a
lollipop.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Parrot&lt;/em&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;/li&gt;
&lt;li&gt;
&lt;em&gt;Agile&lt;/em&gt;: 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.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Flash&lt;/em&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 "Flash" shops or "Silverlight" shops.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Personal&lt;/em&gt;: Gartner will still come knocking, looking to hire me for outrageous
sums of money to do nothing but blog and wax prophetic.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Well, so much for brief or short. See you all again next year....
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=5394a334-8042-40ca-b80b-748b50ce9253" /&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,5394a334-8042-40ca-b80b-748b50ce9253.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>Java/J2EE</category>
      <category>Languages</category>
      <category>LLVM</category>
      <category>Mac OS</category>
      <category>Parrot</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=06f9bcf8-76ed-4bfc-ae6c-7a80aa840c3f</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,06f9bcf8-76ed-4bfc-ae6c-7a80aa840c3f.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,06f9bcf8-76ed-4bfc-ae6c-7a80aa840c3f.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=06f9bcf8-76ed-4bfc-ae6c-7a80aa840c3f</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
When I was in college, at the University of California, Davis, I lived in the International
Relations building (D Building in the Tercero dorm area, for any other UCD alum out
there), and got my first real glimpse of the feminist movement up front. It seemed
like it was filled with militant, angry members of the female half of the species,
who insisted that their gender was spelled "womyn", so that it wasn't somehow derived
from "man" (wo-man, wo-men, get it?), who blamed most of the world's problems on the
fact that men were running the show, and that therefore, because of my own gender,
I was to share equally in the blame for its ills.
</p>
        <p>
Maybe I was--Lord knows I certainly wasn't an entirely nice guy back then (and some
will chirp from the back of the theater, "back then?!?")--but it still left the whole
"feminist" thing as something I couldn't really be around, much less support.
</p>
        <p>
My sister, it turned out, had a different experience at University of California,
Santa Cruz, and became one.
</p>
        <p>
Needless to say, this made family get-togethers somewhat awkward.
</p>
        <p>
Then, a few years later, she asked my help in purchasing a new computer for herself.
Basically, she just wanted me along to help explain any of the technical terms that
she wasn't entirely familiar with, and to give her some advice on whether they were
important to her needs. Not an unreasonable request, and not something I wouldn't
do for anybody else, male or female alike. (I sometimes wish my father would ask my
help <em>before</em> buying, but that's another story.)
</p>
        <p>
We went to the store, and I got my first lesson in sexual discrimination. 
</p>
        <p>
The entire time we were in the store, despite the fact that it was my sister asking
the questions, despite the fact that I only answered questions that she asked of me
directly (in other words, I was there to help her, not to help the sales guy sell
to her), almost the entire conversation was spent with the sales guy talking to me,
even if he was answering her question. His body language was unquestionably that of,
"She's clearly not capable of making this decision herself", and addressed everything
to me, despite her repeated attempts to catch his eye and have him talk to her, the
actual purchaser with the question.
</p>
        <p>
I was a bit taken aback. I don't think the sales guy even noticed. That bothered me
more than anything.
</p>
        <p>
Ever since that time, I've been curiously and cautiously trying to figure out why
there aren't more women in IT.
</p>
        <p>
Several theories have presented themselves over the years:
</p>
        <ol>
          <li>
Women, aside from a statistical minority, are structurally incapable of mastering
IT. This is the "math is hard" argument, and I think we can all pretty much agree
where this one belongs.</li>
          <li>
Women are encouraged/forced down an educational path that leads them away from IT
until much later in life. I've heard this from a couple of women my age, and while
I think there may be some validity to it, at least back in the day, I don't know if
there still is. I'd love to get some feedback from recent high school or college grads
who can weigh in with some anecdotal evidence one way or the other.</li>
          <li>
Women are entering IT, but not in the areas that I hang out in. This is definitely
possible, and I think is happening, to some degree. At an Adobe "Flex Camp" last night
(I was Chet Haase's roadie for the evening), I noticed a far more even split of gender
than I'd ever seen at a Java or .NET user group, and when I mentioned this to one
of the other speakers, he nodded and said that women were far more prevalent in the
"web design" space, which is clearly not a space I play much in. I've also heard that
the system admin space is much more "female-friendly", too.</li>
          <li>
Women get in to IT, then out of it or stay "hidden" in it. I've heard the theory that
some women choose to get out of IT because they're not willing to put the same kind
of time and energy into it as some men are, or they choose to remain at the software
developer level instead of trying to advance the corporate ladder into management
or other more visible positions. 
</li>
          <li>
There are exactly the number of women in IT that want to be there. Hey, let's face
it, maybe women just don't <em>like</em> software development, and that's OK, because
there's a lot of jobs I don't like, either.</li>
        </ol>
        <p>
My concern is with theories 1 and 2. There should be no reason whatsoever that a woman
cannot succeed every bit as much as a man can. This is one of those (few?) industries
where the principal qualifications are entirely intellectual/mental, and that means
there's absolutely no reason why one gender should be favored over another. (Nursing
and teaching are others, for example.)
</p>
        <p>
So, without further ado, those of you who are interested, check out <a href="http://crazeegeekchick.com/blog/womenbuild-geek-girls-playing-with-legos-at-the-msdn-developer-conference/">Dana
Coffey's link on the Lego Build event</a> at the MSDN events coming up.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=06f9bcf8-76ed-4bfc-ae6c-7a80aa840c3f" />
        <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>Ruminations on Women in IT</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,06f9bcf8-76ed-4bfc-ae6c-7a80aa840c3f.aspx</guid>
      <link>http://blogs.tedneward.com/2008/12/12/Ruminations+On+Women+In+IT.aspx</link>
      <pubDate>Fri, 12 Dec 2008 19:49:12 GMT</pubDate>
      <description>&lt;p&gt;
When I was in college, at the University of California, Davis, I lived in the International
Relations building (D Building in the Tercero dorm area, for any other UCD alum out
there), and got my first real glimpse of the feminist movement up front. It seemed
like it was filled with militant, angry members of the female half of the species,
who insisted that their gender was spelled "womyn", so that it wasn't somehow derived
from "man" (wo-man, wo-men, get it?), who blamed most of the world's problems on the
fact that men were running the show, and that therefore, because of my own gender,
I was to share equally in the blame for its ills.
&lt;/p&gt;
&lt;p&gt;
Maybe I was--Lord knows I certainly wasn't an entirely nice guy back then (and some
will chirp from the back of the theater, "back then?!?")--but it still left the whole
"feminist" thing as something I couldn't really be around, much less support.
&lt;/p&gt;
&lt;p&gt;
My sister, it turned out, had a different experience at University of California,
Santa Cruz, and became one.
&lt;/p&gt;
&lt;p&gt;
Needless to say, this made family get-togethers somewhat awkward.
&lt;/p&gt;
&lt;p&gt;
Then, a few years later, she asked my help in purchasing a new computer for herself.
Basically, she just wanted me along to help explain any of the technical terms that
she wasn't entirely familiar with, and to give her some advice on whether they were
important to her needs. Not an unreasonable request, and not something I wouldn't
do for anybody else, male or female alike. (I sometimes wish my father would ask my
help &lt;em&gt;before&lt;/em&gt; buying, but that's another story.)
&lt;/p&gt;
&lt;p&gt;
We went to the store, and I got my first lesson in sexual discrimination. 
&lt;/p&gt;
&lt;p&gt;
The entire time we were in the store, despite the fact that it was my sister asking
the questions, despite the fact that I only answered questions that she asked of me
directly (in other words, I was there to help her, not to help the sales guy sell
to her), almost the entire conversation was spent with the sales guy talking to me,
even if he was answering her question. His body language was unquestionably that of,
"She's clearly not capable of making this decision herself", and addressed everything
to me, despite her repeated attempts to catch his eye and have him talk to her, the
actual purchaser with the question.
&lt;/p&gt;
&lt;p&gt;
I was a bit taken aback. I don't think the sales guy even noticed. That bothered me
more than anything.
&lt;/p&gt;
&lt;p&gt;
Ever since that time, I've been curiously and cautiously trying to figure out why
there aren't more women in IT.
&lt;/p&gt;
&lt;p&gt;
Several theories have presented themselves over the years:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Women, aside from a statistical minority, are structurally incapable of mastering
IT. This is the "math is hard" argument, and I think we can all pretty much agree
where this one belongs.&lt;/li&gt;
&lt;li&gt;
Women are encouraged/forced down an educational path that leads them away from IT
until much later in life. I've heard this from a couple of women my age, and while
I think there may be some validity to it, at least back in the day, I don't know if
there still is. I'd love to get some feedback from recent high school or college grads
who can weigh in with some anecdotal evidence one way or the other.&lt;/li&gt;
&lt;li&gt;
Women are entering IT, but not in the areas that I hang out in. This is definitely
possible, and I think is happening, to some degree. At an Adobe "Flex Camp" last night
(I was Chet Haase's roadie for the evening), I noticed a far more even split of gender
than I'd ever seen at a Java or .NET user group, and when I mentioned this to one
of the other speakers, he nodded and said that women were far more prevalent in the
"web design" space, which is clearly not a space I play much in. I've also heard that
the system admin space is much more "female-friendly", too.&lt;/li&gt;
&lt;li&gt;
Women get in to IT, then out of it or stay "hidden" in it. I've heard the theory that
some women choose to get out of IT because they're not willing to put the same kind
of time and energy into it as some men are, or they choose to remain at the software
developer level instead of trying to advance the corporate ladder into management
or other more visible positions. 
&lt;/li&gt;
&lt;li&gt;
There are exactly the number of women in IT that want to be there. Hey, let's face
it, maybe women just don't &lt;em&gt;like&lt;/em&gt; software development, and that's OK, because
there's a lot of jobs I don't like, either.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
My concern is with theories 1 and 2. There should be no reason whatsoever that a woman
cannot succeed every bit as much as a man can. This is one of those (few?) industries
where the principal qualifications are entirely intellectual/mental, and that means
there's absolutely no reason why one gender should be favored over another. (Nursing
and teaching are others, for example.)
&lt;/p&gt;
&lt;p&gt;
So, without further ado, those of you who are interested, check out &lt;a href="http://crazeegeekchick.com/blog/womenbuild-geek-girls-playing-with-legos-at-the-msdn-developer-conference/"&gt;Dana
Coffey's link on the Lego Build event&lt;/a&gt; at the MSDN events coming up.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=06f9bcf8-76ed-4bfc-ae6c-7a80aa840c3f" /&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,06f9bcf8-76ed-4bfc-ae6c-7a80aa840c3f.aspx</comments>
      <category>Conferences</category>
      <category>Development Processes</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=97495cb3-1448-4b63-a607-8472d5d2a159</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,97495cb3-1448-4b63-a607-8472d5d2a159.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,97495cb3-1448-4b63-a607-8472d5d2a159.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=97495cb3-1448-4b63-a607-8472d5d2a159</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Recently, a blog reader asked me if I wasn't doing any speaking any more since I'd
joined ThoughtWorks, and that's when I realized I'd been bad about updating my speaking
calendar on the website. Sorry, all; no, ThoughtWorks didn't pull my conference visa
or anything, I've just been bad about keeping it up to date. I'll fix that ASAP, but
in the meantime, three events that I'll be at in the coming wintry months include:
</p>
        <h3>
          <a href="http://www.oredev.org/">Øredev 2008</a>: 19 - 21 November, Malmoe, Sweden
</h3>
        <p>
Øredev will be a first for me, and I've ben invited to give a keynote there, along
with a few technical sessions. I'm also told that .NET Rocks! will be on hand, and
that they want to record a session, on whichever topic happens to cross the curious,
crafty and cunning Carl, or the uh... the uh... sorry, Richard, there's just no good
"R" adjectives I can use here. I mean, "rough" and "ready" don't exactly sound flattering
in this context, right? Sorry, man.
</p>
        <p>
In any event, I'm looking forward to this event, because it's a curious mix of technologies
and ideas (agile, ALT.NET, Java, core .NET, languages, and so on), and because I've
never been to Sweden before. One more European country, off my bucket list! :-)
</p>
        <p>
(Yes, I had to cut-and-paste the Ø wherever I needed it. *grin*)
</p>
        <h3>
        </h3>
        <h3>
          <a href="http://www.devteach.com">DevTeach 2008</a>: 1 - 5 December, Montreal,
Quebec (Canada)
</h3>
        <p>
This has been one of my favorite shows since it began, way back in 2003, and a large
part of that love has to do with the cast and crew of characters that I see there
every year: Julie Lerman, Peter DeBetta, Carl and Richard (again!), Beth Massi, "Yag"
Griver, Mario Cardinal and the rest of the Quebecois posse, Ayende, plus some new
faces and friends, like Jessica Moss and James Kovacs. (Oh, and for the record, folks,
for those of you who are <em>still</em> talking about it, the O/R-M smackdown of a
year ago was staged. It was all fake. Ayende and I are really actually friends, we
were paid a great deal of money by Carl and Richard to make it sound good, and in
fact, we both agree that the only place anybody should really ever store their data
is in an XML database.)
</p>
        <p>
If you're near Montreal, and you're a .NET dev, you really owe it to yourself to check
this show out.
</p>
        <p>
          <strong>Update:</strong> I just got this email from Jean-Rene, the guy who runs DevTeach:
</p>
        <blockquote>
          <p>
Every attendees will get Visual Studio 2008 Pro, Expression Web 2 and Tech-Ed DEV
set in their bag! 
</p>
          <p>
DevTeach believe that all developers need the right tool to be productive. This is
what we will give you, free software, when you register to DevTeach or SQLTeach. Yes
that right! We’re pleased to announce that we’re giving over a 1000$ of software when
you register to DevTeach. You will find in your conference bag a version of Visual
Studio 2008 Professional, ExpressionTM Web 2 and the Tech-Ed Conference DVD Set. Is
this a good deal or what? DevTeach and SQLTeach are really the training you can’t
get any other way. 
</p>
        </blockquote>
        <p>
Not bad. Not bad at all.
</p>
        <h3>
          <a href="http://www.devoxx.com/display/JV08/Home">DeVoxx 2008</a>: 8 - 12 December,
Antwerp, Belgium
</h3>
        <p>
DeVoxx, the recently-renamed-formerly-named-JavaPolis conference, has brought me back
to team up with Bill Venners to do a University session on Scala, and to record a
few more of those Parlays videos that people can't seem to get enough of. Given that
this show always seems to draw some of the Java world's best and brightest, I'm definitely
looking forward to the chance to point the mike at somebody's grill and give 'em hell!
Plus, I love Belgium, and I'm looking forward to getting back there. The fact that
it's going to be the middle of winter is only a bonus, as... wait... Belgium, in the
middle of winter? Whose bright idea was that?
</p>
        <p>
(And finally, a show that Carl and Richard won't be at!)
</p>
        <p>
 
</p>
        <p>
Meanwhile, I promise to keep the "Upcoming Events" up to date for 2009. Seriously.
I mean it. :-)
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=97495cb3-1448-4b63-a607-8472d5d2a159" />
        <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>Winter Travels: &amp;Oslash;redev, DevTeach, DeVoxx</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,97495cb3-1448-4b63-a607-8472d5d2a159.aspx</guid>
      <link>http://blogs.tedneward.com/2008/11/06/Winter+Travels+Oslashredev+DevTeach+DeVoxx.aspx</link>
      <pubDate>Thu, 06 Nov 2008 08:14:17 GMT</pubDate>
      <description>&lt;p&gt;
Recently, a blog reader asked me if I wasn't doing any speaking any more since I'd
joined ThoughtWorks, and that's when I realized I'd been bad about updating my speaking
calendar on the website. Sorry, all; no, ThoughtWorks didn't pull my conference visa
or anything, I've just been bad about keeping it up to date. I'll fix that ASAP, but
in the meantime, three events that I'll be at in the coming wintry months include:
&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.oredev.org/"&gt;Øredev 2008&lt;/a&gt;: 19 - 21 November, Malmoe, Sweden
&lt;/h3&gt;
&lt;p&gt;
Øredev will be a first for me, and I've ben invited to give a keynote there, along
with a few technical sessions. I'm also told that .NET Rocks! will be on hand, and
that they want to record a session, on whichever topic happens to cross the curious,
crafty and cunning Carl, or the uh... the uh... sorry, Richard, there's just no good
"R" adjectives I can use here. I mean, "rough" and "ready" don't exactly sound flattering
in this context, right? Sorry, man.
&lt;/p&gt;
&lt;p&gt;
In any event, I'm looking forward to this event, because it's a curious mix of technologies
and ideas (agile, ALT.NET, Java, core .NET, languages, and so on), and because I've
never been to Sweden before. One more European country, off my bucket list! :-)
&lt;/p&gt;
&lt;p&gt;
(Yes, I had to cut-and-paste the Ø wherever I needed it. *grin*)
&lt;/p&gt;
&lt;h3&gt;
&lt;/h3&gt;
&lt;h3&gt;&lt;a href="http://www.devteach.com"&gt;DevTeach 2008&lt;/a&gt;: 1 - 5 December, Montreal,
Quebec (Canada)
&lt;/h3&gt;
&lt;p&gt;
This has been one of my favorite shows since it began, way back in 2003, and a large
part of that love has to do with the cast and crew of characters that I see there
every year: Julie Lerman, Peter DeBetta, Carl and Richard (again!), Beth Massi, "Yag"
Griver, Mario Cardinal and the rest of the Quebecois posse, Ayende, plus some new
faces and friends, like Jessica Moss and James Kovacs. (Oh, and for the record, folks,
for those of you who are &lt;em&gt;still&lt;/em&gt; talking about it, the O/R-M smackdown of a
year ago was staged. It was all fake. Ayende and I are really actually friends, we
were paid a great deal of money by Carl and Richard to make it sound good, and in
fact, we both agree that the only place anybody should really ever store their data
is in an XML database.)
&lt;/p&gt;
&lt;p&gt;
If you're near Montreal, and you're a .NET dev, you really owe it to yourself to check
this show out.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; I just got this email from Jean-Rene, the guy who runs DevTeach:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
Every attendees will get Visual Studio 2008 Pro, Expression Web 2 and Tech-Ed DEV
set in their bag! 
&lt;p&gt;
DevTeach believe that all developers need the right tool to be productive. This is
what we will give you, free software, when you register to DevTeach or SQLTeach. Yes
that right! We’re pleased to announce that we’re giving over a 1000$ of software when
you register to DevTeach. You will find in your conference bag a version of Visual
Studio 2008 Professional, ExpressionTM Web 2 and the Tech-Ed Conference DVD Set. Is
this a good deal or what? DevTeach and SQLTeach are really the training you can’t
get any other way. 
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Not bad. Not bad at all.
&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.devoxx.com/display/JV08/Home"&gt;DeVoxx 2008&lt;/a&gt;: 8 - 12 December,
Antwerp, Belgium
&lt;/h3&gt;
&lt;p&gt;
DeVoxx, the recently-renamed-formerly-named-JavaPolis conference, has brought me back
to team up with Bill Venners to do a University session on Scala, and to record a
few more of those Parlays videos that people can't seem to get enough of. Given that
this show always seems to draw some of the Java world's best and brightest, I'm definitely
looking forward to the chance to point the mike at somebody's grill and give 'em hell!
Plus, I love Belgium, and I'm looking forward to getting back there. The fact that
it's going to be the middle of winter is only a bonus, as... wait... Belgium, in the
middle of winter? Whose bright idea was that?
&lt;/p&gt;
&lt;p&gt;
(And finally, a show that Carl and Richard won't be at!)
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Meanwhile, I promise to keep the "Upcoming Events" up to date for 2009. Seriously.
I mean it. :-)
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=97495cb3-1448-4b63-a607-8472d5d2a159" /&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,97495cb3-1448-4b63-a607-8472d5d2a159.aspx</comments>
      <category>.NET</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Ruby</category>
      <category>Security</category>
      <category>Visual Basic</category>
      <category>Windows</category>
      <category>XML Services</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=5ec3eab0-0822-4028-919d-5025f9847ca8</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,5ec3eab0-0822-4028-919d-5025f9847ca8.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,5ec3eab0-0822-4028-919d-5025f9847ca8.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=5ec3eab0-0822-4028-919d-5025f9847ca8</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The organizers of TSSJS 2009 have asked me to serve as the Languages track chair,
and as long-time readers of this blog will already have guessed, I've accepted quite
happily. This means that if you're interested in presenting at TSSJS on a language-on-the-JVM,
you now know where to send the bottle of Macallan 18. ;-)
</p>
        <p>
Having said that (in jest, of course--bribes have to be at least a Macallan 25 or
Macallan Cask Strength to have any real effect), I'm curious to get a sense of what
languages--and what depth in each--people are interested in seeing presented there.
Groovy, JRuby and Scala are obvious suggestions, but how deep would people be interested
in seeing these? Would you prefer to see more languages at a shallower depth, or going
really deep on a few?
</p>
        <p>
(Disclaimer: emails sent to me directly or comments on this blog will weigh in on
my decision-making process, but don't necessarily count as submitted abstracts; make
sure you send them via the "official" channels to ensure they get considered, particularly
since some proposals will be "borderline" on several different tracks, and thus could
conceivably make it in via a different track than mine.)
</p>
        <p>
Y'all know how to reach me....
</p>
        <p>
          <strong>Update:</strong> The deadline for abstracts is November 19th, so make sure
to check out the website when it goes live (Nov 11th), and if you can't figure out
how to submit an abstract, send it to me directly....
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=5ec3eab0-0822-4028-919d-5025f9847ca8" />
        <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 ServerSide Java Symposium 2009: Call for Abstracts and/or Suggestions</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,5ec3eab0-0822-4028-919d-5025f9847ca8.aspx</guid>
      <link>http://blogs.tedneward.com/2008/11/03/The+ServerSide+Java+Symposium+2009+Call+For+Abstracts+Andor+Suggestions.aspx</link>
      <pubDate>Mon, 03 Nov 2008 19:53:30 GMT</pubDate>
      <description>&lt;p&gt;
The organizers of TSSJS 2009 have asked me to serve as the Languages track chair,
and as long-time readers of this blog will already have guessed, I've accepted quite
happily. This means that if you're interested in presenting at TSSJS on a language-on-the-JVM,
you now know where to send the bottle of Macallan 18. ;-)
&lt;/p&gt;
&lt;p&gt;
Having said that (in jest, of course--bribes have to be at least a Macallan 25 or
Macallan Cask Strength to have any real effect), I'm curious to get a sense of what
languages--and what depth in each--people are interested in seeing presented there.
Groovy, JRuby and Scala are obvious suggestions, but how deep would people be interested
in seeing these? Would you prefer to see more languages at a shallower depth, or going
really deep on a few?
&lt;/p&gt;
&lt;p&gt;
(Disclaimer: emails sent to me directly or comments on this blog will weigh in on
my decision-making process, but don't necessarily count as submitted abstracts; make
sure you send them via the "official" channels to ensure they get considered, particularly
since some proposals will be "borderline" on several different tracks, and thus could
conceivably make it in via a different track than mine.)
&lt;/p&gt;
&lt;p&gt;
Y'all know how to reach me....
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; The deadline for abstracts is November 19th, so make sure
to check out the website when it goes live (Nov 11th), and if you can't figure out
how to submit an abstract, send it to me directly....
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=5ec3eab0-0822-4028-919d-5025f9847ca8" /&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,5ec3eab0-0822-4028-919d-5025f9847ca8.aspx</comments>
      <category>Conferences</category>
      <category>Java/J2EE</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=8e0ae181-cdae-412c-95c7-ea7ab2da39b9</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,8e0ae181-cdae-412c-95c7-ea7ab2da39b9.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,8e0ae181-cdae-412c-95c7-ea7ab2da39b9.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8e0ae181-cdae-412c-95c7-ea7ab2da39b9</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
PDC 2008 in LA is over now, and like most PDCs, it definitely didn't disappoint on
the technical front--Microsoft tossed out a whole slew of new technologies, ideas,
releases, and prototypes, all with the eye towards getting bits (in this case, a Western
Digital 160 GB USB hard drive) out to the developer community and getting back feedback,
either through the usual channels or, more recently, the blogosphere.
</p>
        <p>
These are the things I think I think about this past PDC:
</p>
        <ul>
          <li>
Windows 7 will be an interesting thing to watch--they handed out DVDs in both 32-
and 64-bit versions, and it's somewhat reminiscent of the Longhorn DVDs of the last
PDC. If you recall, Longhorn (what eventually became known as Vista) looked surprisingly
good--if a bit unstable, something common to any release this early--for a while,
then Vista itself pretty much fell flat. I think it will be interesting, as a social
experiment, to look at what people say about Windows 7 now, compare it to what was
said about Vista back in 2004 (which is I think when the last PDC was), and then compare
what people say 1, 2 and 3 years after the PDC release. 
</li>
          <li>
Azure dominated a lot of the focus, commensurate with the growing interest/hype around
"the cloud". All of this sounds suspiciously familiar to me, thinking back to the
early days of SOAP/WSDL, and the intense pressure for Web services to revolutionize
IT as we know it. This didn't happen, largely for technical reasons at first (incompatibilities
between toolkits most of all), then because people treated it as CORBA++ or DCOM-with-angle-brackets.
Azure and "cloud computing" have a different problem: clear definition of purpose.
I think too many people have no idea what "the cloud" really is for this to be something
to pay much attention to just yet. 
</li>
          <li>
Conference get-togethers and parties are becoming more and more lavish each year,
as the various product teams challenge one another for the coveted title of The "Dude,
were you <em>there</em> last night? It was amazing!" Party of PDC. For my money, that
party was the party at the J Lounge on Wednesday night, complete with three floors
of fun, including a wall-projected image of Rock Band, but--here's the rub--I couldn't
tell you which team actually hosted the party. There was a Microsoft Dynamics CRM
poster up in the middle of the gaming floor (bunch of XBox 360s, though not networked
together, which I found disappointing), so I'm assuming it had something to do with
them, but.... I think Microsoft product teams may want to consider saving some budget
and instead of hiring six LA Lakers Cheerleaders to sit on a couch and allow drooling
geeks to take pictures with them (no touching!), use the money to make the party--and
the hosts--stick in my mind more effectively, or at least use it to hand out technical
data on whatever it is they're building. 
</li>
          <li>
The vendor floor competition for attention is getting a little cutthroat. DevExpress
stole the show this year, importing--no joke--an actor, "Mini-Me", Vern, to essentially
echo (badly) anything Mark Miller (dressed, of course, as Austin Powers' arch-nemesis
Dr. Evil) tried to say about the most recent version of CodeRush. Granted, Mark's
new "do" (and the absurdly large head that was hiding underneath) makes it easy for
him to do a good Dr. Evil impression, but other than that, there was really nothing
parallel in the situation--despite Mark's insistence on writing code with evil Flying
Spaghetti Monsters or what not in it. I think if you're a vendor and you want to make
a splash at PDC, you think long and hard about an effective tie-in, like Infragistics'
clever "I flew 1500 miles for this T-shirt" they were giving away. 
</li>
          <li>
The language world was a bit abuzz at the barely-concealed C# 4.0 features, mostly
centering around the new "dynamic" keyword and the C# REPL loop capabilities, but
noticeably absent was any similar kind of talk or buzz around VB 10. Even C++ got
more attention than VB did, with a presentation clearly intending to call out a direct
reference to Visual C++'s heyday, "Visual C++: Why 10 is the new 6". Conversations
I had with a few Microsofties make it pretty clear that VB is now the red-headed stepchild
of the .NET language family, and that fact is going to start making itself widely
felt through the rest of the ecosystem before long, particularly now that rumors are
beginning to circulate that pretty much all the "gifted kids" that were on the VB
team have gone to find other places to exercise their intellect and innovation, such
as the Oslo team. I think Microsoft is going to find itself in an uncomfortable position
soon, of trying to kill VB off without appearing like they are trying to kill VB off,
lest they create another "VB revolution" like the one in 2001 when unmanaged VB'ers
("Classic VBers"?) looked at VB.NET and collectively puked. 
</li>
          <li>
Speaking of collective revolution, anybody remember Visual FoxPro? Those guys are
still kicking, and they were always a small fraction of the developer community, comparatively
against VB, at least. I think Microsoft is in trouble here, of their own making, for
not defining distinct and clearly differentiated roles for Visual Basic and C#. 
</li>
          <li>
The DLR is quickly moving into a position of high importance in my mind, and the fact
that it now builds on top of expression trees (from C# 3.0/LINQ) and builds its trees
in such a way that they look almost identical to what a corresponding C# or VB tree
would look like means that the DLR is about a half-step away from becoming the most
critical part of the .NET ecosystem, second only to the CLR itself. I think that while
certain Microsoft releases, like Oslo, PowerShell, C# or VB, won't adopt the DLR as
a core component to their implementation, developers looking to explore the DSL space
will find the DLR a very happy place to be, particularly in combination with F# Parser
Expression Grammars. 
</li>
          <li>
Speaking of F#, it's pretty clear that it was the developer darling--if not the media
darling--of the show. The F# Hands-on-Lab looked to be one of the more popular ones
used there, and every time I or my co-author, Amanda Laucher, talked with somebody
who didn't already know we were working on F# in a Nutshell, they were asking questions
about it and trying to understand its role in the world. I think the "cool kids" of
the development community are going to come to check out F#, find that it can do a
lot of what the O-O minded C# and VB can do, discover that the functional approach
works well in certain scenarios, and start looking to use that on their new projects. 
</li>
          <li>
I think that if the Microsoft languages family were Weasley family from Harry Potter,
C++ would be one of the two older brothers (probably Bill or Charlie, the cool older
brothers who've gone on to make their name and don't need to impress anybody any more),
Visual Basic would be Percy (desperate for validation and respect), C# would be Ron
(cleary an up-and-comer in the world, even if he was a little awkward while growing
up), and F# would be Ginny (the spunky one who clearly charts her own path despite
her initial shyness, her accidental involvement in a Voldemortian scheme and her parents'
and big brothers' interference in her life). Oslo, of course, is Professor Snape--we
can't be sure if he's a good guy or a bad guy until the last book. 
</li>
          <li>
Continuing that analogy, by the way, I think Java is clearly Hermione: wickedly book
smart, but sometimes too clever by half.</li>
        </ul>
        <p>
Overall, PDC was an amazing show, and there's clearly a lot of stuff to track. I personally
plan to take a deep dive into Oslo, and will probably blog about what I find, but
in the meantime, remember that all of the PDC bits that we got on the hard drives
are available through the various DevCenters (or so I've been told), so have a look.
There's a lot more there than just what I mentioned above.
</p>
        <p>
          <strong>Update:</strong> Lisa Feigenbaum emailed me with a correction: there <em>was</em> a
session on VB 10 at PDC, and I simply missed it in the schedule. In fact, she was
very subtle about it, simply asking me, "Did you make it to the VB talk?" and posted <a href="http://blogs.msdn.com/vbteam/archive/2008/11/02/tl12-future-directions-for-microsoft-visual-basic-lisa-feigenbaum.aspx">this
URL</a> along with it. Lisa, I stand corrected. :-) Having said that, though, I still
stand by the other points of that piece: that the buzz I was hearing (which may very
well have simply been the social circles I run in, I'll be the first to admit it,
but I can only speak to my experience here and am very willing to be told I'm full
of poopie on this one) was all C#, no VB, and that it bothers me that notable members
of the VB team have departed for other parts of the company. Please, <em>nothing</em> would
make me happier than to see VB stand as a full and equal partner in the .NET family
of languages, but right now, it really still feels like the red-headed stepchild.
Please, prove me wrong.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=8e0ae181-cdae-412c-95c7-ea7ab2da39b9" />
        <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 of a PDC (2008) Gone By...</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,8e0ae181-cdae-412c-95c7-ea7ab2da39b9.aspx</guid>
      <link>http://blogs.tedneward.com/2008/11/01/Thoughts+Of+A+PDC+2008+Gone+By.aspx</link>
      <pubDate>Sat, 01 Nov 2008 01:01:06 GMT</pubDate>
      <description>&lt;p&gt;
PDC 2008 in LA is over now, and like most PDCs, it definitely didn't disappoint on
the technical front--Microsoft tossed out a whole slew of new technologies, ideas,
releases, and prototypes, all with the eye towards getting bits (in this case, a Western
Digital 160 GB USB hard drive) out to the developer community and getting back feedback,
either through the usual channels or, more recently, the blogosphere.
&lt;/p&gt;
&lt;p&gt;
These are the things I think I think about this past PDC:
&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
Windows 7 will be an interesting thing to watch--they handed out DVDs in both 32-
and 64-bit versions, and it's somewhat reminiscent of the Longhorn DVDs of the last
PDC. If you recall, Longhorn (what eventually became known as Vista) looked surprisingly
good--if a bit unstable, something common to any release this early--for a while,
then Vista itself pretty much fell flat. I think it will be interesting, as a social
experiment, to look at what people say about Windows 7 now, compare it to what was
said about Vista back in 2004 (which is I think when the last PDC was), and then compare
what people say 1, 2 and 3 years after the PDC release. 
&lt;li&gt;
Azure dominated a lot of the focus, commensurate with the growing interest/hype around
"the cloud". All of this sounds suspiciously familiar to me, thinking back to the
early days of SOAP/WSDL, and the intense pressure for Web services to revolutionize
IT as we know it. This didn't happen, largely for technical reasons at first (incompatibilities
between toolkits most of all), then because people treated it as CORBA++ or DCOM-with-angle-brackets.
Azure and "cloud computing" have a different problem: clear definition of purpose.
I think too many people have no idea what "the cloud" really is for this to be something
to pay much attention to just yet. 
&lt;li&gt;
Conference get-togethers and parties are becoming more and more lavish each year,
as the various product teams challenge one another for the coveted title of The "Dude,
were you &lt;em&gt;there&lt;/em&gt; last night? It was amazing!" Party of PDC. For my money, that
party was the party at the J Lounge on Wednesday night, complete with three floors
of fun, including a wall-projected image of Rock Band, but--here's the rub--I couldn't
tell you which team actually hosted the party. There was a Microsoft Dynamics CRM
poster up in the middle of the gaming floor (bunch of XBox 360s, though not networked
together, which I found disappointing), so I'm assuming it had something to do with
them, but.... I think Microsoft product teams may want to consider saving some budget
and instead of hiring six LA Lakers Cheerleaders to sit on a couch and allow drooling
geeks to take pictures with them (no touching!), use the money to make the party--and
the hosts--stick in my mind more effectively, or at least use it to hand out technical
data on whatever it is they're building. 
&lt;li&gt;
The vendor floor competition for attention is getting a little cutthroat. DevExpress
stole the show this year, importing--no joke--an actor, "Mini-Me", Vern, to essentially
echo (badly) anything Mark Miller (dressed, of course, as Austin Powers' arch-nemesis
Dr. Evil) tried to say about the most recent version of CodeRush. Granted, Mark's
new "do" (and the absurdly large head that was hiding underneath) makes it easy for
him to do a good Dr. Evil impression, but other than that, there was really nothing
parallel in the situation--despite Mark's insistence on writing code with evil Flying
Spaghetti Monsters or what not in it. I think if you're a vendor and you want to make
a splash at PDC, you think long and hard about an effective tie-in, like Infragistics'
clever "I flew 1500 miles for this T-shirt" they were giving away. 
&lt;li&gt;
The language world was a bit abuzz at the barely-concealed C# 4.0 features, mostly
centering around the new "dynamic" keyword and the C# REPL loop capabilities, but
noticeably absent was any similar kind of talk or buzz around VB 10. Even C++ got
more attention than VB did, with a presentation clearly intending to call out a direct
reference to Visual C++'s heyday, "Visual C++: Why 10 is the new 6". Conversations
I had with a few Microsofties make it pretty clear that VB is now the red-headed stepchild
of the .NET language family, and that fact is going to start making itself widely
felt through the rest of the ecosystem before long, particularly now that rumors are
beginning to circulate that pretty much all the "gifted kids" that were on the VB
team have gone to find other places to exercise their intellect and innovation, such
as the Oslo team. I think Microsoft is going to find itself in an uncomfortable position
soon, of trying to kill VB off without appearing like they are trying to kill VB off,
lest they create another "VB revolution" like the one in 2001 when unmanaged VB'ers
("Classic VBers"?) looked at VB.NET and collectively puked. 
&lt;li&gt;
Speaking of collective revolution, anybody remember Visual FoxPro? Those guys are
still kicking, and they were always a small fraction of the developer community, comparatively
against VB, at least. I think Microsoft is in trouble here, of their own making, for
not defining distinct and clearly differentiated roles for Visual Basic and C#. 
&lt;li&gt;
The DLR is quickly moving into a position of high importance in my mind, and the fact
that it now builds on top of expression trees (from C# 3.0/LINQ) and builds its trees
in such a way that they look almost identical to what a corresponding C# or VB tree
would look like means that the DLR is about a half-step away from becoming the most
critical part of the .NET ecosystem, second only to the CLR itself. I think that while
certain Microsoft releases, like Oslo, PowerShell, C# or VB, won't adopt the DLR as
a core component to their implementation, developers looking to explore the DSL space
will find the DLR a very happy place to be, particularly in combination with F# Parser
Expression Grammars. 
&lt;li&gt;
Speaking of F#, it's pretty clear that it was the developer darling--if not the media
darling--of the show. The F# Hands-on-Lab looked to be one of the more popular ones
used there, and every time I or my co-author, Amanda Laucher, talked with somebody
who didn't already know we were working on F# in a Nutshell, they were asking questions
about it and trying to understand its role in the world. I think the "cool kids" of
the development community are going to come to check out F#, find that it can do a
lot of what the O-O minded C# and VB can do, discover that the functional approach
works well in certain scenarios, and start looking to use that on their new projects. 
&lt;li&gt;
I think that if the Microsoft languages family were Weasley family from Harry Potter,
C++ would be one of the two older brothers (probably Bill or Charlie, the cool older
brothers who've gone on to make their name and don't need to impress anybody any more),
Visual Basic would be Percy (desperate for validation and respect), C# would be Ron
(cleary an up-and-comer in the world, even if he was a little awkward while growing
up), and F# would be Ginny (the spunky one who clearly charts her own path despite
her initial shyness, her accidental involvement in a Voldemortian scheme and her parents'
and big brothers' interference in her life). Oslo, of course, is Professor Snape--we
can't be sure if he's a good guy or a bad guy until the last book. 
&lt;li&gt;
Continuing that analogy, by the way, I think Java is clearly Hermione: wickedly book
smart, but sometimes too clever by half.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
Overall, PDC was an amazing show, and there's clearly a lot of stuff to track. I personally
plan to take a deep dive into Oslo, and will probably blog about what I find, but
in the meantime, remember that all of the PDC bits that we got on the hard drives
are available through the various DevCenters (or so I've been told), so have a look.
There's a lot more there than just what I mentioned above.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; Lisa Feigenbaum emailed me with a correction: there &lt;em&gt;was&lt;/em&gt; a
session on VB 10 at PDC, and I simply missed it in the schedule. In fact, she was
very subtle about it, simply asking me, "Did you make it to the VB talk?" and posted &lt;a href="http://blogs.msdn.com/vbteam/archive/2008/11/02/tl12-future-directions-for-microsoft-visual-basic-lisa-feigenbaum.aspx"&gt;this
URL&lt;/a&gt; along with it. Lisa, I stand corrected. :-) Having said that, though, I still
stand by the other points of that piece: that the buzz I was hearing (which may very
well have simply been the social circles I run in, I'll be the first to admit it,
but I can only speak to my experience here and am very willing to be told I'm full
of poopie on this one) was all C#, no VB, and that it bothers me that notable members
of the VB team have departed for other parts of the company. Please, &lt;em&gt;nothing&lt;/em&gt; would
make me happier than to see VB stand as a full and equal partner in the .NET family
of languages, but right now, it really still feels like the red-headed stepchild.
Please, prove me wrong.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=8e0ae181-cdae-412c-95c7-ea7ab2da39b9" /&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,8e0ae181-cdae-412c-95c7-ea7ab2da39b9.aspx</comments>
      <category>.NET</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Flash</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Ruby</category>
      <category>Visual Basic</category>
      <category>Windows</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=f7c07550-9b11-4402-8576-2a71b37b39ac</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,f7c07550-9b11-4402-8576-2a71b37b39ac.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,f7c07550-9b11-4402-8576-2a71b37b39ac.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=f7c07550-9b11-4402-8576-2a71b37b39ac</wfw:commentRss>
      <slash:comments>6</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of the more interesting logistical problems faced by the people who run the Microsoft
Conference Center is that several events are often running in parallel, and each has
their own catering provisions--one might get snacks, another may have lunch boxes,
and others have full buffet, and so on. Of course, each group will want to make sure
their food isn't swiped by people at other events with less-appealing food, so staff
members at the Conference Center (literally) stand guard over the snack tables, looking
for badges and directing them to the appropriate table as necessary.
</p>
        <p>
This week is no different; during the <a href="http://msdn.microsoft.com/en-us/vsx/cc512752.aspx">VSX
DevCon</a>, other events have been running, including some internal Microsoft events.
And, not surprisingly, the staff are following their directives, turning people away
if they're not wearing the VSX DevCon badge.
</p>
        <p>
Even if that guy is Steve Ballmer.
</p>
        <p>
No joke: I watch as Steve Ballmer--meeting with Kevin Turner and other similarly-pedigreed
Microsoft management--comes out of his meeting room and heads over to the VSX DevCon
table to grab some cookies, only to be turned away by a MSCC staff member. "I'm sorry,
sir, those cookies are not for you."
</p>
        <p>
I wonder if George Bush ever gets pulled aside by the TSA?
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=f7c07550-9b11-4402-8576-2a71b37b39ac" />
        <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;I'm sorry, sir, those cookies are not for you...&amp;quot;</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,f7c07550-9b11-4402-8576-2a71b37b39ac.aspx</guid>
      <link>http://blogs.tedneward.com/2008/09/17/quotIm+Sorry+Sir+Those+Cookies+Are+Not+For+Youquot.aspx</link>
      <pubDate>Wed, 17 Sep 2008 23:22:44 GMT</pubDate>
      <description>&lt;p&gt;
One of the more interesting logistical problems faced by the people who run the Microsoft
Conference Center is that several events are often running in parallel, and each has
their own catering provisions--one might get snacks, another may have lunch boxes,
and others have full buffet, and so on. Of course, each group will want to make sure
their food isn't swiped by people at other events with less-appealing food, so staff
members at the Conference Center (literally) stand guard over the snack tables, looking
for badges and directing them to the appropriate table as necessary.
&lt;/p&gt;
&lt;p&gt;
This week is no different; during the &lt;a href="http://msdn.microsoft.com/en-us/vsx/cc512752.aspx"&gt;VSX
DevCon&lt;/a&gt;, other events have been running, including some internal Microsoft events.
And, not surprisingly, the staff are following their directives, turning people away
if they're not wearing the VSX DevCon badge.
&lt;/p&gt;
&lt;p&gt;
Even if that guy is Steve Ballmer.
&lt;/p&gt;
&lt;p&gt;
No joke: I watch as Steve Ballmer--meeting with Kevin Turner and other similarly-pedigreed
Microsoft management--comes out of his meeting room and heads over to the VSX DevCon
table to grab some cookies, only to be turned away by a MSCC staff member. "I'm sorry,
sir, those cookies are not for you."
&lt;/p&gt;
&lt;p&gt;
I wonder if George Bush ever gets pulled aside by the TSA?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=f7c07550-9b11-4402-8576-2a71b37b39ac" /&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,f7c07550-9b11-4402-8576-2a71b37b39ac.aspx</comments>
      <category>.NET</category>
      <category>Conferences</category>
      <category>Java/J2EE</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=363d5058-a4ab-48ef-9b5b-8b8df2069ef8</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,363d5058-a4ab-48ef-9b5b-8b8df2069ef8.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,363d5058-a4ab-48ef-9b5b-8b8df2069ef8.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=363d5058-a4ab-48ef-9b5b-8b8df2069ef8</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
For those of you who were at the Cinncinnati NFJS show, please continue on to the
next blog entry in your reader--you've already heard this. For those of you who weren't,
then allow me to make the announcement:
</p>
        <p>
Hi. My name's Ted Neward, and I am now a <a href="http://www.thoughtworks.com">ThoughtWorker</a>.
</p>
        <p>
After four months of discussions, interviews, more discussions and more interviews,
I can finally say that ThoughtWorks and I have come to a meeting of the minds, and
starting 3 September I will be a Principal Consultant at ThoughtWorks. My role there
will be to consult, write, mentor, architect and speak on Java, .NET, XML Services
(and maybe even a little Ruby), not to mention help ThoughtWorks' clients achieve
IT success in other general ways.
</p>
        <p>
Yep, I'm basically doing the same thing I've been doing for the last five years. Except
now I'm doing it with a TW logo attached to my name.
</p>
        <blockquote>
          <p>
            <em>By the way, ThoughtWorkers get to choose their own titles, and I'm curious to
know what readers think my title should be. Send me your suggestions, and if one really
strikes home, I'll use it and update this entry to reflect the choice. I have a few
ideas, but I'm finding that other people can be vastly more creative than I, and I'd
love to have a title that rivals Neal's "Meme Wrangler" in coolness. </em>
          </p>
          <p>
            <em>Oh, and for those of you who were thinking this, "Seat Warmer" has already been
taken, from what I understand.</em>
          </p>
        </blockquote>
        <p>
Honestly, this is a connection that's been hovering at the forefront of my mind for
several years. I like ThoughtWorks' focus on success, their willingness to explore
new ideas (both methodologies and technologies), their commitment to the community,
their corporate values, and their overall attitude of "work hard, play hard". There
have definitely been people who came away from ThoughtWorks with a negative impression
of the company, but they're the minority. Any company that encourages T-shirts and
jeans, XBoxes in the office, and wants to promote good corporate values is a winner
in my book. In short, ThoughtWorks is, in many ways, the consulting company that I
would want to build, if I were going to build a consulting firm. I'm not a wild fan
of the travel commitments, mind you, but I am definitely no stranger to travel, we've
got some ideas about how I can stay at home a bit more, and frankly I've been champing
at the bit to get injected into more agile and team projects, so it feels like a good
tradeoff. Plus, I get to think about languages and platforms in a more competitive
and hostile way--not that TW is a competitive and hostile place, mind you, but in
that my new fellow ThoughtWorkers will not let stupid thoughts stand for long, and
will quickly find the holes in my arguments even faster, thus making the arguments
as a whole that much stronger... or shooting them down because they really are stupid.
(Either outcome works pretty well for me.)
</p>
        <p>
What does this mean to the rest of you? Not much change, really--I'm still logging
lots of hours at conferences, I'm still writing (and blogging, when the muse strikes),
and I'm still available for consulting/mentoring/speaking; the big difference is that
now I come with a thousand-strong developers of proven capability at my back, not
to mention two of the more profound and articulate speakers in the industry (in <a href="http://memeagora.blogspot.com/">Neal</a> and <a href="http://www.martinfowler.com/bliki/">Martin</a>)
as peers. So if you've got some .NET, Java, or Ruby projects you're thinking about,
and you want a team to come in and make it happen, you know how to reach me.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=363d5058-a4ab-48ef-9b5b-8b8df2069ef8" />
        <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>An Announcement</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,363d5058-a4ab-48ef-9b5b-8b8df2069ef8.aspx</guid>
      <link>http://blogs.tedneward.com/2008/08/19/An+Announcement.aspx</link>
      <pubDate>Tue, 19 Aug 2008 18:24:39 GMT</pubDate>
      <description>&lt;p&gt;
For those of you who were at the Cinncinnati NFJS show, please continue on to the
next blog entry in your reader--you've already heard this. For those of you who weren't,
then allow me to make the announcement:
&lt;/p&gt;
&lt;p&gt;
Hi. My name's Ted Neward, and I am now a &lt;a href="http://www.thoughtworks.com"&gt;ThoughtWorker&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
After four months of discussions, interviews, more discussions and more interviews,
I can finally say that ThoughtWorks and I have come to a meeting of the minds, and
starting 3 September I will be a Principal Consultant at ThoughtWorks. My role there
will be to consult, write, mentor, architect and speak on Java, .NET, XML Services
(and maybe even a little Ruby), not to mention help ThoughtWorks' clients achieve
IT success in other general ways.
&lt;/p&gt;
&lt;p&gt;
Yep, I'm basically doing the same thing I've been doing for the last five years. Except
now I'm doing it with a TW logo attached to my name.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;By the way, ThoughtWorkers get to choose their own titles, and I'm curious to
know what readers think my title should be. Send me your suggestions, and if one really
strikes home, I'll use it and update this entry to reflect the choice. I have a few
ideas, but I'm finding that other people can be vastly more creative than I, and I'd
love to have a title that rivals Neal's "Meme Wrangler" in coolness. &lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Oh, and for those of you who were thinking this, "Seat Warmer" has already been
taken, from what I understand.&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Honestly, this is a connection that's been hovering at the forefront of my mind for
several years. I like ThoughtWorks' focus on success, their willingness to explore
new ideas (both methodologies and technologies), their commitment to the community,
their corporate values, and their overall attitude of "work hard, play hard". There
have definitely been people who came away from ThoughtWorks with a negative impression
of the company, but they're the minority. Any company that encourages T-shirts and
jeans, XBoxes in the office, and wants to promote good corporate values is a winner
in my book. In short, ThoughtWorks is, in many ways, the consulting company that I
would want to build, if I were going to build a consulting firm. I'm not a wild fan
of the travel commitments, mind you, but I am definitely no stranger to travel, we've
got some ideas about how I can stay at home a bit more, and frankly I've been champing
at the bit to get injected into more agile and team projects, so it feels like a good
tradeoff. Plus, I get to think about languages and platforms in a more competitive
and hostile way--not that TW is a competitive and hostile place, mind you, but in
that my new fellow ThoughtWorkers will not let stupid thoughts stand for long, and
will quickly find the holes in my arguments even faster, thus making the arguments
as a whole that much stronger... or shooting them down because they really are stupid.
(Either outcome works pretty well for me.)
&lt;/p&gt;
&lt;p&gt;
What does this mean to the rest of you? Not much change, really--I'm still logging
lots of hours at conferences, I'm still writing (and blogging, when the muse strikes),
and I'm still available for consulting/mentoring/speaking; the big difference is that
now I come with a thousand-strong developers of proven capability at my back, not
to mention two of the more profound and articulate speakers in the industry (in &lt;a href="http://memeagora.blogspot.com/"&gt;Neal&lt;/a&gt; and &lt;a href="http://www.martinfowler.com/bliki/"&gt;Martin&lt;/a&gt;)
as peers. So if you've got some .NET, Java, or Ruby projects you're thinking about,
and you want a team to come in and make it happen, you know how to reach me.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=363d5058-a4ab-48ef-9b5b-8b8df2069ef8" /&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,363d5058-a4ab-48ef-9b5b-8b8df2069ef8.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>Mac OS</category>
      <category>Parrot</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=c3ad9bf0-39cd-4985-981e-dabc0342dbf2</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,c3ad9bf0-39cd-4985-981e-dabc0342dbf2.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,c3ad9bf0-39cd-4985-981e-dabc0342dbf2.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=c3ad9bf0-39cd-4985-981e-dabc0342dbf2</wfw:commentRss>
      <slash:comments>9</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
This comment deserves response:
</p>
        <blockquote>
          <p>
First of all, if you're quoting my post, blocking out my name, and attacking me behind
my back by calling me "our intrepid troll", you could have shown the decency of linking
back to my original post. Here it is, for those interested in the real discussion: 
</p>
          <p>
            <a href="http://www.agilesoftwaredevelopment.com/blog/jurgenappelo/professionalism-knowledge-first">http://www.agilesoftwaredevelopment.com/blog/jurgenappelo/professionalism-knowledge-first</a>
          </p>
        </blockquote>
        <p>
Well, frankly, I didn't get your post from your blog, I got it from an email 'zine
(as indicated by the comment "This crossed my Inbox..."), and I didn't really think
that anybody would have any difficulty tracking down where it came from, at least
in terms of the email blast that put it into my Inbox. Coupled with the fact that,
quite honestly, I don't generally make a practice of using peoples' names without
their permission (and my email to the author asking if I could quote the post with
his name attached generated no response), so I blocked out the name. Having said that,
I'm pleased to offer full credit as to its source. 
</p>
        <blockquote>
          <p>
Now, let's review some of your remarks: 
</p>
          <p>
"COBOL is (at least) twenty years old, so therefore any use of COBOL must clearly
be as idiotic." 
</p>
          <p>
I never talked about COBOL, or any other programming language. I was talking about
old practices that are nowadays considered harmful and seriously damaging. (Like practising
waterfall project management, instead of agile project management.) I don't see how
programming in COBOL could seriously damage a business. Why do you compare COBOL with
lobotomies? I don't understand. I couldn't care less about programming languages.
I care about management practices.
</p>
        </blockquote>
        <p>
Frankly, the distinction isn't very clear in your post, and even more frankly, to
draw a distinction here is a bit specious. "I didn't mean we should throw away the <em>good</em> stuff
that's twenty years old, only the <em>bad</em> stuff!" doesn't seem much like a defense
to me. There are cases where waterfall style development is <em>exactly</em> the right
thing to do a more agile approach is <em>exactly</em> the wrong thing to do--the difference,
as I'm fond of saying, lies entirely in the context of the problem. Analogously, there
are cases where keeping an existing COBOL system up and running is the wrong thing
to do, and replacing it with a new system is the right thing to do. It all depends
on context, and for that reason, any dogmatic suggestion otherwise is flawed. 
</p>
        <blockquote>
          <p>
"How can a developer honestly claim to know "what it can be good for", without some
kind of experience to back it?" 
</p>
          <p>
I'm talking about gaining knowledge from the experience of others. If I hear 10 experts
advising the same best practice, then I still don't have any experience in that best
practice. I only have knowledge about it. That's how you can apply your knowledge
without your experience.
</p>
        </blockquote>
        <p>
Leaving aside the notion that there is no such thing as best practices (another favorite
rant of mine), what you're suggesting is that you, the individual, don't necessarily
have to have experience in the topic but others have to, before we can put faith into
it. That's a very different scenario than saying "We don't need no stinkin' experience",
and is still vastly more dangerous than saying, "I have used this, it works." I (and
lots of IT shops, I've found) will vastly prefer the latter to the former. 
</p>
        <blockquote>
          <p>
"Knowledge, apparently, isn't enough--experience still matters" 
</p>
          <p>
Yes, I never said experience doesn't matter. I only said it has no value when you
don't have gained the appropriate knowledge (from other sources) on when to apply
it, and when not.
</p>
        </blockquote>
        <p>
You said it when you offered up the title, "Knowledge, not Experience". 
</p>
        <blockquote>
          <p>
"buried under all the ludicrous hyperbole, he has a point" 
</p>
          <p>
Thanks for agreeing with me.
</p>
        </blockquote>
        <p>
You're welcome! :-) Seriously, I think I understand better what you were trying to
say, and it's not the horrendously dangerous comments that I thought you were saying,
so I will apologize here and now for believing you to be a wet-behind-the-ears/lets-let-technology-solve-all-our-problems/dangerous-to-the-extreme
developer that I've run across far too often, particularly in startups. So, please,
will you accept my apology? 
</p>
        <blockquote>
          <p>
"developers, like medical professionals, must ensure they are on top of their game
and spend some time investing in themselves and their knowledge portfolio" 
</p>
          <p>
Exactly.
</p>
        </blockquote>
        <p>
Exactly. :-) 
</p>
        <blockquote>
          <p>
"this doesn't mean that everything you learn is immediately applicable, or even appropriate,
to the situation at hand" 
</p>
          <p>
I never said that. You're putting words into my mouth. 
</p>
          <p>
My only claim is that you need to KNOW both new and old practices and understand which
ones are good and which ones can be seriously damaging. I simply don't trust people
who are bragging about their experience. What if a manager tells me he's got 15 years
of experience managing developers? If he's a micro-manager I still don't want him.
Because micro-management is considered harmful these days. A manager should KNOW that.
</p>
        </blockquote>
        <p>
Again, this was precisely the read I picked up out of the post, and my apologies for
the misinterpretation. But I stand by the idea that this is one of those posts that <em>could</em> be
read in a highly dangerous fashion, and used to promote evil, in the form of "Well,
he runs a company, so therefore he must know what he's doing, and therefore having
any kind of experience isn't really necessary to use something new, so... see, Mr.
CEO boss-of-mine? We're safe! Now get out of my way and let me use Software Factories
to build our next-generation mission-critical core-of-the-company software system,
even though nobody's ever done it before." 
</p>
        <p>
To speak to your example for a second, for example: Frankly, there are situations
where a micro-manager is a <em>good</em> thing. Young, inexperienced developers, for
example, need more hand-holding and mentoring than older, more senior, more experienced
developers do (speaking stereotypically, of course). And, quite honestly, the guy
with 15 years managing developers is <em>far</em> more likely to know how to manage
developers than the guy who's never managed developers before at all. The former is
the safer bet; not a guarantee, certainly, but often the safer bet, and that's sometimes
the best we can do in this industry. 
</p>
        <blockquote>
          <p>
"And we definitely shouldn't look at anything older than five years ago and equate
it to lobotomies." 
</p>
          <p>
I never said that either. Why do you claim that I said this? I don't have a problem
with old techniques. The daily standup meeting is a 80-year old best practice. It
was already used by pilots in the second world war. How could I be against that? It's
fine as it is.
</p>
        </blockquote>
        <p>
Um... because you used the term "lobotomies" first? And because your title pretty
clearly implies the statement, perhaps? (And let's lose the term "best practice" entirely,
please? There is no such thing--not even the daily standup.) 
</p>
        <blockquote>
          <p>
It's ok you didn't like my article. Sure it's meant to be provocative, and food for
thought. The article got twice as many positive votes than negative votes from DZone
readers. So I guess I'm adding value. But by taking the discussion away from its original
context (both physically and conceptually), and calling me names, you're not adding
any value for anyone.
</p>
        </blockquote>
        <p>
I took it in exactly the context it was given--a DZone email blast. I can't help it
if it was taken out of context, because that's how it was handed to me. What's worse,
I can see a development team citing this as an "expert opinion" to their management
as a justification to try untested approaches or technologies, or as inspiration to
a young developer, who reads "knowledge, not experience", and thinks, "Wow, if I know
all the cutting-edge latest stuff, I don't need to have those 10 years of experience
to get that job as a senior application architect." If your article was aimed more
clearly at the development process side of things, then I would wish it had appeared
more clearly in the arena of development processes, and made it more clear that your
aim was to suggest that managers (who aren't real big on reading blogs anyway, I've
sadly found) should be a bit more pragmatic and open-minded about who they hire.
</p>
        <p>
Look, I understand the desire for a provocative title--for me, the author of "The
Vietnam of Computer Science", to cast stones at another author for choosing an eye-catching
title is so far beyond hypocrisy as to move into sheer wild-eyed audacity. But I have
seen, first-hand, how that article has been used to justify the most incredibly asinine
technology decisions, and it moves me now to say "Be careful what you wish for" when
choosing titles that meant to be provocative and food for thought. Sure, your piece
got more positive votes than negative ones. So too, in their day, did articles on
client-server, on CORBA, on Six-Sigma, on the necessity for big up-front design....
</p>
        <p>
 
</p>
        <p>
Let me put it to you this way. Assume your child or your wife is sick, and as you
reach the hospital, the admittance nurse offers you a choice of the two doctors on
call. Who do you want more: the doctor who just graduated fresh from medical school
and knows all the latest in holistic and unconventional medicine, or the doctor with
30 years' experience and a solid track record of healthy patients?
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c3ad9bf0-39cd-4985-981e-dabc0342dbf2" />
        <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;Gosh, You Wanted Me to Quote You?&amp;quot; Department...</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,c3ad9bf0-39cd-4985-981e-dabc0342dbf2.aspx</guid>
      <link>http://blogs.tedneward.com/2008/07/25/From+The+QuotGosh+You+Wanted+Me+To+Quote+Youquot+Department.aspx</link>
      <pubDate>Fri, 25 Jul 2008 07:03:40 GMT</pubDate>
      <description>&lt;p&gt;
This comment deserves response:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
First of all, if you're quoting my post, blocking out my name, and attacking me behind
my back by calling me "our intrepid troll", you could have shown the decency of linking
back to my original post. Here it is, for those interested in the real discussion: 
&lt;p&gt;
&lt;a href="http://www.agilesoftwaredevelopment.com/blog/jurgenappelo/professionalism-knowledge-first"&gt;http://www.agilesoftwaredevelopment.com/blog/jurgenappelo/professionalism-knowledge-first&lt;/a&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Well, frankly, I didn't get your post from your blog, I got it from an email 'zine
(as indicated by the comment "This crossed my Inbox..."), and I didn't really think
that anybody would have any difficulty tracking down where it came from, at least
in terms of the email blast that put it into my Inbox. Coupled with the fact that,
quite honestly, I don't generally make a practice of using peoples' names without
their permission (and my email to the author asking if I could quote the post with
his name attached generated no response), so I blocked out the name. Having said that,
I'm pleased to offer full credit as to its source. &lt;blockquote&gt; 
&lt;p&gt;
Now, let's review some of your remarks: 
&lt;p&gt;
"COBOL is (at least) twenty years old, so therefore any use of COBOL must clearly
be as idiotic." 
&lt;p&gt;
I never talked about COBOL, or any other programming language. I was talking about
old practices that are nowadays considered harmful and seriously damaging. (Like practising
waterfall project management, instead of agile project management.) I don't see how
programming in COBOL could seriously damage a business. Why do you compare COBOL with
lobotomies? I don't understand. I couldn't care less about programming languages.
I care about management practices.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Frankly, the distinction isn't very clear in your post, and even more frankly, to
draw a distinction here is a bit specious. "I didn't mean we should throw away the &lt;em&gt;good&lt;/em&gt; stuff
that's twenty years old, only the &lt;em&gt;bad&lt;/em&gt; stuff!" doesn't seem much like a defense
to me. There are cases where waterfall style development is &lt;em&gt;exactly&lt;/em&gt; the right
thing to do a more agile approach is &lt;em&gt;exactly&lt;/em&gt; the wrong thing to do--the difference,
as I'm fond of saying, lies entirely in the context of the problem. Analogously, there
are cases where keeping an existing COBOL system up and running is the wrong thing
to do, and replacing it with a new system is the right thing to do. It all depends
on context, and for that reason, any dogmatic suggestion otherwise is flawed. &lt;blockquote&gt; 
&lt;p&gt;
"How can a developer honestly claim to know "what it can be good for", without some
kind of experience to back it?" 
&lt;p&gt;
I'm talking about gaining knowledge from the experience of others. If I hear 10 experts
advising the same best practice, then I still don't have any experience in that best
practice. I only have knowledge about it. That's how you can apply your knowledge
without your experience.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Leaving aside the notion that there is no such thing as best practices (another favorite
rant of mine), what you're suggesting is that you, the individual, don't necessarily
have to have experience in the topic but others have to, before we can put faith into
it. That's a very different scenario than saying "We don't need no stinkin' experience",
and is still vastly more dangerous than saying, "I have used this, it works." I (and
lots of IT shops, I've found) will vastly prefer the latter to the former. &lt;blockquote&gt; 
&lt;p&gt;
"Knowledge, apparently, isn't enough--experience still matters" 
&lt;p&gt;
Yes, I never said experience doesn't matter. I only said it has no value when you
don't have gained the appropriate knowledge (from other sources) on when to apply
it, and when not.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
You said it when you offered up the title, "Knowledge, not Experience". &lt;blockquote&gt; 
&lt;p&gt;
"buried under all the ludicrous hyperbole, he has a point" 
&lt;p&gt;
Thanks for agreeing with me.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
You're welcome! :-) Seriously, I think I understand better what you were trying to
say, and it's not the horrendously dangerous comments that I thought you were saying,
so I will apologize here and now for believing you to be a wet-behind-the-ears/lets-let-technology-solve-all-our-problems/dangerous-to-the-extreme
developer that I've run across far too often, particularly in startups. So, please,
will you accept my apology? &lt;blockquote&gt; 
&lt;p&gt;
"developers, like medical professionals, must ensure they are on top of their game
and spend some time investing in themselves and their knowledge portfolio" 
&lt;p&gt;
Exactly.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Exactly. :-) &lt;blockquote&gt; 
&lt;p&gt;
"this doesn't mean that everything you learn is immediately applicable, or even appropriate,
to the situation at hand" 
&lt;p&gt;
I never said that. You're putting words into my mouth. 
&lt;p&gt;
My only claim is that you need to KNOW both new and old practices and understand which
ones are good and which ones can be seriously damaging. I simply don't trust people
who are bragging about their experience. What if a manager tells me he's got 15 years
of experience managing developers? If he's a micro-manager I still don't want him.
Because micro-management is considered harmful these days. A manager should KNOW that.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Again, this was precisely the read I picked up out of the post, and my apologies for
the misinterpretation. But I stand by the idea that this is one of those posts that &lt;em&gt;could&lt;/em&gt; be
read in a highly dangerous fashion, and used to promote evil, in the form of "Well,
he runs a company, so therefore he must know what he's doing, and therefore having
any kind of experience isn't really necessary to use something new, so... see, Mr.
CEO boss-of-mine? We're safe! Now get out of my way and let me use Software Factories
to build our next-generation mission-critical core-of-the-company software system,
even though nobody's ever done it before." 
&lt;p&gt;
To speak to your example for a second, for example: Frankly, there are situations
where a micro-manager is a &lt;em&gt;good&lt;/em&gt; thing. Young, inexperienced developers, for
example, need more hand-holding and mentoring than older, more senior, more experienced
developers do (speaking stereotypically, of course). And, quite honestly, the guy
with 15 years managing developers is &lt;em&gt;far&lt;/em&gt; more likely to know how to manage
developers than the guy who's never managed developers before at all. The former is
the safer bet; not a guarantee, certainly, but often the safer bet, and that's sometimes
the best we can do in this industry. &lt;blockquote&gt; 
&lt;p&gt;
"And we definitely shouldn't look at anything older than five years ago and equate
it to lobotomies." 
&lt;p&gt;
I never said that either. Why do you claim that I said this? I don't have a problem
with old techniques. The daily standup meeting is a 80-year old best practice. It
was already used by pilots in the second world war. How could I be against that? It's
fine as it is.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Um... because you used the term "lobotomies" first? And because your title pretty
clearly implies the statement, perhaps? (And let's lose the term "best practice" entirely,
please? There is no such thing--not even the daily standup.) &lt;blockquote&gt; 
&lt;p&gt;
It's ok you didn't like my article. Sure it's meant to be provocative, and food for
thought. The article got twice as many positive votes than negative votes from DZone
readers. So I guess I'm adding value. But by taking the discussion away from its original
context (both physically and conceptually), and calling me names, you're not adding
any value for anyone.
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I took it in exactly the context it was given--a DZone email blast. I can't help it
if it was taken out of context, because that's how it was handed to me. What's worse,
I can see a development team citing this as an "expert opinion" to their management
as a justification to try untested approaches or technologies, or as inspiration to
a young developer, who reads "knowledge, not experience", and thinks, "Wow, if I know
all the cutting-edge latest stuff, I don't need to have those 10 years of experience
to get that job as a senior application architect." If your article was aimed more
clearly at the development process side of things, then I would wish it had appeared
more clearly in the arena of development processes, and made it more clear that your
aim was to suggest that managers (who aren't real big on reading blogs anyway, I've
sadly found) should be a bit more pragmatic and open-minded about who they hire.
&lt;/p&gt;
&lt;p&gt;
Look, I understand the desire for a provocative title--for me, the author of "The
Vietnam of Computer Science", to cast stones at another author for choosing an eye-catching
title is so far beyond hypocrisy as to move into sheer wild-eyed audacity. But I have
seen, first-hand, how that article has been used to justify the most incredibly asinine
technology decisions, and it moves me now to say "Be careful what you wish for" when
choosing titles that meant to be provocative and food for thought. Sure, your piece
got more positive votes than negative ones. So too, in their day, did articles on
client-server, on CORBA, on Six-Sigma, on the necessity for big up-front design....
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Let me put it to you this way. Assume your child or your wife is sick, and as you
reach the hospital, the admittance nurse offers you a choice of the two doctors on
call. Who do you want more: the doctor who just graduated fresh from medical school
and knows all the latest in holistic and unconventional medicine, or the doctor with
30 years' experience and a solid track record of healthy patients?
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=c3ad9bf0-39cd-4985-981e-dabc0342dbf2" /&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,c3ad9bf0-39cd-4985-981e-dabc0342dbf2.aspx</comments>
      <category>.NET</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>Development Processes</category>
      <category>F#</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>LLVM</category>
      <category>Mac OS</category>
      <category>Parrot</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=ddbdc499-d4e2-4b12-a2f1-165ab3617887</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,ddbdc499-d4e2-4b12-a2f1-165ab3617887.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,ddbdc499-d4e2-4b12-a2f1-165ab3617887.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ddbdc499-d4e2-4b12-a2f1-165ab3617887</wfw:commentRss>
      <slash:comments>4</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you've peeked at my blog site in the last twenty minutes or so, you've probably
noticed some churn in the template in the upper-left corner; by now, it's been finalized,
and it reads "JOB REFERRALS".
</p>
        <p>
WTHeck? Has Ted finally sold out? Sort of, not really. At least, <em>I</em> don't
think so.
</p>
        <p>
Here's the deal: the company behind those ads, Entice Labs, contacted me to see if
I was interested in hosting some job ads on my blog, given that I seem to generate
a moderate amount of traffic. I figured it was worthwhile to at least talk to them,
and the more I did, the more I liked what I heard--the ads are focused specifically
at developers of particular types (I chose a criteria string of "Software Developers",
subcategorized by "Java, .NET, .NET (Visual Basic), .NET (C#), C++, Flex, Ruby on
Rails, C, SQL, JavaScript, HTML" though I'm not sure whether "HTML" will bring in
too many web-designer jobs), and visitors to my blog don't have to click through the
ads to get to the content, which was important to me. And, besides, given the current
economic climate, if I can help somebody find a new job, I'd like to.
</p>
        <p>
Now for the full disclaimer: I <em>will</em> be getting money back from these job
ads, though how much, to be honest with you, I'm not sure. I'm really not doing this
for the money, so I make this statement now: I will take 50% of whatever I make through
this program and donate it to a charitable organization. The other 50% I will use
to offset travel and expenses to user groups and/or CodeCamps and/or for-free conferences
put on throughout the country. (Email me if you know of one that you're organizing
or attending and would like to see me speak at, and I'll tell you if there's any room
in the budget left for it. :-) )
</p>
        <p>
Anyway, I figured if the ads got too obnoxious, I could always remove them; it's an
experiment of sorts. Tell me what you think.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=ddbdc499-d4e2-4b12-a2f1-165ab3617887" />
        <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>Blog change? Ads? What gives?</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,ddbdc499-d4e2-4b12-a2f1-165ab3617887.aspx</guid>
      <link>http://blogs.tedneward.com/2008/07/17/Blog+Change+Ads+What+Gives.aspx</link>
      <pubDate>Thu, 17 Jul 2008 02:29:46 GMT</pubDate>
      <description>&lt;p&gt;
If you've peeked at my blog site in the last twenty minutes or so, you've probably
noticed some churn in the template in the upper-left corner; by now, it's been finalized,
and it reads "JOB REFERRALS".
&lt;/p&gt;
&lt;p&gt;
WTHeck? Has Ted finally sold out? Sort of, not really. At least, &lt;em&gt;I&lt;/em&gt; don't
think so.
&lt;/p&gt;
&lt;p&gt;
Here's the deal: the company behind those ads, Entice Labs, contacted me to see if
I was interested in hosting some job ads on my blog, given that I seem to generate
a moderate amount of traffic. I figured it was worthwhile to at least talk to them,
and the more I did, the more I liked what I heard--the ads are focused specifically
at developers of particular types (I chose a criteria string of "Software Developers",
subcategorized by "Java, .NET, .NET (Visual Basic), .NET (C#), C++, Flex, Ruby on
Rails, C, SQL, JavaScript, HTML" though I'm not sure whether "HTML" will bring in
too many web-designer jobs), and visitors to my blog don't have to click through the
ads to get to the content, which was important to me. And, besides, given the current
economic climate, if I can help somebody find a new job, I'd like to.
&lt;/p&gt;
&lt;p&gt;
Now for the full disclaimer: I &lt;em&gt;will&lt;/em&gt; be getting money back from these job
ads, though how much, to be honest with you, I'm not sure. I'm really not doing this
for the money, so I make this statement now: I will take 50% of whatever I make through
this program and donate it to a charitable organization. The other 50% I will use
to offset travel and expenses to user groups and/or CodeCamps and/or for-free conferences
put on throughout the country. (Email me if you know of one that you're organizing
or attending and would like to see me speak at, and I'll tell you if there's any room
in the budget left for it. :-) )
&lt;/p&gt;
&lt;p&gt;
Anyway, I figured if the ads got too obnoxious, I could always remove them; it's an
experiment of sorts. Tell me what you think.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=ddbdc499-d4e2-4b12-a2f1-165ab3617887" /&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,ddbdc499-d4e2-4b12-a2f1-165ab3617887.aspx</comments>
      <category>.NET</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Flash</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Mac OS</category>
      <category>Parrot</category>
      <category>Ruby</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=ba80e0d6-9926-43d6-9846-2f65daffac45</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,ba80e0d6-9926-43d6-9846-2f65daffac45.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,ba80e0d6-9926-43d6-9846-2f65daffac45.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ba80e0d6-9926-43d6-9846-2f65daffac45</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
As <a href="http://www.pandamonial.com/2008/06/devlink-bus-route.html">Amanda notes</a>,
I'm riding with 46 other folks (and lots of beer) on a bus from Michigan to devLink
in Tennessee, as part of sponsoring the show. (I think she got my language preferences
just a teensy bit mixed up, though.)
</p>
        <p>
Which brings up a related point, actually: Amanda (of "the great F# T-shirt" fame
from TechEd this year) and I are teaming up to do <em>F# In A Nutshell</em> for O'Reilly.
The goal is to have a Rough Cut ready (just the language parts) by the time F# goes
CTP this summer or fall, so we're on an accelerated schedule. If you don't see much
from me via the blog for a while, now you know why. :-) Once that's done, I'm going
dark on a Scala book to follow--details to follow when that contract is nailed down.
</p>
        <p>
Meanwhile.... As she suggests, the bus will likely be filled with lots of lively debate.
The nice thing about having a technical debate with drunk geeks on a bus traveling
down the highway at speed is that it's actually pretty easy to win the debate, if
you really want to:
</p>
        <blockquote>
          <p>
            <em>"You are such an idiot! Object-relashunal mappers are just... *burp* so cool!
Why can't you see that?"</em>
          </p>
          <p>
            <em>"Idiot, am I? I demand satisfaction! Step outside, sir!"</em>
          </p>
          <p>
            <em>"Fine, you--" WHOOSH ... THUMP-THUMP....</em>
          </p>
          <p>
            <em>"Next?"</em>
          </p>
        </blockquote>
        <p>
I'm looking forward to this. :-)
</p>
        <blockquote>
          <p>
            <em>Editor's note: (Contact Amanda if you're interested in participating <u>on the
devLink bus</u>, not the book. Thanks for the interest, but we aren't soliciting co-authors.
We think we have this one pretty well covered, but we're always interested in reviewers--for
that, you can contact either of us.)</em>
          </p>
        </blockquote>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=ba80e0d6-9926-43d6-9846-2f65daffac45" />
        <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>Let the Great Language Wars commence....</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,ba80e0d6-9926-43d6-9846-2f65daffac45.aspx</guid>
      <link>http://blogs.tedneward.com/2008/06/24/Let+The+Great+Language+Wars+Commence.aspx</link>
      <pubDate>Tue, 24 Jun 2008 16:56:39 GMT</pubDate>
      <description>&lt;p&gt;
As &lt;a href="http://www.pandamonial.com/2008/06/devlink-bus-route.html"&gt;Amanda notes&lt;/a&gt;,
I'm riding with 46 other folks (and lots of beer) on a bus from Michigan to devLink
in Tennessee, as part of sponsoring the show. (I think she got my language preferences
just a teensy bit mixed up, though.)
&lt;/p&gt;
&lt;p&gt;
Which brings up a related point, actually: Amanda (of "the great F# T-shirt" fame
from TechEd this year) and I are teaming up to do &lt;em&gt;F# In A Nutshell&lt;/em&gt; for O'Reilly.
The goal is to have a Rough Cut ready (just the language parts) by the time F# goes
CTP this summer or fall, so we're on an accelerated schedule. If you don't see much
from me via the blog for a while, now you know why. :-) Once that's done, I'm going
dark on a Scala book to follow--details to follow when that contract is nailed down.
&lt;/p&gt;
&lt;p&gt;
Meanwhile.... As she suggests, the bus will likely be filled with lots of lively debate.
The nice thing about having a technical debate with drunk geeks on a bus traveling
down the highway at speed is that it's actually pretty easy to win the debate, if
you really want to:
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;"You are such an idiot! Object-relashunal mappers are just... *burp* so cool!
Why can't you see that?"&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;"Idiot, am I? I demand satisfaction! Step outside, sir!"&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;"Fine, you--" WHOOSH ... THUMP-THUMP....&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;"Next?"&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
I'm looking forward to this. :-)
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;Editor's note: (Contact Amanda if you're interested in participating &lt;u&gt;on the
devLink bus&lt;/u&gt;, not the book. Thanks for the interest, but we aren't soliciting co-authors.
We think we have this one pretty well covered, but we're always interested in reviewers--for
that, you can contact either of us.)&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt;&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=ba80e0d6-9926-43d6-9846-2f65daffac45" /&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,ba80e0d6-9926-43d6-9846-2f65daffac45.aspx</comments>
      <category>.NET</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>F#</category>
      <category>Java/J2EE</category>
      <category>Languages</category>
      <category>Parrot</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=24603b37-5573-402d-bd85-2721f83ddb9d</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,24603b37-5573-402d-bd85-2721f83ddb9d.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,24603b37-5573-402d-bd85-2721f83ddb9d.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=24603b37-5573-402d-bd85-2721f83ddb9d</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Sometimes people ask me why I don't put more "personal" details in my blogs--those
who know me know that I'm generally pretty outspoken on a number of topics ranging
far beyond that of simple technology. While sometimes those opinions do manage to
leak their way here, for the most part, I try to avoid the taboo topics (politics/sex/religion,
among others) here in an effort to keep things technically focused. Or, at least,
as technically focused as I can, anyway.
</p>
        <p>
But there've been some other reasons I've avoided the public spotlight on my non-technical
details, too.
</p>
        <p>
          <a href="http://www.nytimes.com/2008/05/25/magazine/25internet-t.html">This essay</a> from
the New York Times (which may require registration, I'm not sure) captures, in some
ways, the things that anyone who blogs should consciously consider before blogging:
when you blog, you are putting yourself out into the public eye in a way that we as
a society have never had before. In prior generations, it was always possible to "hide"
from the world around us by simply not taking the paths that lead to public exposure--no
photos, no quotations in the newspaper, and so on. Now, thanks to Google, anybody
can find you with a few keystrokes.
</p>
        <p>
In some ways, it's funny--the Internet creates a layer of anonymity, and yet, takes
it away at the same time. (There <em>has</em> to be a sociology or psychology master's
thesis in there, waiting to be researched and written. Email me if you know of one?)
</p>
        <p>
Ah, right. The point. Must get back to the point.
</p>
        <p>
As you read peoples' blogs and consider commenting on what you've read, I implore
you, remember that on the other end of that blog is a real person, with feelings and
concerns and yes, in most cases, that same feeling of inadequacy that plagues us all.
What you say in your comments can and will, no matter how slight, either raise them
up, or else wound them. Sometimes, if you're particularly vitriolic about it, you
can even induce that "blogging burnout" Emily mentions in her essay.
</p>
        <p>
And, in case you were wondering: Yep, that goes for me, too. You, dear reader, can
make me feel like shit, if you put your mind to it strongly enough.
</p>
        <p>
That doesn't mean I don't want comments or am suddenly afraid of being rejected online--far
from it. I post here the thoughts and ideas that yes, I believe in, but also because
I want to see if others believe in them. In the event others don't, I want to hear
their criticism and hear their logic as they find the holes in the argument. Sometimes
I even agree with the contrary opinion, or find merit in going back to revisit my
thinking on the subject--case in point, right now I'm going back to look at Erlang
more deeply to see if <a href="http://steve.vinoski.net/blog/2008/05/09/thinking-in-language-but-not-clearly/">Steve
is right</a>. (Thus far, cruising through some Erlang code, looking at Erlang's behavior
in a debugger, and walking my way through various parts of the BEAM engine, I still
think Erlang's fabled support for robustness and correctness--none of which I disagreed
with, by the way--comes mostly from the language, not the execution engine, for whatever
that's worth. And apparently <a href="http://erlangdotnet.net/">I'm not the only one</a>.
But that's neither here nor there--Steve thinks he's right, and I doubt any words
of mine would change his opinion on that, judging from the tone of his posts on the
matter. *shrug* Fortunately, I'm far more concerned with correcting my own understanding
in the event of incorrectness than I am anybody else's. :-) )
</p>
        <p>
In any event, to those of you who are curious as to the more personal details, I'm
sorry, but they're not going to show up here any time soon. If you're that curious,
find me at a conference, introduce yourself, buy me a glass of red wine (Zinfandel's
always good) or Scotch, double neat (Macallan 18, or maybe a 25 if you're asking <em>really</em> personal
stuff), and let's settle into some comfy chairs and talk. 
</p>
        <p>
That's <em>always</em> a far more enjoyable experience than typing at the keyboard.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=24603b37-5573-402d-bd85-2721f83ddb9d" />
        <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>On Blogging, Technical, Personal and Intimate</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,24603b37-5573-402d-bd85-2721f83ddb9d.aspx</guid>
      <link>http://blogs.tedneward.com/2008/05/25/On+Blogging+Technical+Personal+And+Intimate.aspx</link>
      <pubDate>Sun, 25 May 2008 09:40:18 GMT</pubDate>
      <description>&lt;p&gt;
Sometimes people ask me why I don't put more "personal" details in my blogs--those
who know me know that I'm generally pretty outspoken on a number of topics ranging
far beyond that of simple technology. While sometimes those opinions do manage to
leak their way here, for the most part, I try to avoid the taboo topics (politics/sex/religion,
among others) here in an effort to keep things technically focused. Or, at least,
as technically focused as I can, anyway.
&lt;/p&gt;
&lt;p&gt;
But there've been some other reasons I've avoided the public spotlight on my non-technical
details, too.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.nytimes.com/2008/05/25/magazine/25internet-t.html"&gt;This essay&lt;/a&gt; from
the New York Times (which may require registration, I'm not sure) captures, in some
ways, the things that anyone who blogs should consciously consider before blogging:
when you blog, you are putting yourself out into the public eye in a way that we as
a society have never had before. In prior generations, it was always possible to "hide"
from the world around us by simply not taking the paths that lead to public exposure--no
photos, no quotations in the newspaper, and so on. Now, thanks to Google, anybody
can find you with a few keystrokes.
&lt;/p&gt;
&lt;p&gt;
In some ways, it's funny--the Internet creates a layer of anonymity, and yet, takes
it away at the same time. (There &lt;em&gt;has&lt;/em&gt; to be a sociology or psychology master's
thesis in there, waiting to be researched and written. Email me if you know of one?)
&lt;/p&gt;
&lt;p&gt;
Ah, right. The point. Must get back to the point.
&lt;/p&gt;
&lt;p&gt;
As you read peoples' blogs and consider commenting on what you've read, I implore
you, remember that on the other end of that blog is a real person, with feelings and
concerns and yes, in most cases, that same feeling of inadequacy that plagues us all.
What you say in your comments can and will, no matter how slight, either raise them
up, or else wound them. Sometimes, if you're particularly vitriolic about it, you
can even induce that "blogging burnout" Emily mentions in her essay.
&lt;/p&gt;
&lt;p&gt;
And, in case you were wondering: Yep, that goes for me, too. You, dear reader, can
make me feel like shit, if you put your mind to it strongly enough.
&lt;/p&gt;
&lt;p&gt;
That doesn't mean I don't want comments or am suddenly afraid of being rejected online--far
from it. I post here the thoughts and ideas that yes, I believe in, but also because
I want to see if others believe in them. In the event others don't, I want to hear
their criticism and hear their logic as they find the holes in the argument. Sometimes
I even agree with the contrary opinion, or find merit in going back to revisit my
thinking on the subject--case in point, right now I'm going back to look at Erlang
more deeply to see if &lt;a href="http://steve.vinoski.net/blog/2008/05/09/thinking-in-language-but-not-clearly/"&gt;Steve
is right&lt;/a&gt;. (Thus far, cruising through some Erlang code, looking at Erlang's behavior
in a debugger, and walking my way through various parts of the BEAM engine, I still
think Erlang's fabled support for robustness and correctness--none of which I disagreed
with, by the way--comes mostly from the language, not the execution engine, for whatever
that's worth. And apparently &lt;a href="http://erlangdotnet.net/"&gt;I'm not the only one&lt;/a&gt;.
But that's neither here nor there--Steve thinks he's right, and I doubt any words
of mine would change his opinion on that, judging from the tone of his posts on the
matter. *shrug* Fortunately, I'm far more concerned with correcting my own understanding
in the event of incorrectness than I am anybody else's. :-) )
&lt;/p&gt;
&lt;p&gt;
In any event, to those of you who are curious as to the more personal details, I'm
sorry, but they're not going to show up here any time soon. If you're that curious,
find me at a conference, introduce yourself, buy me a glass of red wine (Zinfandel's
always good) or Scotch, double neat (Macallan 18, or maybe a 25 if you're asking &lt;em&gt;really&lt;/em&gt; personal
stuff), and let's settle into some comfy chairs and talk. 
&lt;/p&gt;
&lt;p&gt;
That's &lt;em&gt;always&lt;/em&gt; a far more enjoyable experience than typing at the keyboard.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=24603b37-5573-402d-bd85-2721f83ddb9d" /&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,24603b37-5573-402d-bd85-2721f83ddb9d.aspx</comments>
      <category>Conferences</category>
      <category>Reading</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=fc7b4f11-7406-4636-84b8-97ce34c6ef64</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,fc7b4f11-7406-4636-84b8-97ce34c6ef64.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,fc7b4f11-7406-4636-84b8-97ce34c6ef64.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=fc7b4f11-7406-4636-84b8-97ce34c6ef64</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I hate Las Vegas.
</p>
        <p>
I'm here for TheServerSide Java Symposium 2008, which has been held here in Vegas
for the past (umm... three? four? five?) years, and every time I come here I'm reminded
why I really don't like Vegas. It's loud, both in auditory volume and visual noise,
it's boisterous bordering on raunchy, the locals are almost always soured by their
near-constant exposure to tourists, the tourists are... well, they're American tourists
and that says a lot right there, and there's no way to escape it. Ugh.
</p>
        <p>
Fortunately for me, the hotels have conveniently painted a nice blue sky on the roof
(in the Venetian, where the conference is held) so I don't have to go outside to see
if it's sunny, they provided a nice winding river of bright neon blue water/Windex
to have our leisurely cafe lunch next to, and no fake recreation of Venice would be
complete without fake gondolas poled by fake gondoleers singing to tourists on the
fake Windex river that's all of about two minutes in ride length before they have
to do a U-turn and pole back the other way.
</p>
        <p>
Wow, it's all so magical.
</p>
        <p>
About the only thing that makes Vegas palatable is some of the shows you can catch
here, like one of Cirque du Soleil's six (!) different presentations going on here.
But, of course, you must be careful when you buy tickets, or the guy at the concierge
desk will start finding tickets for you, only to discover later that he <em>thought</em> you
said "Tah", meaning "Tom Jones", when you <em>said</em>, "Ka", the Cirque du Soleil
show, because my California accent is too thick to be understood.
</p>
        <p>
I hate Las Vegas.
</p>
        <p>
The upshot is that when I'm here for this show, I get to hang out with some cool people,
NFJS speaker alum and otherwise. <a href="http://zepheira.com/team/brian/">Brian Sletten</a> and
I did a tag-team talk on SOAP and REST that was billed to be controversial but probably
disappointed the crowd in that we didn't (a) throw any punches at one another, (b)
didn't really proclaim a "victor" between the two, and (c) laid down some basic rules
for when to look to a RESTful approach and when to take advantage of the existing
SOAP-based infrastructure that is currently SOAP's greatest strength.
</p>
        <blockquote>
          <p>
            <em>Note to those who didn't attend the session: you didn't hear me say it, so I'll
repeat it: I hate WSDL almost as much as I hate Las Vegas. Ask me why sometime, or
if I get enough of a critical mass of questions, I'll blog it. If you've seen me do
talks on Web Services, though, you've probably heard the rant: WSDL creates tightly-coupled
endpoints precisely where loose coupling is necessary, WSDL encourages schema definitions
that are inflexible and unevolvable, and WSDL intrinsically assumes a synchronous
client-server invocation model that doesn't really meet the scalability or feature
needs of the modern enterprise. And that's just for starters.</em>
          </p>
          <p>
            <em>I hate WSDL.</em>
          </p>
          <p>
            <em>I still hate Vegas more, though.</em>
          </p>
        </blockquote>
        <p>
Meanwhile, <a href="http://vanderburg.org/Blog">Glenn Vanderberg</a>, NFJS speaker
alum and current Chief Scientist over at <a href="http://blog.thinkrelevance.com/">Relevance</a>,
pulled me aside for a few minutes to show me how to build apps for the iPhone using
the newly-released iPhone SDK (something I'd asked about once before and that's been
exploring recently). We basked in the glory that is Objective-C (now <em>there's</em> a
language that should have gotten more traction than it did, IMHO), and then in the
glory that is the iPhone (OpenGL, OpenSA, which I didn't know but Glenn tells me is
basically like an audio-equivalent library for OpenGL), and then we swapped some ideas
about what people might do with the iPhone now that the SDK is available. I've always
been pretty bullish on the mobile device market, and I still am, but the iPhone might
be the turning point in that space. I'll reserve judgment for now, and just enjoy
hacking on my own for the time being. :-)
</p>
        <p>
Neal Ford did the Wednesday morning keynote, and I got the chance to present "Why
the Next Five Years Will Be About Languages" after lunch today, which seemed to go
over well, at least based on what the attendees who came up to me afterwards were
saying. (Of course, that's always a biased assessment, since the ones who hate it
are hardly likely to come up and tell me that, so I always take that statistic with
a grain of salt.) They videoed it, so I imagine it'll be online before long.
</p>
        <p>
Of course, TSS wouldn't be TSS without speaker panels saying really controversial
things... but I wouldn't know about them this year, I wasn't on any. (Perhaps the
conference organizers finally took everybody's advice...)
</p>
        <p>
Tomorrow (well, actually, today as I write this, since I'm up way too late as usual)
I'll be doing a talk on Scala, having dinner with a few friends, then off to McCarron
airport and home. I don't think the Scala talk will be taped, but you can catch me
doing much the same stuff (well, as much as it ever is the same stuff when I speak,
since I mostly make everything up on the fly anyway) at the NFJS symposium near you,
so you don't have to come to Vegas to hear about it in between ducking packs of drunk
twenty-something guys chasing packs of drunk twenty-something girls all the while
dodging the attentions of finger-snapping sidewalk vultures handing out glossy business
cards saying "Girls Direct to You".
</p>
        <p>
I <em>so</em> hate Vegas.
</p>
        <p>
          <strong>Update:</strong> Hah, that'll teach me to blog that before the conference
is over--Eugene and Joe drafted me into the final panel session of the conference,
on "Cross-Cutting Concerns, a Multi-Disciplinary Approach to Java", which none of
us--including our emcees--had any idea was supposed to be included in such a discussion.
Glenn Vanderberg and Patrick Linskey then sought to take a vote and change the topic
of the panel to "Shearing off Ted's Ponytail". Fortunately a kind attendee asked a
question and we moved on, ponytail intact.
</p>
        <p>
Of course, given that this was Vegas, I probably could have gotten Carrot Top to do
it and made some money on the deal.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=fc7b4f11-7406-4636-84b8-97ce34c6ef64" />
        <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>Hangin' in Vegas</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,fc7b4f11-7406-4636-84b8-97ce34c6ef64.aspx</guid>
      <link>http://blogs.tedneward.com/2008/03/28/Hangin+In+Vegas.aspx</link>
      <pubDate>Fri, 28 Mar 2008 11:27:37 GMT</pubDate>
      <description>&lt;p&gt;
I hate Las Vegas.
&lt;/p&gt;
&lt;p&gt;
I'm here for TheServerSide Java Symposium 2008, which has been held here in Vegas
for the past (umm... three? four? five?) years, and every time I come here I'm reminded
why I really don't like Vegas. It's loud, both in auditory volume and visual noise,
it's boisterous bordering on raunchy, the locals are almost always soured by their
near-constant exposure to tourists, the tourists are... well, they're American tourists
and that says a lot right there, and there's no way to escape it. Ugh.
&lt;/p&gt;
&lt;p&gt;
Fortunately for me, the hotels have conveniently painted a nice blue sky on the roof
(in the Venetian, where the conference is held) so I don't have to go outside to see
if it's sunny, they provided a nice winding river of bright neon blue water/Windex
to have our leisurely cafe lunch next to, and no fake recreation of Venice would be
complete without fake gondolas poled by fake gondoleers singing to tourists on the
fake Windex river that's all of about two minutes in ride length before they have
to do a U-turn and pole back the other way.
&lt;/p&gt;
&lt;p&gt;
Wow, it's all so magical.
&lt;/p&gt;
&lt;p&gt;
About the only thing that makes Vegas palatable is some of the shows you can catch
here, like one of Cirque du Soleil's six (!) different presentations going on here.
But, of course, you must be careful when you buy tickets, or the guy at the concierge
desk will start finding tickets for you, only to discover later that he &lt;em&gt;thought&lt;/em&gt; you
said "Tah", meaning "Tom Jones", when you &lt;em&gt;said&lt;/em&gt;, "Ka", the Cirque du Soleil
show, because my California accent is too thick to be understood.
&lt;/p&gt;
&lt;p&gt;
I hate Las Vegas.
&lt;/p&gt;
&lt;p&gt;
The upshot is that when I'm here for this show, I get to hang out with some cool people,
NFJS speaker alum and otherwise. &lt;a href="http://zepheira.com/team/brian/"&gt;Brian Sletten&lt;/a&gt; and
I did a tag-team talk on SOAP and REST that was billed to be controversial but probably
disappointed the crowd in that we didn't (a) throw any punches at one another, (b)
didn't really proclaim a "victor" between the two, and (c) laid down some basic rules
for when to look to a RESTful approach and when to take advantage of the existing
SOAP-based infrastructure that is currently SOAP's greatest strength.
&lt;/p&gt;
&lt;blockquote&gt; 
&lt;p&gt;
&lt;em&gt;Note to those who didn't attend the session: you didn't hear me say it, so I'll
repeat it: I hate WSDL almost as much as I hate Las Vegas. Ask me why sometime, or
if I get enough of a critical mass of questions, I'll blog it. If you've seen me do
talks on Web Services, though, you've probably heard the rant: WSDL creates tightly-coupled
endpoints precisely where loose coupling is necessary, WSDL encourages schema definitions
that are inflexible and unevolvable, and WSDL intrinsically assumes a synchronous
client-server invocation model that doesn't really meet the scalability or feature
needs of the modern enterprise. And that's just for starters.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;I hate WSDL.&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;I still hate Vegas more, though.&lt;/em&gt;
&lt;/p&gt;
&lt;/blockquote&gt; 
&lt;p&gt;
Meanwhile, &lt;a href="http://vanderburg.org/Blog"&gt;Glenn Vanderberg&lt;/a&gt;, NFJS speaker
alum and current Chief Scientist over at &lt;a href="http://blog.thinkrelevance.com/"&gt;Relevance&lt;/a&gt;,
pulled me aside for a few minutes to show me how to build apps for the iPhone using
the newly-released iPhone SDK (something I'd asked about once before and that's been
exploring recently). We basked in the glory that is Objective-C (now &lt;em&gt;there's&lt;/em&gt; a
language that should have gotten more traction than it did, IMHO), and then in the
glory that is the iPhone (OpenGL, OpenSA, which I didn't know but Glenn tells me is
basically like an audio-equivalent library for OpenGL), and then we swapped some ideas
about what people might do with the iPhone now that the SDK is available. I've always
been pretty bullish on the mobile device market, and I still am, but the iPhone might
be the turning point in that space. I'll reserve judgment for now, and just enjoy
hacking on my own for the time being. :-)
&lt;/p&gt;
&lt;p&gt;
Neal Ford did the Wednesday morning keynote, and I got the chance to present "Why
the Next Five Years Will Be About Languages" after lunch today, which seemed to go
over well, at least based on what the attendees who came up to me afterwards were
saying. (Of course, that's always a biased assessment, since the ones who hate it
are hardly likely to come up and tell me that, so I always take that statistic with
a grain of salt.) They videoed it, so I imagine it'll be online before long.
&lt;/p&gt;
&lt;p&gt;
Of course, TSS wouldn't be TSS without speaker panels saying really controversial
things... but I wouldn't know about them this year, I wasn't on any. (Perhaps the
conference organizers finally took everybody's advice...)
&lt;/p&gt;
&lt;p&gt;
Tomorrow (well, actually, today as I write this, since I'm up way too late as usual)
I'll be doing a talk on Scala, having dinner with a few friends, then off to McCarron
airport and home. I don't think the Scala talk will be taped, but you can catch me
doing much the same stuff (well, as much as it ever is the same stuff when I speak,
since I mostly make everything up on the fly anyway) at the NFJS symposium near you,
so you don't have to come to Vegas to hear about it in between ducking packs of drunk
twenty-something guys chasing packs of drunk twenty-something girls all the while
dodging the attentions of finger-snapping sidewalk vultures handing out glossy business
cards saying "Girls Direct to You".
&lt;/p&gt;
&lt;p&gt;
I &lt;em&gt;so&lt;/em&gt; hate Vegas.
&lt;/p&gt;
&lt;p&gt;
&lt;strong&gt;Update:&lt;/strong&gt; Hah, that'll teach me to blog that before the conference
is over--Eugene and Joe drafted me into the final panel session of the conference,
on "Cross-Cutting Concerns, a Multi-Disciplinary Approach to Java", which none of
us--including our emcees--had any idea was supposed to be included in such a discussion.
Glenn Vanderberg and Patrick Linskey then sought to take a vote and change the topic
of the panel to "Shearing off Ted's Ponytail". Fortunately a kind attendee asked a
question and we moved on, ponytail intact.
&lt;/p&gt;
&lt;p&gt;
Of course, given that this was Vegas, I probably could have gotten Carrot Top to do
it and made some money on the deal.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=fc7b4f11-7406-4636-84b8-97ce34c6ef64" /&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,fc7b4f11-7406-4636-84b8-97ce34c6ef64.aspx</comments>
      <category>Conferences</category>
      <category>Java/J2EE</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=a5152352-9d77-4bd5-8cc5-31c75443ea90</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,a5152352-9d77-4bd5-8cc5-31c75443ea90.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,a5152352-9d77-4bd5-8cc5-31c75443ea90.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a5152352-9d77-4bd5-8cc5-31c75443ea90</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
A couple of people have asked me over the last few weeks, so it's probably worth saying
out loud: 
</p>
        <p>
No, I don't work for a large company, so yes, I'm available for consulting and research
projects. If you've got one of those burning questions like, "How would our company/project/department/whatever
make use of JRuby-and-Rails, and what would the impact to the rest of the system be",
or "Could using F# help us write applications faster", or "How would we best integrate
Groovy into our application", or "How does the new Adobe Flex/AIR move help us build
richer client apps", or "How do we improve the performance of our Java/.NET app",
or other questions along those lines, drop me a line and let's talk. Not only will
I cook up a prototype describing the answer, but I'll meet with your management and
explain the consequences of the research, both pro and con, for them to evaluate.
</p>
        <p>
Shameless call for consulting complete, now back to the regularly-scheduled programming.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=a5152352-9d77-4bd5-8cc5-31c75443ea90" />
        <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>Reminder</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,a5152352-9d77-4bd5-8cc5-31c75443ea90.aspx</guid>
      <link>http://blogs.tedneward.com/2008/03/22/Reminder.aspx</link>
      <pubDate>Sat, 22 Mar 2008 10:43:18 GMT</pubDate>
      <description>&lt;p&gt;
A couple of people have asked me over the last few weeks, so it's probably worth saying
out loud: 
&lt;/p&gt;
&lt;p&gt;
No, I don't work for a large company, so yes, I'm available for consulting and research
projects. If you've got one of those burning questions like, "How would our company/project/department/whatever
make use of JRuby-and-Rails, and what would the impact to the rest of the system be",
or "Could using F# help us write applications faster", or "How would we best integrate
Groovy into our application", or "How does the new Adobe Flex/AIR move help us build
richer client apps", or "How do we improve the performance of our Java/.NET app",
or other questions along those lines, drop me a line and let's talk. Not only will
I cook up a prototype describing the answer, but I'll meet with your management and
explain the consequences of the research, both pro and con, for them to evaluate.
&lt;/p&gt;
&lt;p&gt;
Shameless call for consulting complete, now back to the regularly-scheduled programming.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=a5152352-9d77-4bd5-8cc5-31c75443ea90" /&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,a5152352-9d77-4bd5-8cc5-31c75443ea90.aspx</comments>
      <category>.NET</category>
      <category>C++</category>
      <category>Conferences</category>
      <category>Development Processes</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>Ruby</category>
      <category>Security</category>
      <category>Solaris</category>
      <category>VMWare</category>
      <category>Windows</category>
      <category>XML Services</category>
    </item>
    <item>
      <trackback:ping>http://blogs.tedneward.com/Trackback.aspx?guid=99693e16-ef27-4281-8b79-e9150493a4f2</trackback:ping>
      <pingback:server>http://blogs.tedneward.com/pingback.aspx</pingback:server>
      <pingback:target>http://blogs.tedneward.com/PermaLink,guid,99693e16-ef27-4281-8b79-e9150493a4f2.aspx</pingback:target>
      <dc:creator>Ted Neward</dc:creator>
      <wfw:comment>http://blogs.tedneward.com/CommentView,guid,99693e16-ef27-4281-8b79-e9150493a4f2.aspx</wfw:comment>
      <wfw:commentRss>http://blogs.tedneward.com/SyndicationService.asmx/GetEntryCommentsRss?guid=99693e16-ef27-4281-8b79-e9150493a4f2</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
People have sometimes asked me if it's really worth it to go to a conference these
days, given that so much material is appearing online via blogs, webcasts, online
publications and Google. I think the answer is an unqualified "yes" (what else would
you expect from a guy who spends a significant part of his life speaking at conferences?),
but not necessarily for the reasons you might think.
</p>
        <p>
A long time ago, Billy Hollis said something very profound to me: "Newbies go to conferences
for the technical sessions. Seasoned veterans go to conferences for the people." At
the time, I thought this was Billy's way of saying that the sessions really weren't
"all that" at most conferences (JavaOne and TechEd come to mind, for example--whatever
scheduling gods that think project managers on a particular project make good technical
speakers on that subject really needs to be taken out back and shot), and that you're
far better off spending the time networking to improve your social network. Now I
think it's for a different reason. By way of explanation, allow me to recount a brief
travel anecdote.
</p>
        <p>
I spend a lot of time on airplanes, as you might expect. Periodically, while staring
out the window (trying to rearrange words in my head in order to make them sound coherent
for the current email, blog entry, book chapter or article), I will see another commercial
aircraft traveling in the same air traffic control lane going the other way. Every
time I see it, I'm simply floored at how fast they appear to be going--they usually
don't stay within my visibility for more than a few seconds. "Whoosh" is the first
thought that goes through my easily-amused consciousness, and then, "Damn, they're
really <em>moving</em>." Then I realize, "Wow--somebody on that plane over there is
probably looking at this plane I'm on, and thinking the exact same thing."
</p>
        <p>
This is why you go to conferences.
</p>
        <p>
In the agile communities, they talk about velocity, the amount of work a team can
get done in a particular iteration. But I think teams need to have a sense of their
velocity <em>relative to the rest of the industry</em>, too. It helps put things into
perspective. All too often, I find teams that look at me in meetings and conference
calls and say, "Surely the rest of the industry isn't this bad, right?" or "Surely,
somebody else has found a solution to this problem by now, right?" or "Please, dear
God, <em>tell</em> me this kind of WTF-style of project management is unique to my
company". While I am certainly happy to answer those questions, the fact of the matter
is, at the end of the day they're still left taking my word for it, and let's be blunt:
my answer can really only cover those companies and/or project teams I've had direct
contact with. I can certainly tell you what I've heard from others (usually at conferences),
but even that's now getting into secondhand information, which to you will be third-hand.
(And that, of course, assumes I'm getting it from the source in the first place.)
</p>
        <p>
This isn't just about project management styles--agile or waterfall or WHISCEY (Why
the Hell Isn't Somebody Coding Everything Yet) or what-have-you--but also about technical
trends. Is Ruby taking off? Is Scala becoming more mainstream? Is JRuby worth exploring?
Is C++ making a comeback? What are peoples' experiences with Spring 2.5? Has Grails
reached a solid level of performance and/or stability? Sure, I'm happy to come to
your company, meet with your team, talk about what I've seen and heard and done--but
sending your developers (and managers, though *ahem* preferably to conferences that
aren't in Las Vegas) to a conference like No Fluff Just Stuff or JavaOne or TechEd
or SD West can give them some opportunities to swap stories and gain some important
insights about your team's (and company's) velocity relative to the rest of the industry.
</p>
        <p>
All of which is to say, yes, Billy was right: it's about the people. Which means,
boss, it's OK to let the developers go to the parties and maybe sleep in and miss
a session or two the next morning.
</p>
        <img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=99693e16-ef27-4281-8b79-e9150493a4f2" />
        <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 reason for conferences</title>
      <guid isPermaLink="false">http://blogs.tedneward.com/PermaLink,guid,99693e16-ef27-4281-8b79-e9150493a4f2.aspx</guid>
      <link>http://blogs.tedneward.com/2008/03/15/The+Reason+For+Conferences.aspx</link>
      <pubDate>Sat, 15 Mar 2008 15:58:52 GMT</pubDate>
      <description>&lt;p&gt;
People have sometimes asked me if it's really worth it to go to a conference these
days, given that so much material is appearing online via blogs, webcasts, online
publications and Google. I think the answer is an unqualified "yes" (what else would
you expect from a guy who spends a significant part of his life speaking at conferences?),
but not necessarily for the reasons you might think.
&lt;/p&gt;
&lt;p&gt;
A long time ago, Billy Hollis said something very profound to me: "Newbies go to conferences
for the technical sessions. Seasoned veterans go to conferences for the people." At
the time, I thought this was Billy's way of saying that the sessions really weren't
"all that" at most conferences (JavaOne and TechEd come to mind, for example--whatever
scheduling gods that think project managers on a particular project make good technical
speakers on that subject really needs to be taken out back and shot), and that you're
far better off spending the time networking to improve your social network. Now I
think it's for a different reason. By way of explanation, allow me to recount a brief
travel anecdote.
&lt;/p&gt;
&lt;p&gt;
I spend a lot of time on airplanes, as you might expect. Periodically, while staring
out the window (trying to rearrange words in my head in order to make them sound coherent
for the current email, blog entry, book chapter or article), I will see another commercial
aircraft traveling in the same air traffic control lane going the other way. Every
time I see it, I'm simply floored at how fast they appear to be going--they usually
don't stay within my visibility for more than a few seconds. "Whoosh" is the first
thought that goes through my easily-amused consciousness, and then, "Damn, they're
really &lt;em&gt;moving&lt;/em&gt;." Then I realize, "Wow--somebody on that plane over there is
probably looking at this plane I'm on, and thinking the exact same thing."
&lt;/p&gt;
&lt;p&gt;
This is why you go to conferences.
&lt;/p&gt;
&lt;p&gt;
In the agile communities, they talk about velocity, the amount of work a team can
get done in a particular iteration. But I think teams need to have a sense of their
velocity &lt;em&gt;relative to the rest of the industry&lt;/em&gt;, too. It helps put things into
perspective. All too often, I find teams that look at me in meetings and conference
calls and say, "Surely the rest of the industry isn't this bad, right?" or "Surely,
somebody else has found a solution to this problem by now, right?" or "Please, dear
God, &lt;em&gt;tell&lt;/em&gt; me this kind of WTF-style of project management is unique to my
company". While I am certainly happy to answer those questions, the fact of the matter
is, at the end of the day they're still left taking my word for it, and let's be blunt:
my answer can really only cover those companies and/or project teams I've had direct
contact with. I can certainly tell you what I've heard from others (usually at conferences),
but even that's now getting into secondhand information, which to you will be third-hand.
(And that, of course, assumes I'm getting it from the source in the first place.)
&lt;/p&gt;
&lt;p&gt;
This isn't just about project management styles--agile or waterfall or WHISCEY (Why
the Hell Isn't Somebody Coding Everything Yet) or what-have-you--but also about technical
trends. Is Ruby taking off? Is Scala becoming more mainstream? Is JRuby worth exploring?
Is C++ making a comeback? What are peoples' experiences with Spring 2.5? Has Grails
reached a solid level of performance and/or stability? Sure, I'm happy to come to
your company, meet with your team, talk about what I've seen and heard and done--but
sending your developers (and managers, though *ahem* preferably to conferences that
aren't in Las Vegas) to a conference like No Fluff Just Stuff or JavaOne or TechEd
or SD West can give them some opportunities to swap stories and gain some important
insights about your team's (and company's) velocity relative to the rest of the industry.
&lt;/p&gt;
&lt;p&gt;
All of which is to say, yes, Billy was right: it's about the people. Which means,
boss, it's OK to let the developers go to the parties and maybe sleep in and miss
a session or two the next morning.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blogs.tedneward.com/aggbug.ashx?id=99693e16-ef27-4281-8b79-e9150493a4f2" /&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,99693e16-ef27-4281-8b79-e9150493a4f2.aspx</comments>
      <category>Conferences</category>
      <category>Development Processes</category>
    </item>
  </channel>
</rss>