Friday, November 14, 2025
LG ThinQ App Notification Advertisement
I let our LG Washer-Dryer connect to Wi-Fi, but blocked its access to the Internet. I don't want it communicating with whatever cloud service they run, I just hoped there would be a local web page to scrape or some other port open so I could build a "Send a Signal message when the dryer finishes" service.
Alas, no, it only makes outgoing connections to its cloud service. I'm not ready to commit the time to trick it into communicating with something I develop.
[画像:Android screenshot with a notification from the LG Thin-Q app reading: Black Friday prices guaranteed, TV + soundbar or xboom speaker bundle. Exclusive to ...]Installing the app was required to get the unit to connect to Wi-fi. I had blocked the app's Location permission so they can't sell my data to an aggregator, denied the Microphone permission, and took away Camera and Nearby Devices after it scanned the barcode on the washer/dryer.
Now this. It sends advertisements in an Android notification.
I do appreciate some Internet of Things devices. I like being able to graph production data from the rooftop solar panels over time, and the status of the home's battery, for example. But so much of IoT is just in service to enshittification. It is maddening.
LG, if you're listening: I'm sure you track the number of people who click on that notification, maybe with some attempt to estimate conversions and attribute revenue. You need to also track the loss of goodwill.
I rage-uninstalled the app right after taking this screenshot, you need to correlate app store install metrics with when your ad campaigns run. That should feed in somehow to a loss of future revenue estimate, by souring attitudes amongst your installed base.
Lighting goodwill on fire to generate heat can result in revenue, but not without a cost.
Monday, November 10, 2025
Hannover Stadtarchiv geöffnet
The Personenstandsgesetz (PStG) specifies the privacy protection periods for civil records in Germany, after which the records move to an archive where they become publicly available for anyone to access.
- 110 years after a birth
- 80 years after a marriage
- 30 years after a death
The Hannover Stadtarchiv closed in March of 2025 to move to a new building. The archive had gradually fallen behind: where requests in 2023 took about a week to receive a response, requests in 2024 routinely took several months.
I sent a request on the day the archive re-opened on November 3, and received a response today on November 10. The queue may grow as the archive resumes its normal operation, but the initial impression is much improved responsiveness.
Sunday, November 9, 2025
Android Airtag Detection
I really do appreciate that recent Android releases notice and notify a user when an Airtag is accompanying them. Stalking via surreptitious Airtag is a real thing which happens.
One might think that the specific phrasing of "unknown Apple Airtag" implies the existence of a known Apple Airtag, but if such functionality exists I have not found it. I would really love to have a "it's ok, that one is mine" function to suppress repeated notifications about the Airtag in my luggage.
Sunday, October 26, 2025
This is a Good Week to Look Into German Citizenship
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.
Thursday, October 23, 2025
Electric short-haul vehicles
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.
Burg Pfaltzgrafstein, Rhine River
Gasthaus Rheingold, Rhine River
Assmanhausen, Rhine River
Glockenspiel in Munich
Odeonsplatz in Munich
Karlsplatz in Munich
Heidelberg Bridge
Heidelberg Castle
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
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:
- The release process grows over time, and tends to add process of the form "make sure that problem never happens again."
- Rollbacks roll back everything. When every team has P0 deliverables, no team has P0 deliverables.
- 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:
- The release process for each microservice can be (mostly) decoupled with disciplined versioning of API between producers and consumers.
- Rollbacks impact only a portion of the overall service.
- 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
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
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.
Malicious keyboard apps can ignore this, but if a malicious keyboard has made its way onto your device I think you have bigger problems.
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.