Wednesday, June 24, 2026

FÊTE_N26

🎉 BONNE FÊTE NATIONALE! 🎉




                                                          *     *     *

Tuesday, June 23, 2026

Bummed

 Looking for something midly amusing on the Web this morning, to kick off

my blog. Nothing: everybody is overheated/water_logged, hopelessly alcoholic, 

resigning, rightiously_offended...bummed out. 


Except, perhaps, these two; Gurky and his videographer Karl. A monument to the 

everlasting pleasure of food. Below, one of my favourite vids, on historical foods;


Monday, June 22, 2026

Pricing_it

 Hey, it's stopped raining!! How about that...

Before going into full celebration mode to kick off summer, and it's back-to-back

National Holidays (which we have certainly earned this year), one might do well

to look at this little... situation:

                                                                                    








Checking in on the Canadian dollar, this morning: it is not a pretty sight. Scratching

the bottom of the barrel at .70. With vacations coming up, as well.


I have no doubt there is a very good reason for this, what with oil tumbling in the last few

days. And then the USA all but threatening to shut down the free trade agreement. Makes

perfect sense. And guess what; I don't care. It is bad news at a bad time. What are we going to do 

about it!!??


The exchange rate is always the last considered when Canada pulls itself out of economic 

difficulties. This should not be. It is what hurts the most.

                                                                                                                                    


*     *     *

Summer 2026 Song:



Bringing it back to Disco:

Sunday, June 21, 2026

Concept

 

Today is the first day of summer: at 4:27AM Montreal time, the Earth reached its

most bent toward the Sun moment ie the Solciste, and today will be the longest day

of the year in sunshine hours.. This naturally lends itself to celebration,

and - as for every year - I need to reconfigure how I will dress going into Summer.


Last night I was wondering at what time this Solciste moment was going to happen in, say,

London or Paris. Sure to have ramifications on how people will dress there. The whole sartorial 

day is in evolution here.


I could no doubt find a friendly online app to figure all this out for me; but Summer Solciste is

not the only moment when I wonder was might be going on elsewhere on the planet. or need to 

know: Is itChristmas there yet, has the day come and gone in Asia and so forth. Long story short, 

I could use an app...


Below, a mock-up on what appears when the app is opened. One enters the current time in the 

reference place. The date is always D. One also enters the second timezone one is interested in.

On pressing calculate, the time in the target zone should appear and - for day - one of D+, D, D-

thus indicating whether the date is tomorrow, today or yesterday.


That's all I need to know! Now all I need is a friendly AI that will generate the Python code for 

me. I expect to have to furnish the Timezone chart, but the code should handle the rest directly!


                                                                                    


Copilot produced a working app for me:

                                                                                           


Problem with this: the code uses python's pytz, which adjusts for Daylight Savings and various

 oddities... the Timezone map is not a useful reference!


https://copilot.microsoft.com/shares/7fGXnenweQmHdtZ9Bu1MU


*     *     *




import tkinter as tk
from tkinter import ttk
from datetime import datetime
import pytz
from PIL import Image, ImageTk


# ---------------------------------------------------------
# Timezone Conversion Logic
# ---------------------------------------------------------
def convert_time():
ref_tz_name = ref_timezone.get().strip()
tgt_tz_name = tgt_timezone.get().strip()
ref_time_str = ref_time.get().strip()

try:
# Parse reference time
ref_dt = datetime.strptime(ref_time_str, "%H:%M")

# Attach today's date
today = datetime.now().date()
ref_dt = datetime.combine(today, ref_dt.time())

# Localize to reference timezone
ref_zone = pytz.timezone(ref_tz_name)
ref_dt = ref_zone.localize(ref_dt)

# Convert to target timezone
tgt_zone = pytz.timezone(tgt_tz_name)
tgt_dt = ref_dt.astimezone(tgt_zone)

# Determine D-, D, D+
if tgt_dt.date() < today:
d_flag = "D-"
elif tgt_dt.date() > today:
d_flag = "D+"
else:
d_flag = "D"

