<?xml version="1.0" encoding="utf-8"?>
<feed xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="0.3" xml:lang="en-us" xmlns="http://purl.org/atom/ns#">
  <title>Matt Terski's Blog</title>
  <link rel="alternate" type="text/html" href="http://www.terski.com/blog/" />
  <modified>2005-06-10T21:17:08.1018416-07:00</modified>
  <tagline>Writing tomorrow's legacy applications today</tagline>
  <generator>newtelligence dasBlog 1.7.5016.1</generator>
  <author>
    <name>Matt Terski</name>
  </author>
  <entry>
    <title>Business Analysts and DSL Tools</title>
    <link rel="alternate" type="text/html" href="http://www.terski.com/blog/PermaLink,guid,1df88858-fe09-4bd4-986f-699a6bff3e75.aspx" />
    <id>http://www.terski.com/blog/PermaLink,guid,1df88858-fe09-4bd4-986f-699a6bff3e75.aspx</id>
    <issued>2005-06-10T21:17:08.1018416-07:00</issued>
    <modified>2005-06-10T21:17:08.1018416-07:00</modified>
    <created>2005-06-10T21:17:08.1018416-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
          <a href="http://www.damonpayne.com/PermaLink,guid,5d81269b-1b34-4407-9cb3-3a462f4dfa70.aspx">Damon
      seems fired-up </a>about the new DSL tools in Visual Studio 2005. But he asks:
   </p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <em>Why limit the use of this tool to visual studio users?  Suppose you work
      in a business with a fairly well defined domain, such as selling mutual funds for
      a specific company.  If you could define your domain entities, attributes, connections,
      rules, etc and then put this tool into the hands of people like, oh, say, business
      analysts you may have a very powerful code-generation and/or documentation tool that
      is usable by the people who supposedly know the business best.</em>
          </p>
        </blockquote>
        <p>
      I'll tell you why.
   </p>
        <p>
      When presented with the idea, most people will claim they want a tool that allows
      a domain expert, rather than a software developer, to create software. Or at least
      they’ll say they want a tool that lets the domain expert <em>configure</em> or <em>assemble</em> software.
      After all, who knows the business better than a business person? Give these people
      a nice DSL tool or BizTalk and let <em>them</em> construct the system.
   </p>
        <p>
      In my experience, however, I've found this desire is not genuine. It's incredibly
      difficult to get the business folks to commit to a domain model. I’m not implying
      that we developers are necessarily any smarter or more analytical, but we’re better
      equipped – and more interested – in creating a logical domain model of a business
      than a business person is. If you, the developer, create a domain model, a business
      expert can probably tell you where the model falls short of reality. But I’ve yet
      to meet a business person that could synthesize a good domain model. Get five business
      experts in the room and you’ll get five varying models (of the same business).
   </p>
        <p>
      More importantly, business folks don’t really want responsibility for the solution.
      For most developers, our work is an expense to the business and the business will
      (rightly) try to minimize that expense. A company needs to keep its toilets operating;
      this is another expense. The company also wants to spend as little money as possible
      on toilet operation. But, when a toilet breaks, the business folks don’t want an easy-to-use,
      next-generation set of pipe-wrenches. They want a plumber – someone with valuable
      expertise in something other than the business’ own core-competency.
   </p>
        <p>
      Likewise, a company needs to keep its software operating. The moment a business person
      makes a software change that unexpectedly halts the inflow of revenue, they won’t
      want a great tool. “They'll want a throat to choke,” as my friend Philippe says.
   </p>
        <p>
      Despite these comments, I’m a firm believer in modeling tools. I think they are useful
      and will become increasingly effective. But they won’t turn business analysts into
      programmers. They will be used by software developers to make ourselves more productive
      – much like a better pipe wrench could make a plumber more productive. These tools
      will alter the nature of our work, and businesses will earn a better return on their
      software development investment. But the role of the software developer won't be going
      away. Luckily for us, nearly all companies need toilets and software to stay in business.
   </p>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=1df88858-fe09-4bd4-986f-699a6bff3e75" />
      </body>
    </content>
  </entry>
  <entry>
    <title>Quotations on Software Design</title>
    <link rel="alternate" type="text/html" href="http://www.terski.com/blog/PermaLink,guid,af58ad62-f89c-42d5-964c-ba6f0a345131.aspx" />
    <id>http://www.terski.com/blog/PermaLink,guid,af58ad62-f89c-42d5-964c-ba6f0a345131.aspx</id>
    <issued>2005-05-12T20:16:08.5967062-07:00</issued>
    <modified>2005-05-12T20:19:31.3428134-07:00</modified>
    <created>2005-05-12T20:16:08.5967062-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      [<a href="http://www.booch.com/architecture/blog.jsp">Grady Booch</a>] ... <em>Glen
      Vandergurg's collection of </em><a href="http://www.vanderburg.org/Misc/Quotes/soft-quotes.html"><em>quotations
      on software design</em></a><em> make for fun reading.</em></p>
        <p>
      I've seen many of these before. A few that I haven't are hilarious.
   </p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <em>To a database person, every nail looks like a thumb. Or something like that. </em>
          </p>
        </blockquote>
        <p align="right">
          <em>- Jamie Zawinski</em>
        </p>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=af58ad62-f89c-42d5-964c-ba6f0a345131" />
      </body>
    </content>
  </entry>
  <entry>
    <title>Go Daddy</title>
    <link rel="alternate" type="text/html" href="http://www.terski.com/blog/PermaLink,guid,eb19f5e4-e255-4ad7-95e9-a5982c4400f1.aspx" />
    <id>http://www.terski.com/blog/PermaLink,guid,eb19f5e4-e255-4ad7-95e9-a5982c4400f1.aspx</id>
    <issued>2005-02-22T19:36:20.1438703-08:00</issued>
    <modified>2005-02-22T19:37:24.0957674-08:00</modified>
    <created>2005-02-22T19:36:20.1438703-08:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      Bob Parsons, the founder and president of GoDaddy.com, has a <a href="http://www.bobparsons.com/">blog</a>. There
      are at least five reasons why this is guy interesting.
   </p>
        <p>
      First, I know everybody has a blog these days, but I’m still surprised when I see
      an executive of any sizeable corporation blogging (without a ghost writer). Today,
      an executive identity and opinion that is separate from a meticulously-crafted corporate
      message feels strangely out of place (not that I mind).
   </p>
        <p>
      Second, Bob has unconventional opinions. When most technology companies are trying
      to find ways to cut costs through offshoring, he <a href="http://www.bobparsons.com/OffshoreOutsourcingItsnotforGoDaddyt.html">posts
      a contrarian view</a>:
   </p>
        <blockquote dir="ltr" style="MARGIN-RIGHT: 0px">
          <p>
            <em>I can tell you right now, Go Daddy is simply not interested in moving its operations
      offshore.</em>
          </p>
        </blockquote>
        <p dir="ltr">
      Bob seems to (rightly) regard software engineering as a source of competitive
      advantage, rather than an short-term expense that should be minimized regardless of
      long-term consequence.
   </p>
        <p dir="ltr">
      Third, there’s the controversy around <a href="http://news.google.com/news?q=go%20daddy%20superbowl%20commercial">Go
      Daddy’s Super Bowl commercials</a>. Conventional wisdom is that a little-known dot
      com should not purchase a spot in the Super Bowl. That was conventional wisdom circa
      2001. But the commercials were a big success for Go Daddy.
   </p>
        <p dir="ltr">
      Fourth, there are lots of programmers who spout opinions in blogs. Not all of them
      have created software companies with $100,000,000 in annual revenue.
   </p>
        <p dir="ltr">
      Fifth and finally, he has rules to live by — <a href="http://www.bobparsons.com/RoberttheycanteatyouMyrulesforsurvivalt.html">sixteen
      of them</a>.
   </p>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=eb19f5e4-e255-4ad7-95e9-a5982c4400f1" />
      </body>
    </content>
  </entry>
  <entry>
    <title>INETA SOA Talk</title>
    <link rel="alternate" type="text/html" href="http://www.terski.com/blog/PermaLink,guid,ec62f263-9e18-4c9b-817a-199ce369a4d9.aspx" />
    <id>http://www.terski.com/blog/PermaLink,guid,ec62f263-9e18-4c9b-817a-199ce369a4d9.aspx</id>
    <issued>2005-02-11T20:01:53.2017328-08:00</issued>
    <modified>2005-02-11T20:01:53.2017328-08:00</modified>
    <created>2005-02-11T20:01:53.2017328-08:00</created>
  </entry>
  <entry>
    <title>Is It December Already?</title>
    <link rel="alternate" type="text/html" href="http://www.terski.com/blog/PermaLink,guid,246f62be-4ed3-4427-8005-259e830dff5d.aspx" />
    <id>http://www.terski.com/blog/PermaLink,guid,246f62be-4ed3-4427-8005-259e830dff5d.aspx</id>
    <issued>2004-12-07T20:39:37.5542852-08:00</issued>
    <modified>2004-12-08T13:34:13.0620003-08:00</modified>
    <created>2004-12-07T20:39:37.5542852-08:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      After five months without posting, I was shamed into blogging again at the first Milwaukee
      area .Net geek dinner (<a href="http://www.mperfect.net/blog/browse.aspx?bid=632378739798906250">thanks
      to Casey</a>). I’ll take the fact that <strong>*Milwaukee*</strong> can support
      a geek dinner as a sure sign that the .Net platform has become ubiquitous.
   </p>
        <p>
      It’s been an insanely busy year. I’ve typically been working on two or
      three projects concurrently – each with clients expecting to see regular progress.
      Since some of them read my blog, I’d have no excuse for not meeting a deadline
      but still having time to post.
   </p>
        <p>
      But I’m not complaining. It’s a privilege, not an obligation, to get paid
      to do what I do. The day this becomes drudgery is the day I’ve lost all perspective.
      Anyhow, stay tuned for more posts; I’ve been implementing a lot with (and getting
      battle scars from) service-oriented architectures over the past year.
   </p>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=246f62be-4ed3-4427-8005-259e830dff5d" />
      </body>
    </content>
  </entry>
  <entry>
    <title>What is a Rating Engine?</title>
    <link rel="alternate" type="text/html" href="http://www.terski.com/blog/PermaLink,guid,f32cdeed-5394-491f-8749-e979451893db.aspx" />
    <id>http://www.terski.com/blog/PermaLink,guid,f32cdeed-5394-491f-8749-e979451893db.aspx</id>
    <issued>2004-07-19T21:43:01.8010405-07:00</issued>
    <modified>2004-07-19T21:43:01.8635397-07:00</modified>
    <created>2004-07-19T21:43:01.8010405-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      In a previous post, I've explained that I have an interest in rating engines. In fact,
      I have more than an interest -- I have an opinion. And that opinion is: If you plan
      on writing code to calculate an insurance premium, it's often best to write a custom
      rating engine.
   </p>
        <p>
      But before I can expound on this, I need to describe what a rating engine is. I'll
      start by describing the problem that a rating engine is supposed to solve. Insurance
      companies - more specifically, the actuaries - capture a lot of knowledge that is
      used to calculate an insurance premium. That knowledge has a few annoying characteristics:
      It is complex, it is large, and it subject to periodic, if not frequent, change.
   </p>
        <p>
      You could just write source code to calculate an insurance premium based on that actuarial
      knowledge. But your code would have a few annoying characteristics: It would be complex,
      it would be large, and it would be subject to periodic, if not frequent, change. Or,
      if you were diligent enough to prevent the first two characteristics, your code would
      accrue another characteristic: It would be very costly.
   </p>
        <p>
      So a rating engine should incorporate all of that actuarial knowledge to calculate
      a premium, but be neither too large nor too complex. It should deal with change gracefully.
      But still, what exactly does a rating engine do? 
   </p>
        <p>
      A rating engine has one primary function and a few supporting functions. Expressed
      as a use case, the primary function is to <em>Calculate Premium</em> for a proposed
      set of coverages.
   </p>
        <p>
          <img height="186" src="/blog/content/binary/re-uc.GIF" width="485" border="0" />
        </p>
        <p>
      But in order to calculate that premium, the user (let's call them <em>Rate Consumers</em>)
      needs to know how to assemble a valid set of proposed coverages. Insurance companies
      have lots of dependencies and constraints that describe what coverages and options
      can go together. This aspect of insurance - product design - involves capturing the
      knowledge of the product designer. The engine needs to expose this knowledge to the
      Rate Consumer in some way. We'll call this use case <em>Get Coverage Catalog</em>.
   </p>
        <p>
      It only stands to reason that when a Rate Consumer asks for a premium, the engine
      should check whether the proposed coverages are valid according to the coverage catalog.
      This functionality is really part of the Calculate Premium use case, but to draw attention
      to it, we'll put it in its own use case, <em>Validate Proposed Coverage</em>.
   </p>
        <p>
      Finally, there needs to be some way to transform the knowledge that exists in the
      heads of the actuaries and product designers into a form the rating engine can use.
      The actor responsible for doing this is a Rate Administrator. We'll call this use
      case <em>Manage Coverage Catalog and Rates</em>.
   </p>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=f32cdeed-5394-491f-8749-e979451893db" />
      </body>
    </content>
  </entry>
  <entry>
    <title>Is O/R Mapping Necessary Anymore?</title>
    <link rel="alternate" type="text/html" href="http://www.terski.com/blog/PermaLink,guid,9e4c38e9-c902-43db-81dc-a9c77273b888.aspx" />
    <id>http://www.terski.com/blog/PermaLink,guid,9e4c38e9-c902-43db-81dc-a9c77273b888.aspx</id>
    <issued>2004-05-24T20:29:01.1436624-07:00</issued>
    <modified>2004-05-24T20:28:37.1760724-07:00</modified>
    <created>2004-05-24T20:29:01.1436624-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="Section1">
          <p>
         My friend Bill <a href="http://www.straightlinesoft.com/PermaLink.aspx?guid=0812055c-8ac5-440e-a4ed-83ff21ed942a">points
         out</a> that ObjectSpaces has been delayed until Longhorn. I could be wrong, but I
         sense the initial enthusiasm for ObjectSpaces is waning. So now I’m pondering: 
      </p>
          <p style="MARGIN-LEFT: 0.5in">
            <span>Do we need O/R mappers anymore? Did we ever?</span>
          </p>
          <p>
         At the risk of sounding like someone who thinks SOA will solve all of the world’s
         problems, I want to spend some time testing the following hypothesis: 
      </p>
          <p style="MARGIN-LEFT: 0.5in">
            <span>Does a service-oriented architecture diminish the need for an O/R mapper?</span>
          </p>
          <p>
         SOA changes not only the way we build our back-end services, but also the way we build
         our front-ends. In a recent conversation with <a href="http://www.lhotka.net/WeBlog">Rocky
         Lhotka</a>, he made the point that in an SOA, the client and the service are really
         separate applications – separated by a trust boundary. He also pointed out that
         invoking a service is a lot like invoking a stored procedure: 1) construct a request
         by filling in some parameters, 2) invoke a named operation, and 3) handle the response. 
      </p>
          <p>
         Clemens has posted recently about something he calls <a href="http://staff.newtelligence.net/clemensv/PermaLink.aspx?guid=04cfedd9-12d3-4070-ab7c-b52bc67fda2d">data
         services</a>. In short, he makes the case for accessing your data through a service. 
      </p>
          <p>
         Continuing these thoughts, I’m now asking, “Can a service be akin to a
         smarter stored procedure?” If you look at it this way, you can write your ‘stored
         procedures’ in C# without Yukon ;-) 
      </p>
          <p>
         In an SOA, the client has its own layers (presentation, business, data) as does the
         service. But the client’s data layer does not necessarily connect to a database,
         It might just connect to a service. This gets to my reasons for asking whether we
         need O/R mappers: 
      </p>
          <p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in">
            <span style="FONT-FAMILY: Symbol">·<span style="FONT: 7pt 'Times New Roman'">      </span></span> The
         client’s business layer no longer needs to map to a relational database. Instead,
         it needs to map to service requests and responses. 
      </p>
          <p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in">
            <span style="FONT-FAMILY: Symbol">·<span style="FONT: 7pt 'Times New Roman'">      </span></span> If
         the service itself is a ‘smarter stored procedure’, does it need a rich
         domain model? If not, it doesn’t need to map this domain model to a relational
         model. 
      </p>
          <p>
         I’m writing more questions than answers in this post, but here’s one more: 
      </p>
          <p style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in">
            <span style="FONT-FAMILY: Symbol">·<span style="FONT: 7pt 'Times New Roman'">      </span></span> If
         we really needed O/R mappers, wouldn’t we already have them? Yes, I know a number
         of vendors already sell O/R mappers, but if they were so vital, wouldn’t they
         be built into the fabric of every platform by now? I mean, saving objects into a relational
         database is something we’ve been doing for a long time. If O/R mappers were
         really the answer, wouldn’t this be a solved problem by now? 
      </p>
        </div>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=9e4c38e9-c902-43db-81dc-a9c77273b888" />
      </body>
    </content>
  </entry>
  <entry>
    <title>Service-Oriented Architecture Misnamed?</title>
    <link rel="alternate" type="text/html" href="http://www.terski.com/blog/PermaLink,guid,703ff4e5-03db-4db7-bf93-8e76d58ea42d.aspx" />
    <id>http://www.terski.com/blog/PermaLink,guid,703ff4e5-03db-4db7-bf93-8e76d58ea42d.aspx</id>
    <issued>2004-05-20T14:35:53.7815406-07:00</issued>
    <modified>2004-05-20T14:35:53.9378136-07:00</modified>
    <created>2004-05-20T14:35:53.7815406-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      You read it here first: The term service-oriented architecture shall be renamed to
      message-oriented architecture. SOA shall become MOA.
   </p>
        <p>
      Well, not really. It won’t happen, even though it should.
   </p>
        <p>
      The entire point of SOA is to achieve loose coupling between applications. That’s
      it. Loose coupling.
   </p>
        <p>
      But that loose coupling has important second-order effects. It allows applications
      to evolve independently. It allows applications to scale independently. It allows
      applications to change deployment models independently. All without breaking one another.
   </p>
        <p>
          <a href="http://www.lhotka.net/WeBlog/PermaLink.aspx?guid=9e06bcfd-380d-4ef6-9263-2f8527492945">As
      many have rightly pointed out</a>, this goodness comes at a price: The only way
      to talk to a “service-oriented” application is to send it a message. You
      don’t get to see its types. You don’t know where it is really executing.
      You get to send it a message. It might send you a message in reply.
   </p>
        <p>
      So, shouldn’t we call it, “Message-Oriented Architecture?”
   </p>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=703ff4e5-03db-4db7-bf93-8e76d58ea42d" />
      </body>
    </content>
  </entry>
  <entry>
    <title>Identity Flow in SOA: One Solution</title>
    <link rel="alternate" type="text/html" href="http://www.terski.com/blog/PermaLink,guid,5e303e37-b564-4bac-9d59-5b3e68520c9a.aspx" />
    <id>http://www.terski.com/blog/PermaLink,guid,5e303e37-b564-4bac-9d59-5b3e68520c9a.aspx</id>
    <issued>2004-05-14T05:05:39.5062740-07:00</issued>
    <modified>2004-05-14T05:05:39.6000372-07:00</modified>
    <created>2004-05-14T05:05:39.5062740-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
      In a <a href="/blog/PermaLink,guid,f10e9281-c5cf-4b74-aee1-948daeb880a0.aspx">previous
      entry</a>, I brought up the challenge of preserving the original caller’s identity
      across tiers. Sure, this can be solved in a half-a-dozen ways, but which is the right
      way for the given situation? When designing a real software system, it’s all
      about the tradeoffs. 
   </p>
        <p>
      And the tradeoff I faced is that I want to know the identity of the caller even after
      I cross from the presentation tier to the application service tier to the database
      tier. But I don’t want to incur the cost of authenticating a second or third
      time (at each tier). Remember, my callers’ identities are not guaranteed to
      be in Active Directory, so a service invocation would mean an extra trip to my own
      authentication service and database.
   </p>
        <p>
      My solution is to pass the caller’s identity, out-of-band, as I cross from the
      presentation tier to the application service tier. Note, I said the caller’s
      identity, not credentials (by identity, mean all of the information that is required
      to construct a custom Principal). On the application service tier, I’ll use
      an HttpModule to pull the identity out of a SOAP header, reconstruct a principal,
      and attach it to the current request. Now, I can perform role-based authorization
      in the application service tier.
   </p>
        <p>
      Of course, passing identity information around the network, even within the external
      firewall, is dicey. I’ll use IPSec to preserve the integrity of the data that
      moves between these two tiers.
   </p>
        <p>
      So, I get the benefit of a trusted-subsystem authentication model, without loosing
      the ability to perform role-based authorization based on the original caller.
   </p>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=5e303e37-b564-4bac-9d59-5b3e68520c9a" />
      </body>
    </content>
  </entry>
  <entry>
    <title>Bio</title>
    <link rel="alternate" type="text/html" href="http://www.terski.com/blog/PermaLink,guid,aaaa4ee9-c67f-44b4-aa4d-27ab513fd0c2.aspx" />
    <id>http://www.terski.com/blog/PermaLink,guid,aaaa4ee9-c67f-44b4-aa4d-27ab513fd0c2.aspx</id>
    <issued>2004-05-10T20:56:00.5890976-07:00</issued>
    <modified>2004-05-10T21:10:07.7414685-07:00</modified>
    <created>2004-05-10T20:56:00.5890976-07:00</created>
    <content type="text/html" mode="xml">
      <body xmlns="http://www.w3.org/1999/xhtml">
        <div class="Section1">
          <p>
         I’ve been avoiding the ‘about me’ post until I first contributed
         some content to this blog. I didn’t want the inaugural entry to tell you what
         an interesting guy I was, only to be followed by the dead silence that comes from
         having nothing else to say. 
      </p>
          <p>
         But now that I’ve written a few entries, I’d like you to read them. And
         if I expect you to take interest in my writing, it’s only fair that I tell you
         a bit about me. 
      </p>
          <p>
         Like <a href="http://www.notalegend.com/">Eric Sink</a>, I’m not a <a href="http://www.softwarelegends.com/">software
         legend</a>. I haven’t written any books. You probably haven’t heard me
         give a talk. I don’t live in California or Washington. I live in Wisconsin.
         Yes, Wisconsin. 
      </p>
          <p>
         But if your home contains an item from the <a href="http://www.pg.com/">largest consumer
         products company in the world</a> (Pringles, Puffs, or Tide to name a few), know that
         I helped design and construct the software that moved that product off the production
         line, through the warehouse, onto the truck, and into your local retailer. The next
         time you reach for the Charmin, think of Terski. If you own a pair of shoes with a
         swoosh on them, it’s possible that they were conveyed, sorted, and packed by
         software that I helped design, build, and deploy (along with <a href="http://www.straightlinesoft.com/">this
         guy</a>). 
      </p>
          <p>
         I spent the first era of my software career building logistics execution software
         for big clients. In those days I learned hard lessons about performance, scalability,
         and reliability. Nothing says, “Your software sucks,” quite like a stream
         of boxes falling off the end of a conveyor or semi-trucks backed up for two miles
         waiting to be diverted to the right dock door. 
      </p>
          <p>
         During this time, I got excited about the Booch notation – and later the UML.
         I thought these design notations were a key to advancing software engineering’s
         state-of-the-practice. Ironically, core development team for Rational Rose was located
         about two miles from where I was working at the time (yes, in Wisconsin). When I found
         this out, I got myself hired by Rational and began the second era of my career. 
      </p>
          <p>
         I spent the next few years working on Rose and its successor, XDE. I liked being at
         Rational and worked with some great people. But admittedly, I grew somewhat disillusioned
         with the UML and the efficacy of the modeling tools of the day. 
      </p>
          <p>
         So in 2002, I started the third era of my career when I co-founded Serlio Software
         with three of my colleagues from Rational. I’ll spare you the sales-pitch, but
         at Serlio we’re passionate about software engineering and the .Net development
         platform. My current technical interests include service-oriented architectures and
         rules-based systems (a.k.a. rules engines). 
      </p>
          <p>
         I’ll blog about these topics and more. I hope you’ll stick around. 
      </p>
        </div>
        <img width="0" height="0" src="http://www.terski.com/blog/aggbug.ashx?id=aaaa4ee9-c67f-44b4-aa4d-27ab513fd0c2" />
      </body>
    </content>
  </entry>
</feed>