Sunday, October 26, 2025

This is a Good Week to Look Into German Citizenship

Ornate, gilded clock atop a set of drawers
Clock at Sansucci in Potsdam

This coming week is special. You might know it as "intercontinental meeting scheduling goes sideways" week. Most of Europe adjusted their clocks for daylight savings this morning, the US does so in a week.

German Consulates around the world add new appointments at midnight in Germany. Polling for an appointment right before midnight has the best chance of grabbing one, and this week midnight in Germany is at a different time in the US. Lots of people miss this, your chances of getting an appointment are better this week by checking at the correct time.

If your family emigrated from Germany in the 20th century, you might have a path to German citizenship. Grandparents, great-grandparents, etc are all possible. 1904 is the significant cutoff, emigration before that almost always forfeited German citizenship.

Your ancestor might have been told they had to choose one citizenship or another at age 18 or 21 or 23. That is a longstanding myth, people born as dual citizens were always able to retain both and pass it down to their children.

Your ancestor might not have inherited citizenship from a German mother prior to 1975. Staatsangehörigkeit § 5 is a declaration process to address this former gender discriminatory policy, allowing descendants of German mothers to declare their citizenship.

If you've idly wondered whether there is a path to Europe for your family, this week is a good week to look into it.

Everything I've written about this process and related matters is linked from this blog post.

Hannover Rathaus, the local government building in Hannover Germany, is a gothic architecture building with aged green copper roofing

Saturday, October 25, 2025

Daylight Savings and Consular appointments

German Consulates around the world add new appointments every weekday at midnight in Germany. For example, that is 3pm in California — or rather, it was at 3pm in California. Europe moves the clocks by an hour for Daylight Savings Time on October 26th, which happened a few hours ago at the time of this writing.

The US moves its clocks one week from now, on November 2. So for this one week, midnight in Germany is 4pm in California. This might be a good week for finding an appointment, slightly fewer people will likely be polling as some will be checking at the wrong time.

Ornate, gilded clock on a set of drawers
Clock at Sansucci in Potsdam

Thursday, October 23, 2025

Electric short-haul vehicles

An electric forklift parked near a wall and plugged into a charger.

The market for forklifts and similar lift trucks electrified early. The market for Class I lift trucks intended mainly for use inside warehouses crossed 50% electric in approximately 2010. In indoor environments there is a substantial advantage for a vehicle which produces no exhaust fumes. The early models used lead-acid batteries, gradually shifting to Lithium chemistries as batteries aimed at electric vehicles improved.

More recently, other classes of forklift which handle heavier loads and outdoor use have been electrifying, as batteries have reached a capacity to operate all day without charging and electricity is less expensive than the equivalent propane for internal combustion forklifts.

Electric lift trucks have several inherent advantages over propane:

  • Efficiency: electric vehicles excel with frequent starts and stops, which a forklift spends all day doing.
  • Regenerative lowering: it takes energy to lift a heavy load, but regenerative braking techniques can recover energy while lowering a heavy load. Anything lifted up will (eventually) be lowered back down, over time the fleet of forklifts will recover a good portion of the energy spent lifting.

Short haul trucking

Drayage trucks, heavy vehicles intended for short distance duty such as to and from transport hubs, are at the start of their electrification process now. They also have several inherent advantages:

  • Idling: even with a decade of effort in schedule optimization and just-in-time arrival, such vehicles spend a substantial amount of time waiting for loading and unloading. Internal combustion vehicles consume fuel while idling, electric trucks do not.
  • Emissions: air quality near ports and transportation hubs has been a concern for decades, and have resulted in ever more strict limits on emissions in the vicinity of the port. A zero emission electric drayage vehicle more easily meets these requirements.

Vehicle to Grid?

To me, one of the interesting potential developments for electric vehicles is to take advantage of the battery capacity available in fleets of electric vehicles with one common owner and fairly stable usage patterns. Warehouses and ports mostly do not operate at 100% capacity 24/7. Noise ordinances and the economics of three shift work means they will often not be fully staffed overnight. There will be hours where some of the equipment is plugged into chargers and mostly sitting idle.

These are the same hours where solar production is not available. Might the fleet owner be able to make some amount of revenue while the equipment sits idle? The equipment does need to end the night with a mostly full battery for the first shift's work, but there may be an opportunity to charge while power is cheap and, knowing usage patterns in advance, participate in virtual power plants to bid into the day-ahead market.

