<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="http://thepaulrayner.com/feed.xml" rel="self" type="application/atom+xml" /><link href="http://thepaulrayner.com/" rel="alternate" type="text/html" /><updated>2025-12-03T22:56:14-07:00</updated><id>http://thepaulrayner.com/feed.xml</id><title type="html">Leading by Design</title><subtitle>by Paul Rayner</subtitle><entry><title type="html">Cleaning up 93 grammar paradigms with AI agents</title><link href="http://thepaulrayner.com/blog/2025/09/15/cleaning-up-93-grammar-paradigms-with-ai-agents/" rel="alternate" type="text/html" title="Cleaning up 93 grammar paradigms with AI agents" /><published>2025-09-15T04:00:00-06:00</published><updated>2025-09-15T04:00:00-06:00</updated><id>http://thepaulrayner.com/blog/2025/09/15/cleaning-up-93-grammar-paradigms-with-ai-agents</id><content type="html" xml:base="http://thepaulrayner.com/blog/2025/09/15/cleaning-up-93-grammar-paradigms-with-ai-agents/"><![CDATA[]]></content><author><name></name></author><category term="AI" /><category term="Development" /><category term="Productivity" /><category term="Claude" /><category term="Hebrew" /><summary type="html"><![CDATA[Last week I had to deal with a mess I'd been putting off for way too long. Here's how I used AI agents to systematically clean up 93 grammar paradigms in parallel.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://thepaulrayner.com/ai-cleanup/2025-09-12%20binah-parallel-cleanup-edited-and-15x-thumbnail.png" /><media:content medium="image" url="http://thepaulrayner.com/ai-cleanup/2025-09-12%20binah-parallel-cleanup-edited-and-15x-thumbnail.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Plotting Paths to Cloud Migration</title><link href="http://thepaulrayner.com/blog/2020/03/23/plotting-paths-to-cloud-migration/" rel="alternate" type="text/html" title="Plotting Paths to Cloud Migration" /><published>2020-03-23T10:00:00-06:00</published><updated>2020-03-23T10:00:00-06:00</updated><id>http://thepaulrayner.com/blog/2020/03/23/plotting-paths-to-cloud-migration</id><content type="html" xml:base="http://thepaulrayner.com/blog/2020/03/23/plotting-paths-to-cloud-migration/"><![CDATA[<blockquote>
  <p>Using the up or out plane to plot the migration path, it becomes apparent that many migrations aren’t a one-shot type of endeavor.</p>

  <p>— Gregor Hohpe</p>
</blockquote>

<p>Have your stakeholders expressed confusion in deciphering your cloud migration strategy? Are you using the typical lengthy variations verbs starting with “R” (rehost - replatform - rearchitect - retire)? Or perhaps an opaque, complicated framework that actually makes your approach less clear? A simple visual model can go a long way in providing clarity in navigating the inevitable complexity of a cloud migration.</p>

<h2 id="up-or-out">Up or Out</h2>

<p>The article <a href="https://cloud.google.com/blog/topics/perspectives/enterprise-it-can-move-up-or-out-or-both">Enterprise IT can move up or out (or both)</a>, describes the “up or out” framework as a way to empower both the business and IT to approach a cloud migration more collaboratively, cutting through much of the hype and technical complexity. This model can help enterprises chart their cloud adoption journey delineates cloud migration along two axes — up and out.</p>

<p><img src="/assets/cloud-strategy/cloud_adoption_journey.max-1000x1000.png" alt="Cloud Adoption Journey" class="center-image" width="800" /></p>

<p>On-premise applications are located in the bottom left quadrant. The horizontal axis represents moving “out” from on-premises to the cloud, and the vertical axis describes modernizing applications to operate further “up” the stack, further away from infrastructure (servers and hardware details).</p>

<blockquote>
  <p>A cloud-based IT operating model has been shown to offer significant advantages in terms of rapid deployment, elastic scalability, resilient operations, and security. However, large enterprises can’t simply wake up one day with all their applications running in the cloud. Thus, every enterprise’s move to the cloud is at least initially a hybrid cloud scenario, where some workloads remain on-premises and other workloads run in the cloud.</p>

  <p>— Gregor Hohpe</p>
</blockquote>

<h3 id="moving-up-the-stack">Moving Up The Stack</h3>

