Tuesday, April 22, 2025

SF Climate Week Opening Keynote

As I did last year, I took the train to get to SF Climate Week. In this area that means taking Caltrain up the Peninsula before switching to the Bay Area Rapid Transit (BART) to the Embarcadero, then walking to Climate Week at the Exploratorium.

Both of those train systems have been substantially improved since last year:

  • Caltrain completed a years-long electrification project, replacing all of the diesel trains.
  • BART finished deployment of a new generation of cars, retiring all of the 25 year old rolling stock.

From this one might infer a renaissance of mass transit deployment in urban areas... but one would be wrong. Indeed, in nearly every area of climate action where the Inflation Reduction Act had spurred progress, the new administration of the last three months has attempted to roll it all back.




Former Vice President Al Gore presented the opening keynote speech, fiery and powerful. I hope it will be posted in its entirety, but until then there are portions of it interspersed within a local newscast.

Monday, April 21, 2025

SF Climate Week 2025

This is SF Climate Week! The opening keynote with former Vice President Al Gore, long-time Speaker of the House Nancy Pelosi, & SF Mayor Daniel Lurie is this afternoon at The Exploratorium in San Francisco.

San Francisco Climate Week in green on a black background

I'll be in SF this week as a volunteer helping keep things running, hope to see you there.

Wednesday, April 9, 2025

German Mothers and the Year 2031

Until 1975 German mothers did not pass on citizenship to children born in wedlock, only German fathers did. To address historic gender discrimination in citizenship practices Germany has defined a declaration process called Staatsangehörigkeit § 5. I wrote about our experience with this process, which we completed in 2023.

In the 20th century several million Germans emigrated to the United States. Staatsangehörigkeit § 5 is applicable to a very large number of their descendants today. From a post on r/GermanCitizenship about an April 2025 visit to the German Consulate:

The caseload has increased exponentially in the past 4 months. He said that aside from all the appointments each day, they get between 80 and 90 inquiries a day in the Chicago office alone.

Hand holding four German Reispässe The Staatsangehörigkeit § 5 process will be open for ten years. Having started in August 2021, declarations will be accepted until August 2031. The current wait time in the queue to be processed is about 2.5 years, and is likely to grow with the number of Americans now applying.

If you were born to a German mother prior to 1975 and you'd consider this declaration of German citizenship, I'd advise starting on it soon.

Tuesday, April 8, 2025

Coal Mining Policies

New coal policies are invariably announced in front of a group of workers wearing hard hats with lights affixed, and often in Pennsylvania for good measure. One might assume the mining profession is a huge economic force and under constant threat which must be fended off to preserve families and livelihoods.

As a profession, coal mining employs about 40,000 people in the US.

Graph from the Federal Reserve Bank of St. Louis showing employment in coal mining over time, which started at 177,800 in 1985 and declined to about 40,000 by the year 2020. Employment has been relatively flat at 40,000 since the start of the COVID-19 pandemic in March 2020.

Source: FRED (Federal Reserve Economic Data).




Construction Management requires similar levels of education and experience and according to employment statistics enjoys a similar pay scale. There are 10x to 20x more Contruction Managers in the US.

Graph from the Federal Reserve Bank of St. Louis showing employment in construction management over time, which started at 335,000 in 2000 and had grown to 785,000 by 20204.

Source: FRED (Federal Reserve Economic Data).




Coal policies are not driven by concern for workers. Coal policies are driven by concern for fossil fuel profits, which have only been made possible by externalizing the cost of the damage to human health and acceleration of global warming.

Sunday, April 6, 2025

RSS Feed Likely to Break

The FeedBurner logo, a stylized flame with a yellow upward facing crescent moon center surrounded by dull red flames, perched on a circular blue floor.

Over a decade ago I configured this Google Blogger site to use FeedBurner. This blog never generated ad revenue and I turned ad insertion off, but left the feed still going through FeedBurner.

I'm making progress in moving the blog off of Google Blogger. I am actively trying to reduce my use of big tech companies, limiting them to easily-replaced commodified services wherever possible. I have a Jekyll site working locally, with all existing posts and images imported. I expect to serve the generated static site from somewhere like GitHub Pages or Cloudflare Pages so as to not operate a public-facing site myself, but retain the content and publishing infrastructure locally. The static hosting can be moved easily.

However: I expect the RSS feed will break, with a discontiguous update making it look like more than 400 posts have suddenly published. The Jekyll site will not generate an identical feed to Google Blogger. I also don't intend to use FeedBurner with the new site, as Google began shuttering the service several years ago.

Looking at the feed today, it is three posts behind. I don't know why, but I guess I'm heartened that it is not more. I'm posting this now in hopes that it will be published to any remaining subscribers of the RSS feed before the changeover happens.

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, by generating PNGs.

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.

