This is me behind Limoncello:

These (were and thus in a way) are my pets:

Compare the acknowledgement sections of my scholarly articles and find out what apparently matters most in my scholarly life:
I would especially like to thank Marvin Backes, Sven Bernecker, Linus Eyinck and all the participants of the Brownbag colloquium in Cologne for their help in discussing my ideas. I would also like to thank an anonymous referee of the present journal for his/her exceptionally helpful comments on previous drafts of this paper. Out of attachment, and as always, I thank the Metronom. (Social Epistemology)
I would like to thank Luis Rosa, Jasper Lohmar and Nicola Thomaschewski for their comments on earlier drafts of this paper. I would also like to thank the members of Metronom for their always refreshing company, beyond the scope of this essay. (Logica Universalis)
Out of attachment I thank the METRONOM. I would also like to thank the anonymous referee of the SAJL and all participants of SALOME 1 for their helpful contributions. (South American Journal of Logic)
–> You should visit it when you are in Cologne!
This is a program (Perfegg1.0) that calculates the perfect cooking time for soft-boiled eggs based on height, width and atmospheric pressure (soon I want to make it available as a standalone. I wrote it to make your breakfasts better):
import tkinter
from tkinter import *
import numpy
root=Tk()
root.title("Perf-Egg 1.0")
root.tk.call('tk', 'scaling', 1.25)
root.minsize(200, 641)
root.resizable(width=False, height=False)
#image_path = PhotoImage(file=r"C:\Users\INSERT_PRIVATE_PATH_OF_IMAGE_HERE")
#bg_image = tkinter.Label(root,image=image_path)
#bg_image.place(relheight=1,relwidth=1)
text_label=tkinter.Label
w = Label(root, text="1) Please insert egg-height in first field and egg-breadth in second field (mm).\n"
"2) Insert altitude of your cooking location in left field (m).\n"
"3) Click 'calculate egg data'.\n"
"4) Egg should have room temperature (10°C+), water should boil when egg is added.\n"
"5) Start timer and put egg in the water.\n"
"6) Hold under cold running water for 10 sec. At room temperature, serve after about 1 min.\n",
height=7, width=70,font=('Helvetica bold', 12),bg='white')
w.pack(pady=1, side= TOP, anchor='w')
def focus_next_widget(event):
event.widget.tk_focusNext().focus()
return("break")
textBox=Text(root, height=1, width=2,font=('Helvetica bold', 20))
textBox.bind("<Tab>", focus_next_widget)
textBox.pack()
textBox.insert(1.0,"54")
textBox2=Text(root, height=1, width=2,font=('Helvetica bold', 20))
textBox2.bind("<Tab>", focus_next_widget)
textBox2.pack()
textBox2.insert(1.0,"40")
HeightBox=Text(root, height=1, width=7,font=('Helvetica bold', 15))
HeightBox.bind("<Tab>", focus_next_widget)
HeightBox.pack(anchor = 'nw')
HeightBox.insert(1.0,"50")
def calculate_egg(closeall):
import matplotlib.pyplot as plt
import numpy as np
#CLOSE PROGRAM (all windows) IN LOOP WITH VARIABLE 'closeall'
if closeall > 0:
plt.close('all')
exit()
inputValue = textBox.get("1.0","end-1c")
inputValue2 = textBox2.get("1.0", "end-1c")
inputValue3 = HeightBox.get("1.0", "end-1c")
L = int(inputValue)
B = int(inputValue2)
H = int(inputValue3)
# COMPARE SECTION
r = B / 2 # for S_sphere
S_sphere = 4 * numpy.pi * r ** 2 # for comparison
# RATIO
Ratio = round(L / B, 2) # Ratio mm/mm
# VOLUME
V = (0.6057 - (0.0018 * B)) * L * B ** 2 # mm³
V_rounded = round(V) # mm³
V_ml = V / 1000 # ml
V_ml_rounded = round(V_ml) # ml
# SURFACE
S = (3.155 - 0.0136 * L + 0.0115 * B) * L * B # mm²
S_rounded = round(S) # mm²
# RATIO CATEGORY
Category = 0
if Ratio >= 1.38: # <1.38 = Schwelle lang
Category = 1, "Long"
if 1.22 < Ratio < 1.38: # Bereich normal
Category = 0, "Normal"
if Ratio <= 1.22: # > 1.22 = Schwelle breit
Category = -1, "Round"
#SIZE
Size = V_ml_rounded
SizeCategory= 'M'
if Size > 58:
SizeCategory = 'L'
if 48 < Size <= 58:
SizeCategory = 'M'
if 44 < Size <= 48:
SizeCategory = 'S'
if Size <= 44:
SizeCategory = 'XS'
#COOKING TIME:
import math
Eggplotvolume1 = V_ml_rounded
Eggplottime = math.sqrt(Eggplotvolume1 + 3) - 1
finaltime = Eggplottime
if Category[0] > 0:
finaltime = finaltime - 0.2
if Category [0] < 0:
finaltime = finaltime + 0.2
if H > 50:
finaltime2 = finaltime
increase = H/100
print (increase)
finaltime2 = finaltime + (finaltime2/100*increase)
print("finaltime:",finaltime)
print("finaltime+increase",finaltime2)
finaltime = finaltime2
AFTERCOMMA = finaltime - int(finaltime)
SECONDSTIME = 0.6*AFTERCOMMA
FINALSECONDS = SECONDSTIME + int(finaltime)
# OUTPUT ##############
label = Label( root, text=("Volume:", V_ml_rounded,"__Form:", Category[1], "__Size:", SizeCategory,
"__Altitude:", H, "__COOKING-TIME:", round(FINALSECONDS,2)), font=('Helvetica bold', 12),bg='seashell')
label.pack()
# GRAPH##################################################
# create 1000 equally spaced points between -10 and 10
x = np.linspace(4, 8, 50)
# calculate the y value for each element of the x vector
y = x ** 2 + 2 * x - 2
fig, ax = plt.subplots()
ax.plot(x, y)
ax.legend(['= eggs with normal form at 50 m altitude. Green = your egg.'])
# Mark Egg on Graph
plt.plot(Eggplottime, Eggplotvolume1, 'x', [finaltime], Eggplotvolume1, 'x')
plt.xlabel('Time', fontsize=15)
plt.ylabel('Volume', fontsize=15)
plt.show()
############################################################
return 1
# ENDLOOP
buttonCommit=Button(root, fg= 'green' , height=1, width=15, text="Calculate egg data",font=('Helvetica bold', 15),bg='lawngreen', command=lambda: calculate_egg(0))
buttonCommit.pack()
buttonCommit2=Button(root, fg= 'red' ,height=1, width=15, text="Close and delete", font=('Helvetica bold', 15),bg='coral', command=lambda: calculate_egg(1))
buttonCommit2.pack()
############TIMER
import tkinter as tk
from tkinter import ttk
# Function to start the timer
def start_timer():
global remaining_time
try:
minutes = int(minutes_entry.get())
seconds = int(seconds_entry.get())
remaining_time = minutes * 60 + seconds
update_timer()
start_button.config(state="disabled")
stop_button.config(state="active")
except ValueError:
pass
# Function to update the timer
def update_timer():
global remaining_time
if remaining_time > 0:
minutes = remaining_time // 60
seconds = remaining_time % 60
timer_label.config(text=f"{minutes:02d}:{seconds:02d}")
remaining_time -= 1
parent.after(1000, update_timer) # Update every 1000 milliseconds (1 second)
else:
timer_label.config(text="00:00")
start_button.config(state="active")
stop_button.config(state="disabled")
# Function to stop the timer
def stop_timer():
global remaining_time
remaining_time = 0
timer_label.config(text="00:00")
start_button.config(state="active")
stop_button.config(state="disabled")
# Create the main window
parent = tk.Tk()
parent.resizable(width=False, height=False)
parent.lift()
parent.attributes("-topmost", True)
parent.title("Timer")
# Create and place input fields for minutes and seconds
minutes_label = tk.Label(parent, text="Minutes:")
minutes_label.grid(row=0, column=0)
minutes_entry = tk.Entry(parent)
minutes_entry.grid(row=0, column=1)
minutes_entry.insert(0, "0")
seconds_label = tk.Label(parent, text="Seconds:")
seconds_label.grid(row=1, column=0)
seconds_entry = tk.Entry(parent)
seconds_entry.grid(row=1, column=1)
seconds_entry.insert(0, "0")
# Create and place timer label
timer_label = tk.Label(parent, text="00:00", font=("Helvetica", 48))
timer_label.grid(row=2, columnspan=2)
# Create and place start and stop buttons
start_button = ttk.Button(parent, text="Start", command=start_timer)
start_button.grid(row=3, column=0)
stop_button = ttk.Button(parent, text="Stop", command=stop_timer, state="disabled")
stop_button.grid(row=3, column=1)
# Initialize the remaining time
remaining_time = 0
# Start the Tkinter event loop
mainloop()
parent.mainloop()
(The popup-timer is not mine, all credit to whoever has written it. I found it on the www…)