<p>One choice you can make is to move your migrations up the stack. This path is the journey of decoupling your applications from your current on-premise infrastructure.</p>

<p>For example, as an initial step you could transition from running a monolithic application on dedicated services to a Platform-As-A-Service (PaaS) model that deploys applications and services using containers. Or in going further by utilizing SaaS services for certain business capabilities that would benefit from this approach.</p>

<p><img src="/assets/cloud-strategy/up-the-stack.jpg" alt="Up The Stack" class="center-image" width="400" /></p>

<p>Hohpe highlights several key advantages of moving up the stack:</p>

<ul>
  <li><strong>Elasticity</strong> - Application deployment becomes automated, making it easy to add or subtract capacity as needed.</li>
  <li><strong>Resilience</strong> - Operations also become more resilient because new instances can be rapidly deployed in case of failure, allowing PaaS or serverless platforms to withstand a server failure without visible customer impact.</li>
  <li><strong>Cost Reduction</strong> - Thanks to smaller deployable units, hardware can be more efficiently utilized, thus reducing run costs.</li>
  <li><strong>Decoupling/Portability</strong> - Applications become more portable when they are better isolated from infrastructure details, as their containers may be deployed on a variety of infrastructures.</li>
</ul>

<p>Moving up the stack may be a challenging effort, one which requires you to fundamentally change the way in which you build applications and operate the infrastructure that supports them. Modularity and decoupling from a business domain perspective becomes essential.</p>

<h3 id="out-to-the-cloud">Out to The Cloud</h3>

<p>The second option is to lift, shift, and replatform existing applications out into the cloud. Some advantages mentioned by Hohpe in moving an application unchanged from an existing on-premises data center to the cloud and shifting the operational model to one that’s more automated include:</p>

<ul>
  <li>Better economies of scale allow for more cost-efficient operations.</li>
  <li>Automated patching discipline improves security because it assures that no software with known vulnerabilities is run.</li>
  <li>Increased transparency enables more efficient IT asset management, for example by rightsizing servers or detecting and retiring unused IT assets.</li>
</ul>

<p>Taking an initial lift and shift approach into the cloud along the horizontal axis may make it easier to move vertically (optimize/re-architect) later, once the applications are already running in the cloud. The first reason is primarily technical: the application, data and traffic have already been completed, paving the way for further optimization and improvement when the timing and cost is more favorable. The second reason is that doing such migrations enables the organization to move to more of a “cloud lifestyle” and cultivate the necessary skills to perform future migrations more successfully.</p>

<p>Don’t underestimate the importance of skills development and cultivating cultural memory for new approaches. Many organizations fall into the trap of assuming that migrating to the cloud is primarily a technical journey, but then discover too late that it actually requires rethinking how to do business - touching every aspect of product development, application development, deployment, support, and operations.</p>

<h3 id="combining-cloud-migration-approaches">Combining Cloud Migration Approaches</h3>

<p>Don’t think of this as a blanket all-or-nothing approach. Combining various approaches into a progressive transformation towards cloud-centric operations reduces risk and improves time-to-value.</p>

<p>As Hohpe points out:</p>

<ul>
  <li>Lifting existing applications and replatforming them onto cloud infrastructure minimizes initial effort, avoiding the costs of redevelopment, and allowing an enterprise to transform its infrastructure acquisition and scaling processes while minimizing impact to existing operations models.</li>
  <li>Adjusting operations models to increase the use of automation and cloud-native tooling accelerates the overall transformation and maximizes the value from abstracted infrastructure services.</li>
  <li>Finally, decomposing application elements to take advantage of managed cloud services, such as migrating off of self-managed My SQL databases onto provider-managed Database-as-a-Service, requires some additional effort but lays the foundation for moving beyond seeing cloud as yet another infrastructure provider.</li>
</ul>

<blockquote>
  <p>Not only is combining up and out allowed, it’s encouraged. We think of it as a cloud-native hybrid model, where applications are deployed as containers or functions and can be easily shifted from on-premises to the cloud as needed, all while maintaining a consistent deployment, run-time, and management framework.</p>

  <p>— Gregor Hohpe</p>
</blockquote>

<p>Hohpe recommends you consider asking a few questions:</p>