Monday, March 31, 2025

ZFS Spooky Failure at a Distance

I use Proxmox with a ZFS array to run a number of self-hosted services. I have been working on setting up zrepl for offsite backup, replicating encrypted ZFS datasets which the remote system will be able to store but not decrypt.


 

While working through all of this, the new 28TB disk intended for the remote system appears to have failed.

root@zfsremote:~# zpool status
  pool: pool1
 state: DEGRADED
status: One or more devices has experienced an unrecoverable error.  An
        attempt was made to correct the error.  Applications are unaffected.
action: Determine if the device needs to be replaced, and clear the errors
        using 'zpool clear' or replace the device with 'zpool replace'.
   see: https://openzfs.github.io/openzfs-docs/msg/ZFS-8000-9P
config:

        NAME        STATE     READ WRITE CKSUM
        pool1       DEGRADED     0     0     0
          sdb       DEGRADED     0    35     0  too many errors

 

Indeed, there are kernel messages about disk errors:

Mar 31 07:16:33 zfsremote kernel: I/O error, dev sdb, sector 23368396833 ...
Mar 31 07:16:33 zfsremote kernel: I/O error, dev sdb, sector 23368399137 ...
Mar 31 07:16:33 zfsremote kernel: I/O error, dev sdb, sector 23368397089 ...
Mar 31 07:16:33 zfsremote kernel: I/O error, dev sdb, sector 23368401697 ...
Mar 31 07:16:33 zfsremote kernel: I/O error, dev sdb, sector 23368401441 ...
Mar 31 07:16:33 zfsremote kernel: I/O error, dev sdb, sector 23368399393 ...
Mar 31 07:16:33 zfsremote kernel: I/O error, dev sdb, sector 23368402721 ...
Mar 31 07:16:33 zfsremote kernel: I/O error, dev sdb, sector 23368402465 ...
Mar 31 07:16:33 zfsremote kernel: I/O error, dev sdb, sector 23368402209 ...
Mar 31 07:16:34 zfsremote kernel: I/O error, dev sdb, sector 23368401953 ...

 

It seems odd, though. I had run `badblocks` destructive tests for weeks before moving on to creating the ZFS pool. After all that, it would choose this moment to begin uncorrectable failures?

Quite suspiciously, 07:16:33 is also the very instant when I sent a kill signal to a vzdump process running on the Proxmox host.

116: 2025-03-31 07:14:31 INFO:  29% (7.4 TiB of 25.5 TiB) in 9h 37m 2s
116: 2025-03-31 07:16:33 ERROR: interrupted by signal
116: 2025-03-31 07:16:33 INFO: aborting backup job

As I now know, trying to kill vzdump with a signal is not the right thing to do. `vzdump -stop` is the right way to interrupt it.

The OpenZFS docs say: "the following cases will all produce errors that do not indicate potential device failure: 1) A network attached device lost connectivity but has now recovered"

So far as I can tell, this is the explanation for this failure. Me sending a signal to vzdump interrupted the stream of ZFS operations, which manifested as a failed array on the other end. I have to say that I'm not fond of array failure as the way to report network errors. I've cleared the failure using `zpool clear` and will hope that zrepl will sort out bringing the two ZFS filesystems back into sync.

I plan to give it a day, then restore the remote dataset and check whether the file contents are sensible. The remote system does not, and will never, have the encryption key to be able to check the contents of the datasets it holds. I'll have to transfer them back to be able to access them.

Saturday, March 29, 2025

Stadtarchiv Hannover bis 2026 geschlossen

I received a Sterbeurkunde from Stadtarchiv Hannover on 28 March 2025, with the following note in the email signature:

Von März bis Jahrsende 2025 verlagert das Stadtarchiv seinen Standort in das neue Sammlungszentrum an der Vahrenwalder Straße 321. Der Lesesaal ist geschlossen, die Bearbeitung von Anfragen eingestellt.

Bei der Erreichbarkeit unserer Kolleg*innen und unseres Funktionspostfachs stadtarchiv@hannover-stadt.de kann es zeitweilig zu Verzögerungen kommen. Wir bitten um Verständnis und freuen uns, Ihnen voraussichtlich ab Jahresbeginn 2026 am neuen Standort wieder im vollen Umfang zur Verfügung zu stehen.

Bitte beachten Sie hierzu auch die Informationen auf unserer Homepage unter www.stadtarchiv-hannover.de.


From March until the end of 2025, the city archive will relocate to the new collection center at 231 Vahrenwalder Straße. The reading room is closed and the processing of inquiries is suspended.

