<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">

 <title>Paul Ramsey</title>
 <link href="http://blog.cleverelephant.ca/atom.xml" rel="self"/>
 <link href="http://blog.cleverelephant.ca/"/>
 <updated>2026-04-08T20:39:43+00:00</updated>
 <id>http://blog.cleverelephant.ca</id>
 <author>
   <name>Paul Ramsey</name>
   <email>pramsey@cleverelephant.ca</email>
 </author>

 
 <entry>
   <title>BC IT Outsourcing 2023/24</title>
   <link href="http://blog.cleverelephant.ca/2025/03/bc-it-outsourcing-202324.html"/>
   <updated>2025-03-10T00:00:00+00:00</updated>
   <id>http://blog.cleverelephant.ca/2025/03/bc-it-outsourcing-202324</id>
   <content type="html">&lt;p&gt;OK, it has been a while since the last time I published this data, but I &lt;a href=&quot;/2024/04/cancer1.html&quot;&gt;have a valid excuse&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;https://docs.google.com/spreadsheets/d/e/2PACX-1vRbGJNWpGKWjScLakqx28-1zTJzRCYUHYGloQMQYfnpVJAkm3FrIwRf-oE6WtKp-ReHujlHlu17JIwH/pubchart?oid=688083642&amp;amp;format=image&quot; width=&quot;100%&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The most striking feature of the 2024 chart is the zero’ing out of IBM’s piece of the pie. Big Blue, which once billed the government $107M in a year, has been reduced to a billing rate of less than $5M per year over the last two years.&lt;/p&gt;

&lt;p&gt;Everything else feels more or less the same. After seven years of NDP government, the overall trajectory of outsourcing growth has beeen flattened, but in no way reversed. It is a smaller proportion of overall spend, but the substantial change wrought by the Campbell Liberal government starting around 2005 has been durable – BC IT has a huge outsourced component still.&lt;/p&gt;

&lt;p&gt;The initial surge in smaller local companies after 2017 stalled out by 2021 and had been flat since.&lt;/p&gt;

&lt;p&gt;The most consistent grower is now CGI, which entered the Victoria market around 2005 and has grown to $60M/year in billings with consistent year-over-year increases.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Cancer 13</title>
   <link href="http://blog.cleverelephant.ca/2025/03/cancer13.html"/>
   <updated>2025-03-09T00:00:00+00:00</updated>
   <id>http://blog.cleverelephant.ca/2025/03/cancer13</id>
   <content type="html">&lt;p class=&quot;note&quot;&gt;Back to &lt;a href=&quot;/2024/04/cancer1.html&quot;&gt;entry 1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I recently “celebrated” my “cancerversary”, the &lt;a href=&quot;/2024/04/cancer1.html&quot;&gt;one-year mark&lt;/a&gt; since my GI doctor phoned me up and said the fateful words – “you have cancer”.&lt;/p&gt;

&lt;p&gt;At that moment, my universe shrank down immensely. All the external stuff, job, professional relationships, volunteerism, just kind of fell away, I had no mental space for it. It was just me and my immediate family and the &lt;a href=&quot;/2024/04/cancer2.html&quot;&gt;many, many unknowns&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;My experience since then has included two major physical insults. The “curative” &lt;a href=&quot;/2024/05/cancer6.html&quot;&gt;surgery&lt;/a&gt; that removed most of my rectum, and the associated &lt;a href=&quot;/2024/09/cancer11.html&quot;&gt;&lt;em&gt;c.difficle&lt;/em&gt; infection&lt;/a&gt; that brutally wrecked my GI tract.&lt;/p&gt;

&lt;p&gt;The insults really knocked me back. Moving around the house involved effort. Meals would lead to stomach pain and long sessions on the toilet. Runs were replaced with walks and then shorter walks. A trip to the cafe became my gold standard for “getting out”.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/cafe2.jpg&quot; alt=&quot;Bastion Cafe&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Now, I am immensely “better” than I was this summer. But I am still a very long way from the physical condition I was before (which was excellent). My body just doesn’t work as well anymore. This may slowly resolve over more months, or it may be permanent. As it stands, I feel like I’ve been instantly aged 10-15 years. I went into this process in my 50s and came out in my 60s.&lt;/p&gt;

&lt;p&gt;A result of feeling weak and out of control is that I have a lot less confidence than I used to. This manifests in not wanting to leave the house as much, or engage with novel situations. I never know when I am going to have a “bad day” and feel sick or uncomfortable for 24 hours. Travel feels fraught. Staying close to home, feels safer.&lt;/p&gt;

&lt;p&gt;I am a turtle, startled and afraid, drawn up into its shell.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/turtle.jpg&quot; alt=&quot;Turtle&quot; /&gt;&lt;/p&gt;

&lt;p&gt;To try and break out of this pattern, I have scheduled two trips this spring, one personal and one professional. They are both east coast, so there’s a 5 hour flight involved and then all the usual transfers and so on. And then just “living” in a different place. As they get closer, I get more scared. I shouldn’t. The worst case scenario is just “pooping a lot in a hotel room”, but I think the verification of worse-case scenarios is the scary part – maybe I am not someone who travels anymore.&lt;/p&gt;

&lt;p&gt;Most of my other pre-surgery worst-case scenarios have not come to pass. I am still able to climb. I have started running again. I can lift weights again. I have done some middling bike rides. I have rowed on the ocean. I have started some building projects around the house.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/clover.jpg&quot; alt=&quot;Clover&quot; /&gt;&lt;/p&gt;

&lt;p&gt;But travel is (like going out for dinner) fraught with being away from the home base, and full of questionable activities (like eating for pleasure, or taking a walk not knowing where the next public restroom is). Hopefully these trips will go well, and I will be able to poke my head a little further out of my shell.&lt;/p&gt;

&lt;p&gt;The next station on my cancer journey will be the first monitoring procedures. Colonoscopy and then a CT scan. The odds of anything growing back are low, but I still keep my fingers crossed, since they are not zero.&lt;/p&gt;

&lt;p&gt;Keep f’ing going. See you soon, inshala.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/hermanns.jpg&quot; alt=&quot;Hermanns Jazz&quot; /&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Book Pairings</title>
   <link href="http://blog.cleverelephant.ca/2025/02/book-pairs.html"/>
   <updated>2025-02-22T00:00:00+00:00</updated>
   <id>http://blog.cleverelephant.ca/2025/02/book-pairs</id>
   <content type="html">&lt;p&gt;A funny thing happened when I wrote up my &lt;a href=&quot;/2025/01/books.html&quot;&gt;2025 book list&lt;/a&gt; – a lot of the books were parts of pairings. And I started wondering what other pairings I had read that were memorable.&lt;/p&gt;

