Workspace Studio and Read-only Sheets

A Google Workspace Studio Flow

As an Apps Script addict I was excited to experiment with Google Workspace Studio. It'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.

I have a spreadsheet that pulls in Google Fit data, 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.

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:

"Couldn't complete. Check that the spreadsheet is private and doesn't use the IMPORTRANGE function."

At first I thought this must be inverted and the sheet needed to be shared in some way... but no, it's true, you can only update a private sheet. Which is useful in a trees falling with no one watching kind of way.

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't do quite what you need. This should be a nice piece of the AI automation puzzle as it matures.

Autonomy Minus

A Turn Signal, Recently

Rivian is about to start charging for cruise control. Which sucks. It's handy for long stretches of I-5, but generally I enjoy driving so I'm not planning to shell out unless they offer a day pass.

There is something I would pay for though.

Fix the fucking turn signal.

I'm pretty sure this wouldn't even need an AI supercomputer. I'm not an automotive engineer but I've sketched out a rough design for this:

  1. When you are already signaling one direction, moving the stalk the other way just cancels the signal.

I should probably file a patent before hitting post.

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'm ready to stop signaling. Instead I have turn signal tourette's for the next mile. I'd pay a buck or two a month to not do that.

Je Suis Stack Overflow

The Fediverse

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't interested any more. It's the same trend as Stack Overflow - programming questions are now answered by LLMs. I do the same thing and so I'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 CommonCrawl: transformers also die in darkness).

Can I be a social network instead?

I have had a vague integration with Bridgy Fed 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'm never going back to a social network that I don't own, even a well intentioned Mastodon server. But I'll interoperate all day and iterate in an IndieWeb direction.

You can follow @ithoughthecamewithyou.com@ithoughthecamewithyou.com and starting now I can follow back.

Links for February 2026

By . Updated on

I'm following @ml@social.mitexleo.one.


I'm following @retiolus@mamot.fr.


I'm following @matokie@mastodon.social.


I'm following @mikef@messydesk.social.



Google Apps Script created by primary email (domain), and it opens the blank script in secondary (gmail)

This drives me nuts every time I open apps script and need to switch the account. #google #appsscript #gas



I'm following @AirlineReporter@avgeek.social.


Image to 3D Asset with TRELLIS.2

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. #3d #ml #microsoft

Route Map

By . Updated on

Robert Ellison's Route Map

I have been in the habit of posting each plane I fly on for a long time.

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 deleted social media 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.

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 GeographicLib and this geolocation of airports). You can view individual flights here. I could probably use a carbon offset or two (unless this).

Required disclaimer:

This site or product includes IATA/ICAO List data available from https://github.com/ip2location/ip2location-iata-icao.

Updated 2026-02-07 23:07:

The vague intention turned into a mild obsession and so I mined email for more flights. I have email going back to 1996 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't have access to so I'm sure it's not totally comprehensive, but I'm now up to 277 flights and approximately 779,883 miles.

Let's Give Trident to Denmark

Let's Give Trident to Denmark

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.

This might seem impractical. The UK needs a nuclear option and doesn't have much to give. But we don't need to hand over subs and train the Danish navy. Unlike the US there isn'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.

This is crazy, but it hasn't been a normal January and at some point the policy of appeasement has to end.

[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'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 three times.

Blog Engine Upgrade

ITHCWY has been running on ASP.NET 4.8 for a long time. I've been putting off the upgrade as the official Microsoft documentation says something close to 'your funeral'. 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.

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'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't need to be touched often. It's certainly better than poking around in web.config and hoping for the best. If you're reading this then it has been served by asp.net core 10.

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 get in touch.