School buses remain the best example of Fleet-V2G potential. They can charge after dropping off children after school, at a time when solar power is still generally feeding the grid. They will sit all night, and can supply some amount of power in the late evening hours.

Tuesday, October 14, 2025

Virtual Power Plants and the California Grid

The California Independent System Operator (CAISO) has published a report regarding electricity generation in the summer of 2025, which includes data through the end of September 2025. They provide a nifty interactive chart at that link, and the underlying data is easy to find in the source of the web page. I've included the data for July and September at the bottom of this post, as we're going to dive into those details in a moment.

Below is the graph of the sources of energy on the California electrical grid in September of 2025, the period ending about two weeks ago at the time of this writing. Importantly, the Solar resources shown are only utility connected solar arrays. Rooftop solar is behind the meter, reducing demand for electricity rather than adding to the supply measured here. There is approximately another 19 Gigawatts of solar capacity installed behind the meter.

Graph of energy sources in California in September 2025 with Methane providing 25 Gigawatts, Hydro 7 Gigawatts, Nuclear 3 Gigawatts, with Solar peaking to 12 Gigawatts in the middle of the day and Battery sustaining Solar contribution for a few more hours after the Sun sets


This is the same data, shown as a percentage of the total. Because total electricity consumption varies throughout the day, the contribution of baseload sources like Methane-fired generators varies as a percentage of the total even though their output is constant.

Graph of energy sources in California in September 2025 with Methane providing roughly 50%, Hydro 13%, Nuclear 5%, with Solar peaking to 20% in the middle of the day and Battery sustaining Solar contribution for a few more hours after the Sun sets

A few observations:

  • The contribution of wind power is smaller than I expected. I may get a skewed view of the prevalence of wind generation in California as I pass through the Altamont Pass wind farm regularly, but I expected wind to be a larger percentage.
  • It is too small to be visible in the graph, but Solar power never actually drops to zero. It continues to supply about 4 Megawatts all night. I believe this might be Ivanpah, a solar thermal generation plant in the desert, which continues generating power from stored heat even after the sun has set.



I tried to incorporate behind-the-meter solar into a similar graph, below. This is a crude estimate:

  • In 2024, 19 Gigawatts of rooftop solar was installed versus 21 GWatts of utility-scale. I made the assumption that the production from rooftop solar would be approximately 19/21 of the utility number.
  • Prior studies show that rooftop solar is not installed in ideal locations nor properly angled toward the sun, I made the additional assumption that it would be 80% as productive as utility solar.

The result hews considerably closer to the 67% renewable result announced by the state last year.

Graph of energy sources in California in September 2025 with Methane providing roughly 40%, Hydro 10%, Nuclear 4%, with the combination of utility-scale and rooftop Solar peaking to 32% in the middle of the day and Battery sustaining Solar contribution for a few more hours after the Sun sets


Virtual Power Plants

I have combined the categories which CAISO reported separately as Batteries and Demand Response, because until 4/2024 Virtual Power Plants formed via aggregation of residential batteries like Powerwalls were contracted as Demand Response. Only utility-scale battery installations like Megapacks were accounted for as Batteries. Splitting into two categories obscures and substantially minimizes the true contribution of battery power to the grid.

We participate in a Virtual Power Plant in northern California, allocating about half of the 27 KWh of capacity installed at the house. For a number of days this summer in the late afternoon and early evening, the house supplied about 6 kilowatts of power back to the grid. It is quite smooth, we don't even notice unless we look at the app to see what it is doing.




Raw data from the CAISO report web page.

