Friday, April 4, 2025

Farewell, Google Charts API

Nearly 14 years ago I wrote a joke post about the Holtzmann Shields from Frank Herbert's Dune, complete with impressive-looking but nonsense equations like this one:

LaTeX T = \frac{(0.09\frac{m}{sec})^2(0.0289644\frac{kg}{mol})}{(3)(8.3145\frac{m^2\cdot kg}{sec^2\cdot mol\cdot K})}

That equation was created using LaTeX:

T = \frac{(0.09\frac{m}{sec})^2(0.0289644\frac{kg}{mol})}{(3)(8.3145\frac{m^2\cdot kg}{sec^2\cdot mol\cdot K})}

 

At the time the post was written in 2011, Google offered a Charts API which would accept URL-encoded LaTeX and render it on the fly. The original posting from back then just embedded the Charts API URL as the source for the image, confident that Google would supply a suitable PNG:

https://chart.googleapis.com/chart?chs=239x83&cht=tx&chl=%0AT%20%3D%20%5Cfrac%7B(0.09%5Cfrac%7Bm%7D%7Bsec%7D)%5E2(0.0289644%5Cfrac%7Bkg%7D%7Bmol%7D)%7D%7B(3)(8.3145%5Cfrac%7Bm%5E2%5Ccdot%20kg%7D%7Bsec%5E2%5Ccdot%20mol%5Ccdot%20K%7D)%7D%0A

One can see the LaTeX code in the `chl` parameter.


 

The joke post turned into a joke on me: Google announced the deprecation of the Charts API the following year, and turned it off altogether in 2019. My post from 2011 has been broken for almost 6 years, without me knowing.

I am currently endeavoring to reduce my use of Big Tech services, turning to alternatives over which I have more control. Importing that 2011 post into Jekyll repeatedly failed because the image link was broken. I was able to recover the original LaTex from the URLs to fix the old post, using PNGs now.

I think this reinforces the desire to not depend upon Big Tech. Google kills services every day, especially ones like the Charts API which didn't have their own monetization path.

Wednesday, April 2, 2025

Preparing for Offsite Backup

Apple Time Capsule, a thin white device with rounded corners and a single power light on the right side.

For many years, too many years, my family computer backup plan was an aging Apple Airport Time Capsule paired with the fervent hope that nothing would ever fail. That worked pretty well in that we haven't lost anything important, but Backup Theater is honestly worse than just admitting there is no real backup.

Last year I decided that Adulting should include ensuring that family data remains safe and the kids don't lose schoolwork, or the custom Doom WADs they've developed, or what have you. The Adulting Plan for Backups consists of:

  • Android and iOS devices should be backed up somewhere outside of the home.
  • Windows and macOS laptops should be backed up somewhere outside of the home.
  • Proxmox VMs and LXCs should be backed up somewhere outside of the home.

Repetative and boring, perhaps, but that is how a backup plan should be. Replicated and safe.


 

Android and iOS

The mobile devices were simplest: they already backed themselves up, Android to Google Drive and iOS to iCloud. Downloading all iCloud photos to immich allowed us to drop to a less expensive iCloud+ storage plan while still using it for device backups.

One downside of using the mechanisms which Google and Apple provide is that the backups are not encrypted from outside access. Google and Apple can access the contents of the device backups. I hope to come back to re-examine these backup plans in the future with something we have more control over.


 

Windows and macOS

After some searching, we paid for Arq Backup Premium, which provides one license for each of our five laptops. Each laptop is configured to back itself up twice:

  1. To the cloud storage which Arq Premium provides.
  2. Using SFTP over Tailscale to the fileserver within our home.

The backup files for all of the laptops together come to a bit over 800GB, nicely fitting within the 1TB of Google Cloud storage from Arq Premium. The backups are encrypted using a key which only we have, neither Arq nor Google can read the contents.


 

Proxmox

The Proxmox server within the home has 10 terabytes of ZFS storage. It provides the SFTP backup which the laptops are configured to reach via Tailscale, and it backs up its own VMs and LXCs to ZFS using vzdump. I'm working on offsite replication for this and might post again when that is done.