&lt;p&gt;So here’s another list!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Wicked_(Maguire_novel)&quot;&gt;Wicked&lt;/a&gt;, Gregory Maguire&lt;/strong&gt; and &lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/The_Wonderful_Wizard_of_Oz&quot;&gt;The Wonderful Wizard of Oz&lt;/a&gt;, L. Frank Baum&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/wicked.jpg&quot; style=&quot;float:left; padding-right:1em;&quot; /&gt;&lt;img src=&quot;/images//2025/oz.jpg&quot; style=&quot;float:right; padding-left:1em;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;You wouldn’t know it to look at me (or would you?) but I am a person who has read &lt;a href=&quot;https://en.wikipedia.org/wiki/List_of_Oz_books&quot;&gt;all 14 books&lt;/a&gt; of the original L. Frank Baum Oz series. From “&lt;a href=&quot;https://en.wikipedia.org/wiki/The_Wonderful_Wizard_of_Oz&quot;&gt;The Wonderful Wizard of Oz&lt;/a&gt;” to “&lt;a href=&quot;https://en.wikipedia.org/wiki/Glinda_of_Oz&quot;&gt;Glinda of Oz&lt;/a&gt;” and all in between.&lt;/p&gt;

&lt;p&gt;As… that kind of person, I was truly tickled to pick up “Wicked” a couple years ago and take in not only the invented back-story of the Wicked Witch of the West (Elphaba), but also all the references to the Oz world that Maguire builds into his narrative. “Wicked” is the best kind of reimagining, one that manages a completely fresh story, but without tearing down the original source material on the way. Maguire clearly is also… that kind of person, and he treats Oz with respect while building a totally fresh take. Loved it so much.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Pride_and_Prejudice&quot;&gt;Pride and Prejudice&lt;/a&gt;, Jane Asten&lt;/strong&gt; and &lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Longbourn&quot;&gt;Longbourne&lt;/a&gt;, Jo Baker&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/longbourn.jpg&quot; style=&quot;float:left; padding-right:1em;&quot; /&gt;&lt;img src=&quot;/images//2025/pride-and-prejudice.jpg&quot; style=&quot;float:right; padding-left:1em;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I came across “Longbourne” as a book recommendation from the hosts of the &lt;a href=&quot;https://crooked.com/podcast-series/strict-scrutiny/&quot;&gt;Strict Scrutiny Podcast&lt;/a&gt; (a podcast that current events renders more relevant every day). Like “Wicked”, “Longbourne” picks up the same world as the source, but manages to tell an entirely unique story that pays tribute to the original.&lt;/p&gt;

&lt;p&gt;“Longbourn” is told entirely from the point of view of the servants in the Bennet family home. It both tells a heart warming love story, and illuminates just how different the circumstances of the upstairs and downstairs of the house are.&lt;/p&gt;

&lt;p&gt;The version I had conveniently included both “Longbourn” and the entirety of “Pride and Prejudice” in one volume. It was crazy to read the old novel and see just how &lt;strong&gt;little&lt;/strong&gt; the service staff figured in the story. And yet, as “Longbourn” makes clear, they would have been omnipresent, working hard every day, 24/7.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Adventures_of_Huckleberry_Finn&quot;&gt;Adventures of Huckleberry Finn&lt;/a&gt;, Mark Twain&lt;/strong&gt; and &lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/James_(novel)&quot;&gt;James&lt;/a&gt;, Percival Everett&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/james.jpg&quot; style=&quot;float:left; padding-right:1em;&quot; /&gt;&lt;img src=&quot;/images//2025/huck-finn.jpg&quot; style=&quot;float:right; padding-left:1em;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;“James” showed up on number of “best of” lists for 2024, and I deliberately read it after doing a re-read of Huck Finn. The central conceit of “James” is that the slaves are all play acting the character of “slave” in front of the white world, but have a rich secret intellectual life they only show to one another. This makes Everett’s “James” an engaging narrator, well read, ironic at times, and observant, but no more compelling as a human being than Twain’s “Jim”.&lt;/p&gt;

&lt;p&gt;For me, after the first third of the book, “James” did not have a lot new to offer. Everett has to work through all the narrative beats of the original material, but does not have much more to offer than the central twist. In those parts of the story where James is separated from Huck, and Everett has the freedom to write his own narrative for James, I found the story more engaging, but when he is stuck inside Twain’s story arc, the book kind of grinds along.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.pulitzer.org/winners/geraldine-brooks&quot;&gt;March&lt;/a&gt;, Geraldine Brooks&lt;/strong&gt; and &lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Little_Women&quot;&gt;Little Women&lt;/a&gt;, Louisa May Alcott&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/march.jpg&quot; style=&quot;float:left; padding-right:1em;&quot; /&gt;&lt;img src=&quot;/images//2025/little-women.jpg&quot; style=&quot;float:right; padding-left:1em;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;“March” tells the tale of the largely absent father figure of “Little Women”, abolitionist Mr. March, who heads off join the Union Army as a chaplain, and ends up having as miserable a time as one would expect, in the &lt;a href=&quot;https://en.wikipedia.org/wiki/Battle_of_the_Wilderness&quot;&gt;Battle of the Wilderness&lt;/a&gt; and then on a Union-occupied plantation.&lt;/p&gt;