"September": [
  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1392.000662, 1319.840318,            // Demand Response
   1239.827827, 1177.653666, 1023.942241, 287.33, 0, 0],                                // Demand Response

  [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2264.012689, 6312.981683,            // Battery Storage
   10219.53932, 9740.80126, 7382.450552, 5789.963039, 2869.891625, 0],                  // Battery Storage

  [11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665, 11665,         // Imports
   11665, 11665, 11665, 11665, 11665, 5500, 5500, 5500, 5500, 5500, 5500, 5500,         // Imports
   11665],                                                                              // Imports

  [742.4458, 725.114696, 719.58188, 591.859728, 356.992952, 328.293048, 330.9584,       // Wind
   323.6145657, 277.992424, 205.762648, 221.590544, 199.863504, 216.38616,              // Wind
   311.644072, 316.5584821, 324.313968, 396.1921449, 535.622064, 785.470392,            // Wind
   905.120696, 1081.627632, 1164.064064, 1096.58392, 1058.725816],                      // Wind

  [3.7224, 3.7224, 3.95928, 4.43304, 5.02524, 7.1064, 155.30868, 3417.63696,            // Solar
   8622.78732, 11304.55656, 12390.19452, 12923.98668, 13035.8448, 12592.86717,          // Solar
   12166.76592, 11529.86232, 8779.161639, 5405.92308, 1148.5296, 12.79152,              // Solar
   5.34672, 4.01004, 3.8916, 3.84084],                                                  // Solar

  [1755.632861, 1755.632861, 1755.632861, 1755.632861, 1755.632861, 1755.632861,        // Other renewables
   1755.632861, 1755.632861, 1755.632861, 1755.632861, 1755.632861, 1755.632861,        // Other renewables
   1755.632861, 1755.632861, 1755.632861, 1755.632861, 1755.632861, 1755.632861,        // Other renewables
   1755.632861, 1755.632861, 1755.632861, 1755.632861, 1755.632861, 1755.632861],       // Other renewables

  [1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682,        // Other
   1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682, 1682],                   // Other

  [7014, 7014, 7014, 7014, 7014, 7014, 7014, 7014, 7014, 7014, 7014, 7014, 7014,        // Hydro
   7014, 7014, 7014, 7014, 7014, 7014, 7014, 7014, 7014, 7014, 7014],                   // Hydro

  [2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280,        // Nuclear
   2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280, 2280],                   // Nuclear

  [26188, 26188, 26188, 26188, 26188, 26188, 26188, 26188, 26188, 26188, 26188,         // Methane
   26188, 26188, 26188, 26188, 26188, 26188, 26188, 26188, 26188, 26188, 26188,         // Methane
   26188, 26188],                                                                       // Methane

  ...
]

Sunday, October 12, 2025

Germany Photos Then and Now

In our collection of family photos we have a number of sets taken in Germany over the decades:

  • in the early 1950s by my spouse's grandparents
  • in the late 1960s by my father while stationed in Germany
  • in 1995 by my spouse
  • in summer 2024 on our first family trip to Germany
  • in summer 2025 on our second family trip to Germany

In our trips of the last several summers we've made an effort to take photos of places our parents visited, allowing side-by-side comparison. The main thing one notes is the evolution of camera technology and its handling of colors, amusingly enough.


 

Göbelstraße 2, Hannover

My spouse's grandparents owned a house on this land decades ago. That house has since been replaced by larger buildings.

Göbelstraße 2, Hannover

 

Burg Pfaltzgrafstein, Rhine River

Burg Pfaltzgrafstein, Rhine River

 

Gasthaus Rheingold, Rhine River

Gasthaus Rheingold, Rhine River

 

Assmanhausen, Rhine River

Assmanhausen, Rhine River

 

Glockenspiel in Munich

Glockenspiel in Munich

 

Odeonsplatz in Munich

Odeonsplatz in Munich

 

Karlsplatz in Munich

Karlsplatz in Munich

 

Heidelberg Bridge

Heidelberg Bridge

 

Heidelberg Castle

Heidelberg

Saturday, October 11, 2025

New Ohio Exonym Just Dropped

Tell me your game development is done outside of the United States without telling me your game development is done outside of the United States.

Cartoonish map of the upper midwest of the United States with Colombus, Ohio spelled Calambus

As an alumnus of the University of Michigan, I approve of the association of Ohio with "Calamity".

Friday, October 10, 2025

New Google Blogger Features ?!?

**Try our New Beta Features**: Create a more engaging reading experience with the help of Google

Google Search previews: Easily insert visual Google Search previews for popular people, locations, pop-culture and more directly in your blog! In Compose View, look for the ‘G’ button in the editor tool bar to get started.

That is the notice greeting me at the top of draft.blogger.com today. After years of not noticing any change in the service at all, it is now getting search previews.

Honestly I would have expected any sudden burst of activity in Google Blogger to be more distinctly AI-related, part of someone's promotion packet to sprinkle LLMs anywhere and everywhere.

Tuesday, October 7, 2025

EasyPASS and entering Germany

If you've ever flown into Germany you've seen the two lines at customs and immigration, one for citizens of the European Union and one for non-EU citizens. The non-EU line is often longer and slower, though not exceptionally so at the times I've been through. Nonetheless in a family like ours, where the rest of them go through the EU line and I wait in the non-EU line, it leads to some extra complexities in travel.

