By Robert Ellison. Updated on Saturday, January 18, 2025.
Google Pixel 8 Pro 2mm f2.0 1/1,900s ISO41
LH1384
The photograph titled "FRA KRK" captures a scene of travelers boarding a Lufthansa aircraft. The plane stands prominently on the tarmac, its sleek metallic body reflecting the soft light of an overcast sky. A diverse crowd of passengers, clad in a variety of casual travel attire, converges towards the aircraft's boarding stairs. Luggage, both wheeled and carried, adds to the whirlwind of movement and anticipation. The expanse of the tarmac extends into the background, where other parts of the airport are faintly visible, suggesting a fluidity and constant motion emblematic of travel. The photograph not only freezes a moment amid the buzz of travel but also hints at the myriad stories and destinations that intersect in this shared space.
Artistically, the photograph employs a realistic style, emphasizing the everyday essence of airport life. The composition places the aircraft slightly offset to the left, thereby creating visual interest and directing the viewer’s eye naturally from the passengers towards the plane. The overcast sky casts a diffused light, which reduces harsh shadows and contributes to a softer color palette. This choice enhances the sense of a typical travel day. While the crowd’s dynamism gives the photograph its life, the horizontal lines of the tarmac and airplane ground the scene in a calm stability. What I appreciate about the photo is its ability to encapsulate a sense of journey and anticipation, though a slight elevation in contrast might enrich some of the photo’s details, adding depth to this vibrant scene.
By Robert Ellison. Updated on Saturday, January 18, 2025.
Google Pixel 8 Pro 7mm f1.7 1/25s ISO427
LH755
The photograph titled "BLR FRA" captures the vibrant hustle and bustle of an airport at night. At the foreground, a grand airplane rests elegantly at the terminal, its nose slightly turned towards the viewer, exuding an air of engineering marvel and silent anticipation. The luminescent glow from the airport lights bathes the scene in a palette of warm yellows and cool blues, creating a harmonious blend of hues across the tarmac. Visible in the background are other aircraft, their tails silhouetted against the deep night sky, dotted sporadically with distant city lights. The airport’s structures—crisscrossing walkways and signs—add layers of depth, suggesting motion and purpose in this nocturnal setting.
The photograph employs a formal style with an emphasis on symmetry and repetition, enhanced by the structured linear arrangements of the planes and the orderly grid of the tarmac. The use of long exposure is evident, softening the glare of artificial lights and lending a dreamlike quality to the scene. However, this effect also introduces a subtle overexposure, slightly washing out certain details and reducing the clarity of the scene. The composition effectively guides the viewer’s eye from the foreground, where the aircraft takes center stage, to the illuminated horizon, maintaining interest and intrigue. The image's technical precision—the sharpness of the aircraft contrasted with the gentle blur of the background—demonstrates a mastery over the challenges of night photography, though a balance in light intensity could enhance the overall detail. Despite this minor shortfall, the photograph beautifully encapsulates the modernity and constant motion of air travel.
As ever a brutal slate of propositions to decide on for the election. I've been blogging my choices since 2012 so I have a decent archive at this point and decided to automate. I built a custom GPT from the 300 page voter guide and my previous ballot measure related posts. I then interviewed the GPT on each proposition, asking for a summary, related issues that I have voted on previously and then a concise recommendation based on my voting history. I've made some light edits and it can be a bit salesy at times, but I think it's captured the right angle on everything. If you want more detail you can chat with it here.
A: Schools Improvement and Safety Bond
Proposition A is a $790 million bond measure for the San Francisco Unified School District, aimed at making critical upgrades to aging infrastructure, including seismic retrofitting, classroom modernization, and technology improvements. While concerns about past financial mismanagement in the district are valid, the need for safe, functional school facilities is undeniable. A strong education system requires investment, and Proposition A offers a targeted, practical way to address overdue infrastructure needs without raising taxes. Vote Yes on Proposition A to ensure our schools are safe, modern, and capable of meeting students' needs.
B: Community Health and Medical Facilities, Street Safety, Public Spaces, and Shelter to Reduce Homelessness Bond
Proposition B - Yes. This $390 million bond measure will fund necessary upgrades to health facilities like Zuckerberg SF General and Laguna Honda, improve street safety, and create housing for homeless families. It’s a no-brainer to support critical infrastructure improvements that will protect public health and ensure our medical centers are earthquake-safe. The homelessness crisis also demands urgent attention, and this bond promises over 2,300 new units without raising taxes. Past measures focusing on safety, health, and homelessness have garnered my support, and with strong oversight and no new taxes, this is an easy "Yes."
C: Inspector General
Proposition C would create an independent Inspector General within the Controller’s Office to investigate fraud, waste, and abuse in city government. This measure gives the Inspector General the necessary powers, including the ability to subpoena records, to effectively hold city officials and contractors accountable. Given the numerous scandals in recent years, establishing a robust oversight mechanism is crucial for restoring trust in our government. In the past, I've consistently supported reforms that promote transparency and accountability, and this measure is no exception. Vote YES to combat corruption and strengthen oversight in San Francisco.
D: City Commissions and Mayoral Authority
Proposition D seeks to reduce the number of city commissions and grant the Mayor greater authority to appoint and remove department heads without Board of Supervisors' confirmation. While the measure promises efficiency and cost savings, it concentrates too much power in the Mayor's office, diminishing vital checks and balances. The proposed elimination of commissions also weakens public oversight and community involvement in city governance. In the past, I’ve consistently voted to safeguard accountability and ensure broader public participation in government decisions. For these reasons, I recommend voting NO on Proposition D.
E: Creating a Task Force to Recommend Changing, Eliminating, or Combining City Commissions
Proposition E establishes a Commission Streamlining Task Force to review San Francisco’s numerous commissions and recommend changes, including consolidations and eliminations, to improve efficiency. While we must safeguard public oversight, the measure carefully balances reform with maintaining critical functions by allowing the Board of Supervisors to block any overreach. Given the bloated state of city commissions and the need for responsible governance, this is a measured step towards improving accountability and cutting redundancy. Vote Yes on Proposition E for smarter, more efficient government.
F: Police Staffing and Deferred Retirement
This measure would reintroduce a Deferred Retirement Option Program (DROP) to allow senior police officers to defer retirement while earning pension benefits, with the aim of addressing San Francisco's police staffing shortages. However, the program echoes the failed 2008-2011 DROP, which was discontinued due to high costs and minimal impact on staffing levels. The projected $600,000 to $3 million annual cost burden for the city, combined with the likelihood of "double-dipping" by officers, makes this a fiscally irresponsible solution. I recommend voting No on Proposition F, as it represents another costly and ineffective attempt to fix a complex issue.
G: Funding Rental Subsidies for Affordable Housing Developments Serving Low Income Seniors, Families, and Persons with Disabilities
Proposition G establishes the Affordable Housing Opportunity Fund to provide rental subsidies for extremely low-income seniors, families, and persons with disabilities, funded by at least $8.25 million annually from the City starting in 2026. The measure aims to bridge the gap between affordable housing costs and what these vulnerable groups can afford. I recommend voting Yes on Proposition G. It offers a targeted solution to address San Francisco’s housing crisis for the most vulnerable, aligns with past support for social safety net measures, and ensures long-term investment in affordable housing without jeopardizing the City’s budget stability.
H: Retirement Benefits for Firefighters
This measure seeks to lower the retirement age for firefighters hired after 2012 from 58 to 55, aligning their benefits with those hired before that date. While fairness across hire dates is important, we must remember why the 2011 pension reforms were implemented: to ensure the long-term financial stability of the city's pension system. Undoing those reforms now, at a cost of millions, risks repeating the mistakes of the past, particularly as San Francisco still faces significant fiscal challenges. Firefighters already receive some of the highest compensation in the Bay Area, and rolling back these necessary reforms would be irresponsible. Vote NO to protect San Francisco's financial future.
I: Retirement Benefits for Nurses and 911 Operators
Proposition I seeks to extend retirement benefits to Registered Nurses and 911 dispatchers by allowing nurses to purchase additional service credits and moving dispatchers to a more generous pension plan. While the city is facing staffing shortages in these vital roles, the measure increases pension liabilities by $3.8 to $6.7 million annually at a time when San Francisco already has a $790 million budget deficit. Similar to past pension-related propositions, I oppose expanding benefits that deepen our financial obligations without addressing the structural issues that contribute to these shortages. San Francisco needs fiscal responsibility and long-term solutions, not quick fixes that will only worsen the city's budget woes. Vote No on I.
J: Funding Programs Serving Children, Youth, and Families
Proposition J creates the "Our Children, Our Families" initiative to improve oversight of City funds supporting children, youth, and family services. It increases accountability by requiring annual reports and a comprehensive five-year spending plan for key funds like the Public Education Enrichment Fund (PEEF). Given my strong support for past measures that prioritize stable, dedicated funding for children and family programs, this proposition is a natural continuation of ensuring our city’s resources are used effectively for the next generation. Vote YES to strengthen oversight and maximize the impact of these crucial services.
K: Permanently Closing the Upper Great Highway to Private Vehicles to Establish a Public Open Recreation Space
Yes. This measure will permanently close the Upper Great Highway to private vehicles, converting it into public recreational space. Exceptions will be made for emergency and official vehicles, creating a safe, car-free area for walking, biking, and other activities. In the past, I’ve supported keeping spaces like JFK Drive in Golden Gate Park closed to cars, and this is no different. Let’s protect our coastline, reduce traffic, and keep this beautiful area open for everyone to enjoy without the disruption of cars.
L: Additional Business Tax on Transportation Network Companies and Autonomous Vehicle Businesses to Fund Public Transportation
Yes. Proposition L proposes a business tax on transportation network companies (TNCs) like Uber and Lyft, as well as autonomous vehicle businesses, to fund Muni's services. The tax would ensure these companies contribute to maintaining San Francisco's public transit system, which is critical for reducing traffic congestion and emissions, while protecting Muni services from cuts. Given the City's need for reliable public transportation, especially for vulnerable communities, this measure is a step towards making large businesses pay their fair share without passing the burden onto riders.
M: Changes to Business Taxes
Proposition M proposes changes to the business tax structure in San Francisco, increasing the small business exemption, simplifying tax categories, and adjusting rates on gross receipts, homelessness taxes, and administrative office taxes. While this measure aims to reduce tax burdens on smaller businesses, it also results in a significant short-term revenue loss—approximately $40 million annually until 2027. Given my consistent opposition to tax breaks that disproportionately benefit larger businesses while undermining essential public services (especially on previous homelessness and public health measures), this measure represents a dangerous gamble with city revenue. San Francisco cannot afford to lose crucial funds for services that need more support, not less. Vote NO on Proposition M.
N: First Responder Student Loan and Training Reimbursement Fund
This measure proposes the creation of a fund to reimburse first responders for student loan and training expenses, up to $25,000 per employee. While supporting first responders is vital, this measure introduces new financial obligations without a mandatory funding source, risking future taxpayer burdens. Similar to past pension-related measures, it offers a short-term fix for retention issues but fails to address systemic salary improvements or broader fiscal sustainability. For these reasons, I recommend a No vote on Proposition N.
O: Supporting Reproductive Rights
Proposition O affirms San Francisco’s role as a leader in protecting reproductive rights by expanding access to crucial reproductive health services, including abortion and emergency contraception. It establishes a city-maintained website listing providers and ensures transparency by requiring signage at facilities that do not offer these services. Additionally, it protects patient confidentiality from out-of-state inquiries and supports reproductive health funding. Given my consistent support for individual freedoms and opposition to government overreach in personal health matters, a Yes vote on Proposition O is a clear choice to safeguard reproductive rights in San Francisco.
Updated 2024-10-20 00:28:
This is a podcast version of the post created using NotebookLM.
We recently got an electric vehicle and unsurprisingly our electricity usage has shot up - something like 125% so far. This is of course offset by not needing to buy gas, but the PG&E bill is starting to look eye watering.
PG&E offers an exciting and nearly impenetrable number of rate plans. Right now we're on E-TOU-C which PG&E says is the best choice for us. This is a time of use plan which makes a lot of sense - electricity is cheap off peak and expensive when it's in high demand. Running the dishwasher at the end of the day saves a few cents. Charging an EV at the right time is a big deal.
I decided to simulate our bill on each plan, with and without EV charging.
This turns out to be astonishingly complicated. There is probably a significant energy saving in having the billing systems sweat a bit less. It's not just peak vs. off peak, the rates are different for summer and winter. In some plans peak is a daily occurrence and in others it doesn't apply to weekends and holidays (raising the exciting sub investigation of what PG&E considers to be a holiday). Some plans have a daily use fee. Our plan has a discount for baseline usage, others do not.
That's all just for the conventional time of use plans. The EV plans introduce a 'part-peak' period so there are three different rates based on time of day. They also have different definitions of summer.
I had imagined a quick spreadsheet but this has turned into a python exercise. The notebook is included below. If you use this you'll need to estimate your average daily EV charging needs and also your baseline details. It uses a year of data downloaded from PG&E to run the simulation, so use the year before you started charging an EV. I think I've captured most of the details but I did take a shortcut with the baseline calculations - it uses calendar months instead of billing periods. PG&E billing periods range from 28-33 days, presumably because that will be cheaper in the long run.
It would be nice if PG&E had some kind of what-if modelling but I guess that's not in their best interests. Right now the web site says I should stick on E-TOU-C, which looks like a bad idea even based on the past year of usage. All of the plans are pretty close for me based on historical usage though. Adding an EV shows a huge difference. Off peak rates are a lot cheaper but in exchange the peak rates are much higher. I'll save a lot moving to the EV2 plan, which is what I've just done. It's not clear how you should choose between the different EV oriented plans without getting into this level of detail, but they are all better than the conventional time of use options if you have better things to do.
I evaluated the E-TOU-B, E-TOU-C and E-TOU-D time of use plans and the EV Rate A, EV Rate B, EV2 and E-ELEC plans for people with an EV or other qualifying electrical thing. The chart at the top of the post shows PG&E's estimates for the past year, my estimates and then my estimates with EV charging included.
(Published to the Fediverse as:
Which PG&E rate plan works best for EV charging? #code#pge#electricity#ev#python Simulating PG&E bills with and without EV charging across 7 rate plans to discover the cheapest option (Python).)
By Robert Ellison. Updated on Saturday, January 18, 2025.
Google Pixel 8 Pro 2mm f2.0 1/3,817s ISO43
Photo of the Long Island Railroad storage facility in front of Hudson Yards in New York City (one end of the High Line park).
The photograph titled "Hudson Yards" captures a striking urban tableau, where towering skyscrapers reflect the burgeoning spirit of a vibrant metropolis. The focal point is an incoming train, its mirrored metallic façade hugging parallel tracks that lead the eye into the concrete canyon of New York City. Flanking the train are rows of parked railcars, their linear arrangements echoing the structured grid of the cityscape beyond. The skies above are adorned with playful clouds, whose serene presence contrasts with the structured intensity below. Light dances across reflective glass buildings, casting both brilliance and shade, creating an intricate mosaic of urban life.
This composition uses leading lines masterfully, with the train tracks guiding the viewer's eye directly toward the architectural marvels of Hudson Yards. The verticality of the skyscrapers is beautifully juxtaposed with the horizontal lines of the tracks, creating a sense of harmony and balance. The photograph employs symmetry, both in the alignment of the train and the framing of the skyline, offering a pleasing visual rhythm. The colors are crisp and vibrant, highlighting the modernity of the architecture against the natural beauty of the sky. While the photograph excels in its composition and energy, it could benefit from a slight brightening in the shadows to reveal more detail in the darker areas. This minor adjustment might enhance the depth and further illuminate the impressive convergence of rail and tower.
By Robert Ellison. Updated on Saturday, January 18, 2025.
Google Pixel 8 Pro 7mm f1.7 1/25s ISO667
AS384
The photograph titled "SFO EWR" captures the bustling nocturnal scene of an airport gate, with an Alaska Airlines airplane as the central focus. Bathed in the glow of artificial lights, the aircraft sits patiently at the gate, its sleek fuselage gleaming under the muted evening ambiance. Surrounding the plane are a symphony of ground vehicles, each performing its discrete task, hinting at the complex orchestration that occurs behind the scenes of air travel. The terminal building in the background, dotted with small, brilliant lights, adds depth to the composition while other aircraft are dimly visible, whispering tales of parallel journeys. The scene encapsulates the essence of a busy airport, where motion and stillness harmoniously coexist.
The composition of the photograph is thoughtfully balanced, with the airplane positioned slightly off-center, drawing the viewer’s eye naturally along its elongated frame to the terminal beyond. The use of leading lines, primarily from the plane’s wing and the jet bridge, guides the gaze toward the horizon of illuminated windows. The choice of a night setting amplifies the industriousness and serenity of such a bustling space, though the overall lighting could be perceived as too stark, occasionally sapping warmth from the scene. The contrast between light and shadow is delicately managed, though a bit more vibrancy could enhance the details. Overall, the photo succeeds in conveying the vitality and intricacy of airport operations, while inviting viewers to ponder the stories of travelers passing through.
Google has been sending me increasingly threatening emails about upgrading my Android apps and so August has been all about that. Helpfully Microsoft has also deprecated Xamarin (a tool I used to write software for Android) and so I also had to do a crash course in MAUI. Thank goodness for ChatGPT and GitHub Copilot. I also took this opportunity to figure out adaptive icons and generally update the look and feel of the apps.
Catfood Earth for Android has a new volcanoes layer and support for showing where you are on the satellite image.
By Robert Ellison. Updated on Sunday, September 29, 2024.
Catfood Earth for Android 4.40 is now available on Google Play.
Earth has an updated look and feel and two new features.
The volcanoes layer has been ported over from the Windows version of Catfood Earth. When enabled this will show volcanoes that have recent activity (within the past week) using data from the Smithsonian Institution's Global Volcanism Program.
It's now possible to show your current location on the map. I'm not sure it's a replacement for Google Maps just yet but it does help you find where you are on the satellite image.
The release was prompted by Google requiring API level 34 support... completing this for Fortune Cookies was a nightmare but having learnt from that experience Earth made the jump to MAUI pretty smoothly.
If you already use Earth for Android you should get the new version shortly. If not, this is what Android live wallpaper was made for so give it a try!
Fortune Cookies for Android 1.50 is now available in the Google Play Store.
This update was driven by Google insisting that I target API level 34. Which is fair enough and I figured this would be a five minute task followed by a smooth release. I should have known better.
Of course the starting point is updating Visual Studio, updating the Android SDK, learning that my emulator won't launch any more and eventually coaxing it back to life. That's a couple of hours. Why this doesn't just happen when I'm doing other things I don't know, but for dev tools this has to be a ceremony.
Once all of that was done I learned that Xamarin was officially deprecated in May. I'm going to have to figure out MAUI.
There is a helpful migration page with this gob smacking advice:
"Once your dependencies are resolved and your code and resource files are added to your .NET native project, you should build your project. Any errors will guide you towards next steps."
I think they hired Yoda:
"Errors, they are. Guide you, they will, towards your next steps. Warnings, hmm, check them out you must... eventually. But information issues? Merely whispers they are, nudging you towards shiny new platform features, yes! Listen, you might, if time you have."
Anyway... the actual mechanics of getting this working in MAUI were not that bad. It could be that I need to reinstall my system with extreme prejudice but the platform itself seems to be very unstable. I constantly got Visual Studio and cryptic compile errors that went away on rebuild or a restart. Starting the android emulator has completely frozen my system several times requiring a hard reboot. I don't think I've had that experience since the Clinton administration.
Once it was finally working the Google Play Developer console wanted my "private" key, which I gave it; and to have a conversation about my tax situation in Cuba, which I'm ignoring for now.
As well as a brand new API target Fortune has a nifty new color scheme, a floating action button with a little fortune cookie on it, and will ask you nicely for permission to send notifications.
(Published to the Fediverse as:
Fortune Cookies for Android 1.50 #code#fortune#software#cookie#catfood#xamarin#maui Catfood Fortune for Android is based on the UNIX command of the same name and will display a random and possibly no longer socially acceptable fortune from a less civilized era.)