<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" 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/" version="2.0">
  <channel>
    <title>Brought to you today by the letter 'e'...</title>
    <link>http://weblog.pineforestsoft.com/</link>
    <description>Eric Kepes' crummy little weblog</description>
    <language>en-us</language>
    <copyright>Eric W. Kepes</copyright>
    <lastBuildDate>Sat, 26 Jul 2008 02:33:04 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.0.7226.0</generator>
    <managingEditor>ekepes@gmail.com</managingEditor>
    <webMaster>ekepes@gmail.com</webMaster>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=3d919fae-f1cd-404b-bf7c-28d959f8af33</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,3d919fae-f1cd-404b-bf7c-28d959f8af33.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,3d919fae-f1cd-404b-bf7c-28d959f8af33.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3d919fae-f1cd-404b-bf7c-28d959f8af33</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Having just been to a conference, I saw a lot of different presentations, and saw
a few things that [a] I hope I don't do when I'm presenting, and [b] definitely didn't
help the speaker's cause. The biggest one was the number of speakers who kept turning
back to look at there slides on the big screen. Not just a little peek to make sure
they were in the right spot and get their bearings. I mean a full on reading of the
slide with their back to us. Well, not reading - I don't think anybody pulled that
old stunt. But looking at their talking points and keeping their back to us for the
most part. Definitely not a very positive experience - at least some of them had content
that made it possible to overlook this, but...
</p>
        <p>
