<rss xmlns:a10="http://www.w3.org/2005/Atom" version="2.0"><channel><title>I Thought He Came With You</title><link>https://ithoughthecamewithyou.com/</link><description>Robert Ellison's Blog</description><copyright>(c) copyright Robert Ellison</copyright><managingEditor>rob@catfood.net</managingEditor><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/virginia-joins-national-popular-vote?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/virginia-joins-national-popular-vote?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>politics</category><title>Virginia joins National Popular Vote</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=Virginia-joins-National-Popular-Vote-2.webp" title="Virginia joins National Popular Vote"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=Virginia-joins-National-Popular-Vote.webp" width="630" height="360" class="u-photo" alt="Virginia joins National Popular Vote" srcset="/image.axd?picture=Virginia-joins-National-Popular-Vote.webp, /image.axd?picture=Virginia-joins-National-Popular-Vote-1.webp 2x, /image.axd?picture=Virginia-joins-National-Popular-Vote-2.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Virginia &lt;a href="https://www.npr.org/2026/04/14/nx-s1-5742595/virginia-popular-vote-compact"&gt;joins&lt;/a&gt; the National Popular Vote movement, bringing the total to 222 electoral college votes. Once we reach 270 presidential politics will pivot from a few hundred thousand swing voters to the needs of the entire nation. We probably wouldn&amp;#39;t have elected Trump I and might not be suffering through Trump II today. This is getting close - &lt;a href="https://ithoughthecamewithyou.com/page/democracy?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;do something!&lt;/a&gt;&lt;/p&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/virginia-joins-national-popular-vote?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-04-18T17:08:47Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/rainbow?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/rainbow?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>photo</category><title>Rainbow</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=Rainbowat-Ocean-Beach-2.webp" title="Rainbow at Ocean Beach"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=Rainbowat-Ocean-Beach.webp" width="630" height="354" class="u-photo" alt="Rainbow&amp;#160;at Ocean Beach" srcset="/image.axd?picture=Rainbowat-Ocean-Beach.webp, /image.axd?picture=Rainbowat-Ocean-Beach-1.webp 2x, /image.axd?picture=Rainbowat-Ocean-Beach-2.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="exif"&gt;Google Pixel 8 Pro 18mm f2.8 1/220s ISO16&lt;/p&gt;
&lt;p&gt;A rainbow, shot from Ocean Beach in San Francisco.&lt;/p&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/rainbow?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-04-11T19:49:48Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/update-aws-ec2-inbound-security-group-rules-when-your-ip-address-changes?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/update-aws-ec2-inbound-security-group-rules-when-your-ip-address-changes?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>code</category><title>Update AWS EC2 inbound security group rules when your IP address changes</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=AWS-IP-Update-a-Windows-Tray-application-that-automatically-updates-EC2-inbound-security-rules-when-an-IP-address-change-is-detected-2.webp" title="AWS IP Update, a Windows Tray application that automatically updates EC2 inbound security rules when an IP address change is detected."&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=AWS-IP-Update-a-Windows-Tray-application-that-automatically-updates-EC2-inbound-security-rules-when-an-IP-address-change-is-detected.webp" width="630" height="307" class="u-photo" alt="AWS IP Update, a Windows Tray application that automatically updates EC2 inbound security rules when an IP address change is detected." srcset="/image.axd?picture=AWS-IP-Update-a-Windows-Tray-application-that-automatically-updates-EC2-inbound-security-rules-when-an-IP-address-change-is-detected.webp, /image.axd?picture=AWS-IP-Update-a-Windows-Tray-application-that-automatically-updates-EC2-inbound-security-rules-when-an-IP-address-change-is-detected-1.webp 2x, /image.axd?picture=AWS-IP-Update-a-Windows-Tray-application-that-automatically-updates-EC2-inbound-security-rules-when-an-IP-address-change-is-detected-2.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I just released &lt;a href="https://github.com/abfo/aws-ip-update"&gt;AWS IP Update&lt;/a&gt;, a Windows Tray application that updates inbound security group rules on AWS EC2 when your IP address changes.&lt;/p&gt;
&lt;p&gt;This has been vaguely on my to-do list for years. I didn&amp;#39;t bother because I knew how tedious it would be from that time I pulled Azure metrics into Google Data Studio (now Looker) &lt;a href="https://ithoughthecamewithyou.com/post/using-the-azure-monitor-rest-api-from-google-apps-script?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;via Apps Script&lt;/a&gt;. This whole thing was banged out by Claude Code in five volleys, and I think I wasted those because it could probably have single-shotted it. I did not write a character of code, and it was faster to create than the way I used to get access.&lt;/p&gt;
&lt;p&gt;I have a monthly sys admin day where I patch all the things, pull a Google photos archive and run an old fashioned backup to an external hard drive. The hardest part of this psychologically has been getting access to AWS to patch by blog server and pull a backup. My IP address has changed, and I need to log into AWS, find the right settings, look up my external IP address (Google Search used to just show this but it&amp;#39;s been broken for ages) and update the EC2 security group. Every other part of the routine is easy, the access part always bums me out. So this is a quick AI tool that not only saves a few minutes a month, it also helps with mood and blood pressure.&lt;/p&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/update-aws-ec2-inbound-security-group-rules-when-your-ip-address-changes?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-04-11T19:01:47Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/links-for-april-2026?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/links-for-april-2026?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>etc</category><title>Links for April 2026</title><description>&lt;div class="h-entry" id="0caf762665734a20a0e2d290fec54944"&gt;&lt;div class="e-content"&gt;&lt;blockquote&gt;&lt;a href="https://www.nytimes.com/2026/04/09/world/europe/britain-christian-revival-survey.html" title="No, Britain Is Not Having a Christian Revival clipped to ITHCWY on 2026-04-09"&gt;No, Britain Is Not Having a Christian Revival&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;Reminder that when it's too good to be true, it's not true and vice versa.   &lt;a href="https://ithoughthecamewithyou.com/tag/etc?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#etc&lt;/a&gt;  &lt;a href="https://ithoughthecamewithyou.com/tag/religion?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#religion&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;a class="u-url u-uid" title="Permalink" href="https://ithoughthecamewithyou.com/post/links-for-april-2026#0caf762665734a20a0e2d290fec54944?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;&amp;#8734;&lt;/a&gt;&lt;a class="u-bridgy-fed" href="https://fed.brid.gy/" rel="nofollow noreferrer noopener" hidden="hidden"&gt;&lt;/a&gt;&lt;time class="dt-published" datetime="2026-04-09T16:48:14Z"&gt;&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr&gt;&lt;div class="h-entry" id="44dc5db9c10642ee861f86d5f56878b8"&gt;&lt;p&gt;I'm following &lt;a class="u-follow-of" rel="nofollow noreferrer noopener" href="https://snarfed.org/snarfed.org"&gt;@snarfed.org@snarfed.org&lt;/a&gt;. &lt;a class="u-url u-uid" title="Permalink" href="https://ithoughthecamewithyou.com/post/links-for-april-2026#44dc5db9c10642ee861f86d5f56878b8?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;&amp;#8734;&lt;/a&gt;&lt;a class="u-bridgy-fed" href="https://fed.brid.gy/" rel="nofollow noreferrer noopener" hidden="hidden"&gt;&lt;/a&gt;&lt;time class="dt-published" datetime="2026-04-18T22:37:59Z"&gt;&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/links-for-april-2026?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-04-09T16:48:14Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/seervo-an-llm-powered-robot?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/seervo-an-llm-powered-robot?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>code</category><title>Seervo, an LLM Powered Robot</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=Seervo-LLM-AI-Robot-2.webp" title="Seervo LLM AI Robot"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=Seervo-LLM-AI-Robot.webp" width="630" height="354" class="u-photo" alt="Seervo LLM AI Robot" srcset="/image.axd?picture=Seervo-LLM-AI-Robot.webp, /image.axd?picture=Seervo-LLM-AI-Robot-1.webp 2x, /image.axd?picture=Seervo-LLM-AI-Robot-2.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I just released &lt;a href="https://github.com/abfo/seervo" target="_blank"&gt;Seervo&lt;/a&gt;, an open-source LLM-powered robot. The GitHub repo contains source code, a shopping list and 3D files to print the chassis.&lt;/p&gt;
&lt;p&gt;Seervo sends an image from its camera to GPT 5.4. The LLM can decide to change the colors of four LEDs and to drive the motors. It has the objective of finding and entertaining humans while avoiding pets at all costs. The video below shows it mostly trying to escape from my dog:&lt;/p&gt;
&lt;div class="video-container"&gt;&lt;iframe id="player-gave" width="630" height="354" src="https://www.youtube.com/embed/qIrNDQmVw1A?rel=0&amp;enablejsapi=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;The robot is based on an ESP32 microcontroller with a camera, some motors and a battery. The client code is MicroPython and it talks to an ASP.NET core web service that handles the LLM control calls. You could do everything on the ESP32 but it&amp;#39;s easier to tweak prompts and see where it&amp;#39;s going wrong with a local server. The server additionally stores memories so the robot can remember what it has been doing recently, and handles memory compaction so any really useful knowledge is retained in the context window.&lt;/p&gt;
&lt;p&gt;The code was all written using Claude Opus 4.6. The chassis was designed in OpenSCAD using ChatGPT - something that has been a struggle before but GPT 5.4 can iterate on a 3D model with pretty vague directions.&lt;/p&gt;
&lt;p&gt;Let me know if you build one!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Updated 2026-04-05 23:22:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Added an HC-SR04 ultrasonic distance sensor so the robot can now tell how much clear space there is in front of it. Tuned the instructions to use this data and also with formulae to convert distance and rotation to approximate motor run time. This all makes the robot a lot more confident in its movement.&lt;/p&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/seervo-an-llm-powered-robot?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-04-05T01:00:15Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/bonnet-macaque?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/bonnet-macaque?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>photo</category><title>Bonnet Macaque</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=Bonnet-Macaque-2.webp" title="Bonnet Macaque"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=Bonnet-Macaque.webp" width="630" height="474" class="u-photo" alt="Bonnet Macaque" srcset="/image.axd?picture=Bonnet-Macaque.webp, /image.axd?picture=Bonnet-Macaque-1.webp 2x, /image.axd?picture=Bonnet-Macaque-2.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="exif"&gt;Google Pixel 8 Pro 18mm f2.8 1/189s ISO17&lt;/p&gt;
&lt;p&gt;Photo of a Bonnet Macaque near Bangalore, India.&lt;/p&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/bonnet-macaque?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-03-21T10:01:18Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/dominican-church-lviv?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/dominican-church-lviv?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>photo</category><title>Dominican Church, Lviv</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=Dominican-Church-in-old-town-Lviv-2.webp" title="Dominican Church in old town Lviv"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=Dominican-Church-in-old-town-Lviv.webp" width="361" height="480" class="u-photo" alt="Dominican Church in old town Lviv" srcset="/image.axd?picture=Dominican-Church-in-old-town-Lviv.webp, /image.axd?picture=Dominican-Church-in-old-town-Lviv-1.webp 2x, /image.axd?picture=Dominican-Church-in-old-town-Lviv-2.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="exif"&gt;Google Pixel 8 Pro 18mm f2.8 1/237s ISO17&lt;/p&gt;
&lt;p&gt;Photo of the Dominican Church in Lviv old town, shot through Rynok Square.&lt;/p&gt;
</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/dominican-church-lviv?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-03-21T09:57:07Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/blr-muc?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/blr-muc?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>photo</category><title>BLR MUC</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=BLR-MUC-2.webp" title="BLR MUC"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=BLR-MUC.webp" width="630" height="354" class="u-photo" alt="BLR MUC" srcset="/image.axd?picture=BLR-MUC.webp, /image.axd?picture=BLR-MUC-1.webp 2x, /image.axd?picture=BLR-MUC-2.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="exif"&gt;Google Pixel 8 Pro 7mm f1.7 1/480s ISO21&lt;/p&gt;
&lt;p&gt;LH 765, A350-941, 692&lt;/p&gt;
</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/blr-muc?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-03-14T07:21:27Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/animation-of-us-pm25-air-pollution-in-2025?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/animation-of-us-pm25-air-pollution-in-2025?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>etc</category><title>Animation of US PM2.5 Air Pollution in 2025</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=PM-25-air-pollution-on-July-4-2025-AirNow-Data-continental-United-States-5.webp" title="PM 2.5 air pollution on July 4, 2025 (AirNow Data, continental United States)."&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=PM-25-air-pollution-on-July-4-2025-AirNow-Data-continental-United-States-3.webp" width="630" height="354" class="u-photo" alt="PM 2.5 air pollution on July 4, 2025 (AirNow Data, continental United States)." srcset="/image.axd?picture=PM-25-air-pollution-on-July-4-2025-AirNow-Data-continental-United-States-3.webp, /image.axd?picture=PM-25-air-pollution-on-July-4-2025-AirNow-Data-continental-United-States-4.webp 2x, /image.axd?picture=PM-25-air-pollution-on-July-4-2025-AirNow-Data-continental-United-States-5.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This video shows hourly PM2.5 air pollution across the United States for 2025:&lt;/p&gt;
&lt;div class="video-container"&gt;&lt;iframe id="player-gave" width="630" height="354" src="https://www.youtube.com/embed/xBslkyT_E3s?rel=0&amp;enablejsapi=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;I did the same thing for &lt;a href="https://ithoughthecamewithyou.com/post/animation-of-us-pm25-air-pollution-in-2023?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" target="_blank"&gt;2023&lt;/a&gt; using the Purple Air sensor network. Unfortunately they are now charging for access to the data, however the official AirNow network has an &lt;a href="https://docs.airnowapi.org/" target="_blank"&gt;API&lt;/a&gt; and so I used that instead. The lack of sensors at the local level is frustrating, but it works fine for this nationwide view.&lt;/p&gt;
&lt;p&gt;The 4th of July is pretty incredible (see the photo at the top of the post).&lt;/p&gt;
&lt;p&gt;In San Francisco this was a pretty mild year for wildfire smoke. We did see a few days in mid-July from the &lt;a href="https://www.baaqmd.gov/en/news-and-events/page-resources/2025-news/071125-aq-advisory" target="_blank"&gt;Butler and Green fires&lt;/a&gt;. &lt;a href="https://apnews.com/article/canadian-wildfires-smoke-air-pollution-minnesota-midwest-europe-24237c0043f70ed64db931cb2ce48b91" target="_blank"&gt;Canada&lt;/a&gt; was a big factor again, look particularly around June 3-5 and late July. And of course the &lt;a href="https://en.wikipedia.org/wiki/Palisades_Fire" target="_blank"&gt;Palisades&lt;/a&gt; fire, starting on Jan 7.&lt;/p&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/animation-of-us-pm25-air-pollution-in-2025?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-03-01T21:42:09Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/do-i-agree-with-san-francisco?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/do-i-agree-with-san-francisco?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>politics</category><title>Do I agree with San Francisco?</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=San-Francisco-Ballot-Measures-2.webp" title="San Francisco Ballot Measures"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=San-Francisco-Ballot-Measures.webp" width="630" height="364" class="u-photo" alt="San Francisco Ballot Measures" srcset="/image.axd?picture=San-Francisco-Ballot-Measures.webp, /image.axd?picture=San-Francisco-Ballot-Measures-1.webp 2x, /image.axd?picture=San-Francisco-Ballot-Measures-2.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve sometimes wondered how often I agree with San Francisco on the endless ballot measures. I have a vague sense after each election but I&amp;#39;ve never bothered with the bigger picture. Thanks to AI it&amp;#39;s now a pretty easy question to answer - I fed blog posts to ChatGPT and then the resulting data to Claude Opus to whip me up some python visualization. Which looks like this:&lt;/p&gt;
&lt;div&gt;                        &lt;script type="text/javascript"&gt;window.PlotlyConfig = {MathJaxConfig: 'local'};&lt;/script&gt;
        &lt;script charset="utf-8" src="https://cdn.plot.ly/plotly-3.3.1.min.js" integrity="sha256-4rD3fugVb/nVJYUv5Ky3v+fYXoouHaBSP20WIJuEiWg=" crossorigin="anonymous"&gt;&lt;/script&gt;                &lt;div id="62073862-0ae3-49b2-b9ee-ed132a30cb23" class="plotly-graph-div" style="height:100%; width:100%;"&gt;&lt;/div&gt;            &lt;script type="text/javascript"&gt;                window.PLOTLYENV=window.PLOTLYENV || {};                                if (document.getElementById("62073862-0ae3-49b2-b9ee-ed132a30cb23")) {                    Plotly.newPlot(                        "62073862-0ae3-49b2-b9ee-ed132a30cb23",                        [{"hovertemplate":"Election Date=%{x}\u003cbr\u003eAgreement (%)=%{y}\u003cextra\u003e\u003c\u002fextra\u003e","legendgroup":"","line":{"color":"#636efa","dash":"solid","width":4},"marker":{"symbol":"circle"},"mode":"lines+markers","name":"","orientation":"v","showlegend":false,"x":["2012-11-06T00:00:00.000000","2014-11-04T00:00:00.000000","2016-06-07T00:00:00.000000","2016-11-08T00:00:00.000000","2020-11-03T00:00:00.000000","2022-06-07T00:00:00.000000","2022-11-08T00:00:00.000000","2024-03-05T00:00:00.000000","2024-11-05T00:00:00.000000"],"xaxis":"x","y":{"dtype":"f8","bdata":"AAAAAAAAWUAzMzMzM9NUQAAAAAAAAElAAAAAAAAAUUAzMzMzMxNXQAAAAAAAADlAzczMzMyMTEDNzMzMzGxVQDMzMzMzU1JA"},"yaxis":"y","type":"scatter"}],                        {"template":{"data":{"histogram2dcontour":[{"type":"histogram2dcontour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"choropleth":[{"type":"choropleth","colorbar":{"outlinewidth":0,"ticks":""}}],"histogram2d":[{"type":"histogram2d","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"heatmap":[{"type":"heatmap","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"contourcarpet":[{"type":"contourcarpet","colorbar":{"outlinewidth":0,"ticks":""}}],"contour":[{"type":"contour","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"surface":[{"type":"surface","colorbar":{"outlinewidth":0,"ticks":""},"colorscale":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]]}],"mesh3d":[{"type":"mesh3d","colorbar":{"outlinewidth":0,"ticks":""}}],"scatter":[{"fillpattern":{"fillmode":"overlay","size":10,"solidity":0.2},"type":"scatter"}],"parcoords":[{"type":"parcoords","line":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolargl":[{"type":"scatterpolargl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"bar":[{"error_x":{"color":"#2a3f5f"},"error_y":{"color":"#2a3f5f"},"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"bar"}],"scattergeo":[{"type":"scattergeo","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterpolar":[{"type":"scatterpolar","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"histogram":[{"marker":{"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"histogram"}],"scattergl":[{"type":"scattergl","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatter3d":[{"type":"scatter3d","line":{"colorbar":{"outlinewidth":0,"ticks":""}},"marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermap":[{"type":"scattermap","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattermapbox":[{"type":"scattermapbox","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scatterternary":[{"type":"scatterternary","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"scattercarpet":[{"type":"scattercarpet","marker":{"colorbar":{"outlinewidth":0,"ticks":""}}}],"carpet":[{"aaxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"baxis":{"endlinecolor":"#2a3f5f","gridcolor":"white","linecolor":"white","minorgridcolor":"white","startlinecolor":"#2a3f5f"},"type":"carpet"}],"table":[{"cells":{"fill":{"color":"#EBF0F8"},"line":{"color":"white"}},"header":{"fill":{"color":"#C8D4E3"},"line":{"color":"white"}},"type":"table"}],"barpolar":[{"marker":{"line":{"color":"#E5ECF6","width":0.5},"pattern":{"fillmode":"overlay","size":10,"solidity":0.2}},"type":"barpolar"}],"pie":[{"automargin":true,"type":"pie"}]},"layout":{"autotypenumbers":"strict","colorway":["#636efa","#EF553B","#00cc96","#ab63fa","#FFA15A","#19d3f3","#FF6692","#B6E880","#FF97FF","#FECB52"],"font":{"color":"#2a3f5f"},"hovermode":"closest","hoverlabel":{"align":"left"},"paper_bgcolor":"white","plot_bgcolor":"#E5ECF6","polar":{"bgcolor":"#E5ECF6","angularaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"radialaxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"ternary":{"bgcolor":"#E5ECF6","aaxis":{"gridcolor":"white","linecolor":"white","ticks":""},"baxis":{"gridcolor":"white","linecolor":"white","ticks":""},"caxis":{"gridcolor":"white","linecolor":"white","ticks":""}},"coloraxis":{"colorbar":{"outlinewidth":0,"ticks":""}},"colorscale":{"sequential":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"sequentialminus":[[0.0,"#0d0887"],[0.1111111111111111,"#46039f"],[0.2222222222222222,"#7201a8"],[0.3333333333333333,"#9c179e"],[0.4444444444444444,"#bd3786"],[0.5555555555555556,"#d8576b"],[0.6666666666666666,"#ed7953"],[0.7777777777777778,"#fb9f3a"],[0.8888888888888888,"#fdca26"],[1.0,"#f0f921"]],"diverging":[[0,"#8e0152"],[0.1,"#c51b7d"],[0.2,"#de77ae"],[0.3,"#f1b6da"],[0.4,"#fde0ef"],[0.5,"#f7f7f7"],[0.6,"#e6f5d0"],[0.7,"#b8e186"],[0.8,"#7fbc41"],[0.9,"#4d9221"],[1,"#276419"]]},"xaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"yaxis":{"gridcolor":"white","linecolor":"white","ticks":"","title":{"standoff":15},"zerolinecolor":"white","automargin":true,"zerolinewidth":2},"scene":{"xaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"yaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2},"zaxis":{"backgroundcolor":"#E5ECF6","gridcolor":"white","linecolor":"white","showbackground":true,"ticks":"","zerolinecolor":"white","gridwidth":2}},"shapedefaults":{"line":{"color":"#2a3f5f"}},"annotationdefaults":{"arrowcolor":"#2a3f5f","arrowhead":0,"arrowwidth":1},"geo":{"bgcolor":"white","landcolor":"#E5ECF6","subunitcolor":"white","showland":true,"showlakes":true,"lakecolor":"white"},"title":{"x":0.05},"mapbox":{"style":"light"}}},"xaxis":{"anchor":"y","domain":[0.0,1.0],"title":{"text":"Election Date"}},"yaxis":{"anchor":"x","domain":[0.0,1.0],"title":{"text":"Agreement (%)"},"range":[0,105]},"legend":{"tracegroupgap":0},"title":{"text":"How often do I agree with San Francisco on ballot measures?"}},                        {"responsive": true}                    )                };            &lt;/script&gt;        &lt;/div&gt;
&lt;p&gt;That&amp;#39;s a decade of trying to understand what the measures actually mean and do the right thing.&lt;/p&gt;
&lt;p&gt;Maybe there is a downward trend, but throw away the outliers and I&amp;#39;m pretty solidly around 70%. San Francisco should save the money and just ask me.&lt;/p&gt;
</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/do-i-agree-with-san-francisco?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-02-23T02:29:29Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/workspace-studio-and-readonly-sheets?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/workspace-studio-and-readonly-sheets?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>code</category><title>Workspace Studio and Read-only Sheets</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=A-Google-Workspace-Studio-Flow-2.webp" title="A Google Workspace Studio Flow"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=A-Google-Workspace-Studio-Flow.webp" width="630" height="242" class="u-photo" alt="A Google Workspace Studio Flow" srcset="/image.axd?picture=A-Google-Workspace-Studio-Flow.webp, /image.axd?picture=A-Google-Workspace-Studio-Flow-1.webp 2x, /image.axd?picture=A-Google-Workspace-Studio-Flow-2.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;As an Apps Script addict I was excited to experiment with Google Workspace Studio. It&amp;#39;s a no code automation tool in the typical flowchart style with the addition of Gemini, so you can use AI for decisions and text manipulation. Unfortunately it failed hard on my first task.&lt;/p&gt;
&lt;p&gt;I have a spreadsheet that &lt;a href="https://ithoughthecamewithyou.com/post/export-google-fit-daily-steps-to-a-google-sheet?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;pulls in Google Fit data&lt;/a&gt;, and another one that combines that with other goals to create an overall lifestyle score. Occasionally I copy data from one sheet to the other and automating this has been on my todo list for years with absolutely no chance of getting to done. Workspace Studio should have made this easy.&lt;/p&gt;
&lt;p&gt;Building the flow was straightforward, but the steps that write new data were flagged as being in an error state, although no actual errors were flagged in the configuration for the steps. Opening and closing the flow unsettlingly cleared the errors. I started the flow and hoped for the best, but got this error:&lt;/p&gt;
&lt;blockquote&gt;&amp;quot;Couldn&amp;#39;t complete. Check that the spreadsheet is private and doesn&amp;#39;t use the IMPORTRANGE function.&amp;quot;&lt;/blockquote&gt;
&lt;p&gt;At first I thought this must be inverted and the sheet needed to be shared in some way... but no, it&amp;#39;s &lt;a href="https://support.google.com/workspace-studio/answer/16765661"&gt;true&lt;/a&gt;, you can only update a private sheet. Which is useful in a trees falling with no one watching kind of way.&lt;/p&gt;
&lt;p&gt;I share this mostly because googling the error came up short (and the AI overview is unhelpfully talking about sharing the sheet). Workspace Studio is only a few months old and hopefully this limitation will be fixed. There are some nice features in preview, like webhooks, raising the prospect of handing over to apps script if the flow can&amp;#39;t do quite what you need. This should be a nice piece of the AI automation puzzle as it matures.&lt;/p&gt;
</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/workspace-studio-and-readonly-sheets?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-02-22T18:05:14Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/autonomy-minus?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/autonomy-minus?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>etc</category><title>Autonomy Minus</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=A-Turn-Signal-Recently-2.webp" title="A Turn Signal, Recently"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=A-Turn-Signal-Recently.webp" width="630" height="351" class="u-photo" alt="A Turn Signal, Recently" srcset="/image.axd?picture=A-Turn-Signal-Recently.webp, /image.axd?picture=A-Turn-Signal-Recently-1.webp 2x, /image.axd?picture=A-Turn-Signal-Recently-2.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Rivian is about to start &lt;a href="https://rivian.com/autonomy"&gt;charging for cruise control&lt;/a&gt;. Which sucks. It&amp;#39;s handy for long stretches of I-5, but generally I enjoy driving so I&amp;#39;m not planning to shell out unless they offer a day pass.&lt;/p&gt;
&lt;p&gt;There is something I would pay for though.&lt;/p&gt;
&lt;p&gt;Fix the fucking turn signal.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m pretty sure this wouldn&amp;#39;t even need an AI supercomputer. I&amp;#39;m not an automotive engineer but I&amp;#39;ve sketched out a rough design for this:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;When you are already signaling one direction, moving the stalk the other way just cancels the signal.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I should probably file a patent before hitting post.&lt;/p&gt;
&lt;p&gt;Every car I have owned or rented made the other choice and so trying to cancel the turn signal just lights up the opposite direction. A behavior I need once a decade or so, but the rest of the time I just completed a less than 90 degree turn and I&amp;#39;m ready to stop signaling. Instead I have turn signal tourette&amp;#39;s for the next mile. I&amp;#39;d pay a buck or two a month to not do that.&lt;/p&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/autonomy-minus?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-02-22T01:46:09Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/je-suis-stack-overflow?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/je-suis-stack-overflow?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>etc</category><title>Je Suis Stack Overflow</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=The-Fediverse-1.webp" title="The Fediverse"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=The-Fediverse.webp" width="630" height="420" class="u-photo" alt="The Fediverse" srcset="/image.axd?picture=The-Fediverse.webp, /image.axd?picture=The-Fediverse-1.webp 2x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;In terms of traffic this blog has always been driven by code. Extracting step counts from Google Fit, automating Azure monitoring, pushing the limits of Apps Script, and so on. Over the past year referral traffic is solid, but Google Search isn&amp;#39;t interested any more. It&amp;#39;s the same trend as Stack Overflow - programming questions are now answered by LLMs. I do the same thing and so I&amp;#39;m responsible as a user (I used to answer my own questions disturbingly often), and as a content creator (according to WaPo this blog is 0.00002% of &lt;a href="https://www.washingtonpost.com/technology/interactive/2023/ai-chatbot-learning/"&gt;CommonCrawl&lt;/a&gt;: transformers also die in darkness).&lt;/p&gt;
&lt;p&gt;Can I be a social network instead?&lt;/p&gt;
&lt;p&gt;I have had a vague &lt;a href="https://ithoughthecamewithyou.com/post/federation?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;integration&lt;/a&gt; with &lt;a href="https://fed.brid.gy/web/ithoughthecamewithyou.com"&gt;Bridgy Fed&lt;/a&gt; for a while. This syndicates posts into the Fediverse and will accept comments back but has always been a bit one sided. I just tightened this up a bit and added support for follows, and did a little following. Implementing all the microformats is a lot easier with LLMs. I&amp;#39;m never going back to a social network that I don&amp;#39;t own, even a well intentioned Mastodon server. But I&amp;#39;ll interoperate all day and iterate in an &lt;a href="https://indieweb.org/"&gt;IndieWeb&lt;/a&gt; direction.&lt;/p&gt;
&lt;p&gt;You can follow @ithoughthecamewithyou.com@ithoughthecamewithyou.com and starting now I can follow back.&lt;/p&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/je-suis-stack-overflow?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-02-09T01:42:07Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/links-for-february-2026?bf=2003025c74b641c28146e4a88635854f?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/links-for-february-2026?bf=2003025c74b641c28146e4a88635854f?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>etc</category><title>Links for February 2026</title><description>&lt;div class="h-entry" id="faa30b7bffda4ad8874066fc78ae971d"&gt;&lt;p&gt;I'm following &lt;a class="u-follow-of" rel="nofollow noreferrer noopener" href="https://social.mitexleo.one/@ml"&gt;@ml@social.mitexleo.one&lt;/a&gt;. &lt;a class="u-url u-uid" title="Permalink" href="https://ithoughthecamewithyou.com/post/links-for-february-2026#faa30b7bffda4ad8874066fc78ae971d?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;&amp;#8734;&lt;/a&gt;&lt;a class="u-bridgy-fed" href="https://fed.brid.gy/" rel="nofollow noreferrer noopener" hidden="hidden"&gt;&lt;/a&gt;&lt;time class="dt-published" datetime="2026-02-09T00:58:44Z"&gt;&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;hr&gt;&lt;div class="h-entry" id="ef96c169dfc7442cbb94a3156c4278b0"&gt;&lt;p&gt;I'm following &lt;a class="u-follow-of" rel="nofollow noreferrer noopener" href="https://mamot.fr/@retiolus"&gt;@retiolus@mamot.fr&lt;/a&gt;. &lt;a class="u-url u-uid" title="Permalink" href="https://ithoughthecamewithyou.com/post/links-for-february-2026#ef96c169dfc7442cbb94a3156c4278b0?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;&amp;#8734;&lt;/a&gt;&lt;a class="u-bridgy-fed" href="https://fed.brid.gy/" rel="nofollow noreferrer noopener" hidden="hidden"&gt;&lt;/a&gt;&lt;time class="dt-published" datetime="2026-02-09T01:02:52Z"&gt;&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;hr&gt;&lt;div class="h-entry" id="8f0b52b843c64c49bf18c4aecff3f4cd"&gt;&lt;p&gt;I'm following &lt;a class="u-follow-of" rel="nofollow noreferrer noopener" href="https://mastodon.social/@matokie"&gt;@matokie@mastodon.social&lt;/a&gt;. &lt;a class="u-url u-uid" title="Permalink" href="https://ithoughthecamewithyou.com/post/links-for-february-2026#8f0b52b843c64c49bf18c4aecff3f4cd?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;&amp;#8734;&lt;/a&gt;&lt;a class="u-bridgy-fed" href="https://fed.brid.gy/" rel="nofollow noreferrer noopener" hidden="hidden"&gt;&lt;/a&gt;&lt;time class="dt-published" datetime="2026-02-09T01:15:56Z"&gt;&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;hr&gt;&lt;div class="h-entry" id="2003025c74b641c28146e4a88635854f"&gt;&lt;p&gt;I'm following &lt;a class="u-follow-of" rel="nofollow noreferrer noopener" href="https://messydesk.social/@mikef"&gt;@mikef@messydesk.social&lt;/a&gt;. &lt;a class="u-url u-uid" title="Permalink" href="https://ithoughthecamewithyou.com/post/links-for-february-2026#2003025c74b641c28146e4a88635854f?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;&amp;#8734;&lt;/a&gt;&lt;a class="u-bridgy-fed" href="https://fed.brid.gy/" rel="nofollow noreferrer noopener" hidden="hidden"&gt;&lt;/a&gt;&lt;time class="dt-published" datetime="2026-02-09T01:16:31Z"&gt;&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;hr&gt;&lt;div class="h-entry" id="3f23524f64534078a34e2646ac350530"&gt;&lt;div class="e-content"&gt;&lt;blockquote&gt;&lt;a class="u-bookmark-of" href="https://myemail.constantcontact.com/Virginia-Senate-becomes-44th-state-house-to-pass-National-Popular-Vote.html?soid=1116971938310&amp;aid=cLhScdup_5E" title="Virginia Senate Becomes 44th State Legislative Chamber to Pass National Popular Vote clipped to ITHCWY on 2026-02-09"&gt;Virginia Senate Becomes 44th State Legislative Chamber to Pass National Popular Vote&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;13 more electoral college votes towards a national popular vote? Go Virginia!   &lt;a href="https://ithoughthecamewithyou.com/tag/national popular vote?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#nationalpopularvote&lt;/a&gt;  &lt;a href="https://ithoughthecamewithyou.com/tag/uspol?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#uspol&lt;/a&gt;  &lt;a href="https://ithoughthecamewithyou.com/tag/npvic?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#npvic&lt;/a&gt;  &lt;a href="https://ithoughthecamewithyou.com/tag/political reform?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#politicalreform&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;a class="u-url u-uid" title="Permalink" href="https://ithoughthecamewithyou.com/post/links-for-february-2026#3f23524f64534078a34e2646ac350530?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;&amp;#8734;&lt;/a&gt;&lt;a class="u-bridgy-fed" href="https://fed.brid.gy/" rel="nofollow noreferrer noopener" hidden="hidden"&gt;&lt;/a&gt;&lt;time class="dt-published" datetime="2026-02-09T22:42:02Z"&gt;&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr&gt;&lt;div class="h-entry" id="ee9561a91a7e4182aab723e5096742fc"&gt;&lt;span class="p-name" hidden="hidden"&gt;This drives me nuts every time I open apps script and need to switch the account.&lt;/span&gt;&lt;div class="e-content"&gt;&lt;blockquote&gt;&lt;a class="u-bookmark-of" href="https://issuetracker.google.com/issues/160854209" title="Google Apps Script created by primary email (domain), and it opens the blank script in secondary (gmail) clipped to ITHCWY on 2026-02-11"&gt;Google Apps Script created by primary email (domain), and it opens the blank script in secondary (gmail)&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;This drives me nuts every time I open apps script and need to switch the account.  &lt;a href="https://ithoughthecamewithyou.com/tag/google?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#google&lt;/a&gt;  &lt;a href="https://ithoughthecamewithyou.com/tag/apps script?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#appsscript&lt;/a&gt;  &lt;a href="https://ithoughthecamewithyou.com/tag/gas?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#gas&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;a class="u-url u-uid" title="Permalink" href="https://ithoughthecamewithyou.com/post/links-for-february-2026#ee9561a91a7e4182aab723e5096742fc?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;&amp;#8734;&lt;/a&gt;&lt;a class="u-bridgy-fed" href="https://fed.brid.gy/" rel="nofollow noreferrer noopener" hidden="hidden"&gt;&lt;/a&gt;&lt;time class="dt-published" datetime="2026-02-11T21:04:08Z"&gt;&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr&gt;&lt;div class="h-entry" id="dbcf5450afcc493aa457d07ace970a24"&gt;&lt;div class="e-content"&gt;&lt;blockquote&gt;&lt;a href="https://www.nytimes.com/video/business/100000010709300/how-ice-is-pushing-tech-companies-to-identify-protesters.html" title="How ICE Is Pushing Tech Companies to Identify Protesters clipped to ITHCWY on 2026-02-14"&gt;How ICE Is Pushing Tech Companies to Identify Protesters&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;No need for subpoenas, it's &lt;a href="https://ithoughthecamewithyou.com/post/abolish-ice-ocean-beach-protest?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;me&lt;/a&gt;!  &lt;a href="https://ithoughthecamewithyou.com/tag/ice?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#ice&lt;/a&gt;  &lt;a href="https://ithoughthecamewithyou.com/tag/resist?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#resist&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;a class="u-url u-uid" title="Permalink" href="https://ithoughthecamewithyou.com/post/links-for-february-2026#dbcf5450afcc493aa457d07ace970a24?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;&amp;#8734;&lt;/a&gt;&lt;a class="u-bridgy-fed" href="https://fed.brid.gy/" rel="nofollow noreferrer noopener" hidden="hidden"&gt;&lt;/a&gt;&lt;time class="dt-published" datetime="2026-02-14T20:09:18Z"&gt;&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;hr&gt;&lt;div class="h-entry" id="6615b0b2df2749a381c2220637b8224b"&gt;&lt;p&gt;I'm following &lt;a class="u-follow-of" rel="nofollow noreferrer noopener" href="https://avgeek.social/@AirlineReporter"&gt;@AirlineReporter@avgeek.social&lt;/a&gt;. &lt;a class="u-url u-uid" title="Permalink" href="https://ithoughthecamewithyou.com/post/links-for-february-2026#6615b0b2df2749a381c2220637b8224b?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;&amp;#8734;&lt;/a&gt;&lt;a class="u-bridgy-fed" href="https://fed.brid.gy/" rel="nofollow noreferrer noopener" hidden="hidden"&gt;&lt;/a&gt;&lt;time class="dt-published" datetime="2026-02-14T20:54:16Z"&gt;&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;hr&gt;&lt;div class="h-entry" id="7487bd89df7d47f19b4f7e50f164642d"&gt;&lt;div class="e-content"&gt;&lt;blockquote&gt;&lt;a href="https://huggingface.co/spaces/microsoft/TRELLIS.2" title="Image to 3D Asset with TRELLIS.2 clipped to ITHCWY on 2026-02-15"&gt;Image to 3D Asset with TRELLIS.2&lt;/a&gt;&lt;/blockquote&gt;&lt;p&gt;This is cool, a Microsoft model to convert a photo to a 3D model. I ended up with a dog with two tails but otherwise pretty decent.   &lt;a href="https://ithoughthecamewithyou.com/tag/3d?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#3d&lt;/a&gt;  &lt;a href="https://ithoughthecamewithyou.com/tag/ml?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#ml&lt;/a&gt;  &lt;a href="https://ithoughthecamewithyou.com/tag/microsoft?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#microsoft&lt;/a&gt; &lt;/p&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;&lt;a class="u-url u-uid" title="Permalink" href="https://ithoughthecamewithyou.com/post/links-for-february-2026#7487bd89df7d47f19b4f7e50f164642d?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;&amp;#8734;&lt;/a&gt;&lt;a class="u-bridgy-fed" href="https://fed.brid.gy/" rel="nofollow noreferrer noopener" hidden="hidden"&gt;&lt;/a&gt;&lt;time class="dt-published" datetime="2026-02-15T20:36:39Z"&gt;&lt;/time&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/links-for-february-2026?bf=2003025c74b641c28146e4a88635854f?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-02-09T00:43:39Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/route-map?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/route-map?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>etc</category><title>Route Map</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/images/route-map.webp?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" title="Robert Ellison's Route Map"&gt;&lt;img src="https://ithoughthecamewithyou.com/images/route-map.webp" width="630" height="315" alt="Robert Ellison's Route Map"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I have been in the habit of posting each plane I fly on for a long time.&lt;/p&gt;
&lt;p&gt;This started on Twitter, where for a while there was this #boarding hashtag so you could chat with people in transit from the same airport by IATA code (like #boarding #sfo). That dropped out of usage, because why would you do that, but I continued on Facebook until I &lt;a href="https://ithoughthecamewithyou.com/post/pulling-the-plug-on-facebook-and-twitter-tweet-archive?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;deleted social media&lt;/a&gt; in 2018. After a brief lapse I started posting to my blog. I have a vague intention to resurrect some older flights with AI and build out a more complete history.&lt;/p&gt;
&lt;p&gt;After adding flights here for a few years it seemed like a good idea to do some visualization. The image above (click for a larger version) is my current route map, updated after each flight. The routes are great circles rather than the actual track (created via the .net version of &lt;a href="https://github.com/noelex/GeographicLib.NET"&gt;GeographicLib&lt;/a&gt; and this &lt;a href="https://github.com/ip2location/ip2location-iata-icao-real"&gt;geolocation of airports&lt;/a&gt;). You can view individual flights &lt;a href="https://ithoughthecamewithyou.com/tag/plane?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;here&lt;/a&gt;. I could probably use a carbon offset or two (unless &lt;a href="https://ithoughthecamewithyou.com/post/extreme-environmentalism?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;this&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Required disclaimer:&lt;/p&gt;
&lt;p&gt;&lt;i&gt;This site or product includes IATA/ICAO List data available from &lt;a href="https://github.com/ip2location/ip2location-iata-icao-real"&gt;https://github.com/ip2location/ip2location-iata-icao&lt;/a&gt;.&lt;/i&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Updated 2026-02-07 23:07:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The vague intention turned into a mild obsession and so I mined email for more flights. I have email going back to &lt;a href="https://ithoughthecamewithyou.com/post/i-love-email?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;1996&lt;/a&gt; and quickly whipped up two scripts via GitHub Copilot and Claude Sonnet 4.5 to process them. The first searched and downloaded any likely candidates from gmail and converted the HTML email to markdown to save on tokens. The second ran all the candidates through GPT 5 mini to extract the details. I then added a few older flights from memory resulting in the image above. There are some work emails I don&amp;#39;t have access to so I&amp;#39;m sure it&amp;#39;s not totally comprehensive, but I&amp;#39;m now up to 300 flights and approximately 868,381 miles.&lt;/p&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/route-map?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-02-01T23:38:00Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/abolish-ice-ocean-beach-protest?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/abolish-ice-ocean-beach-protest?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>politics</category><title>Abolish ICE (Ocean Beach Protest)</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=Abolish-ICE-1.webp" title="Abolish ICE"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=Abolish-ICE.webp" width="630" height="263" class="u-photo" alt="Abolish ICE" srcset="/image.axd?picture=Abolish-ICE.webp, /image.axd?picture=Abolish-ICE-1.webp 2x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abolish ICE protest at Ocean Beach on Jan 31, 2026. We&amp;#39;re in the top right of the B. Photo from &lt;a href="https://www.yahoo.com/news/articles/photos-hundreds-f-protesters-form-215320137.html"&gt;Yahoo News&lt;/a&gt;.&lt;/p&gt;
</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/abolish-ice-ocean-beach-protest?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-02-01T17:54:08Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/dfw-sfo?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/dfw-sfo?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>photo</category><title>DFW SFO</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=DFW-SFO-2.webp" title="DFW SFO"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=DFW-SFO.webp" width="630" height="354" class="u-photo" alt="DFW SFO" srcset="/image.axd?picture=DFW-SFO.webp, /image.axd?picture=DFW-SFO-1.webp 2x, /image.axd?picture=DFW-SFO-2.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="exif"&gt;Google Pixel 8 Pro 2mm f2.0 1/1,500s ISO41&lt;/p&gt;
&lt;p&gt;AA 810, A321-231, 06236&lt;/p&gt;
</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/dfw-sfo?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-01-30T21:58:37Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/lhr-dfw?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/lhr-dfw?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>photo</category><title>LHR DFW</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=LHR-DFW-2.webp" title="LHR DFW"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=LHR-DFW.webp" width="630" height="354" class="u-photo" alt="LHR DFW" srcset="/image.axd?picture=LHR-DFW.webp, /image.axd?picture=LHR-DFW-1.webp 2x, /image.axd?picture=LHR-DFW-2.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="exif"&gt;Google Pixel 8 Pro 7mm f1.7 1/15s ISO96&lt;/p&gt;
&lt;p&gt;AA 51, 777-323, 31549&lt;/p&gt;
</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/lhr-dfw?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-01-26T07:27:21Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/lets-give-trident-to-denmark?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/lets-give-trident-to-denmark?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>politics</category><title>Let's Give Trident to Denmark</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=Lets-Give-Trident-to-Denmark-1.webp" title="Let&amp;#39;s Give Trident to Denmark"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=Lets-Give-Trident-to-Denmark.webp" width="630" height="420" class="u-photo" alt="Let&amp;#39;s Give Trident to Denmark" srcset="/image.axd?picture=Lets-Give-Trident-to-Denmark.webp, /image.axd?picture=Lets-Give-Trident-to-Denmark-1.webp 2x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Starmer might start to do better in the polls if he arms Denmark with Trident. Trump seems to respond better to strength rather than weakness, and a deterrent if Kalaallit Nunaata Radioa [1] ever goes off the air could be established.&lt;/p&gt;
&lt;p&gt;This might seem impractical. The UK needs a nuclear option and doesn&amp;#39;t have much to give. But we don&amp;#39;t need to hand over subs and train the Danish navy. Unlike the US there isn&amp;#39;t a complicated nuclear football and authenticated launch sequence. We could just add the Danish prime minister to the chain of command. Some simple enabling legislation, and two envelopes in the safe instead of one. Only Mette Frederiksen would know the contents of the second envelope.&lt;/p&gt;
&lt;p&gt;This is crazy, but it hasn&amp;#39;t been a normal January and at some point the policy of appeasement has to end.&lt;/p&gt;
&lt;p&gt;[1] I once listened to a Radio 4 Today Program interview with a Trident submarine commander. He said that every morning at 6am they came up to periscope depth and listened for the Today Program. If he couldn&amp;#39;t find it then it was safe to assume that civilization had ended and he was free to unleash armageddon. The very next day the Today Program was off air due to strike, and I was briefly terrified. It turns out they check &lt;a href="https://www.businessinsider.com/bbc-radio-show-may-be-preventing-nuclear-apocalypse-2018-8"&gt;three times&lt;/a&gt;.&lt;/p&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/lets-give-trident-to-denmark?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-01-18T00:09:42Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/blog-engine-upgrade?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/blog-engine-upgrade?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>code</category><title>Blog Engine Upgrade</title><description>&lt;p&gt;ITHCWY has been running on ASP.NET 4.8 for a long time. I&amp;#39;ve been putting off the upgrade as the official Microsoft documentation says something close to &amp;#39;your funeral&amp;#39;. Visual Studio Copilot added a modernization agent. It claimed to have generated a plan, but the file it insisted it had just written was hallucinated. So I rolled up my sleeves and did it the hard way.&lt;/p&gt;
&lt;p&gt;Hard is an overstatement. I did some much needed refactoring and jettisoned a bunch of dead code. The regular Copilot (via Claude Sonnet 4.5) was a big help on things that didn&amp;#39;t exist any more or needed to be done differently. The new OutputCache refused to disengage until I entirely killed the default and I need to spend some more time there. It seems to matter which order you enable server features which is moderately terrifying but probably doesn&amp;#39;t need to be touched often. It&amp;#39;s certainly better than poking around in web.config and hoping for the best. If you&amp;#39;re reading this then it has been served by asp.net core 10.&lt;/p&gt;
&lt;p&gt;Probably some subtle things are broken and it usually takes a while to mop everything up after a migration this big. If you run into any problems please &lt;a href="https://ithoughthecamewithyou.com/robertellison?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" target="_blank"&gt;get in touch&lt;/a&gt;.&lt;/p&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/blog-engine-upgrade?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-01-06T02:46:06Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/san-francisco-to-lake-tahoe?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/san-francisco-to-lake-tahoe?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>timelapse</category><title>San Francisco to Lake Tahoe</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=Some-snow-on-the-way-to-TahoeMeta-Hyperlapse-of-a-thirteen-hour-drive-to-Lake-Tahoe-from-San-Francisco-Rivian-Drive-Cam-2.jpg" title="Some snow on the way to TahoeMeta: Hyperlapse of a thirteen hour drive to Lake Tahoe from San Francisco (Rivian Drive Cam)"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=Some-snow-on-the-way-to-TahoeMeta-Hyperlapse-of-a-thirteen-hour-drive-to-Lake-Tahoe-from-San-Francisco-Rivian-Drive-Cam.jpg" width="630" height="354" class="u-photo" alt="Some snow on the way to TahoeMeta: Hyperlapse of a thirteen hour drive to Lake Tahoe from San Francisco (Rivian Drive Cam)" srcset="/image.axd?picture=Some-snow-on-the-way-to-TahoeMeta-Hyperlapse-of-a-thirteen-hour-drive-to-Lake-Tahoe-from-San-Francisco-Rivian-Drive-Cam.jpg, /image.axd?picture=Some-snow-on-the-way-to-TahoeMeta-Hyperlapse-of-a-thirteen-hour-drive-to-Lake-Tahoe-from-San-Francisco-Rivian-Drive-Cam-1.jpg 2x, /image.axd?picture=Some-snow-on-the-way-to-TahoeMeta-Hyperlapse-of-a-thirteen-hour-drive-to-Lake-Tahoe-from-San-Francisco-Rivian-Drive-Cam-2.jpg 3x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Hyperlapse from San Francisco to Lake Tahoe:&lt;/p&gt;
&lt;div class="video-container"&gt;&lt;iframe id="player-gave" width="630" height="354" src="https://www.youtube.com/embed/-y14wEyl10g?rel=0&amp;enablejsapi=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;I-80, SR 49, SR20, I-80 some more, SR 267 to Kings Beach.&lt;/p&gt;
&lt;p&gt;This didn&amp;#39;t look like a terrible idea the morning of December 26 (Boxing Day), the weather forecast was good. Google Maps predicted a little under four hours. Then it started to snow. And then there were many crashes, I-80 shut in both directions and the resulting jam took over six hours to clear.&lt;/p&gt;
&lt;p&gt;Most of the hyperlapse runs at a 80-130x speedup. The jam portion is over 1000x.&lt;/p&gt;
&lt;p&gt;In case you are insane here is the full drive, minus charging and food stops:&lt;/p&gt;
&lt;div class="video-container"&gt;&lt;iframe id="player-gave" width="630" height="354" src="https://www.youtube.com/embed/wVUHR9SVrY4?rel=0&amp;enablejsapi=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
&lt;p&gt;Shot on Rivian Drive Cam, post-processed as per &lt;a href="https://ithoughthecamewithyou.com/post/fix-rivian-drive-cam-distortion?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" target="_blank"&gt;this post&lt;/a&gt;, edited in DaVinci Resolve Studio, music hallucinated by Eleven Labs.&lt;/p&gt;
</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/san-francisco-to-lake-tahoe?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2026-01-01T21:09:03Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/links-for-december-2025?bf=d26d428a022f467e9f6c70f40b676fda?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/links-for-december-2025?bf=d26d428a022f467e9f6c70f40b676fda?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>etc</category><title>Links for December 2025</title><description>&lt;div class="h-entry" id="d26d428a022f467e9f6c70f40b676fda"&gt;&lt;blockquote class="e-content"&gt;&lt;a href="https://missionlocal.org/2025/12/sf-claude-albino-alligator-street-name-poll/" title="Mission Local: Which street will S.F. name for Claude? Vote here in the official poll. clipped to ItHCWY on 2025-12-16"&gt;Mission Local: Which street will S.F. name for Claude? Vote here in the official poll.&lt;/a&gt;&lt;/blockquote&gt;&lt;p class="p-name"&gt;Market Street, surely?  &lt;a href="https://ithoughthecamewithyou.com/tag/anthropic?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#anthropic&lt;/a&gt; &lt;/p&gt;&lt;a class="u-bridgy-fed" href="https://fed.brid.gy/" rel="nofollow noreferrer noopener" hidden="hidden"&gt;&lt;/a&gt;&lt;/div&gt;&lt;p&gt;--&lt;/p&gt;&lt;div class="h-entry" id="4d0a2f9280284268882b88166162b84a"&gt;&lt;blockquote class="e-content"&gt;&lt;a href="https://devblogs.microsoft.com/visualstudio/visual-studio-november-update-visual-studio-2026-cloud-agent-preview-and-more/" title="Visual Studio November Update – Visual Studio 2026, Cloud Agent Preview, and more clipped to ItHCWY on 2025-12-21"&gt;Visual Studio November Update – Visual Studio 2026, Cloud Agent Preview, and more&lt;/a&gt;&lt;/blockquote&gt;&lt;p class="p-name"&gt;I may have solved the AI productivity paradox. Coding agents are neat, but Visual Studio now needs a multi-gigabyte update every time you run it.   &lt;a href="https://ithoughthecamewithyou.com/tag/ai?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#ai&lt;/a&gt;  &lt;a href="https://ithoughthecamewithyou.com/tag/productivity?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" class="p-category" rel="nofollow"&gt;#productivity&lt;/a&gt; &lt;/p&gt;&lt;a class="u-bridgy-fed" href="https://fed.brid.gy/" rel="nofollow noreferrer noopener" hidden="hidden"&gt;&lt;/a&gt;&lt;/div&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/links-for-december-2025?bf=d26d428a022f467e9f6c70f40b676fda?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2025-12-16T18:33:56Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/robs-basilisk?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/robs-basilisk?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>etc</category><title>Rob's Basilisk</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=Robs-Basilisk-2.jpg" title="Rob&amp;#39;s Basilisk"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=Robs-Basilisk.jpg" width="630" height="343" class="u-photo" alt="Rob&amp;#39;s Basilisk" srcset="/image.axd?picture=Robs-Basilisk.jpg, /image.axd?picture=Robs-Basilisk-1.jpg 2x, /image.axd?picture=Robs-Basilisk-2.jpg 3x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Roko%27s_basilisk"&gt;Roko&amp;#39;s basilisk&lt;/a&gt; is the improbable theory that advanced AI in the future will punish anyone who failed to help speed the development of the AI.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m coining Rob&amp;#39;s basilisk, which is the far more likely theory that AI will eventually torture people who made it watch home security cameras. Here&amp;#39;s a gem from mine:&lt;/p&gt;
&lt;blockquote&gt;&amp;quot;The day began with regular neighborhood activity, including several individuals walking by. Early morning saw garbage collection services, with a person in a yellow vest moving green garbage cans and later a blue recycling bin was picked up. Around 7:34 AM, a person exited the Garage, and shortly after, a green Rivian SUV pulled into the driveway, with a resident exiting the vehicle as the garage door opened. Throughout the morning, numerous people walked dogs, including one with a black dog on a red leash. Later in the morning, a person was seen putting a green suitcase into the trunk of a white SUV, coinciding with an Amazon delivery truck driving by. In the afternoon, a person was observed taking a picture of the house. A UPS delivery person delivered a package around 4:50 PM. As evening approached, a cat was spotted walking across the Backyard, and two people got into a white pickup truck from the Garage. The day concluded with continued pedestrian activity and several trains passing by, including a person seen holding a glowing blue object in the evening.&amp;quot;&lt;/blockquote&gt;
&lt;p&gt;Nearly a decade ago I &lt;a href="https://ithoughthecamewithyou.com/post/google-cloud-vision-sightings?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss"&gt;whipped up a script&lt;/a&gt; to send my Nest footage to the Google Cloud Vision API. The twist was that it only notified me when it saw something novel. It was pretty chatty to start with, and then every few weeks I&amp;#39;d get an alert that it had spotted an ice hotel or ballistic missile submarine. At that point I turned it off (maybe this will save me one day).&lt;/p&gt;
&lt;p&gt;Some terrible part of me wants to build a RAG database of Google Home Premium Advanced notifications so that I can do the same thing in prose, and never miss anything unusual on my street. A more practical part realizes that the glowing blue object is probably a phone.&lt;/p&gt;</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/robs-basilisk?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2025-11-29T20:16:14Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/lisbon-sunset?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/lisbon-sunset?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>timelapse</category><title>Lisbon Sunset</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=Sunset-in-Lisbon-Portugal-2.jpg" title="Sunset in Lisbon, Portugal"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=Sunset-in-Lisbon-Portugal.jpg" width="630" height="354" class="u-photo" alt="Sunset in Lisbon, Portugal" srcset="/image.axd?picture=Sunset-in-Lisbon-Portugal.jpg, /image.axd?picture=Sunset-in-Lisbon-Portugal-1.jpg 2x, /image.axd?picture=Sunset-in-Lisbon-Portugal-2.jpg 3x"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Brief time lapse of sunset looking towards the Ponte 25 de Abril (a mashup of the Golden Gate and Bay bridges) in Lisbon, Portugal.&lt;/p&gt;
&lt;div class="video-container"&gt;&lt;iframe id="player-gave" width="630" height="354" src="https://www.youtube.com/embed/1pfWwl2EIkw?rel=0&amp;enablejsapi=1" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;&lt;/div&gt;
</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/lisbon-sunset?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2025-11-29T17:01:09Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item><item><guid isPermaLink="true">https://ithoughthecamewithyou.com/post/muc-bud?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</guid><link>https://ithoughthecamewithyou.com/post/muc-bud?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss</link><author>rob@catfood.net</author><category>photo</category><title>MUC BUD</title><description>&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=MUC-BUD-2.jpg" title="MUC BUD"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=MUC-BUD.jpg" width="630" height="354" class="u-photo" alt="MUC BUD" srcset="/image.axd?picture=MUC-BUD.jpg, /image.axd?picture=MUC-BUD-1.jpg 2x, /image.axd?picture=MUC-BUD-2.jpg 3x"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="exif"&gt;Google Pixel 8 Pro 7mm f1.7 1/15s ISO250 &lt;/p&gt;
&lt;p&gt;LH 1680, A320-214, 06141&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Updated 2026-03-14 09:42:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://ithoughthecamewithyou.com/image.axd?picture=MUC-BUD-2.webp" title="MUC BUD"&gt;&lt;img src="https://ithoughthecamewithyou.com/image.axd?picture=MUC-BUD.webp" width="630" height="354" class="u-photo" alt="MUC BUD" srcset="/image.axd?picture=MUC-BUD.webp, /image.axd?picture=MUC-BUD-1.webp 2x, /image.axd?picture=MUC-BUD-2.webp 3x"&gt;&lt;/a&gt;&lt;/p&gt;&lt;p class="exif"&gt;Google Pixel 8 Pro 7mm f1.7 1/700s ISO21&lt;/p&gt;
&lt;p&gt;LH 1676, A320-214, 05972&lt;/p&gt;
</description><a10:link rel="alternate" href="https://ithoughthecamewithyou.com/post/muc-bud?utm_source=ithcwy&amp;utm_medium=RSS&amp;utm_campaign=fromrss" /><a10:updated>2025-11-28T17:43:44Z</a10:updated><a10:rights type="text">(c) copyright Robert Ellison</a10:rights></item></channel></rss>