# Display result
result_time.set(tgt_dt.strftime("%H:%M"))
result_date.set(d_flag)

except Exception:
result_time.set("Error")
result_date.set("Check inputs")


# ---------------------------------------------------------
# Zoomable Image Popup
# ---------------------------------------------------------
def show_timezone_chart():
popup = tk.Toplevel(root)
popup.title("Timezone Chart")
popup.configure(bg="#ffffff")

# Load original image
original_img = Image.open("Images/Timezones.png")

# State for zooming
popup.zoom_level = 1.0
popup.original_img = original_img

# Canvas for image
canvas = tk.Canvas(popup, bg="white", width=900, height=450)
canvas.pack(fill="both", expand=True)

# Function to redraw image at current zoom level
def redraw_image():
zoom = popup.zoom_level
w = int(original_img.width * zoom)
h = int(original_img.height * zoom)

resized = original_img.resize((w, h), Image.LANCZOS)
popup.photo = ImageTk.PhotoImage(resized)

canvas.delete("all")
canvas.create_image(0, 0, anchor="nw", image=popup.photo)
canvas.config(scrollregion=(0, 0, w, h))

# Zoom controls
def zoom_in():
popup.zoom_level *= 1.2
redraw_image()

def zoom_out():
popup.zoom_level /= 1.2
redraw_image()

# Mouse wheel zoom
def mouse_zoom(event):
if event.delta > 0:
popup.zoom_level *= 1.1
else:
popup.zoom_level /= 1.1
redraw_image()

canvas.bind("<MouseWheel>", mouse_zoom)

# Buttons
btn_frame = tk.Frame(popup, bg="white")
btn_frame.pack(pady=10)

tk.Button(btn_frame, text="Zoom In", command=zoom_in,
font=("Arial", 12), bg="#66aaff", fg="white").grid(row=0, column=0, padx=10)

tk.Button(btn_frame, text="Zoom Out", command=zoom_out,
font=("Arial", 12), bg="#66aaff", fg="white").grid(row=0, column=1, padx=10)

tk.Button(btn_frame, text="Close", command=popup.destroy,
font=("Arial", 12), bg="#ffcc00").grid(row=0, column=2, padx=10)

# Initial draw
redraw_image()


# ---------------------------------------------------------
# GUI Setup
# ---------------------------------------------------------
root = tk.Tk()
root.title("Timezone Converter")
root.geometry("520x420")
root.configure(bg="#f0f4ff")

title_label = tk.Label(root, text="TIMEZONE", font=("Arial", 22, "bold"),
bg="#f0f4ff", fg="#003366")
title_label.pack(pady=10)

frame = tk.Frame(root, bg="#f0f4ff")
frame.pack(pady=10)


# ---------------------------------------------------------
# Reference Section
# ---------------------------------------------------------
ref_label = tk.Label(frame, text="Reference", font=("Arial", 14, "bold"),
fg="#0044aa", bg="#f0f4ff")
ref_label.grid(row=0, column=0, padx=20)

tk.Label(frame, text="Timezone:", bg="#f0f4ff").grid(row=1, column=0)
ref_timezone = tk.Entry(frame, width=20)
ref_timezone.grid(row=2, column=0, pady=5)

tk.Label(frame, text="Time (HH:MM):", bg="#f0f4ff").grid(row=3, column=0)
ref_time = tk.Entry(frame, width=20)
ref_time.grid(row=4, column=0, pady=5)


# ---------------------------------------------------------
# Target Section
# ---------------------------------------------------------
tgt_label = tk.Label(frame, text="Target", font=("Arial", 14, "bold"),
fg="#aa0066", bg="#f0f4ff")
tgt_label.grid(row=0, column=1, padx=20)

tk.Label(frame, text="Timezone:", bg="#f0f4ff").grid(row=1, column=1)
tgt_timezone = tk.Entry(frame, width=20)
tgt_timezone.grid(row=2, column=1, pady=5)


# ---------------------------------------------------------
# Buttons
# ---------------------------------------------------------
calc_button = tk.Button(root, text="Calculate", font=("Arial", 14, "bold"),
bg="#ffcc00", fg="black", command=convert_time)
calc_button.pack(pady=10)