The other problem, one guy (won't mention any names) had his slides on a timer, so
he could walk around. The problem was, his time interval was set too short, and he
constantly had to go to his computer an re-adjust. If you want to walk around (and
I think that's a great thing - I need to figure out how to do it), get one of those
wireless remote things to control your slides.
</p>
        <p>
On the positive side, several of the speakers were very obviously letting their true
selves show, and it made the presentation much better. I don't know how they were
able to be so relaxed, other than experience, which I'm sure was the case, but they
were joking around, even poking fun at themselves, and just generally very engaging.
I know its a hard skill to acquire - I am certain I'm not there yet, but its worth
the practice, because these guys came across as real pros.
</p>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=3d919fae-f1cd-404b-bf7c-28d959f8af33" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>A few thoughts on presenting...</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,3d919fae-f1cd-404b-bf7c-28d959f8af33.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,3d919fae-f1cd-404b-bf7c-28d959f8af33.aspx</link>
      <pubDate>Sat, 26 Jul 2008 02:33:04 GMT</pubDate>
      <description>&lt;p&gt;
Having just been to a conference, I saw a lot of different presentations, and saw
a few things that [a] I hope I don't do when I'm presenting, and [b] definitely didn't
help the speaker's cause. The biggest one was the number of speakers who kept turning
back to look at there slides on the big screen. Not just a little peek to make sure
they were in the right spot and get their bearings. I mean a full on reading of the
slide with their back to us. Well, not reading - I don't think anybody pulled that
old stunt. But looking at their talking points and keeping their back to us for the
most part. Definitely not a very positive experience - at least some of them had content
that made it possible to overlook this, but...
&lt;/p&gt;
&lt;p&gt;
The other problem, one guy (won't mention any names) had his slides on a timer, so
he could walk around. The problem was, his time interval was set too short, and he
constantly had to go to his computer an re-adjust. If you want to walk around (and
I think that's a great thing - I need to figure out how to do it), get one of those
wireless remote things to control your slides.
&lt;/p&gt;
&lt;p&gt;
On the positive side, several of the speakers were very obviously letting their true
selves show, and it made the presentation much better. I don't know how they were
able to be so relaxed, other than experience, which I'm sure was the case, but they
were joking around, even poking fun at themselves, and just generally very engaging.
I know its a hard skill to acquire - I am certain I'm not there yet, but its worth
the practice, because these guys came across as real pros.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=3d919fae-f1cd-404b-bf7c-28d959f8af33" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,3d919fae-f1cd-404b-bf7c-28d959f8af33.aspx</comments>
      <category>Geekness</category>
      <category>Rants</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=d6300b44-6a50-4cd7-b229-3b648c1bb870</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,d6300b44-6a50-4cd7-b229-3b648c1bb870.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,d6300b44-6a50-4cd7-b229-3b648c1bb870.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=d6300b44-6a50-4cd7-b229-3b648c1bb870</wfw:commentRss>
      <title>[ARCHWORLD] Summary</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,d6300b44-6a50-4cd7-b229-3b648c1bb870.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,d6300b44-6a50-4cd7-b229-3b648c1bb870.aspx</link>
      <pubDate>Sat, 26 Jul 2008 02:25:03 GMT</pubDate>
      <description>&lt;p&gt;
So, in the end, &lt;a href="http://drdobbsarchworld.com/"&gt;Dr. Dobb's Architecture &amp; Design
World&lt;/a&gt; was a worthwhile way to spend 4 days. Well, 3 and a half, anyway - we left
after lunch on Thursday, because our flight was extremely late and we wouldn't have
gotten home until long after midnight (Jim longer - he lives much further from the
airport) and we found that there were seats on the 3 o'clock flight. The talks for
the final session looked bad - we couldn't find anything that interested us, and the
next to last session had one talk that we thought might have been decent, but given
the recent sales pitch we had just experienced, we thought that a talk about &lt;a href="https://www.cmpevents.com/SDUM8/a.asp?option=C&amp;V=11&amp;SessID=7219"&gt;scaling
out databases&lt;/a&gt; by a &lt;a href="https://www.cmpevents.com/SDUM8/a.asp?option=G&amp;V=3&amp;id=585601"&gt;guy
who works for Sybase&lt;/a&gt; had too high of a risk of being another sales pitch. I'm
not saying it was - we didn't have any slides to refer to - they were not published
(that could be a warning sign right there) - so it could have been an awesome session
- its just that given the information we had, we had to make a judgment call, and
elected to ditch.
&lt;/p&gt;
&lt;p&gt;
All in all, both Jim and I felt we had learned a lot, had generated a lot of good
ideas we want to try out, and had a very positive experience. I'm hoping to maybe
attend again next year.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=d6300b44-6a50-4cd7-b229-3b648c1bb870" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,d6300b44-6a50-4cd7-b229-3b648c1bb870.aspx</comments>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=b1149aa4-00df-45c4-b9b6-37074f586a1b</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,b1149aa4-00df-45c4-b9b6-37074f586a1b.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,b1149aa4-00df-45c4-b9b6-37074f586a1b.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=b1149aa4-00df-45c4-b9b6-37074f586a1b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
If you walk into a conference session, and every seat has a vendor's flyer on the
desk, do yourself a favor - just walk out. <a href="http://www.pushtotest.com/thecohenblog">Frank
Cohen</a> from <a href="http://www.pushtotest.com/">PushToTest</a> never really talked
about testing services in any practical way. Then again, he also didn't do a very
good job of demostrating or selling his product, either. It was very much the worst
of both worlds, and I actually turned on the WiFi antenna (which I had resisted a
few times in some other talks) and checked my email, as well as did a little GoogleTalking
with the people back at home. The worst part was, because the room was fairly full
when we walked in, we sat in the front row. I felt a little bit bad - Frank seemed
like a really nice guy, and in fairness, the tool he was pushing was open source.
But he really didn't have much useful to tell me.
</p>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=b1149aa4-00df-45c4-b9b6-37074f586a1b" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>[ARCHWORLD] Architecting Service for Testability</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,b1149aa4-00df-45c4-b9b6-37074f586a1b.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,b1149aa4-00df-45c4-b9b6-37074f586a1b.aspx</link>
      <pubDate>Sat, 26 Jul 2008 02:14:11 GMT</pubDate>
      <description>&lt;p&gt;
If you walk into a conference session, and every seat has a vendor's flyer on the
desk, do yourself a favor - just walk out. &lt;a href="http://www.pushtotest.com/thecohenblog"&gt;Frank
Cohen&lt;/a&gt; from &lt;a href="http://www.pushtotest.com/"&gt;PushToTest&lt;/a&gt; never really talked
about testing services in any practical way. Then again, he also didn't do a very
good job of demostrating or selling his product, either. It was very much the worst
of both worlds, and I actually turned on the WiFi antenna (which I had resisted a
few times in some other talks) and checked my email, as well as did a little GoogleTalking
with the people back at home. The worst part was, because the room was fairly full
when we walked in, we sat in the front row. I felt a little bit bad - Frank seemed
like a really nice guy, and in fairness, the tool he was pushing was open source.
But he really didn't have much useful to tell me.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=b1149aa4-00df-45c4-b9b6-37074f586a1b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,b1149aa4-00df-45c4-b9b6-37074f586a1b.aspx</comments>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=38cf3ee3-58b9-4f22-8226-0b4652401e69</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,38cf3ee3-58b9-4f22-8226-0b4652401e69.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,38cf3ee3-58b9-4f22-8226-0b4652401e69.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=38cf3ee3-58b9-4f22-8226-0b4652401e69</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The moment we were all waiting for - <a href="http://ambysoft.com/">Scott Ambler</a>.
Ok, that's an exaggeration. I've read his articles, listened to webcasts, read some
of his books. I really was looking forward to seeing him in person.
</p>
        <p>
His talk was entitled Agile Model Driven Development, but he covered a lot more along
the way to that topic. His view of Agile is very pragmatic. He took a few swipes at
the dogmatics, which was good, because I could see where he was coming from, and I
often find myself on the highway to hell, um, I mean, the religious aspects of Agile.
His exaggerated lack of respect for the general tone on some agile mailing lists definitely
helped remind me of what it is we are trying to achieve. I think the reason why I
wasn't offended was because he pretty much attacked all of the sacred cows in our
industry - it was very <a href="http://en.wikipedia.org/wiki/South_Park">South Park</a> in
that way... :)
</p>
        <p>
I took a boatload of notes, so I'll summarize the highlights: 
</p>
        <li>
Change Management Process == Change Prevention Process</li>
        <li>
"Documentation is the worst form of communication you can use"</li>
        <li>
"I wish a few more people were skeptical in our industry"</li>
        <li>
Software development is more art than science, therefore upfront estimation is not
realistic</li>
        <li>
          <b>"Noncoding architects are only useful for fetching people coffee"</b>
        </li>
        <li>
"I will let the legacy systems in your organization speak to the success of traditionalists"</li>
        <p>
There was much more, but I think I am heading past attributing and into stealing his
content, so I'll just leave it there. If you ever have the opportunity to see him
speak, DO NOT miss it. I think when you look at those currently practicing the art
of software development, he's one of the 3 most relevant people (at least to me) right
now. [The others would be <a href="http://www.joelonsoftware.com/">Joel Spolsky</a>,
who might be falling a little and <a href="http://www.stevemcconnell.com/">Steve McConnell</a>,
who is always that much needed voice of reason]
</p>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=38cf3ee3-58b9-4f22-8226-0b4652401e69" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>[ARCHWORLD] Agile Model Driven Development</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,38cf3ee3-58b9-4f22-8226-0b4652401e69.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,38cf3ee3-58b9-4f22-8226-0b4652401e69.aspx</link>
      <pubDate>Sat, 26 Jul 2008 02:05:59 GMT</pubDate>
      <description>&lt;p&gt;
The moment we were all waiting for - &lt;a href="http://ambysoft.com/"&gt;Scott Ambler&lt;/a&gt;.
Ok, that's an exaggeration. I've read his articles, listened to webcasts, read some
of his books. I really was looking forward to seeing him in person.
&lt;/p&gt;
&lt;p&gt;
His talk was entitled Agile Model Driven Development, but he covered a lot more along
the way to that topic. His view of Agile is very pragmatic. He took a few swipes at
the dogmatics, which was good, because I could see where he was coming from, and I
often find myself on the highway to hell, um, I mean, the religious aspects of Agile.
His exaggerated lack of respect for the general tone on some agile mailing lists definitely
helped remind me of what it is we are trying to achieve. I think the reason why I
wasn't offended was because he pretty much attacked all of the sacred cows in our
industry - it was very &lt;a href="http://en.wikipedia.org/wiki/South_Park"&gt;South Park&lt;/a&gt; in
that way... :)
&lt;/p&gt;
&lt;p&gt;
I took a boatload of notes, so I'll summarize the highlights: 
&lt;li&gt;
Change Management Process == Change Prevention Process&lt;/li&gt;
&lt;li&gt;
"Documentation is the worst form of communication you can use"&lt;/li&gt;
&lt;li&gt;
"I wish a few more people were skeptical in our industry"&lt;/li&gt;
&lt;li&gt;
Software development is more art than science, therefore upfront estimation is not
realistic&lt;/li&gt;
&lt;li&gt;
&lt;b&gt;"Noncoding architects are only useful for fetching people coffee"&lt;/b&gt;
&lt;/li&gt;
&lt;li&gt;
"I will let the legacy systems in your organization speak to the success of traditionalists"&lt;/li&gt;
&gt;
&lt;p&gt;
There was much more, but I think I am heading past attributing and into stealing his
content, so I'll just leave it there. If you ever have the opportunity to see him
speak, DO NOT miss it. I think when you look at those currently practicing the art
of software development, he's one of the 3 most relevant people (at least to me) right
now. [The others would be &lt;a href="http://www.joelonsoftware.com/"&gt;Joel Spolsky&lt;/a&gt;,
who might be falling a little and &lt;a href="http://www.stevemcconnell.com/"&gt;Steve McConnell&lt;/a&gt;,
who is always that much needed voice of reason]
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=38cf3ee3-58b9-4f22-8226-0b4652401e69" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,38cf3ee3-58b9-4f22-8226-0b4652401e69.aspx</comments>
      <category>Agile</category>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=95f4dc85-078b-464e-b24b-866ccf32fc1a</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,95f4dc85-078b-464e-b24b-866ccf32fc1a.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,95f4dc85-078b-464e-b24b-866ccf32fc1a.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=95f4dc85-078b-464e-b24b-866ccf32fc1a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The final <a href="http://udidahan.com">Udi</a> presentation of the conference.
</p>
        <p>
Key takeaway - pubsub is generally the best way to build your services - think of
everything as long-running. Instead of having your billing service ask your customer
service for their current address every time it needs it, have the billing service
cache customer data, and subscribe to the customer service to receive updates. The
important thing to note here - this is NOT replication. In replication, there is no
authoritative source of data - all sources are authoritative. In this scheme, the
customer service is the system of record for customer data, and is responsible for
it. If the billing service were to encounter a discrepency in customer data, it would
ask the customer service for the current data, and use that. There is never a conflcit
- the customer service is always right (sorry, that's almost a pun).
</p>
        <p>
As you design your system, think about how it worked before it was automated. An order
was faxed in, and handled by various people. Eventually, good would be shipped and
a bill sent to the customer. Each of these steps in the workflow are just a process
in the business, just now they are automated to improve efficiency (hopefully). Services
are not APIs in the RPC style of thinking - they are different parts of the business,
and have their own responsibilites. They don't care about what happened before in
the workflow (beyond what concerns them) and they don't care what happens after them.
When they finish their work, they post events to whomever is subscribed, and let the
next processes figure out what to do.
</p>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=95f4dc85-078b-464e-b24b-866ccf32fc1a" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>[ARCHWORLD] Avoid a Failed SOA</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,95f4dc85-078b-464e-b24b-866ccf32fc1a.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,95f4dc85-078b-464e-b24b-866ccf32fc1a.aspx</link>
      <pubDate>Sat, 26 Jul 2008 01:50:58 GMT</pubDate>
      <description>&lt;p&gt;
The final &lt;a href="http://udidahan.com"&gt;Udi&lt;/a&gt; presentation of the conference.
&lt;/p&gt;
&lt;p&gt;
Key takeaway - pubsub is generally the best way to build your services - think of
everything as long-running. Instead of having your billing service ask your customer
service for their current address every time it needs it, have the billing service
cache customer data, and subscribe to the customer service to receive updates. The
important thing to note here - this is NOT replication. In replication, there is no
authoritative source of data - all sources are authoritative. In this scheme, the
customer service is the system of record for customer data, and is responsible for
it. If the billing service were to encounter a discrepency in customer data, it would
ask the customer service for the current data, and use that. There is never a conflcit
- the customer service is always right (sorry, that's almost a pun).
&lt;/p&gt;
&lt;p&gt;
As you design your system, think about how it worked before it was automated. An order
was faxed in, and handled by various people. Eventually, good would be shipped and
a bill sent to the customer. Each of these steps in the workflow are just a process
in the business, just now they are automated to improve efficiency (hopefully). Services
are not APIs in the RPC style of thinking - they are different parts of the business,
and have their own responsibilites. They don't care about what happened before in
the workflow (beyond what concerns them) and they don't care what happens after them.
When they finish their work, they post events to whomever is subscribed, and let the
next processes figure out what to do.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=95f4dc85-078b-464e-b24b-866ccf32fc1a" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,95f4dc85-078b-464e-b24b-866ccf32fc1a.aspx</comments>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=4b870ea9-136f-4966-94cf-0d0f56a7b69b</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,4b870ea9-136f-4966-94cf-0d0f56a7b69b.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,4b870ea9-136f-4966-94cf-0d0f56a7b69b.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=4b870ea9-136f-4966-94cf-0d0f56a7b69b</wfw:commentRss>
      <title>[ARCHWORLD] Intentions &amp; Interfaces - Making Patterns Concrete</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,4b870ea9-136f-4966-94cf-0d0f56a7b69b.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,4b870ea9-136f-4966-94cf-0d0f56a7b69b.aspx</link>
      <pubDate>Sat, 26 Jul 2008 01:40:41 GMT</pubDate>
      <description>&lt;p&gt;
Once again, we went to a presentation by &lt;a href="http://udidahan.com"&gt;&lt;/a&gt; - &lt;a href="http://udidahan.weblogs.us/2008/07/23/presentation-intentions-and-interfaces-online/"&gt;Intentions
&amp; Interfaces - Making Patterns Concrete&lt;/a&gt;. We would also attend his other presentation,
which was immediately after this one, which of course must make us Udi's groupies...
:)
&lt;/p&gt;
&lt;p&gt;
Udi is a very dynamic speaker. He gives the impression that he really knows what he's
talking about, and not only that, he has done it. For this presentation, I was so
caught up in what he was talking about, and how it would solve problems I have to
solve RIGHT NOW, I didn't take especially good notes. So, I'd recommend checking out
the link to his slides above for the details, but basically, the premise was to build
interfaces for all of the different cases where you would need an object, instead
of having a large class with a lot of different methods. If you have a customer object,
and sometimes you want all of the orders for that customer (but most of the time you
don't), you have two methods (or as someone in the room suggested - one method with
a boolean - I've done that as well). Obviously, over time, when you take into account
all of the scenarios, you can end up with a lot of methods and a very large class.
&lt;/p&gt;
&lt;p&gt;
The bigger problem, of course, is that these methods are only loosely related (they
pertain to the same object, but they don't have the same purpose - a clear violation
of the single concern principle. By creating interfaces, and then creating classes
for those interfaces, you can pull that functionality out into different classes,
and seperate the concerns. It also reduces your coupling - the customer class doesn't
have to know about the orderdetails class in order to work with its child orders.
&lt;/p&gt;
&lt;p&gt;
Its definitely a lot of common sense stuff in a way, but I probably never would have
thought of it that way. I need to throw together my own reference application to fully
assimilate what he talked about - I don't think I'm doing it justice in this post.
It was good stuff - got me thinking, anyway...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=4b870ea9-136f-4966-94cf-0d0f56a7b69b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,4b870ea9-136f-4966-94cf-0d0f56a7b69b.aspx</comments>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=bb37b3d4-aedd-4da1-a376-a6b842e2b187</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,bb37b3d4-aedd-4da1-a376-a6b842e2b187.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,bb37b3d4-aedd-4da1-a376-a6b842e2b187.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bb37b3d4-aedd-4da1-a376-a6b842e2b187</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://blogs.msdn.com/randymiller/default.aspx">Randy Miller</a> gave a ridiculously
short (under 45 minutes) presentation on Composite Architecture. I went in thinking
he would be talking about how one hooks up different technologies into one system,
which is a problem we face at McKesson Automation - our product lines are based on
various technologies, and our customers like them to work together.
</p>
        <p>
I completely forgot my brainwashing back in my Microsoft Merit Badge days - Composite
Applications used to Microsoft-speak for cobbling together an application from various
Office applications and enough VB and VBA to make them stick. Randy works for Microsoft.
So, it should come as no surprise that Composite Architecture is the updated version
of that vision, where instead of hooking together Office products, we're hooking together
server products such as SharePoint, BizTalk, Excel Server, etc. Certainly a good solution
in a lot of cases, but he didn't really dive into the details very much, or at all
for that matter.
</p>
        <p>
The only useful thing he mentioned was adding a "Productivity Tier" between your business
logic and presentation logic, to allow for non-human systems to interface with your
application easily. Definitely a good idea, if you have the need to take order via
a web service, or reservations via a message queue, etc. The Productivity Tier essentially
reformats your data into a form that your business tier can use, and that external
applications can make use of going the other direction. Of course, its kind of a logical,
common sense thing to do, but it is good to mention, I suppose. I just would have
rather gone to a different presentation (Rob Daigneau had a presentation, Messaging-Oriented
Design Patterns for SOAP Services, that might have been better at the same time).
</p>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=bb37b3d4-aedd-4da1-a376-a6b842e2b187" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>[ARCHWORLD] Composite Architecture</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,bb37b3d4-aedd-4da1-a376-a6b842e2b187.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,bb37b3d4-aedd-4da1-a376-a6b842e2b187.aspx</link>
      <pubDate>Sat, 26 Jul 2008 01:21:40 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://blogs.msdn.com/randymiller/default.aspx"&gt;Randy Miller&lt;/a&gt; gave a ridiculously
short (under 45 minutes) presentation on Composite Architecture. I went in thinking
he would be talking about how one hooks up different technologies into one system,
which is a problem we face at McKesson Automation - our product lines are based on
various technologies, and our customers like them to work together.
&lt;/p&gt;
&lt;p&gt;
I completely forgot my brainwashing back in my Microsoft Merit Badge days - Composite
Applications used to Microsoft-speak for cobbling together an application from various
Office applications and enough VB and VBA to make them stick. Randy works for Microsoft.
So, it should come as no surprise that Composite Architecture is the updated version
of that vision, where instead of hooking together Office products, we're hooking together
server products such as SharePoint, BizTalk, Excel Server, etc. Certainly a good solution
in a lot of cases, but he didn't really dive into the details very much, or at all
for that matter.
&lt;/p&gt;
&lt;p&gt;
The only useful thing he mentioned was adding a "Productivity Tier" between your business
logic and presentation logic, to allow for non-human systems to interface with your
application easily. Definitely a good idea, if you have the need to take order via
a web service, or reservations via a message queue, etc. The Productivity Tier essentially
reformats your data into a form that your business tier can use, and that external
applications can make use of going the other direction. Of course, its kind of a logical,
common sense thing to do, but it is good to mention, I suppose. I just would have
rather gone to a different presentation (Rob Daigneau had a presentation, Messaging-Oriented
Design Patterns for SOAP Services, that might have been better at the same time).
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=bb37b3d4-aedd-4da1-a376-a6b842e2b187" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,bb37b3d4-aedd-4da1-a376-a6b842e2b187.aspx</comments>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=660302af-6236-459e-a980-7a2e419a27ce</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,660302af-6236-459e-a980-7a2e419a27ce.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,660302af-6236-459e-a980-7a2e419a27ce.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=660302af-6236-459e-a980-7a2e419a27ce</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The first talk I attended on Wednesday was <a href="http://www.aprocessgroup.com/index/index.asp">Chris
Armstrong's</a> presentation on Agile Enterprise Architecture. I'm going to have to
be honest - he started with a 10 minute rehashing of the Agile Manifesto, in his own
thinking, and for me it went down hill from there. He is one of those delusional folks
that thinks RUP can be Agile (anything with distinct phases for the different activities
(requirements/design/coding/testing) is NOT agile). I just couldn't get over the fundamental
difference there, and his constant reference to such BIG PROCESS things like TOGAF
and IEEE processes didn't help. For an old-school architect, what he was saying was
indeed agile, but it wasn't the kind of agile I was expecting. My friend and coworker
Jim Patula (no blog) found him to be a half-way decent, so it could just be me.
</p>
        <p>
There were two useful points he made, that I agree with completely - Agile is about
minimizing rework (probably more than just that - what about other wastes, but a good
thing to keep in mind all the same), and "At the end of the day, Microsoft Project
doesn't work".
</p>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=660302af-6236-459e-a980-7a2e419a27ce" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>[ARCHWORLD] Agile Enterprise Architecture</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,660302af-6236-459e-a980-7a2e419a27ce.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,660302af-6236-459e-a980-7a2e419a27ce.aspx</link>
      <pubDate>Sat, 26 Jul 2008 01:11:41 GMT</pubDate>
      <description>&lt;p&gt;
The first talk I attended on Wednesday was &lt;a href="http://www.aprocessgroup.com/index/index.asp"&gt;Chris
Armstrong's&lt;/a&gt; presentation on Agile Enterprise Architecture. I'm going to have to
be honest - he started with a 10 minute rehashing of the Agile Manifesto, in his own
thinking, and for me it went down hill from there. He is one of those delusional folks
that thinks RUP can be Agile (anything with distinct phases for the different activities
(requirements/design/coding/testing) is NOT agile). I just couldn't get over the fundamental
difference there, and his constant reference to such BIG PROCESS things like TOGAF
and IEEE processes didn't help. For an old-school architect, what he was saying was
indeed agile, but it wasn't the kind of agile I was expecting. My friend and coworker
Jim Patula (no blog) found him to be a half-way decent, so it could just be me.
&lt;/p&gt;
&lt;p&gt;
There were two useful points he made, that I agree with completely - Agile is about
minimizing rework (probably more than just that - what about other wastes, but a good
thing to keep in mind all the same), and "At the end of the day, Microsoft Project
doesn't work".
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=660302af-6236-459e-a980-7a2e419a27ce" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,660302af-6236-459e-a980-7a2e419a27ce.aspx</comments>
      <category>Agile</category>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=ce695198-a9c1-4ba8-8d3b-bb7b25601c6e</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,ce695198-a9c1-4ba8-8d3b-bb7b25601c6e.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,ce695198-a9c1-4ba8-8d3b-bb7b25601c6e.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ce695198-a9c1-4ba8-8d3b-bb7b25601c6e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.designpatternsfor.net/">Rob Daigneau</a>'s presentation on Introducing
Domain Services was a pretty decently balanced between "astronaut-y" architecture
and practical advice. He was a fairly engaging speaker. Probably the biggest takeaway
I got from his talk was: "If you want to do anything useful in software, coupling
must exist". He spent a good deal of time discussing this paradox - we want to have
loosly coupled everything, but at the end of the day, if our code is going to do anything,
it has to be coupled to other code in some way. So, in the end, its a matter of determining
what type of coupling is best for a given scenario - different systems will have different
needs.
</p>
        <p>
He described the types of coupling as: 
</p>
        <li>
Data Structure</li>
        <li>
Interface</li>
        <li>
Functional</li>
        <li>
Temporal</li>
        <li>
Location</li>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=ce695198-a9c1-4ba8-8d3b-bb7b25601c6e" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>[ARCHWORLD] Introducing Domain Services</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,ce695198-a9c1-4ba8-8d3b-bb7b25601c6e.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,ce695198-a9c1-4ba8-8d3b-bb7b25601c6e.aspx</link>
      <pubDate>Sat, 26 Jul 2008 01:02:55 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://www.designpatternsfor.net/"&gt;Rob Daigneau&lt;/a&gt;'s presentation on Introducing
Domain Services was a pretty decently balanced between "astronaut-y" architecture
and practical advice. He was a fairly engaging speaker. Probably the biggest takeaway
I got from his talk was: "If you want to do anything useful in software, coupling
must exist". He spent a good deal of time discussing this paradox - we want to have
loosly coupled everything, but at the end of the day, if our code is going to do anything,
it has to be coupled to other code in some way. So, in the end, its a matter of determining
what type of coupling is best for a given scenario - different systems will have different
needs.
&lt;/p&gt;
&lt;p&gt;
He described the types of coupling as: 
&lt;li&gt;
Data Structure&lt;/li&gt;
&lt;li&gt;
Interface&lt;/li&gt;
&lt;li&gt;
Functional&lt;/li&gt;
&lt;li&gt;
Temporal&lt;/li&gt;
&lt;li&gt;
Location&lt;/li&gt;
&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=ce695198-a9c1-4ba8-8d3b-bb7b25601c6e" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,ce695198-a9c1-4ba8-8d3b-bb7b25601c6e.aspx</comments>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=89ffa945-3707-40c9-9e57-d14c3bc2f23f</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,89ffa945-3707-40c9-9e57-d14c3bc2f23f.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,89ffa945-3707-40c9-9e57-d14c3bc2f23f.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=89ffa945-3707-40c9-9e57-d14c3bc2f23f</wfw:commentRss>
      <title>[ARCHWORLD] Interaction Design for Non-Designers</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,89ffa945-3707-40c9-9e57-d14c3bc2f23f.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,89ffa945-3707-40c9-9e57-d14c3bc2f23f.aspx</link>
      <pubDate>Wed, 23 Jul 2008 02:29:28 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://foruse.com/"&lt;/a&gt;Larry Constantine&lt;/a&gt; talked about Interaction Design
for Non-Designers. It was a very 101 level presentation, and there were a lot of,
well, yeah, of course moments, but overall, I felt it was worthwhile.
&lt;/p&gt;
&lt;p&gt;
Some of the highlights: 
&lt;li&gt;
Don't punish your user - his example - a survey web page with dropdowns for yes/no,
instead of radio buttons. It takes twice as many clicks to get through it&lt;/li&gt;
&lt;li&gt;
"Every time there is an 'instruction manual' for a control, you should rethink it"&lt;/li&gt;
&lt;li&gt;
The status area at the bottom of a lot of screens is generally never looked at&lt;/li&gt;
&lt;li&gt;
Users tend to blame themselves when something doesn't work, instead of blaming the
developer (who is almost always the one who deserves the blame)&lt;/li&gt;
&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=89ffa945-3707-40c9-9e57-d14c3bc2f23f" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,89ffa945-3707-40c9-9e57-d14c3bc2f23f.aspx</comments>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=ada19470-5d03-4320-88e6-c2930a3c0dd7</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,ada19470-5d03-4320-88e6-c2930a3c0dd7.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,ada19470-5d03-4320-88e6-c2930a3c0dd7.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=ada19470-5d03-4320-88e6-c2930a3c0dd7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://sadalage.com/">Pramod Sadalage</a> presented on Agile Database Development.
I'm slightly familiar with his work, as I have read Scott Ambler's Agile DBA book,
on which I believe Pramod contributed. At the very least, the two have also written
Database Refactoring together, so I pretty much knew about the topic. I have been
taking notes in OneNote all through the conference, and I created a page on which
I'm listing things I need to do when I get back to the office (things to research
more, or things to talk to someone about - mostly things we should consider re-evaluating).
My list of things to re-evaluate grew greatly during this talk. There are lots of
little things we could do better database-wise, with regards to our adoption of Scrum.
</p>
        <p>
Our DBA's have a database build script, but its hardly automated, and it depends upon
some crazy Access application to run it (yes, you read that right - an Access application
to build a SQL Server database). The database team also uses a crazy versioning scheme
in SoresSafe. But more importantly, we don't really include them like we should, and
talk to them about what we are trying to achieve, and it causes conflict.
</p>
        <p>
The coolest thing Pramod demonstrated was <a href="http://dbdeploy.com/">dbdeploy</a>.
It doesn't really do anything all that crazy, and yet what it does is pure genius.
It will run a series of scripts to bring your database up to date, and also allow
you to roll back to an older version. You have to write the scripts, but it manages
the process for you, and makes it real easy to get an up to date database for you
development or QA environment, or even production (although if your DBAs are squeamish,
it will generate the script necessary to go from one version to another). Its nothing
complicated, and yet incredibly elegant.
</p>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=ada19470-5d03-4320-88e6-c2930a3c0dd7" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>[ARCHWORLD] Agile Database Development</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,ada19470-5d03-4320-88e6-c2930a3c0dd7.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,ada19470-5d03-4320-88e6-c2930a3c0dd7.aspx</link>
      <pubDate>Wed, 23 Jul 2008 02:02:18 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://sadalage.com/"&gt;Pramod Sadalage&lt;/a&gt; presented on Agile Database Development.
I'm slightly familiar with his work, as I have read Scott Ambler's Agile DBA book,
on which I believe Pramod contributed. At the very least, the two have also written
Database Refactoring together, so I pretty much knew about the topic. I have been
taking notes in OneNote all through the conference, and I created a page on which
I'm listing things I need to do when I get back to the office (things to research
more, or things to talk to someone about - mostly things we should consider re-evaluating).
My list of things to re-evaluate grew greatly during this talk. There are lots of
little things we could do better database-wise, with regards to our adoption of Scrum.
&lt;/p&gt;
&lt;p&gt;
Our DBA's have a database build script, but its hardly automated, and it depends upon
some crazy Access application to run it (yes, you read that right - an Access application
to build a SQL Server database). The database team also uses a crazy versioning scheme
in SoresSafe. But more importantly, we don't really include them like we should, and
talk to them about what we are trying to achieve, and it causes conflict.
&lt;/p&gt;
&lt;p&gt;
The coolest thing Pramod demonstrated was &lt;a href="http://dbdeploy.com/"&gt;dbdeploy&lt;/a&gt;.
It doesn't really do anything all that crazy, and yet what it does is pure genius.
It will run a series of scripts to bring your database up to date, and also allow
you to roll back to an older version. You have to write the scripts, but it manages
the process for you, and makes it real easy to get an up to date database for you
development or QA environment, or even production (although if your DBAs are squeamish,
it will generate the script necessary to go from one version to another). Its nothing
complicated, and yet incredibly elegant.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=ada19470-5d03-4320-88e6-c2930a3c0dd7" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,ada19470-5d03-4320-88e6-c2930a3c0dd7.aspx</comments>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=8fb14fc0-481b-4d62-b4be-74b5fdfdc277</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,8fb14fc0-481b-4d62-b4be-74b5fdfdc277.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,8fb14fc0-481b-4d62-b4be-74b5fdfdc277.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8fb14fc0-481b-4d62-b4be-74b5fdfdc277</wfw:commentRss>
      <title>[ARCHWORLD] Code Metrics &amp; Analysis for Agile Projects </title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,8fb14fc0-481b-4d62-b4be-74b5fdfdc277.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,8fb14fc0-481b-4d62-b4be-74b5fdfdc277.aspx</link>
      <pubDate>Wed, 23 Jul 2008 01:46:30 GMT</pubDate>
      <description>&lt;p&gt;
First presentation today was about code metrics. Sure, he threw the word agile in
the title, and it had some relevance, but at the end of the day, the talk was about
metrics. The presenter was &lt;a href="http://www.nealford.com/"&gt;Neal Ford&lt;/a&gt;, and he
was pretty good. I had mixed expectations coming into this talk - I wasn't sure if
it was going to be a lot of crazy math and theories. It turned out to be a really
good look at some meaningful metrics, and more evidence against &lt;a href="http://en.wikipedia.org/wiki/Source_lines_of_code"&gt;KLOC&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Some interesting points: 
&lt;li&gt;
We aren't engineers, and we probably won't ever be - software engineering is a myth.&lt;/li&gt;
&lt;li&gt;
Automated metrics gathering is the best way to go - and even better would be to track
how they change over time&lt;/li&gt;
&lt;li&gt;
Java has a lot of really good tools in this space, .Net has some catching up to do
(although we do have FxCop, NDepend, and SourceMonitor (which actually does most languages),
but they have &lt;a href="http://www.panopticode.org/"&gt;Panopticode&lt;/a&gt;, which totally
rocks)&lt;/li&gt;
&gt;
&lt;br /&gt;
&lt;p&gt;
Some useful metrics: 
&lt;li&gt;
Unit Test Code Coverage (Branch coverage is most important)&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://en.wikipedia.org/wiki/Cyclomatic_complexity"&gt;Cyclomatic Complexity&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
Npath complexity - an improved Cyclomatic - it counts actual paths through the code&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://www.dmst.aueb.gr/dds/sw/ckjm/"&gt;Chidamber &amp; Kemerer object-oriented
metrics suite&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
Crap Complexity (&lt;a href="http://www.crap4j.org/"&gt;crap4j&lt;/a&gt; - there are rumors of
a .Net version)&lt;/li&gt;
&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;p&gt;
My "grand-boss" has been on a hunt for metrics, and KLOC and Feature Points have come
up a lot. I'm hoping maybe with this newfound knowledge, I can help steer him away
from those outdated metrics... Wish me luck!
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=8fb14fc0-481b-4d62-b4be-74b5fdfdc277" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,8fb14fc0-481b-4d62-b4be-74b5fdfdc277.aspx</comments>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=a52fc7cf-9119-444e-9189-c8c73ada438e</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,a52fc7cf-9119-444e-9189-c8c73ada438e.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,a52fc7cf-9119-444e-9189-c8c73ada438e.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a52fc7cf-9119-444e-9189-c8c73ada438e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The final presentation of the day yesterday was a Birds of a Feather group discussion
about what was important to make an agile project succeed. It was lead by <a href="http://blog.technicalmanagementinstitute.com/">Chris
Sims</a>, who did an excellent job facilitating. I don't know that I necessarily learned
anything, about agile, but I did learn another way to give a retrospective, which
in many ways was what Chris led. Going around the room and giving everyone a turn
to mention something (after having them write up a list) seems like it would be very
empowering to those who often don't speak up - I'm definitely going to give it a try
the next time I facilitate a retrospective.
</p>
        <p>
If you're keeping track of fads, Scrum and 2 week iterations are the most popular
way for people to do agile, at least according to the show of hands...
</p>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=a52fc7cf-9119-444e-9189-c8c73ada438e" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>[ARCHWORLD]  What makes agile project succeed (or fail)?</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,a52fc7cf-9119-444e-9189-c8c73ada438e.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,a52fc7cf-9119-444e-9189-c8c73ada438e.aspx</link>
      <pubDate>Tue, 22 Jul 2008 11:30:31 GMT</pubDate>
      <description>&lt;p&gt;
The final presentation of the day yesterday was a Birds of a Feather group discussion
about what was important to make an agile project succeed. It was lead by &lt;a href="http://blog.technicalmanagementinstitute.com/"&gt;Chris
Sims&lt;/a&gt;, who did an excellent job facilitating. I don't know that I necessarily learned
anything, about agile, but I did learn another way to give a retrospective, which
in many ways was what Chris led. Going around the room and giving everyone a turn
to mention something (after having them write up a list) seems like it would be very
empowering to those who often don't speak up - I'm definitely going to give it a try
the next time I facilitate a retrospective.
&lt;/p&gt;
&lt;p&gt;
If you're keeping track of fads, Scrum and 2 week iterations are the most popular
way for people to do agile, at least according to the show of hands...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=a52fc7cf-9119-444e-9189-c8c73ada438e" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,a52fc7cf-9119-444e-9189-c8c73ada438e.aspx</comments>
      <category>Agile</category>
      <category>Geekness</category>
      <category>Reviews</category>
      <category>Scrum</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=bc0a58bd-dbd4-4cd3-9a15-021e188ec60b</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,bc0a58bd-dbd4-4cd3-9a15-021e188ec60b.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,bc0a58bd-dbd4-4cd3-9a15-021e188ec60b.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=bc0a58bd-dbd4-4cd3-9a15-021e188ec60b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I attended Mike Rosen's (doesn't appear to have a blog, and the domain for the email
address he gave doesn't appear to have a web site, but you can try searching for him
by name and his company, Wilton Consulting Group, which will give you a ton of hits
on presentations he's given) talk on Designing Service-Oriented Applications. It didn't
quite meet my expectations. It was very high level, <a href="http://www.joelonsoftware.com/articles/fog0000000018.html">architecture-astronaut</a>-y.
Mike admitted many times to being a UML guy, and I got the distinct impression he
hasn't written any code in years. Guys like him are the reason why I resist the title <i>architect</i>.
If you don't have that same bias, it probably would have been a pretty good presentation.
Mike's presentation skills are decent, and he does have a lot of experience. I was
just hoping for something a little more practical.
</p>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=bc0a58bd-dbd4-4cd3-9a15-021e188ec60b" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>[ARCHWORLD] Designing Service-Oriented Applications</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,bc0a58bd-dbd4-4cd3-9a15-021e188ec60b.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,bc0a58bd-dbd4-4cd3-9a15-021e188ec60b.aspx</link>
      <pubDate>Tue, 22 Jul 2008 11:23:42 GMT</pubDate>
      <description>&lt;p&gt;
I attended Mike Rosen's (doesn't appear to have a blog, and the domain for the email
address he gave doesn't appear to have a web site, but you can try searching for him
by name and his company, Wilton Consulting Group, which will give you a ton of hits
on presentations he's given) talk on Designing Service-Oriented Applications. It didn't
quite meet my expectations. It was very high level, &lt;a href="http://www.joelonsoftware.com/articles/fog0000000018.html"&gt;architecture-astronaut&lt;/a&gt;-y.
Mike admitted many times to being a UML guy, and I got the distinct impression he
hasn't written any code in years. Guys like him are the reason why I resist the title &lt;i&gt;architect&lt;/i&gt;.
If you don't have that same bias, it probably would have been a pretty good presentation.
Mike's presentation skills are decent, and he does have a lot of experience. I was
just hoping for something a little more practical.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=bc0a58bd-dbd4-4cd3-9a15-021e188ec60b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,bc0a58bd-dbd4-4cd3-9a15-021e188ec60b.aspx</comments>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=3da2b316-74e6-4154-8106-62aaea7769ea</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,3da2b316-74e6-4154-8106-62aaea7769ea.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,3da2b316-74e6-4154-8106-62aaea7769ea.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=3da2b316-74e6-4154-8106-62aaea7769ea</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
The first presentation I attended was an excellent presentation about building distributed
systems given by <a href="http://udidahan.com">Udi Dahan</a>. He talked a little about
his open source enterprise service bus (ESB) <a href="http://nservicebus.com/">nServiceBus</a>.
He had a boatload of material, and ran through it all - it was a little bit too much
for the time, and yet he managed to do a good job of not crushing us with it all.
</p>
        <p>
Some of the more interesting notes I took: 
</p>
        <li>
You might want to consider the security of the data in your local caches</li>
        <li>
Instead of just logging an exception and moving on, route messages that couldn't be
processed to an error/exception queue, so that you can reprocess them later - you
don't want to just drop that $5M order.</li>
        <li>
I'm paraphrasing here, but the thing Udi said that really hits home most for me: <b><i>If
you want to have control over anything, don't allow multiple applications to share
a database</i></b></li>
        <p>
If you have the opportunity to see Udi speak, I highly recommend it. I'm hoping to
get a chance to play around with nServiceBus - maybe I'll have somethign to write
about that in the coming weeks.
</p>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=3da2b316-74e6-4154-8106-62aaea7769ea" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>[ARCHWORLD] Build Scalable, Distributed Enterprise .Net Solutions with nServiceBus </title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,3da2b316-74e6-4154-8106-62aaea7769ea.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,3da2b316-74e6-4154-8106-62aaea7769ea.aspx</link>
      <pubDate>Tue, 22 Jul 2008 11:09:41 GMT</pubDate>
      <description>&lt;p&gt;
The first presentation I attended was an excellent presentation about building distributed
systems given by &lt;a href="http://udidahan.com"&gt;Udi Dahan&lt;/a&gt;. He talked a little about
his open source enterprise service bus (ESB) &lt;a href="http://nservicebus.com/"&gt;nServiceBus&lt;/a&gt;.
He had a boatload of material, and ran through it all - it was a little bit too much
for the time, and yet he managed to do a good job of not crushing us with it all.
&lt;/p&gt;
&lt;p&gt;
Some of the more interesting notes I took: 
&lt;li&gt;
You might want to consider the security of the data in your local caches&lt;/li&gt;
&lt;li&gt;
Instead of just logging an exception and moving on, route messages that couldn't be
processed to an error/exception queue, so that you can reprocess them later - you
don't want to just drop that $5M order.&lt;/li&gt;
&lt;li&gt;
I'm paraphrasing here, but the thing Udi said that really hits home most for me: &lt;b&gt;&lt;i&gt;If
you want to have control over anything, don't allow multiple applications to share
a database&lt;/i&gt;&lt;/b&gt;
&lt;/li&gt;
&gt;
&lt;p&gt;
If you have the opportunity to see Udi speak, I highly recommend it. I'm hoping to
get a chance to play around with nServiceBus - maybe I'll have somethign to write
about that in the coming weeks.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=3da2b316-74e6-4154-8106-62aaea7769ea" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,3da2b316-74e6-4154-8106-62aaea7769ea.aspx</comments>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=acc5e04b-b782-4db5-8107-d913f06182e4</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,acc5e04b-b782-4db5-8107-d913f06182e4.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,acc5e04b-b782-4db5-8107-d913f06182e4.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=acc5e04b-b782-4db5-8107-d913f06182e4</wfw:commentRss>
      <title>Dr. Dobb's Architecture &amp; Design World</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,acc5e04b-b782-4db5-8107-d913f06182e4.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,acc5e04b-b782-4db5-8107-d913f06182e4.aspx</link>
      <pubDate>Tue, 22 Jul 2008 10:54:30 GMT</pubDate>
      <description>&lt;p&gt;
This week, I'm in downtown Chicago, attending &lt;a href="http://www.drdobbsarchworld.com/"&gt;Dr.
Dobb's Architecture &amp; Design World&lt;/a&gt;. So far, its been well worth it, although as
a suburbanite who has never really had to deal with city life, I am somewhat shocked
by how damn expensive a 10 minute cab ride is... :)
&lt;/p&gt;
&lt;p&gt;
I'll try and give a brief recap of each session I attend over the next series of posts.&gt;&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=acc5e04b-b782-4db5-8107-d913f06182e4" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,acc5e04b-b782-4db5-8107-d913f06182e4.aspx</comments>
      <category>Geekness</category>
      <category>Reviews</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=a462844f-e1c7-42e1-b6fb-84d4fd19907c</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,a462844f-e1c7-42e1-b6fb-84d4fd19907c.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,a462844f-e1c7-42e1-b6fb-84d4fd19907c.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=a462844f-e1c7-42e1-b6fb-84d4fd19907c</wfw:commentRss>
      <title>Don't buy Dell Printers</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,a462844f-e1c7-42e1-b6fb-84d4fd19907c.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,a462844f-e1c7-42e1-b6fb-84d4fd19907c.aspx</link>
      <pubDate>Sun, 11 May 2008 23:30:37 GMT</pubDate>
      <description>&lt;p&gt;
I'm sure everyone knows this already, but I figured since I have no worthwhile recourse
with Dell, I'd complain about it on my weblog, and at least make me feel better that
I might have disuaded one person from buying a Dell printer...
&lt;/p&gt;
&lt;p&gt;
Anyway, Dell printers (specifically, the AIO 962 in my case) have timebombed ink cartridges.
I have heard rumors that other companies do this to, I don't know specifics, but check
carefully - its not hard to find out via an internet search. What this means is, if
you don't print terribly often, and you have a spare ink cartridge hanging around,
the cartridge might expire before you put it into the printer. It will probably still
print just fine, but Dell has planted a chip in there to say it won't, and you can't
really do anything to convince your printer &lt;a href="http://www.dellcommunity.com/supportforums/board/message?board.id=A940&amp;message.id=24425&amp;c=us&amp;l=en&amp;cs=&amp;s=gen"&gt;otherwise&lt;/a&gt;.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=a462844f-e1c7-42e1-b6fb-84d4fd19907c" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,a462844f-e1c7-42e1-b6fb-84d4fd19907c.aspx</comments>
      <category>Rants</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=e4de9846-870d-4e71-99be-1a7b486ae8da</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,e4de9846-870d-4e71-99be-1a7b486ae8da.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,e4de9846-870d-4e71-99be-1a7b486ae8da.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=e4de9846-870d-4e71-99be-1a7b486ae8da</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://andrewtokeley.net/archive/2008/04/12/do-you-really-want-to-be-a-development-team-leader.aspx">This</a> seems
about right.
</p>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=e4de9846-870d-4e71-99be-1a7b486ae8da" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>Life as a Tech Lead</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,e4de9846-870d-4e71-99be-1a7b486ae8da.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,e4de9846-870d-4e71-99be-1a7b486ae8da.aspx</link>
      <pubDate>Mon, 14 Apr 2008 23:35:05 GMT</pubDate>
      <description>&lt;p&gt;
&lt;a href="http://andrewtokeley.net/archive/2008/04/12/do-you-really-want-to-be-a-development-team-leader.aspx"&gt;This&lt;/a&gt; seems
about right.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=e4de9846-870d-4e71-99be-1a7b486ae8da" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,e4de9846-870d-4e71-99be-1a7b486ae8da.aspx</comments>
      <category>PM</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=15c2100e-57f5-4aab-8dc2-d083b7014c1f</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,15c2100e-57f5-4aab-8dc2-d083b7014c1f.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,15c2100e-57f5-4aab-8dc2-d083b7014c1f.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=15c2100e-57f5-4aab-8dc2-d083b7014c1f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
My friend Rich just <a href="http://rjdudley.com/blog/MidlevelNETDevelopersNeededInPittsburgh.aspx">posted</a> on
his blog about 4 openings. At my company (McKesson Automation), we have a bunch of
openings that we are having a hell of a time trying to fill. I wouldn't say its the <a href="http://en.wikipedia.org/wiki/Dot-com_bubble">Roaring
90's</a> again, but it seems to be a pretty good time to be a developer in Pittsburgh.
</p>
        <p>
If you work with Microsoft technology, as a developer, QA, or sysadmin, contact me
if you want to know more...
</p>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=15c2100e-57f5-4aab-8dc2-d083b7014c1f" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>Recession? Not if you're a developer...</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,15c2100e-57f5-4aab-8dc2-d083b7014c1f.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,15c2100e-57f5-4aab-8dc2-d083b7014c1f.aspx</link>
      <pubDate>Sat, 12 Apr 2008 00:51:19 GMT</pubDate>
      <description>&lt;p&gt;
My friend Rich just &lt;a href="http://rjdudley.com/blog/MidlevelNETDevelopersNeededInPittsburgh.aspx"&gt;posted&lt;/a&gt; on
his blog about 4 openings. At my company (McKesson Automation), we have a bunch of
openings that we are having a hell of a time trying to fill. I wouldn't say its the &lt;a href="http://en.wikipedia.org/wiki/Dot-com_bubble"&gt;Roaring
90's&lt;/a&gt; again, but it seems to be a pretty good time to be a developer in Pittsburgh.
&lt;/p&gt;
&lt;p&gt;
If you work with Microsoft technology, as a developer, QA, or sysadmin, contact me
if you want to know more...
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=15c2100e-57f5-4aab-8dc2-d083b7014c1f" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,15c2100e-57f5-4aab-8dc2-d083b7014c1f.aspx</comments>
      <category>News</category>
    </item>
    <item>
      <trackback:ping>http://weblog.pineforestsoft.com/Trackback.aspx?guid=8b04c1bd-c506-4abe-aca2-d953b332ce11</trackback:ping>
      <pingback:server>http://weblog.pineforestsoft.com/pingback.aspx</pingback:server>
      <pingback:target>http://weblog.pineforestsoft.com/PermaLink,guid,8b04c1bd-c506-4abe-aca2-d953b332ce11.aspx</pingback:target>
      <dc:creator>
      </dc:creator>
      <wfw:comment>http://weblog.pineforestsoft.com/CommentView,guid,8b04c1bd-c506-4abe-aca2-d953b332ce11.aspx</wfw:comment>
      <wfw:commentRss>http://weblog.pineforestsoft.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8b04c1bd-c506-4abe-aca2-d953b332ce11</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
One of my fellow developers is making the transition from VB6/ASP/COM+, and moving
into the .Net world (he's be chained to a product that hadn't been scheduled for upgrade,
but now it finally is). He's been asking some good questions. Here's one I'd like
to share… 
</p>
        <p>
          <span style="font-size:12pt; text-decoration:underline">
            <strong>Question: </strong>
          </span>
        </p>
        <p>
Are there any string truncation methods in C# that remove a number of characters or
substring from the end of a string? I've been playing with TrimEnd and it seems to
ignore anything I try. My purpose is that I have built a string dynamically (SQL statement)
in a loop and I need to remove the last "UNION ALL" keyword I add. 
</p>
        <p>
          <span style="font-size:12pt; text-decoration:underline">
            <strong>Answer: </strong>
          </span>
        </p>
        <p>
          <span style="color:blue">The biggest problem is that the string functions in .Net
to do not replace the string you are working on – instead they return the resulting
string. This is behavior is more flexible, but entirely different from the way things
used to work in VB6, thus leading to confusion. Here is a snippet that will do what
you are looking for: </span>
        </p>
        <p>
          <span style="font-family:Consolas; font-size:12pt">
            <span style="color:blue">string</span>
            <span style="color:black"> crap
= </span>
          </span>
        </p>
        <p>
          <span style="font-family:Consolas; font-size:12pt">
            <span style="color:black">"</span>
            <span style="color:teal">SELECT
1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL</span>
            <span style="color:black">"; </span>
          </span>
        </p>
        <p>
          <span style="font-family:Consolas; font-size:12pt">
            <span style="color:black">crap
= crap.Remove(crap.LastIndexOf("</span>
            <span style="color:teal">UNION ALL</span>
            <span style="color:black">")); </span>
          </span>
        </p>
        <p>
        </p>
        <p>
          <span style="color:blue">Another thing, though, if you are building a really big string,
you might want to consider using the StringBuilder class. The way I'd get around the
extra UNION ALL is to not write it in the first place – create a bool, check to see
if it's true in your loop, and if it is, write the UNION ALL before the rest of the
stuff you were going to write in the loop. Then, if it isn't true, set it true, so
that the next time through you'll get the proper UNION ALL written: </span>
        </p>
        <p>
          <span style="font-family:Consolas; font-size:12pt">
            <span style="color:blue">string</span>
            <span style="color:black">[]
selects = {"</span>
            <span style="color:teal">select 1</span>
            <span style="color:black">",
"</span>
            <span style="color:teal">select 2</span>
            <span style="color:black">", "</span>
            <span style="color:teal">select
3</span>
            <span style="color:black">"}; </span>
          </span>
        </p>
        <p>
          <span style="font-family:Consolas; font-size:12pt">
            <span style="color:black">StringBuilder
builder = </span>
            <span style="color:blue">new</span>
            <span style="color:black"> StringBuilder(); </span>
          </span>
        </p>
        <p>
          <span style="font-family:Consolas; font-size:12pt">
            <span style="color:blue">for</span>
            <span style="color:black">(</span>
            <span style="color:blue">int</span>
            <span style="color:black"> i=</span>
            <span style="color:red">0</span>
            <span style="color:black">;
i&lt;selects.Length; i++) </span>
          </span>
        </p>
        <p>
          <span style="color:black; font-family:Consolas; font-size:12pt">{ </span>
        </p>
        <p>
          <span style="font-family:Consolas; font-size:12pt">
            <span style="color:blue">if</span>
            <span style="color:black"> (builder.Length
&gt; </span>
            <span style="color:red">0</span>
            <span style="color:black">) </span>
          </span>
        </p>
        <p>
          <span style="color:black; font-family:Consolas; font-size:12pt">{ </span>
        </p>
        <p style="margin-left: 36pt">
          <span style="font-family:Consolas; font-size:12pt">
            <span style="color:black">builder.Append("</span>
            <span style="color:teal"> UNION
ALL </span>
            <span style="color:black">"); </span>
          </span>
        </p>
        <p>
          <span style="color:black; font-family:Consolas; font-size:12pt">} </span>
        </p>
        <p>
          <span style="color:black; font-family:Consolas; font-size:12pt">builder.Append(selects[i]); </span>
        </p>
        <p>
          <span style="color:black; font-family:Consolas; font-size:12pt">} </span>
        </p>
        <p>
          <span style="color:black; font-family:Consolas; font-size:12pt">Console.WriteLine(builder); </span>
        </p>
        <p>
        </p>
        <p>
          <span style="color:blue">
            <em>Actually, I cheated on the bool – I just used the fact
that the StringBuilder would be empty. But it's basically the same thing… </em>
          </span>
        </p>
        <img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=8b04c1bd-c506-4abe-aca2-d953b332ce11" />
        <br />
        <hr />
This post originally appeared on <a href="http://weblog.pineforestsoft.com">Eric Kepes'</a> weblog.<br />
Copyright 2008 Eric W. Kepes</body>
      <title>.Net strings for VB6 developers</title>
      <guid isPermaLink="false">http://weblog.pineforestsoft.com/PermaLink,guid,8b04c1bd-c506-4abe-aca2-d953b332ce11.aspx</guid>
      <link>http://weblog.pineforestsoft.com/PermaLink,guid,8b04c1bd-c506-4abe-aca2-d953b332ce11.aspx</link>
      <pubDate>Sat, 12 Apr 2008 00:40:06 GMT</pubDate>
      <description>&lt;p&gt;
One of my fellow developers is making the transition from VB6/ASP/COM+, and moving
into the .Net world (he's be chained to a product that hadn't been scheduled for upgrade,
but now it finally is). He's been asking some good questions. Here's one I'd like
to share… 
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size:12pt; text-decoration:underline"&gt;&lt;strong&gt;Question: &lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Are there any string truncation methods in C# that remove a number of characters or
substring from the end of a string? I've been playing with TrimEnd and it seems to
ignore anything I try. My purpose is that I have built a string dynamically (SQL statement)
in a loop and I need to remove the last "UNION ALL" keyword I add. 
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-size:12pt; text-decoration:underline"&gt;&lt;strong&gt;Answer: &lt;/strong&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color:blue"&gt;The biggest problem is that the string functions in .Net
to do not replace the string you are working on – instead they return the resulting
string. This is behavior is more flexible, but entirely different from the way things
used to work in VB6, thus leading to confusion. Here is a snippet that will do what
you are looking for: &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-family:Consolas; font-size:12pt"&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt;&lt;span style="color:black"&gt; crap
= &lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-family:Consolas; font-size:12pt"&gt;&lt;span style="color:black"&gt;"&lt;/span&gt;&lt;span style="color:teal"&gt;SELECT
1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL&lt;/span&gt;&lt;span style="color:black"&gt;"; &lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-family:Consolas; font-size:12pt"&gt;&lt;span style="color:black"&gt;crap
= crap.Remove(crap.LastIndexOf("&lt;/span&gt;&lt;span style="color:teal"&gt;UNION ALL&lt;/span&gt;&lt;span style="color:black"&gt;")); &lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color:blue"&gt;Another thing, though, if you are building a really big string,
you might want to consider using the StringBuilder class. The way I'd get around the
extra UNION ALL is to not write it in the first place – create a bool, check to see
if it's true in your loop, and if it is, write the UNION ALL before the rest of the
stuff you were going to write in the loop. Then, if it isn't true, set it true, so
that the next time through you'll get the proper UNION ALL written: &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-family:Consolas; font-size:12pt"&gt;&lt;span style="color:blue"&gt;string&lt;/span&gt;&lt;span style="color:black"&gt;[]
selects = {"&lt;/span&gt;&lt;span style="color:teal"&gt;select 1&lt;/span&gt;&lt;span style="color:black"&gt;",
"&lt;/span&gt;&lt;span style="color:teal"&gt;select 2&lt;/span&gt;&lt;span style="color:black"&gt;", "&lt;/span&gt;&lt;span style="color:teal"&gt;select
3&lt;/span&gt;&lt;span style="color:black"&gt;"}; &lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-family:Consolas; font-size:12pt"&gt;&lt;span style="color:black"&gt;StringBuilder
builder = &lt;/span&gt;&lt;span style="color:blue"&gt;new&lt;/span&gt;&lt;span style="color:black"&gt; StringBuilder(); &lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-family:Consolas; font-size:12pt"&gt;&lt;span style="color:blue"&gt;for&lt;/span&gt;&lt;span style="color:black"&gt;(&lt;/span&gt;&lt;span style="color:blue"&gt;int&lt;/span&gt;&lt;span style="color:black"&gt; i=&lt;/span&gt;&lt;span style="color:red"&gt;0&lt;/span&gt;&lt;span style="color:black"&gt;;
i&amp;lt;selects.Length; i++) &lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color:black; font-family:Consolas; font-size:12pt"&gt;{ &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="font-family:Consolas; font-size:12pt"&gt;&lt;span style="color:blue"&gt;if&lt;/span&gt;&lt;span style="color:black"&gt; (builder.Length
&amp;gt; &lt;/span&gt;&lt;span style="color:red"&gt;0&lt;/span&gt;&lt;span style="color:black"&gt;) &lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color:black; font-family:Consolas; font-size:12pt"&gt;{ &lt;/span&gt;
&lt;/p&gt;
&lt;p style="margin-left: 36pt"&gt;
&lt;span style="font-family:Consolas; font-size:12pt"&gt;&lt;span style="color:black"&gt;builder.Append("&lt;/span&gt;&lt;span style="color:teal"&gt; UNION
ALL &lt;/span&gt;&lt;span style="color:black"&gt;"); &lt;/span&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color:black; font-family:Consolas; font-size:12pt"&gt;} &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color:black; font-family:Consolas; font-size:12pt"&gt;builder.Append(selects[i]); &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color:black; font-family:Consolas; font-size:12pt"&gt;} &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color:black; font-family:Consolas; font-size:12pt"&gt;Console.WriteLine(builder); &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="color:blue"&gt;&lt;em&gt;Actually, I cheated on the bool – I just used the fact
that the StringBuilder would be empty. But it's basically the same thing… &lt;/em&gt;&lt;/span&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://weblog.pineforestsoft.com/aggbug.ashx?id=8b04c1bd-c506-4abe-aca2-d953b332ce11" /&gt;
&lt;br /&gt;
&lt;hr /&gt;
This post originally appeared on &lt;a href='http://weblog.pineforestsoft.com'&gt;Eric Kepes'&lt;/a&gt; weblog.&lt;br&gt;Copyright 2008 Eric W. Kepes</description>
      <comments>http://weblog.pineforestsoft.com/CommentView,guid,8b04c1bd-c506-4abe-aca2-d953b332ce11.aspx</comments>
      <category>Code Snippets</category>
    </item>
  </channel>
</rss>