There may be temporary delays in reaching our colleagues and our functional mailbox stadtarchiv@hannover-stadt.de. We ask for your understanding and look forward to being fully available to you again at the new location from the beginning of 2026.

Please also refer to the information on our homepage at www.stadtarchiv-hannover.de.

In 7/2023 a request to Stadtarchiv Hannover would usually be answered in a week, but then something happened. Since 2024 response times have been 6-8 weeks. A post on their website mentioned a challenging staffing situation. I'm hopeful that in the long term, moving to a larger facility will help.

Imagery from the indexes was added to Arcinsys last year, those should still be available in the interim.

Thursday, March 27, 2025

Macbook Air M1 USB-C Port Replacement

My Macbook Air M1 was gradually developing some kind of impairment in its USB-C ports where I'd have to jiggle or put actual pressure on a USB-C cable to get it to be recognized — and since it has no Magsafe port for charging, this meant it would switch to and from battery as its charging cable periodically lost contact.

Searching turned up people reporting similar issues, especially that the rear port started having a problem first until eventually the front port did as well. There wasn't a consensus solution but a replacement USB-C board from iFixit came up several times. For only $20, I ordered one.

Innards of a Macbook Air M1, with the old USB-C board off to the side and the new board installed

The original USB-C board is off to the right side in this picture. One can see some corrosion and dirt, and also a bit of blackening on what I assume is a power pin. I believe that carbon buildup is likely the primary issue. I'll scrub it off with some alcohol on a cloth and put it away for the future, it would probably work again if needed.

Wednesday, March 26, 2025

Venmo Public Transactions

Venmo pushes hard for transaction activity to be Public. It doesn't say whether any past payments were actually public, and puts up an interstitial to confirm a change to Private.

This selection does have a benefit for the user, in making it more straightforward for friends to find each other and to make payment arrangements. However the choice has a larger impact on Venmo's user growth, and does come with downsides for their users like making activities public which they assumed were not.

Venmo Privacy settings page with options for Public, Friends, and Private. The current selection is Private. Below are buttons to change past transactions to Friends or to Private. Venmo confirmation to really change past transactions to Private?

Presumably Venmo has data on how much of a network effect they get from having payment information be Public, drawing in friends and family and acquaintances and randos. Venmo appears to allow this data to impact their UI design to steer users toward the choice most beneficial to the company.

Tuesday, March 25, 2025

EFF Privacy Badger

EFF Privacy Badger window showing 20 potentia trackers blocked or restricted. The ones shown by URL are contextual.media.net which is blocked, cdn.optimizely.com where cookies are blocked, widgets.outbrain.com which is blocked, get.s-onetag.com which is blocked, api.spot.com where cookies are blocked, and direct-events-collector.spot.im where cookies are blocked.

I started using Privacy Badger from the Electronic Frontier Foundation several months ago. It is a browser extension — I use it with Chrome — which blocks or restricts domains known to track identities and activity across the web.

One can click on the Privacy Badger extension icon to see what has been blocked, and also to make exceptions for the website being visited if needed.


 
 
Privacy Badger has replaced this X (Twitter) widget

This includes live links to tweets and other social media, which Twitter uses to gather data about the viewer. I allow these on certain sites which curate related tweets into stories.

I don't actively use Twitter any more but still find the zeitgeist there to be informative.

Monday, March 24, 2025

Ringing Endorsement for Signal

As published in The Atlantic today:

The Trump Administration Accidentally Texted Me Its War Plans
U.S. national-security leaders included me in a group chat about upcoming military strikes in Yemen. I didn’t think it could be real. Then the bombs started falling.
 
By Jeffrey Goldberg

The aforementioned group chat was using Signal. I guess that is quite the ringing endorsement of Signal's security and trustworthiness.

Signal was already being targeted by every nation-state and major criminal hacking group, I doubt that the knowledge it is being used for US war planning will especially increase the pressure they are under. As a family, we use Signal to coordinate everything important to us.

Signal chat showing an entire pallet of Kirkland eggs for sale at Costco, with a response asking if they are at the usual price

Saturday, March 22, 2025

sync; sanc; sunc

# sync; sync; sync
#

Pros: Works.
Cons: Boring.
 


# cat ~/.profile
alias sanc=sync
alias sunc=sync
# 
# 
# sync; sanc; sunc

Much better.

Friday, March 14, 2025

Giant Airplanes Flying Low at 3am

Why yes, a Boeing 747 flying low directly over our house at 3am does wake us up. Who could possibly have predicted it?

Screenshot of a flight radar map showing an Asiana Cargo 747 to South Korea taking off from San Francisco International Airport over the San Francisco Bay, then turning to cross the Peninsula directly over Redwood City and San Carlos.