EasyPASS is a program to enroll passports from several non-EU countries including the United States, South Korea, and Taiwan to be able to use the electronic readers in the EU line at German airports. One fills out a form to submit at an airport with an EasyPASS office, including Berlin (Brandenburg), Köln/Cologne/Bonn, Dusseldorf, Frankfurt, Hamburg, Hanover, München/Munich, and Stuttgart.

I enrolled at the Munich airport in July 2025, where EasyPASS is handled at the police substation. Follow the signs for the Politzei office, which is at the far end of the airport where there are a number of restaurants and shops. You ring the buzzer for admittance.

Shopping court at the Munich airport, with an arrow pointing to the police substation

It is helpful if you speak a bit of German, but the police stationed at the airport have to deal with international travellers every day and understand English well. They were quite helpful in correcting a mistake I'd made in filling out the form. They then took my US passport to enroll in EasyPASS.

I don't have an outcome to report yet, it will likely be some months until our next trip to Germany to try using the EU line at the airport.

Friday, September 26, 2025

On the Nature of Microservices

a series of interlocking sawtoothed gears, intended to represent a set of microservices

Microservices entered the lexicon of systems engineering a number of years ago, breaking up a system which might once have been delivered as a single large binary — though usually with separate relational database at least — to instead consist of a series of small microservices each performing a specific function and communicating amongst themselves to provide an overall service.

In my experience at least, moving to a microservices architecture does solve real problems but the nature of the problems it solves are as much organizational as technical.

In a very large engineering team all trying to work together to deliver a solution, one frequently loses velocity simply because of the number of teams jostling against each other:

  1. The release process grows over time, and tends to add process of the form "make sure that problem never happens again."
  2. Rollbacks roll back everything. When every team has P0 deliverables, no team has P0 deliverables.
  3. The internal architecture might have been carefully planned... or might not. Even without a "if I can call it, I can use it" mentality, there still can be significant underspecification.

 

Moving to Microservices

A team which moves to microservices, devoting considerable effort to do so, has every incentive to solve these issues:

  1. The release process for each microservice can be (mostly) decoupled with disciplined versioning of API between producers and consumers.
  2. Rollbacks impact only a portion of the overall service.
  3. The interfaces between microservices will have an API boundary, though Hyrum's Law still applies that un-promised behavior can become a load-bearing dependency.

The tradeoff is that one now has a distributed system, and distributed systems are hard.

  • Debugging is much more likely to cross multiple processes.
  • The 95% and 99% tail latency will suffer, as long code paths likely incur extra cross-process messaging.
  • A robust design will degrade if subsystems are unavailable, transforming the potential for outage into more frequent partial systems failure.

Kubernetes logo, a ship's wheel

If the problem being solved is "maximize effectiveness of a large engineering team" then these are perhaps good tradeoffs. One has the resources to develop tooling for debugging and latency and reliability. If one has further chosen to deploy those services via an orchestration system like Kubernetes, one has the personnel to cover the operational burden of that too.

If one doesn't have the personnel to cover the cost, microservices become a more questionable choice. Fundamentally: delivering via monolithic binary is not inherently bad. It isn't automatically a poor choice. It isn't poor engineering.

How to deliver software is influenced by the size and composition of the team delivering it.

Thursday, September 25, 2025

Try Turning the Train Off and Back On

BART train stopped at an outdoor station

Today I rode the Bay Area Rapid Transit train from the peninsula up to San Francisco. Our stop at the 24th and Mission station was unusually long. The conductor announced on the speaker that they were rebooting part of the train computer.

The universal first troubleshooting step now extends to turning the train off and back on.

Sunday, September 21, 2025

One Year of Electrified Caltrain

Electric Caltrain engine, destination San Francisco

In November 2020 California voters passed Measure RR to fund electrification of Caltrain down the San Francisco Peninsula. After several years of construction, the new electrified trains entered service on September 21, 2024: exactly one year ago at the time of this writing.

The electrification measure was an audacious plan for Caltrain to recover from the Covid-driven disruption in travel patterns by radically improving the service. The electrified fleet would provide more frequent service because the new engines would accelerate and decelerate far more strongly than the diesel locomotives did. The rolling stock would additionally be refreshed with new passenger cars.


So: did it work? Based on ridership data from the last year, to me it certainly appears so.