<ul>
  <li>Which elements of an application or service would benefit most from an event-driven, serverless approach?</li>
  <li>Which elements of a service require rapid code releases or the ability to validate new features using A/B testing (meaning that a new version of the software is made available to a percentage of users)?</li>
  <li>Which elements change infrequently, but would benefit from automated scaling and deployment?</li>
</ul>

<h3 id="multiple-paths-per-application">Multiple Paths Per Application</h3>

<p>With the answers to these questions, you can begin to decompose application capabilities, workloads, and components and map them against the up or out framework, thus presenting the organization with a pragmatic migration approach that maximizes value.</p>

<p>Remember, for most applications you are not locked into a single direction. On the up or out model, plot the path for each application or class of applications in your cloud migration strategy. Rather than thinking of each migration as a single jump, plot a path to cloud migration that makes sense in your context.</p>

<p>Plotting a path for individual workloads and architectural elements on the up or out framework can help IT decision makers focus on the benefits achieved by re-platforming, re-architecting, or a combination of the two. It’s typical and in fact desired that different components take unique paths. Avoid a <a href="https://www.dictionary.com/e/memes/leeroy-jenkins/">Leeroy Jenkins situation</a> in your enterprise cloud migration by taking a more informed and nuanced approach by migrating the individual workloads and architectural elements in your context.</p>

<h3 id="plotting-paths-to-the-cloud">Plotting Paths to the Cloud</h3>

<p>The visual model also communicates migration paths over time in an approachable manner that can be shared with a wide audience in both business and IT. For example, in the article Hohpe provides an example of what this might look for an enterprise ecommerce application.</p>

<p>In the ecommerce example, the retailer’s customer-facing front end frequently required feature updates to differentiate them in a competitive retail market. They also wanted to utilize A/B testing to ensure that they were delivering the right features. By incrementally isolating and rewriting the web front end and moving it up the stack in containers, they could also support this with a new automated CI/CD pipeline to enable rapid delivery to support excel and innovate.</p>

<p>The ecommerce mid-tier application needed refactoring and re-architecting, but “more immediate value could be generated by shifting to an automated scale-out model and gaining operational efficiencies in the cloud.” This is a good example of setting priorities correctly and focusing on reducing the time-to-value of migration efforts.</p>

<p>The retailer’s back-end catalog systems changed infrequently and were hosted on well-understood and easily maintained systems. There did not seem to be value in devoting effort to migrating them, plus any attention devoted to that would distract from the other more valuable concerns. To focus their initial energy, they decided to keep the back-end systems in place until they can replace them completely in the future.</p>

<blockquote>
  <p>Taking this approach allowed the retailer to minimize the time and effort required to accomplish their primary goal—rapid iteration of a customer experience that was becoming stale. They also gained operational and capital efficiencies and set themselves in a good position to migrate their catalog data to the cloud when the time and price were right for them.</p>

  <p>— Gregor Hohpe</p>
</blockquote>

<p><img src="/assets/cloud-strategy/enterprise_IT_oYsbpz5.max-800x800.png" alt="Enterprise IT Migration" class="center-image" width="800" /></p>

<p>Separating out elements and migrating them up and out enables an organization to target the migration of more valuable capabilities earlier, creating opportunities to excel and innovate without being shackled to software elements that are harder to modify. This relates to the notion of <em>domain-distillation</em> in strategic domain-driven design (DDD), where more valuable software elements are isolated into new components that can be developed and deployed independently of the existing systems. We’ll be talking about options for this in later articles.</p>

<p><em>Note: In the case of a large, mission-critical and highly coupled (i.e. monolithic) application, a migrate-then-update journey might also be a good choice, after the distillation and movement up the stack of valuable capabilities. Why? As an initial step, moving to the cloud horizontally is going to be faster (and typically less risky) than trying to re-architect an entire application while migrating it, even though such an approach may be an ultimately longer journey than directly traveling the hypotenuse.</em></p>

<h3 id="communicating-your-cloud-strategy">Communicating Your Cloud Strategy</h3>

<p>The up or out framework helps you ask the right questions about how best to approach each application, and determine if it can be divided into elements that could each be migrated separately.</p>

<p>The simple up or out visual model encourages collaborative conversations about the relative tradeoffs and risks that might be encountered along each path. These conversations need to push past apparently conflicting priorities in seeking alignment between business and technical priorities.</p>

