<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Migration on Brian Faust</title><link>https://vacua.dev/tags/migration/</link><description>Recent content in Migration on Brian Faust</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Mon, 01 Jan 0001 00:00:00 +0000</lastBuildDate><atom:link href="https://vacua.dev/tags/migration/rss.xml" rel="self" type="application/rss+xml"/><item><title>The Strangler Pattern Still Needs an Exit Plan</title><link>https://vacua.dev/thoughts/the-strangler-pattern-still-needs-an-exit-plan/</link><pubDate>Fri, 01 Nov 2019 00:00:00 +0000</pubDate><guid>https://vacua.dev/thoughts/the-strangler-pattern-still-needs-an-exit-plan/</guid><description>&lt;p&gt;A replacement proof of concept imported one provider&amp;rsquo;s postal data into
PostgreSQL and served one existing JSON-RPC search method from a Go binary. A
checked-in request and response fixture preserved field names, nulls, empty
strings, ordering, and identifier shape. Import failure left the last committed
dataset intact.&lt;/p&gt;
&lt;p&gt;The slice deliberately excluded every other provider, the other RPC methods,
queues, schedulers, authentication, caching, operational interfaces, and
traffic cutover.&lt;/p&gt;
&lt;p&gt;That is a good proof of one vertical path. It is not a plan for retiring the
system around it.&lt;/p&gt;</description></item><item><title>A Rewrite Needs a Behavior Ledger</title><link>https://vacua.dev/thoughts/a-rewrite-needs-a-behavior-ledger/</link><pubDate>Wed, 01 May 2019 00:00:00 +0000</pubDate><guid>https://vacua.dev/thoughts/a-rewrite-needs-a-behavior-ledger/</guid><description>&lt;p&gt;A desktop rewrite had screens for shipments, reports, settings, and logs. A
feature checklist could have marked those areas complete.&lt;/p&gt;
&lt;p&gt;The old application also had behavior no screen list would reveal:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;a failed temporary-file cleanup must not turn a submitted print into a
failure, or the next run may print the label again;&lt;/li&gt;
&lt;li&gt;the first run treats older unprinted records differently from later runs;&lt;/li&gt;
&lt;li&gt;setup unlocks when a credential setting exists, not when its value is
non-empty; and&lt;/li&gt;
&lt;li&gt;a visible report search box does nothing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Some of those rules protect operators. One is an awkward contract. One is
probably a dead feature. A rewrite cannot treat them all as “parity.”&lt;/p&gt;</description></item><item><title>Parallel Implementations Are Not a Replacement Seam</title><link>https://vacua.dev/thoughts/parallel-implementations-are-not-a-replacement-seam/</link><pubDate>Mon, 01 Apr 2019 00:00:00 +0000</pubDate><guid>https://vacua.dev/thoughts/parallel-implementations-are-not-a-replacement-seam/</guid><description>&lt;p&gt;An old shipping integration and its proposed replacement lived beside each
other. Both had an interface. Both had a driver, request builders, and tests.
That looked like a seam.&lt;/p&gt;
&lt;p&gt;When the replacement was finally made canonical, the change still crossed
dozens of files. The old interface disappeared, the new one moved, the
canonical driver changed its pickup and shipment flows, and a parallel driver
tree was deleted. Follow-up work then corrected a request shape and added
serialization tests.&lt;/p&gt;</description></item></channel></rss>