<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title>Generals on Bulletins</title>
		<link>https://volumetiprod.top/general/</link>
		<description>Recent content in Generals on Bulletins</description>
		<generator>Hugo</generator>
		<language>en-GB</language>
		
		
		
		
			<lastBuildDate>Sat, 08 Aug 2026 11:58:42 +1000</lastBuildDate>
		
			<atom:link href="https://volumetiprod.top/general/index.xml" rel="self" type="application/rss+xml" />
			<item>
				<title>8 August 2026</title>
				<link>https://volumetiprod.top/general/2026/08/08/</link>
				<pubDate>Sat, 08 Aug 2026 11:58:42 +1000</pubDate>
				<guid>https://volumetiprod.top/general/2026/08/08/</guid>
				<description>&lt;h2 id=&#34;turn-the-three-service-surprise-into-a-rollout-map&#34;&gt;Turn the three-service surprise into a rollout map&lt;/h2&gt;&#xA;&lt;p&gt;Before writing much code, spend twenty minutes drawing the change as four lanes: the three services and the database. Mark which versions can coexist, which component owns the backfill, and the exact observation that makes each old path safe to remove. The useful design question is not merely “what must change?” but “what is the smallest independently deployable expand, migrate, and contract sequence?” This should expose whether the data migration is genuinely required up front or can run after compatible readers and writers are live.&lt;/p&gt;</description>
				<content type="text/html">&lt;h2 id=&#34;turn-the-three-service-surprise-into-a-rollout-map&#34;&gt;Turn the three-service surprise into a rollout map&lt;/h2&gt;&#xA;&lt;p&gt;Before writing much code, spend twenty minutes drawing the change as four lanes: the three services and the database. Mark which versions can coexist, which component owns the backfill, and the exact observation that makes each old path safe to remove. The useful design question is not merely “what must change?” but “what is the smallest independently deployable expand, migrate, and contract sequence?” This should expose whether the data migration is genuinely required up front or can run after compatible readers and writers are live.&lt;/p&gt;&#xA;&lt;p&gt;A practical deliverable for Monday would be a one-page rollout note containing the order of deployments, rollback point for each stage, and two or three production checks. If any stage cannot be reversed, flag that explicitly rather than letting it hide inside the migration.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://martinfowler.com/bliki/ParallelChange.html&#34;&gt;Parallel Change — Martin Fowler&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://martinfowler.com/articles/evodb.html&#34;&gt;Evolutionary Database Design — Martin Fowler&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://docs.aws.amazon.com/prescriptive-guidance/latest/modernization-data-persistence/expand-and-contract-pattern.html&#34;&gt;Expand and contract pattern — AWS Prescriptive Guidance&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;make-sqlite-configuration-a-connection-invariant&#34;&gt;Make SQLite configuration a connection invariant&lt;/h2&gt;&#xA;&lt;p&gt;The discovery that most pragmas are session-scoped suggests a small reusable experiment: open two fresh connections to a temporary database, inspect &lt;code&gt;foreign_keys&lt;/code&gt;, &lt;code&gt;busy_timeout&lt;/code&gt;, and &lt;code&gt;journal_mode&lt;/code&gt; on each, then repeat through the application’s real connection pool. Turn the result into a startup assertion or connection-initialisation hook. That converts a documentation surprise into an executable guarantee, and it will catch the particularly awkward case where the first connection is configured correctly but later pooled connections are not.&lt;/p&gt;&#xA;&lt;p&gt;It may also be worth writing a compact “SQLite production profile” beside the code: which settings are persistent, which are per connection, and who applies them. The sharper follow-up question is whether your driver offers a reliable per-connection hook—or whether settings belong in the connection string instead.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.sqlite.org/pragma.html&#34;&gt;SQLite PRAGMA reference&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.sqlite.org/wal.html&#34;&gt;Write-Ahead Logging&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://pkg.go.dev/database/sql&#34;&gt;Go &lt;code&gt;database/sql&lt;/code&gt; connection pools&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h2 id=&#34;build-a-tiny-open-protocol-litmus-test&#34;&gt;Build a tiny open-protocol litmus test&lt;/h2&gt;&#xA;&lt;p&gt;Your distinction between visible source and an independently implementable protocol is a good basis for a small conformance probe. Pick one narrow interaction—WebFinger discovery is ideal—and implement the client side solely from the published specifications, against two unrelated servers. Record every place where the spec is insufficient and implementation folklore is required. That produces a more useful measure of openness than a licence badge: can an unaffiliated implementer interoperate without privileged guidance?&lt;/p&gt;&#xA;&lt;p&gt;This could grow into a short checklist for evaluating protocols: stable specification, royalty-free implementation terms, discoverable test vectors, multiple independent implementations, and a working path for reporting ambiguities. A local WebFinger endpoint for &lt;code&gt;lmika.org&lt;/code&gt; would also make a pleasantly concrete weekend-sized test bed if you want to take it beyond the paper exercise.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.rfc-editor.org/rfc/rfc7033&#34;&gt;WebFinger — RFC 7033&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.w3.org/TR/activitypub/&#34;&gt;ActivityPub — W3C Recommendation&lt;/a&gt;&lt;/li&gt;&#xA;&lt;li&gt;&lt;a href=&#34;https://www.w3.org/community/reports/socialcg/CG-FINAL-apwf-20240608/&#34;&gt;ActivityPub and WebFinger — W3C SocialCG&lt;/a&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;</content>
			</item>
	</channel>
</rss>