<p><strong>If your cloud strategy seems to be too good to be true, it probably is.</strong> There are always tradeoffs. Plans need to be adjusted as the organization learns. As with any effort, your plan needs to be realistic from both a business and technical perspective, with clear goals and measures of success. To be successful, goals must to be communicated effectively to both technical and non-technical stakeholders so that there is the necessary buy-in and trust to move forward with the plan, and adjust as situations change during implementation.</p>

<blockquote>
  <p>Simple but evocative frameworks like “up or out” can help IT decision makers navigate the inevitable complexity of a cloud migration. Like any good model, simplicity is a feature, not a bug, as it helps keep the focus on the desired outcome and is easily communicated to a variety of audiences.</p>

  <p>— Gregor Hohpe</p>
</blockquote>

<p>For more details, see Gregor Hohpe’s excellent <a href="https://leanpub.com/cloudstrategy">Cloud Strategy: An Architect Elevator Guide to Successful Cloud Migration</a> ebook.</p>

<p>Photo of desserts by <a href="https://unsplash.com/@massimo_adami?utm_source=unsplash&amp;utm_medium=referral&amp;utm_content=creditCopyText">Massimo Adami</a> on <a href="http://unsplash.com">Unsplash</a>.</p>]]></content><author><name></name></author><category term="Cloud" /><category term="Design" /><category term="DDD" /><category term="Architecture" /><summary type="html"><![CDATA[Using the up or out plane to plot the migration path, it becomes apparent that many migrations aren't a one-shot type of endeavor. — Gregor Hohpe]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://thepaulrayner.com/cloud-strategy/massimo-adami-JnqwC6dDL8c-unsplash.jpg" /><media:content medium="image" url="http://thepaulrayner.com/cloud-strategy/massimo-adami-JnqwC6dDL8c-unsplash.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Cloud Strategy, Design And Automation</title><link href="http://thepaulrayner.com/blog/2020/03/19/cloud-strategy-design-and-automation/" rel="alternate" type="text/html" title="Cloud Strategy, Design And Automation" /><published>2020-03-19T10:00:00-06:00</published><updated>2020-03-19T10:00:00-06:00</updated><id>http://thepaulrayner.com/blog/2020/03/19/cloud-strategy-design-and-automation</id><content type="html" xml:base="http://thepaulrayner.com/blog/2020/03/19/cloud-strategy-design-and-automation/"><![CDATA[<blockquote>
  <p>…getting new features into production quickly is the real currency of the digital world.</p>

  <p>— Gregor Hohpe</p>
</blockquote>

<p>I just finished reading Gregor Hohpe’s excellent <a href="https://leanpub.com/cloudstrategy">Cloud Strategy: An Architect Elevator Guide to Successful Cloud Migration</a> ebook. I like how the book approaches cloud strategy from an architectural perspective, moving beyond all the buzzwords and wishful thinking, while providing solid guidance for how to actually deliver on the promises of cloud migration for enterprises.</p>

<p>Concerning automation, he points out that much of the original effort towards streamlining development processes was focused on the specification and coding aspects of software delivery, i.e. the translation of ideas into code.</p>

<p><img src="/assets/cloud-strategy/cloud-strategy-ebook-cover.png" alt="cloud strategy ebook cover" class="right text-center" width="200" /></p>

<blockquote>
  <p>Many frameworks and methodologies looking to industrialize this aspect of software development, such as CASE tools, 4GL, and executable UML, arrived and disappeared again over the course of the 1990s and 2000s.</p>

  <p>— Gregor Hohpe</p>
</blockquote>

<p>I remember some of those tools, <a href="https://en.wikipedia.org/wiki/IBM_Rational_Rose_XDE">Rational Rose</a> being one. The idea was to apply manufacturing techniques to the creative process of translating concepts into coding. After all, it seems simple enough: create a class diagram and translate that directly into code, and vice versa. But this ultimately proved to be much harder, and much less useful, than hoped.</p>

<blockquote>
  <p>Somehow, trying to automate the specification and coding steps of software delivery never quite yielded the results that the creators of these tools were after. Collectively, we could have saved a lot of effort if we had taken Jack Reeve’s article <a href="https://www.developerdotstar.com/mag/articles/reeves_design.html">What is Software Design</a> to heart. Published in 1992, Jack elaborated that coding is actually the <em>design</em> of software whereas compiling and deploying software is the manufacturing aspect. So, if you are looking to industrialize software manufacturing, you should automate on testing, compiling, and deployment, as opposed to trying to industrialize coding. About a quarter century later that’s finally being done. Some things take time, even software.</p>

  <p>— Gregor Hohpe</p>
</blockquote>

<p>I’m reminded of David Marquet’s distinction between red work and blue work.</p>

<p>Red work is DOING work. It’s about execution and reducing variability.  Think of manufacturing.</p>

<p>Blue is THINKING work. It’s about discovery and decision making and increasing variability. Think of product development.</p>

<p>Analysis, modeling, design and coding are all activities that are intrinsically <em>blue</em> work.</p>

<p><strong><em>What makes the automation that cloud deployment provides so powerful is that it can be applied to the red work downstream from development that needs to be done to speed delivery of newly coded functionality that results from the blue work.</em></strong></p>

<p>This hopefully becomes a virtuous cycle where applications can be modularized to take advantage of the elasticity and deployment advantages of a cloud environment.</p>

<blockquote>
  <p>Programming is a design activity — a good software design process recognizes this and does not hesitate to code when coding makes sense.
Coding actually makes sense more often than believed. Often the process of rendering the design in code will reveal oversights and the need for additional design effort. The earlier this occurs, the better the design will be.</p>

  <p>Since software is so cheap to build, formal engineering validation methods are not of much use in real world software development. It is easier and cheaper to just build the design and test it than to try to prove it.</p>

  <p>— Jack Reeves</p>
</blockquote>

<p>Cloud strategy, when done well, is such a powerful enabler for the kind of delivery model that is optimized for this kind of time to value. Because of this, organizations should take an application-centric (rather than infrastructure-centric) view on their cloud strategy.</p>

<p>In an application-centric approach to cloud the key drivers are concerned with “speeding up software delivery, primarily by reducing friction. Speed comes from automation, such as a fully automated tool chain, infrastructure-as-code, and cloud-ready applications that scale horizontally. Coupled with modern approaches like continuous integration (CI), continuous delivery (CD), and lean development, such tooling can transform the way an enterprise thinks about software delivery.” (Hohpe)</p>

<p>Photo of Cloud Gate by <a href="https://unsplash.com/@sidem0n">Ruijia Wang</a> on <a href="http://unsplash.com">Unsplash</a>.</p>]]></content><author><name></name></author><category term="Cloud" /><category term="Design" /><category term="Architecture" /><summary type="html"><![CDATA[…getting new features into production quickly is the real currency of the digital world. — Gregor Hohpe]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://thepaulrayner.com/ruijia-wang-YmStaPUcd-Y-unsplash.jpg" /><media:content medium="image" url="http://thepaulrayner.com/ruijia-wang-YmStaPUcd-Y-unsplash.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">EventStorming Team Flow</title><link href="http://thepaulrayner.com/blog/2019/05/13/eventstorming-team-flow/" rel="alternate" type="text/html" title="EventStorming Team Flow" /><published>2019-05-13T10:00:00-06:00</published><updated>2019-05-13T10:00:00-06:00</updated><id>http://thepaulrayner.com/blog/2019/05/13/eventstorming-team-flow</id><content type="html" xml:base="http://thepaulrayner.com/blog/2019/05/13/eventstorming-team-flow/"><![CDATA[]]></content><author><name></name></author><category term="DDD" /><category term="EventStorming" /><category term="Flow" /><category term="VSM" /><category term="Lean" /><category term="Agile" /><summary type="html"><![CDATA[Most development teams remain blissfully unaware of the negative impact of these invisible queues on productivity, or how to deal with them effectively.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://thepaulrayner.com/eventstorming-team-flow/team-flow.jpg" /><media:content medium="image" url="http://thepaulrayner.com/eventstorming-team-flow/team-flow.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Explore DDD - Realtime Retrospective</title><link href="http://thepaulrayner.com/blog/2019/01/22/realtime-retro-eddd/" rel="alternate" type="text/html" title="Explore DDD - Realtime Retrospective" /><published>2019-01-22T10:00:00-07:00</published><updated>2019-01-22T10:00:00-07:00</updated><id>http://thepaulrayner.com/blog/2019/01/22/realtime-retro-eddd</id><content type="html" xml:base="http://thepaulrayner.com/blog/2019/01/22/realtime-retro-eddd/"><![CDATA[]]></content><author><name></name></author><category term="DDD" /><category term="Agile" /><summary type="html"><![CDATA[At YOW! 2016, fellow speaker Emily Webber told me about a cool experiment she had run at recent conference. Emily described a visible, participative way - a Realtime Retrospective - to reflect and improve throughout a conference.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://thepaulrayner.com/realtime-retro/done.jpg" /><media:content medium="image" url="http://thepaulrayner.com/realtime-retro/done.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">BDD is a Centered Community Rather than a Bounded Community</title><link href="http://thepaulrayner.com/blog/2015/03/28/bdd-is-a-centered-rather-than-a-bounded-community/" rel="alternate" type="text/html" title="BDD is a Centered Community Rather than a Bounded Community" /><published>2015-03-28T10:00:00-06:00</published><updated>2015-03-28T10:00:00-06:00</updated><id>http://thepaulrayner.com/blog/2015/03/28/bdd-is-a-centered-rather-than-a-bounded-community</id><content type="html" xml:base="http://thepaulrayner.com/blog/2015/03/28/bdd-is-a-centered-rather-than-a-bounded-community/"><![CDATA[]]></content><author><name></name></author><category term="BDD" /><summary type="html"><![CDATA[Dan North mentioned at one point in the CukeUp 2015 panel yesterday the notion in theology of a community being a 'bounded set.' BDD is a centered community, rather than a bounded community.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="http://thepaulrayner.com/what-is-bdd-panel2.png" /><media:content medium="image" url="http://thepaulrayner.com/what-is-bdd-panel2.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">Good Design is People-Centered - Design Quotes Part 5</title><link href="http://thepaulrayner.com/blog/2015/02/09/good-design-is-people-centered/" rel="alternate" type="text/html" title="Good Design is People-Centered - Design Quotes Part 5" /><published>2015-02-09T10:00:00-07:00</published><updated>2015-02-09T10:00:00-07:00</updated><id>http://thepaulrayner.com/blog/2015/02/09/good-design-is-people-centered</id><content type="html" xml:base="http://thepaulrayner.com/blog/2015/02/09/good-design-is-people-centered/"><![CDATA[<blockquote>
  <p>A design isn’t finished until somebody is using it.</p>
</blockquote>

<p>These quotes are about the goal of design, which is centered around meeting the needs of real people. What other quotes on people-centered design am I missing?</p>

<blockquote>
  <p>Design is about making things good (and then better) and right (and fantastic) for the people who use and encounter them.</p>

  <p>— Matt Beale</p>
</blockquote>

<blockquote>
  <p>I never design a building before I’ve seen the site and met the people who will be using it.</p>

  <p>— Frank Lloyd Wright</p>
</blockquote>

<blockquote>
  <p>The only important thing about design is how it relates to people.</p>

  <p>— Victor Papanek</p>
</blockquote>

<blockquote>
  <p>A design isn’t finished until somebody is using it.</p>

  <p>— Brenda Laurel</p>
</blockquote>]]></content><author><name></name></author><category term="Design" /><summary type="html"><![CDATA[A design isn't finished until somebody is using it. These quotes are about the goal of design, which is centered around meeting the needs of real people.]]></summary></entry><entry><title type="html">Persisting Value Objects</title><link href="http://thepaulrayner.com/blog/2015/01/22/persisting-value-objects/" rel="alternate" type="text/html" title="Persisting Value Objects" /><published>2015-01-22T10:00:00-07:00</published><updated>2015-01-22T10:00:00-07:00</updated><id>http://thepaulrayner.com/blog/2015/01/22/persisting-value-objects</id><content type="html" xml:base="http://thepaulrayner.com/blog/2015/01/22/persisting-value-objects/"><![CDATA[]]></content><author><name></name></author><category term="DDD" /><summary type="html"><![CDATA[It can be challenging sometimes to know how best to persist value objects to a data store, especially if you are using a RDBMS. There are a variety of options to choose from, however, depending on your needs and constraints.]]></summary></entry></feed>