chart_button = tk.Button(root, text="View Timezone Chart",
font=("Arial", 12, "bold"),
bg="#66aaff", fg="white",
command=show_timezone_chart)
chart_button.pack(pady=5)


# ---------------------------------------------------------
# Output Section
# ---------------------------------------------------------
output_frame = tk.Frame(root, bg="#f0f4ff")
output_frame.pack(pady=10)

tk.Label(output_frame, text="Target Time:", bg="#f0f4ff",
font=("Arial", 12)).grid(row=0, column=0)
result_time = tk.StringVar()
tk.Label(output_frame, textvariable=result_time, bg="#f0f4ff",
font=("Arial", 16, "bold"), fg="#aa0066").grid(row=0, column=1, padx=10)

tk.Label(output_frame, text="Date:", bg="#f0f4ff",
font=("Arial", 12)).grid(row=1, column=0)
result_date = tk.StringVar()
tk.Label(output_frame, textvariable=result_date, bg="#f0f4ff",
font=("Arial", 16, "bold"), fg="#cc0000").grid(row=1, column=1, padx=10)


root.mainloop()

Father's_Day26

 Below, an interesting research report on speaking many languages and the brain. Suggests it's

all one language as far as the brain's resource allocation is concerned. Interesting...

https://archive.ph/yTphl


HAPPY FATHER'S DAY TO ALL!

And what will I be doing this Father's Day. Well watching this long - no doubt convoluted -

video about Hegel. What else!!??


Saturday, June 20, 2026

World_Center

 Below, the World Map Chinese children work from at school:

                                                                    



Changing_C

 Russia will abandon rules of war, says Putin deputy, raising nuclear strike fears after Ukraine attack


Copilot Search...

"Rebus sic stantibus" is a Latin legal doctrine meaning "things thus standing," allowing a contract or treaty to be modified or terminated if fundamental circumstances change.

Definition and Legal Significance

The phrase rebus sic stantibus literally translates from Latin as “things thus standing” and refers to the principle that agreements remain binding only as long as the circumstances under which they were concluded remain substantially the same 

In law, it serves as an exception to the general rule of pacta sunt servanda, which holds that agreements must be kept 

When unforeseen, fundamental changes occur that radically alter the obligations of a contract or treaty, the affected party may seek termination, withdrawal, or renegotiation 

Application in International Law

In international law, the doctrine is codified in Article 62 of the 1969 Vienna Convention on the Law of Treaties, under the title “Fundamental Change of Circumstances” 

 To invoke it, a state must demonstrate that:

The circumstances at the time of the treaty were objectively essential to the obligations.

The change in circumstances has had a radical effect on the obligations still to be performed.

The change was unforeseen and not contemplated by the parties at the time of agreement 


Courts and tribunals apply this principle very narrowly, ensuring it is used only in exceptional cases where obligations have become fundamentally different in character, not merely more difficult or costly 

.Relation to Domestic Law

In domestic contract law, similar doctrines exist, such as impracticability or frustration of purpose, which allow parties to adjust or terminate contracts under unforeseen, extreme circumstances 

 However, courts generally apply these doctrines cautiously to prevent abuse.

Historical Context

The principle originates from Roman law and was formalized by jurists like Scipione Gentili and Emer de Vattel, who emphasized that obligations are contingent on the conditions present at the time of agreement 

 Early examples include disputes over treaties in ancient Greece and later in European international law, such as Russia’s invocation of the doctrine in the 19th century Treaty of Paris and Treaty of London 

Limitations

The doctrine cannot be invoked if the changed circumstances were anticipated by the parties.

Unilateral denunciation of a treaty is generally prohibited unless specific conditions under the Vienna Convention are met 

It is considered a rare “escape clause”, not a general right to exit agreements 

In summary, rebus sic stantibus allows for legal flexibility in contracts and treaties when unforeseen, fundamental changes occur, balancing the stability of agreements with the realities of changing circumstances.