Ridership numbers drop suddenly in 3/2020 at the start of Covid, climb slowly until 8/2024, and then climb rapidly from 9/2024 through 8/2025

The large drop in ridership in 2020 is due to Covid. I tried to show the slope by drawing red lines in the few years between Covid and electrification, and between electrification and now. The rate of increase in ridership changed markedly for the better in almost exactly 9/2024 when the lines were electrified.

Ridership has not yet returned to pre-Covid levels, but now appears to be on track to do so if trends continue.

Monday, September 15, 2025

Android Signal Keyboard Privacy

Android keyboards can be quite sophisticated, including learning of commonly used words or languages. Some of these result in uploading what you enter to a service you may not know about. The Signal app on Android includes a setting to say that its keyboard input should not be uploaded.

Privacy settings for Android Signal app with Incognito Keyboard enabled

Malicious keyboard apps can ignore this, but if a malicious keyboard has made its way onto your device I think you have bigger problems.

Android keyboard with overlaid dialog: This app doesn't support voice input

The tradeoff: if you use speech-to-text on the Android keyboard, it will no longer work. The microphone will be greyed out and will bring up a small message saying "This app doesn't support voice input." The stock Android keyboard apparently has no on-device voice processing.

I learned of this from Liz Fong-Jones' Bluesky feed.

Wednesday, September 10, 2025

Continuous Improvement in LLM Code Generation

One week ago, I wrote:

"I wish wish wish that Claude Code would automatically populate a .gitignore for node_modules. Not for the first time, I checked 437 Megabytes of code into git and had to rewrite the history to remove it."

I used Claude Code to create a new frontend project, using Qwik this time, and what do I see?

dgentry@llm:frontend$ cat .gitignore
# Build
/dist
/lib
/lib-types
/server

# Development
node_modules
.env
*.local

...

A classic hacker stock photo in a darkened room sitting in front of a laptop wearing a hoodie and mask, except the person typing is a robot I don't know if this represents something which the Claude Code team specifically made happen since the last time I had it generate code like this, or if the training data of Qwik codebases is so much more likely to have included node_modules in their .gitignore file.

It is one of the perverse things about use of tools like this: we tend to give credit to the tool, and not the community which created the information upon which it relies.

Tuesday, September 9, 2025

Passport Cards as Proof of Citizenship

Passport card issued November 2024

In November 2024 we ordered Passport Cards for the first time. The cards arrived 18 days after we mailed in the forms, without paying for expedited service nor even for express mail.

The Passport Card is a stiff plastic card, slightly thicker than our driver's licenses. It is specifically not valid for international air travel, though it can be used to board a domestic flight and is Real-ID compliant. It cost $30, versus $130 for a Passport Book, at least as of the timeframe we ordered in late 2024.

Most importantly though: it is much more reasonable to have a Passport Card with you at all times than it would be to carry around a Passport Book, and the card is a valid proof of citizenship. It can be used within the United States, can be used for travel within the Americas, and will allow re-entry into the US even if you have lost the regular Passport Book.

One caution: when it comes time to renew, both the Passport Book and Card will need to be turned in for renewal. Keep good care of both, if one is lost then the renewal of the other becomes a Lost Passport event which requires DS-64 and DS-11 forms to replace. The DS-11 requires birth certificates and other proof of citizenship, just like getting the passport for the first time required.

A Passport Card is a good way to have proof of citizenship with you at all times.

Monday, September 8, 2025

Konsulatstermine für Reisepässe

Hand holding four German Reispässe Upon acceptance of a Staatsangehörigkeit § 5 declaration, making one a German citizen, the next step is generally to order a German passport called a Reisepass. This requires filling out the form and bringing the Urkunde über den Erwerb der deutschen Staatsangehörigkeit durch Erklärung and passport photos to the responsible Consulate in a passport appointment.

It can be difficult to get a passport appointment. You keep checking the site and there are never any appointment slots available.

German Consulates around the world add new appointments every weekday at midnight in Germany. For example, that is 3pm in California. If you start polling the appointment site at 2:59pm on Sunday, you have the best chance of seeing new appointments appear and grabbing one before they are all gone. Note that Daylight Savings Time differs by several weeks between Europe and the US, they aren't the same number of hours apart all year.

There are Honorary Consuls in a number of cities who can make copies of your documentation and forward it to the Consulate, which might be easier to get an appointment with if your Consulate is swamped.