&lt;p&gt;I found this book on the Pullitzer list (&lt;a href=&quot;https://www.pulitzer.org/winners/geraldine-brooks&quot;&gt;winner for 2006&lt;/a&gt;) and it was a great engaging read, good for anyone interested in a little Civil War fiction that does not shy away from just how miserable an experience war is. The human wreckage of battle, the devestation of every built structure, the disappearance of civil society and law. March heads off to war thinking he can make a difference. He returns much more realistic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.pulitzer.org/winners/barbara-kingsolver&quot;&gt;Demon Copperhead&lt;/a&gt;, Barbara Kingsolver&lt;/strong&gt; and &lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/David_Copperfield&quot;&gt;David Copperfield&lt;/a&gt;, Charles Dickens&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/demoncopperhead.jpeg&quot; style=&quot;float:left; padding-right:1em;&quot; /&gt;&lt;img src=&quot;/images//2025/david-copperfield.jpg&quot; style=&quot;float:right; padding-left:1em;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The “Demon Copperhead” and “David Copperfield” pairing I wrote about &lt;a href=&quot;/2025/01/books.html&quot;&gt;before&lt;/a&gt;. I picked up “Copperfield” right away after “Demon” to explore all the connections that Kingsolver had built into her tale, and I was a little surprised to find out how much she’d changed. Some of her characters had no analogues in Dickens and vice versa. Parts of the plot were gone or re-arranged or had no obvious analogue. Which was all fine, since “Demon Copperhead” stands perfectly well on its own.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Nineteen_Eighty-Four&quot;&gt;1984&lt;/a&gt;, George Orwell&lt;/strong&gt; and &lt;strong&gt;&lt;a href=&quot;https://www.theguardian.com/books/2023/oct/18/julia-by-sandra-newman-review-a-new-nineteen-eighty-four&quot;&gt;Julia&lt;/a&gt;, Sandra Newman&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/julia.jpeg&quot; style=&quot;float:left; padding-right:1em;&quot; /&gt;&lt;img src=&quot;/images//2025/1984.jpg&quot; style=&quot;float:right; padding-left:1em;&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Also wrote about these &lt;a href=&quot;/2025/01/books.html&quot;&gt;before&lt;/a&gt;. Worth reading together, if only to appreciate, in Newman’s telling, just how much of a self-absorbed prig Winston Smith actually is.&lt;/p&gt;

&lt;p style=&quot;clear: both&quot;&gt;&amp;nbsp;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>The Early History of Spatial Databases and PostGIS</title>
   <link href="http://blog.cleverelephant.ca/2025/02/postgis-day.html"/>
   <updated>2025-02-10T16:00:00+00:00</updated>
   <id>http://blog.cleverelephant.ca/2025/02/postgis-day</id>
   <content type="html">&lt;p&gt;For &lt;a href=&quot;https://www.crunchydata.com/community/events/postgis-day-2024&quot;&gt;PostGIS Day&lt;/a&gt; this year I researched a little into one of my favourite topics, the history of relational databases. I feel like in general we do not pay a lot of attention to history in software development. To quote Yoda, “All his life has he looked away… to the future, to the horizon. Never his mind on &lt;strong&gt;where he was&lt;/strong&gt;. Hmm? What he was doing.”&lt;/p&gt;

&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/aHB9labpBmk?si=ZwS8RV40AWiq3s-2&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot;&gt;&lt;/iframe&gt;

&lt;p&gt;Anyways, this year I took on the topic of the early history of spatial databases in particular. There was a lot going on in the ’90s in the field, and in many ways PostGIS was a late entrant, even though it gobbled up a lot of the user base eventually.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>WKB EMPTY</title>
   <link href="http://blog.cleverelephant.ca/2025/02/wkb-empty.html"/>
   <updated>2025-02-03T16:00:00+00:00</updated>
   <id>http://blog.cleverelephant.ca/2025/02/wkb-empty</id>
   <content type="html">&lt;p&gt;I have been watching the codification of spatial data types into &lt;a href=&quot;https://geoparquet.org&quot;&gt;GeoParquet&lt;/a&gt; and now &lt;a href=&quot;https://github.com/apache/iceberg/issues/10260&quot;&gt;GeoIceberg&lt;/a&gt; with some interest, since the work is near and dear to my heart.&lt;/p&gt;

&lt;p&gt;Writing a &lt;a href=&quot;https://github.com/postgis/postgis/blob/master/liblwgeom/gserialized.txt&quot;&gt;disk serialization for PostGIS&lt;/a&gt; is basically an act of format standardization – albeit a standard with only one consumer – and many of the same issues that the Parquet and Iceberg implementations are thinking about are ones I dealt with too.&lt;/p&gt;

&lt;p&gt;Here is an easy one: if you are going to use &lt;a href=&quot;https://libgeos.org/specifications/wkb/&quot;&gt;well-known binary&lt;/a&gt; for your serialiation (as &lt;a href=&quot;https://www.geopackage.org&quot;&gt;GeoPackage&lt;/a&gt;, and &lt;a href=&quot;https://geoparquet.org&quot;&gt;GeoParquet&lt;/a&gt; do) you have to wrestle with the fact that the &lt;a href=&quot;https://github.com/postgis/postgis/blob/master/doc/bnf-wkb.txt&quot;&gt;ISO/OGC standard&lt;/a&gt; for WKB does not describe a standard way to represent &lt;strong&gt;empty geometries&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/empty_box.jpg&quot; alt=&quot;Empty&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Empty geometries come up frequently in the &lt;a href=&quot;https://www.ogc.org/publications/standard/sfs/&quot;&gt;OGC/ISO standards&lt;/a&gt;, and they are simple to generate in real operations – just subtract a big thing from a small thing.&lt;/p&gt;

&lt;div class=&quot;language-sql highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;&lt;span class=&quot;k&quot;&gt;SELECT&lt;/span&gt; &lt;span class=&quot;n&quot;&gt;ST_AsText&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;&lt;span class=&quot;n&quot;&gt;ST_Difference&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;(&lt;/span&gt;
	&lt;span class=&quot;s1&quot;&gt;&apos;POLYGON((0 0, 1 0, 1 1, 0 1, 0 0))&apos;&lt;/span&gt;&lt;span class=&quot;p&quot;&gt;,&lt;/span&gt;
	&lt;span class=&quot;s1&quot;&gt;&apos;POLYGON((-1 -1, 3 -1, 3 3, -1 3, -1 -1))&apos;&lt;/span&gt;
	&lt;span class=&quot;p&quot;&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;If you have a data set and are running operations on it, eventually you will generate some empties.&lt;/p&gt;

&lt;p&gt;Which means your software needs to know how to store and transmit them.&lt;/p&gt;

&lt;p&gt;Which means you need to know how to encode them in WKB.&lt;/p&gt;

&lt;p&gt;And the standard is no help.&lt;/p&gt;

&lt;p&gt;But I am!&lt;/p&gt;

&lt;h2 id=&quot;wkb-commonalities&quot;&gt;WKB Commonalities&lt;/h2&gt;

&lt;p&gt;All WKB geometries start with 1-byte “byte order flag” followed by a 4-byte “geometry type”.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;enum wkbByteOrder  {
    wkbXDR = 0, // Big Endian
    wkbNDR = 1  // Little Endian
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The byte order flag signals which “&lt;a href=&quot;https://libgeos.org/specifications/wkb/#byte-order&quot;&gt;byte order&lt;/a&gt;” all the other numbers will be encoded with. Most modern hardware uses “least significant byte first” (aka “little endian”) ordering, so usually the value will be “1”, but readers must expect to occasionally get “big endian” encoded data.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;enum wkbGeometryType {
    wkbPoint = 1,
    wkbLineString = 2,
    wkbPolygon = 3,
    wkbMultiPoint = 4,
    wkbMultiLineString = 5,
    wkbMultiPolygon = 6,
    wkbGeometryCollection = 7
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;p&gt;The type number is an integer from 1 to 7, in the indicated byte order.&lt;/p&gt;

&lt;h2 id=&quot;collections&quot;&gt;Collections&lt;/h2&gt;

&lt;p&gt;Collections are &lt;strong&gt;easy&lt;/strong&gt;! &lt;strong&gt;GeometryCollection&lt;/strong&gt;, &lt;strong&gt;MultiPolygon&lt;/strong&gt;, &lt;strong&gt;MultiLineString&lt;/strong&gt; and &lt;strong&gt;MultiPoint&lt;/strong&gt; all have a WKB structure like this:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;wkbCollection {
    byte    byteOrder;
    uint32  wkbType;
    uint32  numWkbSubGeometries;
    WKBGeometry wkbSubGeometries[numWkbSubGeometries];
}
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The way to signal an empty collection is to set its &lt;strong&gt;numGeometries&lt;/strong&gt; value to zero.&lt;/p&gt;

&lt;p&gt;So for example, a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MULTIPOLYGON EMPTY&lt;/code&gt; would look like this (all examples in little endian, spaces added between elements for legibility, using hex encoding).&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;01 06000000 00000000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;The elements are:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;The byte order flag&lt;/li&gt;
  &lt;li&gt;The geometry type (6 == MultiPolygon)&lt;/li&gt;
  &lt;li&gt;The number of sub-geometries (zero)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;polygons-and-linestrings&quot;&gt;Polygons and LineStrings&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;Polygon&lt;/strong&gt; and &lt;strong&gt;LineString&lt;/strong&gt; types are also very easy, because after their type number they both have a count of sub-objects (rings in the case of Polygon, points in the case of LineString) which can be set to zero to indicate an empty geometry.&lt;/p&gt;

&lt;p&gt;For a &lt;strong&gt;LineString&lt;/strong&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;01 02000000 00000000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;For a &lt;strong&gt;Polygon&lt;/strong&gt;:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;01 03000000 00000000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;It is possible to create a &lt;strong&gt;Polygon&lt;/strong&gt; made up of a non-zero number of empty linear rings. Is this construction empty? Probably. Should you make one of them? Probably not, since &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;POLYGON EMPTY&lt;/code&gt; describes the case much more simply.&lt;/p&gt;

&lt;h2 id=&quot;points&quot;&gt;Points&lt;/h2&gt;

&lt;p&gt;Saving the best for last!&lt;/p&gt;

&lt;p&gt;One of the strange blind spots of the ISO/OGC standards is the WKB &lt;strong&gt;Point&lt;/strong&gt;. There is a standard text representation for an empty point, &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;POINT EMPTY&lt;/code&gt;. But nowhere in the standard is there a description of a &lt;strong&gt;binary&lt;/strong&gt; empty point, and the &lt;strong&gt;WKB structure&lt;/strong&gt; of a point doesn’t really leave any place to hide one.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;WKBPoint {
    byte    byteOrder;
    uint32  wkbType; // 1
    double x;
    double y;
};
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;After the standard byte order flag and type number, the serialization goes directly into the coordinates. There’s no place to put in a zero.&lt;/p&gt;

&lt;p&gt;In PostGIS we established our own add-on to the WKB standard, so we could successfully round-trip a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;POINT EMPTY&lt;/code&gt; through WKB – &lt;strong&gt;empty points are to be represented as a point with all coordinates set to the &lt;a href=&quot;https://en.wikipedia.org/wiki/NaN&quot;&gt;IEEE NaN value&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Here is a little-endian empty point.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;01 01000000 000000000000F87F 000000000000F87F
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;And a big-endian one.&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;00 00000001 7FF8000000000000 7FF8000000000000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Most open source implementations of WKB have converged on this standardization of &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;POINT EMPTY&lt;/code&gt;. The most common alternate behaviour is to convert &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;POINT EMPTY&lt;/code&gt; object, which are not representable, into &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MULTIPOINT EMPTY&lt;/code&gt; objects, which are. This might be confusing (an empty point would round-trip back to something with a completely different type number).&lt;/p&gt;

&lt;p&gt;In general, empty geometries create a lot of “angels dancing on the head of a pin” cases for functions that otherwise have very deterministic results.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;“What is the distance in meters between a point and an empty polygon?” Zero? Infinity? NULL? NaN?&lt;/li&gt;
  &lt;li&gt;“What geometry type is the interesection of an empty polygon and empty line?” Do I care? I do if I am writing a database system and have to provide an answer.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Over time the PostGIS project collated our intuitions and implementations in this &lt;a href=&quot;https://trac.osgeo.org/postgis/wiki/DevWikiEmptyGeometry&quot;&gt;wiki page of empty geometry handling rules&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The trouble with empty handling is that there are simultaneously a million different combinations of possibilities, and extremely low numbers of people actually exercising that code line. So it’s a massive time suck. We have basically been handling them on an “as needed” basis, as people open tickets on them.&lt;/p&gt;

&lt;h3 id=&quot;other-databases&quot;&gt;Other Databases&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;SQL Server changes &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;POINT EMPTY&lt;/code&gt; to &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;MULTIPOINT EMPTY&lt;/code&gt; when generating WKB.
    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;SELECT Geometry::STGeomFromText(&apos;POINT EMPTY&apos;,4326).STAsBinary()

0x010400000000000000
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;MariaDB and SnowFlake return NULL for a &lt;code class=&quot;language-plaintext highlighter-rouge&quot;&gt;POINT EMPTY&lt;/code&gt; WKB.
    &lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;SELECT ST_AsBinary(ST_GeomFromText(&apos;POINT EMPTY&apos;))

NULL
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;

</content>
 </entry>
 
 <entry>
   <title>Readings of 2024</title>
   <link href="http://blog.cleverelephant.ca/2025/01/books.html"/>
   <updated>2025-01-08T16:00:00+00:00</updated>
   <id>http://blog.cleverelephant.ca/2025/01/books</id>
   <content type="html">&lt;p&gt;I did a lot of reading last year, &lt;strong&gt;a lot&lt;/strong&gt;, perhaps because I had a &lt;a href=&quot;/2024/04/cancer1.html&quot;&gt;lot of down time&lt;/a&gt;. I tend to read before going to sleep, and recovery from surgery and other things means I go to bed early and then fill the time between bed and sleep with books. Books, books, and more books.&lt;/p&gt;

&lt;p&gt;To be totally precise, I read books on a Kindle, which allows me to read in the middle of the night in the dark with the back light. Also to read from any position, since all books are the same, light weight when consumed via an e-reader. I am a full e-reader convert.&lt;/p&gt;

&lt;p&gt;Anyway, I’ve had means, motive and opportunity, and I read a tonne. Some of it was bad, some of it was good, some of it was memorable, some not. Of the 50 or so books I read last year, here are ten that made me go “yes, that was good and memorable”.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.pulitzer.org/winners/barbara-kingsolver&quot;&gt;Demon Copperhead&lt;/a&gt;, Barbara Kingsolver&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/demoncopperhead.jpeg&quot; style=&quot;float:right;padding:1em&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I used to read &lt;a href=&quot;https://thebookerprizes.com&quot;&gt;Booker Prize&lt;/a&gt; winners, but I found the match to my taste was hit-and-miss. The &lt;a href=&quot;https://www.pulitzer.org/prize-winners-by-category/219&quot;&gt;Pullitzer Prize&lt;/a&gt; nominees list, on the other hand, has given me piles of great reads. I am still mining it for recommendations, older and older entries.&lt;/p&gt;

&lt;p&gt;Anyways, this modern day re-telling of Dicken’s &lt;a href=&quot;https://en.wikipedia.org/wiki/David_Copperfield&quot;&gt;David Copperfield&lt;/a&gt; is set in Apallacia, amid the height of the opiod crises. The book is tightly written, has some lovely turns of phrase, and a nice tight narrative push, thanks to the borrowed plot structure. I re-read the Dickens after, because it was so much fun to mark out the character borrowings and plot beats.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.nytimes.com/2023/01/15/books/review/master-slave-husband-wife-ilyon-woo.html&quot;&gt;Master Slave, Husband Wife&lt;/a&gt;, Ilyon Woo&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/master-slave-husband-wife.jpeg&quot; style=&quot;float:right;padding:1em&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This non-fiction re-telling of an earlier first person account is occasionally verbose, but an excellent entrant into a whole category of writing I did not know existed, the contemporaneous slavery escape narrative. For obvious reasons, abolitionists before the Civil War were keen to promote stories that humanized the people trapped in the south, who might otherwise be theoretical to Northern audiences.&lt;/p&gt;

&lt;p&gt;The book re-tells the escape of Ellen and William Craft, and wraps that story in a lot of historical context about the millieu they were escaping from (antebellum Georgia) and to (abolitionist circles in the North). The actual text of their story is liberally quoted from, but this is a re-telling. Frederick Douglass appears in their story, which gave me the excuse I have been waiting for a long time to read the next book in this list.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://standardebooks.org/ebooks/frederick-douglass/narrative-of-the-life-of-frederick-douglass&quot;&gt;Narrative of the Life of Frederick Douglass&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/douglass.jpeg&quot; style=&quot;float:right;padding:1em&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It took me &lt;em&gt;way too long&lt;/em&gt; to finally pick up this book, given that Douglass has showed up as such an important figure in the other historical books I have read: &lt;a href=&quot;https://en.wikipedia.org/wiki/Team_of_Rivals&quot;&gt;Team of Rivals&lt;/a&gt;, &lt;a href=&quot;https://standardebooks.org/ebooks/ulysses-s-grant/personal-memoirs-of-ulysses-s-grant&quot;&gt;Memoirs of Ulysses S. Grant&lt;/a&gt;, &lt;a href=&quot;https://www.penguinrandomhouse.com/books/241155/and-there-was-light-by-jon-meacham/&quot;&gt;And There Was Light&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;One goes into books from the 1800s wondering just how punishing the language is going to be. Clauses upon subclauses upon subclauses? None of that here. Douglass writes wonderfully clean prose the modern mind can handle, and tells his story with economy but still enough context to make it powerful. Probably because as a master story teller, he was pitching for an audience much like the modern one – made up of people with little knowledge of the particulars of the slave system, just a broad and overly simple sense of the injustice. After 150 years, still devestating and accessible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/How_Much_of_These_Hills_Is_Gold&quot;&gt;How Much of These Hills Is Gold&lt;/a&gt;, C Pam Zhang&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/how-much-of-these-hills.jpeg&quot; style=&quot;float:right;padding:1em&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The &lt;a href=&quot;https://www.goodreads.com/book/show/45895362-how-much-of-these-hills-is-gold&quot;&gt;Goodreads crew&lt;/a&gt; does not seem to think this book is as good as I do, but what strikes me about it and what makes me slot it into my “years best” is that I &lt;strong&gt;remember&lt;/strong&gt; it so clearly. This is a historical novel of the California gold rush, from the eyes of children born to Chinese immigrants in the gold fields. It’s both an intense family drama, and an meditation on the power of place. It left me with a strongly remembered sense of the land, and the characters. Even though it covers a big swathe of years, the cast of characters remains small and their interactions meaningful. It’s memorable!&lt;/p&gt;

&lt;p&gt;(Also, and this is no small thing, I read &lt;a href=&quot;https://www.goodreads.com/book/show/34381330-in-the-distance&quot;&gt;Into the Distance&lt;/a&gt; by Hernan Diaz this year too, which is set in the same time period and has some of the same beats… so maybe these books are a pairing.)&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.theguardian.com/books/2023/oct/18/julia-by-sandra-newman-review-a-new-nineteen-eighty-four&quot;&gt;Julia&lt;/a&gt;, Sandra Newman&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/julia.jpeg&quot; style=&quot;float:right;padding:1em&quot; /&gt;&lt;/p&gt;

&lt;p&gt;It’s a great time to be reading about authoritarianism! In the same spirit as pairing up Demon Copperhead with David Copperfield, I also paired up a reading of George Orwell’s &lt;a href=&quot;https://en.wikipedia.org/wiki/Nineteen_Eighty-Four&quot;&gt;1984&lt;/a&gt; with this retelling of the same story from the point of view of Julia, the love interest in Orwell’s book.&lt;/p&gt;

&lt;p&gt;Newman takes the opportunity to flesh out Julia as a character and also the world of 1984 a little more, which makes the re-read of the original really fun. I do not think I noticed before just how much Winston Smith is a self-absorbed schmuck, but once you’ve seen it, you cannot unsee it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.newyorker.com/books/page-turner/the-bee-sting-a-family-saga-of-desperation-and-denial&quot;&gt;The Bee Sting&lt;/a&gt;, Paul Murray&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/bee-sting.jpeg&quot; style=&quot;float:right;padding:1em&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A tragedy told from the inter-leaved view points of four members of a family falling apart. Each chapter from a different character, each builds up the point of view narrator and also illuminates the others. Mostly the reveal is who these people are, bit by bit, but the plot also slowly clicks together like a puzzle until that last piece slides in, and oh boy.&lt;/p&gt;

&lt;p&gt;An easy engaging read that gets more and more intense, but you cannot look away.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/62047984-yellowface&quot;&gt;Yellowface&lt;/a&gt;, R F Huang&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/yellowface.jpeg&quot; style=&quot;float:right;padding:1em&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Written by an Asian-American author, about a white author appropriating the story of an Asian-American author, the story is gripping, snarky, and unblinking in its takedown of the publishing industry. Come for the plot, stay for the commentary on modern meme-making and self-promotion, the intersection between who we are and who we present ourselves as. On the internet, nobody knows you are a dog. Or everybody knows you are a dog and hates you for it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://ivereadthis.com/2023/08/10/book-review-the-librarianist-by-patrick-dewitt/&quot;&gt;The Librarianist&lt;/a&gt;, Patrick deWitt&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/librarianist.jpeg&quot; style=&quot;float:right;padding:1em&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I don’t think this book made many or any “best of” lists, so it is not clear to me what caused me to read it, but it was a treat. Just a very quiet story about an introverted retired librarian, finding his way as he transitions into retirement, and builds some new connections with his community. Sounds really boring, I know, but I hoovered it up and it still sticks with me. A good read if you need some optimism and calm in your life.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.goodreads.com/book/show/40163119-say-nothing&quot;&gt;Say Nothing&lt;/a&gt;, Patrick Radden Keefe&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/say-nothing.jpeg&quot; style=&quot;float:right;padding:1em&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A history of &lt;a href=&quot;https://en.wikipedia.org/wiki/The_Troubles&quot;&gt;the Troubles&lt;/a&gt; in Ireland, wrapped around the story of a particular murder, long unsolved, that slowly reveals itself over the decades, as the perpetrators come to terms with their part in that violent chapter of history. The &lt;a href=&quot;https://www.goodreads.com/book/show/40163119-say-nothing&quot;&gt;Goodreaders&lt;/a&gt; really like this one and I agree. I knew the bare minimum of this chapter of world history (what I gleaned from CNN at the time, and from &lt;a href=&quot;https://www.netflix.com/title/80238565&quot;&gt;Derry Girls&lt;/a&gt; more recently) and this telling makes an easy introduction, covering a wide sweep of time and context.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.npr.org/2021/07/21/1018496548/in-notes-from-the-burning-age-were-the-ones-on-fire&quot;&gt;Notes from the Burning Age&lt;/a&gt;, Claire North&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/burning-age.jpeg&quot; style=&quot;float:right;padding:1em&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Claire North remains a lesser-known science fiction author, despite her low-key hit &lt;a href=&quot;https://en.wikipedia.org/wiki/The_First_Fifteen_Lives_of_Harry_August&quot;&gt;The First Fifteen Lives of Harry August&lt;/a&gt; (read it!), but I’m a convert, and this novel reminded me why. The world is a post-climate crisis culture that has achieved some spiritual and technological balance with the ecology, but is wrestling with the return of what we would describe as “business as usual” – the subjugation of the natural world to the needs of humans.&lt;/p&gt;

&lt;p&gt;Following an ecological monk, turned spy, from inside the capital of the new humanists, through the other realms of this world is easy because the journey is wrapped in a high-stakes espionage story. Of all the climate stories I have read lately, this one taken from such a long distance in the future speaks to me most. I want to think we will build something new and better, and while I know our human nature can be malign, I also know it can be beautiful.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://www.hernandiaz.net/trust-novel&quot;&gt;Trust&lt;/a&gt;, Hernan Diaz&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2025/trust.jpeg&quot; style=&quot;float:right;padding:1em&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Best for last. Told in multiple sections from multiple perspectives in multiple styles, every narrator is unreliable, each in their own way, but the idea that there is a kernel of truth lying beneath it all never goes away (and yet, is never truly revealed). Perhaps a perfect book club novel for that reason. (Not where I got it, it’s another Pullitzer winner.)&lt;/p&gt;

&lt;p&gt;Some facts everyone agrees on. There is a very rich and powerful financier. He has a relationship with a woman who he marries who is very important to him. But in what way? Unclear. And man is malign, but in what ways? The usual mercenary ones you might expect of a Wall Street lion? Worse and additional ways? Unclear. The whole thing is a puzzle box, the language, the characters, the events. Read it. Read it again. Read it a third time.&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Cancer 12</title>
   <link href="http://blog.cleverelephant.ca/2024/09/cancer12.html"/>
   <updated>2024-09-30T00:00:00+00:00</updated>
   <id>http://blog.cleverelephant.ca/2024/09/cancer12</id>
   <content type="html">&lt;p class=&quot;note&quot;&gt;Back to &lt;a href=&quot;/2024/04/cancer1.html&quot;&gt;entry 1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was glancing at the New York Times and saw that Catherine, the Princess of Wales, had &lt;a href=&quot;https://www.nytimes.com/2024/06/14/world/europe/kate-middleton-cancer-king-charles-birthday.html?unlocked_article_code=1.zk0.jcfj.ndqNn2J4dLUS&amp;amp;smid=url-share&quot;&gt;released an update&lt;/a&gt; on her treatment. And I thought, “wow, I hope she’s doing well”. And then I thought, “wow, I bet she gets a lot of positive affirmation and support from all kinds of people”.&lt;/p&gt;

&lt;p&gt;I mean, she’s a &lt;strong&gt;princess&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2024/kate.jpg&quot; alt=&quot;Priness Katherine&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Even us non-princesses, we need support too, and I have to say that I have been blown away by how kind the people around me in my life have been. And also how kind the other folks who I have never really talked with before have been.&lt;/p&gt;

&lt;p&gt;I try to thank my wife as often as I can. It is hard not to feel like a burden when I am, objectively, a burden, no matter how much she avers I am not. I am still not fully well (for &lt;a href=&quot;/2024/09/cancer11.html&quot;&gt;reasons&lt;/a&gt;), and I really want to be the person she married, a helpful full partner. It is frustrating to still be taking more than I’m giving.&lt;/p&gt;

&lt;p&gt;From writing about my experience here, I have heard from other cancer survivors, and other folks who have travelled the particular path of colorectal cancer treatment. Some of them I knew from meetings and events, some from their own footprint on the internet, some of them were new to me. But they were all kind and supportive and it really helped, in the dark and down times.&lt;/p&gt;

&lt;p&gt;From my work on the University of Victoria Board of Governors, I have come to know a lot of people in the community there, and they were so kind to me when I shared my diagnosis. My fellow board members stepped in and took on the tasks I have not been able to do the past few months, and the members of the executive and their teams were so generous in sending their well-wishes.&lt;/p&gt;

&lt;p&gt;And finally, my employers at Crunchy Data were the best. Like above and beyond. When I told them the news they just said “take as much time as you need and get better”. And they held to that. My family doctor asked “do you need me to write you a letter for your employer” and I said “no, they’re good”, and he said, “wow! don’t see that very often”. You don’t. I’m so glad Crunchy Data is still small enough that it can be run ethically by ethical people. Not having to worry about employment on top of all the other worries that a cancer diagnosis brings, that was a huge gift, and not one I will soon forget.&lt;/p&gt;

&lt;p&gt;I think people (and Canadians to a fault, but probably people in general) worry about &lt;strong&gt;imposing&lt;/strong&gt;, that communicating their good thoughts and prayers could be just another thing for the cancer patient to &lt;strong&gt;deal with&lt;/strong&gt;, and my personal experience was: no, it wasn’t. Saying “thanks, I appreciate it” takes almost no energy, and the boost of hearing from someone is real. I think as long as the patient doesn’t sweat it, as long as they recognize that “ackknowledged! thanks!” is a sufficient response, it’s all great.&lt;/p&gt;

&lt;p&gt;Fortunately, I am not a princess, so the volume was not insuperable. Anyways, thank you to everyone who reached out over the past 6 months, and also to all those who just read and nodded, and maybe shared with a friend, maybe got someone to take a trip to the gastroenterologist for a colonoscopy.&lt;/p&gt;

&lt;p&gt;Talk to you all again soon, inshala.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2024/cafe.jpg&quot; alt=&quot;Mountain&quot; /&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Cancer 11</title>
   <link href="http://blog.cleverelephant.ca/2024/09/cancer11.html"/>
   <updated>2024-09-24T00:00:00+00:00</updated>
   <id>http://blog.cleverelephant.ca/2024/09/cancer11</id>
   <content type="html">&lt;p class=&quot;note&quot;&gt;Back to &lt;a href=&quot;/2024/04/cancer1.html&quot;&gt;entry 1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What happened there, I didn’t write for three months! Two words: “complications”, and “recovery”.&lt;/p&gt;

&lt;p&gt;In a terrifying medical specialty like &lt;strong&gt;cancer treatment&lt;/strong&gt;, one of the painful ironies is that patients spend a lot of time suffering from complications and side effects of the &lt;strong&gt;treatments&lt;/strong&gt;, rather than the &lt;strong&gt;cancer&lt;/strong&gt;. In my case and many others, the existence of the cancer isn’t even &lt;strong&gt;noticable&lt;/strong&gt; without fancy diagnostic machines. The treatments on the other hand… those are very noticable!&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2024/drnick.gif&quot; alt=&quot;cdiff&quot; /&gt;&lt;/p&gt;

&lt;p&gt;A lot of this comes with the territory of major surgery and dangerous chemicals. My surgery included specific possible complications including, but not limited to: incontinence, sexual disfunction, urinary disfunction, and sepsis.&lt;/p&gt;

&lt;p&gt;Fortunately, I avoided all the complications specific to my surgery.&lt;/p&gt;

&lt;p&gt;What I &lt;strong&gt;did not&lt;/strong&gt; avoid was a surprisingly &lt;strong&gt;common&lt;/strong&gt; complication of spending some time in a hospital while taking broad spectrum antibiotics–I contracted the “superbug” &lt;em&gt;clostridioides difficile&lt;/em&gt;, aka &lt;em&gt;c.diff&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;Let me tell you, finding you have a “superbug” is a real bummer, and &lt;em&gt;c.diff&lt;/em&gt; lives up to its reputation. Like cancer, it is &lt;strong&gt;hard to kill&lt;/strong&gt;, it does quite a bit of damage while it’s in you, and the things that kill it &lt;strong&gt;also&lt;/strong&gt; do a lot of damage to your body.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2024/cdiff.jpg&quot; alt=&quot;cdiff&quot; /&gt;&lt;/p&gt;

&lt;p&gt;Killing my &lt;em&gt;c.diff&lt;/em&gt; required a couple of courses of specialized antibiotics (vancomycin), that in addition to killing the &lt;em&gt;c.diff&lt;/em&gt; &lt;strong&gt;also&lt;/strong&gt; killed all the other beneficial bacteria in my lower intestine.&lt;/p&gt;

&lt;p&gt;So, two months after surgery, I was recovering from:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;having my lower intestine handled and sliced in a major surgery&lt;/li&gt;
  &lt;li&gt;having that same intestine populated with &lt;em&gt;c.diff&lt;/em&gt; and covered in &lt;em&gt;c.diff&lt;/em&gt; toxins&lt;/li&gt;
  &lt;li&gt;having the microbiotic population living in my intestine nuked with a modern antibiotic developed to kill resistant superbugs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Not surprisingly, having all those things at once makes for a much longer recovery, and a pretty up-and-down one. My slowly recovering microbiota is in constant flux, which results in some really surprising symptoms.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;highly variable stomach discomfort (ok)&lt;/li&gt;
  &lt;li&gt;highly variable appetite (makes sense)&lt;/li&gt;
  &lt;li&gt;random days of fatigue (really?)&lt;/li&gt;
  &lt;li&gt;random days of anxiety (what?!?)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I had not really understood the implications of gut/brain connection, until this journey showed me just how &lt;strong&gt;tightly bound&lt;/strong&gt; my mental state was to the current condition of my guts. The anxiety I have experienced as a result of my &lt;em&gt;c.diff&lt;/em&gt; exposure has been worse, amazingly, than what I felt after my initial cancer diagnosis. One was in my head, but the other was &lt;strong&gt;in my gut&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2024/gutbrain.jpg&quot; alt=&quot;cdiff&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I have also developed a much more acute sympathy for people suffering from long Covid and other chronic diseases. The actual symptoms are &lt;strong&gt;bad enough&lt;/strong&gt;, but the psychological effect of the symptom variability is really hard to deal with.  Bad days follow good days, with no warning. I have mostly stopped voicing any optimism about my condition, because who knows what tomorrow will bring.&lt;/p&gt;

&lt;p&gt;When people ask me how I’m doing, I shrug.&lt;/p&gt;

&lt;p&gt;One thing I have got going for me, that chronic disease sufferers do not, is a sense that I am in fact &lt;strong&gt;improving&lt;/strong&gt;. I started journaling my symptoms early in the recovery process, and I can look back and see definitively that while things are unpredictable day to day, or even week to week, the long term trajectory is one of improvement.&lt;/p&gt;

&lt;p&gt;Without that, I think I’d go loopy.&lt;/p&gt;

&lt;p&gt;Anyways, I am now rougly three months out from my last course of antibiotics, and I expect it will be at least another three months before I’m firing on all cylinders again, thanks mostly to the surgical complication of acquiring &lt;em&gt;c.diff&lt;/em&gt;. If I was just recovering from the surgery, I imagine I would be much closer to full recovery.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2024/apples.jpg&quot; alt=&quot;Harvesting apples&quot; /&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Cancer 10</title>
   <link href="http://blog.cleverelephant.ca/2024/06/cancer10.html"/>
   <updated>2024-06-01T00:00:00+00:00</updated>
   <id>http://blog.cleverelephant.ca/2024/06/cancer10</id>
   <content type="html">&lt;p class=&quot;note&quot;&gt;Back to &lt;a href=&quot;/2024/04/cancer1.html&quot;&gt;entry 1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So, I got the news from pathology.&lt;/p&gt;

&lt;p&gt;There is &lt;strong&gt;no cancer&lt;/strong&gt; left in me, I am officially “cured”.&lt;/p&gt;

&lt;p&gt;Since I am still recovering from surgery and relearning what my GI tract is going to do for the future, I don’t &lt;strong&gt;feel&lt;/strong&gt; entirely cured, but I do feel the &lt;strong&gt;weight of wondering&lt;/strong&gt; about the future lifted off of me.&lt;/p&gt;

&lt;p&gt;The future will not hold any more major cancer treatments, just annual screening colonoscopies, and getting better post-surgery.&lt;/p&gt;

&lt;p&gt;I truly have had the snack-sized experience, not that I would recommend it to anyone. Diagnosed late February, spit off the back of the conveyor belt in late May. Three months in Cancerland, three months too many.&lt;/p&gt;

&lt;p&gt;A few days ago NBA great &lt;a href=&quot;https://ca.finance.yahoo.com/news/statement-dr-james-weber-ceo-141700262.html&quot;&gt;Bill Walton died&lt;/a&gt; of colorectal cancer. It’s the second most common cancer in both men and women, and you can avoid a trip to Cancerland through the simple expedient of &lt;a href=&quot;https://www.mayoclinic.org/diseases-conditions/colon-cancer/in-depth/colon-cancer-screening/art-20046825&quot;&gt;getting screened&lt;/a&gt;. Don’t skip it because you are young, &lt;a href=&quot;https://www.nytimes.com/2024/03/27/well/colon-cancer-symptoms-treatment.html&quot;&gt;colorectal cancer rates amount people under 50 are going up fast&lt;/a&gt;, and nobody knows why (there’s something in the &lt;a href=&quot;https://www.ncbi.nlm.nih.gov/pmc/articles/PMC10340669/&quot;&gt;environment&lt;/a&gt;, probably).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2024/whistler.jpg&quot; alt=&quot;Mountain&quot; /&gt;&lt;/p&gt;

</content>
 </entry>
 
 <entry>
   <title>Cancer 9</title>
   <link href="http://blog.cleverelephant.ca/2024/05/cancer9.html"/>
   <updated>2024-05-13T00:00:00+00:00</updated>
   <id>http://blog.cleverelephant.ca/2024/05/cancer9</id>
   <content type="html">&lt;p class=&quot;note&quot;&gt;Back to &lt;a href=&quot;/2024/04/cancer1.html&quot;&gt;entry 1&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Scanxiety.&lt;/p&gt;

&lt;p&gt;This is where I am right now. Scanxiety.&lt;/p&gt;

&lt;p&gt;Each stage of the cancer experience is marked by a particular set of tests, of scans.&lt;/p&gt;

&lt;p&gt;I actually managed to get through my first set of scans surprisingly calmly. After getting diagnosed (“there’s some cancer in you”), they send you for “staging”, which is an MRI and CT scan.&lt;/p&gt;

&lt;p&gt;These scans both involve large, Star Trek seeming machines, which make amazing noises, and in the case of the CT machine I was put through was decorated with colorful LED lights by the manufacturer (because it didn’t look whizzy enough to start with?).&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2024/mri.jpg&quot; alt=&quot;MRI&quot; /&gt;&lt;/p&gt;

&lt;p&gt;I kind of internalized the initial “broad-brush” staging my GI gave me, which was that it was a tumor caught early so I would be early stage, so I didn’t worry. And it turned out, that was a good thing, since the scans didn’t contradict that story, and I didn’t worry.&lt;/p&gt;

&lt;p&gt;The CT scan, though, did turn up a spot on my hip bone. “Oh, that might be a bone cancer, but it’s probably not.” &lt;strong&gt;Might be a bone cancer?!?!?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;How do you figure out if you have “a bone cancer, but it’s probably not”? Another cool &lt;strong&gt;scan&lt;/strong&gt;, a nuclear scan, involving being injected with radioactive dye (frankly, the coolest scan I have had so far) and run through another futuristic machine.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2024/bone.jpg&quot; alt=&quot;Bone Scan&quot; /&gt;&lt;/p&gt;

&lt;p&gt;This time, I really sweated out the week between the scan being done and the radiology coming back. And… not bone cancer, as predicted. But a really tense week.&lt;/p&gt;

&lt;p&gt;And now I’m in another of those periods. The result of my &lt;a href=&quot;https://colorectalsurgery.wustl.edu/patient-care/low-anterior-resection-syndrome/&quot;&gt;major surgery&lt;/a&gt; is twofold: the piece of me that hosted my original tumor is now no longer inside of me; and, the lymph nodes surrounding that piece are also outside of me.&lt;/p&gt;

&lt;p&gt;They are both in the hands of a pathologist, who is going to tell me if there is cancer in the lymph nodes, and thus if I need &lt;strong&gt;even more super unpleasant attention from the medical system&lt;/strong&gt; in the form of several courses of chemotherapy.&lt;/p&gt;

&lt;p&gt;The potential long term side effects of the chemotherapy drugs used for colorectal cancers include permanent “&lt;a href=&quot;https://www.mayoclinic.org/diseases-conditions/peripheral-neuropathy/symptoms-causes/syc-20352061&quot;&gt;peripheral neuropathy&lt;/a&gt;”, AKA numbness in the fingers and toes. Which could put a real crimp in my climbing and piano hobbies.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images//2024/climb3.jpg&quot; alt=&quot;Climb&quot; /&gt;&lt;/p&gt;

&lt;p&gt;So as we get closer to getting that report, I am experiencing more and more &lt;strong&gt;scanxiety&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If I escape chemo, I will instead join the cohort of “no evidence of disease” (&lt;a href=&quot;https://www.healthline.com/health/cancer/ned-cancer&quot;&gt;NED&lt;/a&gt;) patients. Not quite cured, but on a regular diet of blood work, scans, and colonoscopy, each one of which will involve another trip to &lt;strong&gt;scanxiety&lt;/strong&gt; town. Because “it has come back” starts as a pretty decent probability, and takes several years to diminish to something safely unlikely.&lt;/p&gt;

&lt;p&gt;Yet another way that cancer is a psychological experience as well as a physical one.&lt;/p&gt;

&lt;p&gt;Talk to you again soon, inshalla.&lt;/p&gt;

</content>
 </entry>
 

</feed>
