Ein kleines Tinder für eure eigenen Fotos

Wahrscheinlich weil deutlich mehr über Python dokumentiert ist als über viele andere Programmiersprachen können wohl KI-Systeme Python deutlich fehlerfreier schreiben als alles andere.

Da ich eine gewissermaßen große Sammlung Bilder habe brauchte ich ein Triage Tool um zu entscheiden ob Bilder gut sind oder nicht. Auch weil ich damit Datensets für KI-Systeme schneller basteln kann.

Hier ist der Code:

import os
import shutil
import tkinter as tk
from tkinter import filedialog, ttk, messagebox
from PIL import Image, ImageTk
Image.MAX_IMAGE_PIXELS = None  # Remove decompression bomb protection

class ImageReviewTool:
    def __init__(self, master):
        self.master = master
        master.title("Image Triage Tool")
        master.geometry("800x600")  # Set initial window size
        master.minsize(400, 300)  # Set minimum window size

        # Create the main frame
        self.frame = tk.Frame(master)
        self.frame.pack(fill=tk.BOTH, expand=True)

        # Create the image display area
        self.image_label = tk.Label(self.frame)
        self.image_label.pack(fill=tk.BOTH, expand=True)

        # Create frame for file handling options
        options_frame = tk.Frame(self.frame)
        options_frame.pack(side=tk.BOTTOM, fill=tk.X)

        # Create dropdown for "Good" images handling
        good_options_frame = tk.Frame(options_frame)
        good_options_frame.pack(side=tk.LEFT, padx=10, pady=5)
        
        tk.Label(good_options_frame, text="Good images:").pack(side=tk.LEFT)
        self.good_handling = ttk.Combobox(good_options_frame, 
                                        values=["Copy", "Move"],
                                        state="readonly",
                                        width=10)
        self.good_handling.set("Copy")
        self.good_handling.pack(side=tk.LEFT, padx=5)

        # Create dropdown for "Bad" images handling
        bad_options_frame = tk.Frame(options_frame)
        bad_options_frame.pack(side=tk.LEFT, padx=10, pady=5)
        
        tk.Label(bad_options_frame, text="Bad images:").pack(side=tk.LEFT)
        self.bad_handling = ttk.Combobox(bad_options_frame,
                                       values=["Copy", "Move"],
                                       state="readonly",
                                       width=10)
        self.bad_handling.set("Move")
        self.bad_handling.pack(side=tk.LEFT, padx=5)

        # Create the "Good", "Bad", and "Skip" buttons
        button_frame = tk.Frame(self.frame)
        button_frame.pack(side=tk.BOTTOM, fill=tk.X)

        self.good_button = tk.Button(button_frame, text="Good (1)", command=self.handle_good)
        self.good_button.pack(side=tk.LEFT, padx=10, pady=10)

        self.bad_button = tk.Button(button_frame, text="Bad (0)", command=self.handle_bad)
        self.bad_button.pack(side=tk.LEFT, padx=10, pady=10)

        self.skip_button = tk.Button(button_frame, text="Skip (#)", command=self.handle_skip)
        self.skip_button.pack(side=tk.LEFT, padx=10, pady=10)

        # Create the directory selection buttons
        dir_button_frame = tk.Frame(self.frame)
        dir_button_frame.pack(side=tk.BOTTOM, fill=tk.X)

        self.select_directory_button = tk.Button(dir_button_frame, text="Select Directory", command=self.select_directory)
        self.select_directory_button.pack(side=tk.LEFT, padx=10, pady=10)

        self.select_good_directory_button = tk.Button(dir_button_frame, text="Select Good Directory", command=self.select_good_directory)
        self.select_good_directory_button.pack(side=tk.LEFT, padx=10, pady=10)

        self.select_bad_directory_button = tk.Button(dir_button_frame, text="Select Bad Directory", command=self.select_bad_directory)
        self.select_bad_directory_button.pack(side=tk.LEFT, padx=10, pady=10)

        # Add current file label
        self.file_label = tk.Label(self.frame, text="")
        self.file_label.pack(side=tk.BOTTOM, pady=5)

        self.current_directory = None
        self.good_folder = None
        self.bad_folder = None
        self.current_image_index = 0
        self.image_files = []
        self.reviewed_images = []
        self.log_file = "image_review_log.txt"
        self.current_image = None

        # Bind the window resize event to the resize_image method
        self.master.bind("<Configure>", self.resize_image)

        # Bind keyboard shortcuts
        self.master.bind("1", self.handle_good)
        self.master.bind("0", self.handle_bad)
        self.master.bind("#", self.handle_skip)

    def select_directory(self):
        self.current_directory = filedialog.askdirectory()
        if self.current_directory:
            self.image_files = [f for f in os.listdir(self.current_directory) if f.lower().endswith((".jpg", ".jpeg", ".png", ".gif"))]
            self.current_image_index = 0
            self.reviewed_images = self.load_reviewed_images()
            self.display_image()

    def select_good_directory(self):
        self.good_folder = filedialog.askdirectory()

    def select_bad_directory(self):
        self.bad_folder = filedialog.askdirectory()

    def display_image(self):
        if self.current_directory and self.image_files:
            if self.current_image_index >= len(self.image_files):
                self.image_label.configure(image='')
                self.file_label.config(text="")
                messagebox.showinfo("Complete", "All images have been reviewed!")
                return

            try:
                image_path = os.path.join(self.current_directory, self.image_files[self.current_image_index])
                self.current_image = Image.open(image_path)
                
                # Update file info label
                img_size = os.path.getsize(image_path) / (1024 * 1024)  # Convert to MB
                self.file_label.config(
                    text=f"File: {self.image_files[self.current_image_index]} | "
                         f"Size: {img_size:.1f}MB | "
                         f"Dimensions: {self.current_image.width}x{self.current_image.height}"
                )
                
                self.resize_image(None)
            except Exception as e:
                messagebox.showerror("Error", f"Failed to load image: {str(e)}")
                self.current_image_index += 1
                self.display_image()

    def resize_image(self, event):
        if self.current_image:
            try:
                # Get the current window size
                window_width = self.master.winfo_width()
                window_height = self.master.winfo_height() - 150  # Adjust for buttons and options

                # Scale the image to fit the window while maintaining aspect ratio
                image_ratio = self.current_image.width / self.current_image.height
                if window_width / window_height > image_ratio:
                    new_height = window_height
                    new_width = int(new_height * image_ratio)
                else:
                    new_width = window_width
                    new_height = int(new_width / image_ratio)

                # Use thumbnail for memory-efficient resizing of large images
                img_copy = self.current_image.copy()
                img_copy.thumbnail((new_width, new_height), Image.Resampling.LANCZOS)
                self.photo = ImageTk.PhotoImage(img_copy)
                self.image_label.configure(image=self.photo)
            except Exception as e:
                messagebox.showerror("Error", f"Failed to resize image: {str(e)}")

    def handle_good(self, event=None):
        if self.current_directory and self.good_folder and self.image_files:
            src_path = os.path.join(self.current_directory, self.image_files[self.current_image_index])
            dst_path = os.path.join(self.good_folder, self.image_files[self.current_image_index])
            
            try:
                if self.good_handling.get() == "Copy":
                    shutil.copy2(src_path, dst_path)
                else:  # Move
                    shutil.move(src_path, dst_path)
                
                self.reviewed_images.append(self.image_files[self.current_image_index])
                self.save_reviewed_images()
                self.current_image_index += 1
                self.display_image()
            except Exception as e:
                messagebox.showerror("Error", f"Failed to process image: {str(e)}")

    def handle_bad(self, event=None):
        if self.current_directory and self.bad_folder and self.image_files:
            src_path = os.path.join(self.current_directory, self.image_files[self.current_image_index])
            dst_path = os.path.join(self.bad_folder, self.image_files[self.current_image_index])
            
            try:
                if self.bad_handling.get() == "Copy":
                    shutil.copy2(src_path, dst_path)
                else:  # Move
                    shutil.move(src_path, dst_path)
                
                self.reviewed_images.append(self.image_files[self.current_image_index])
                self.save_reviewed_images()
                self.current_image_index += 1
                self.display_image()
            except Exception as e:
                messagebox.showerror("Error", f"Failed to process image: {str(e)}")

    def handle_skip(self, event=None):
        if self.current_directory and self.image_files:
            self.current_image_index += 1
            self.display_image()

    def load_reviewed_images(self):
        reviewed_images = []
        if os.path.exists(self.log_file):
            with open(self.log_file, "r") as f:
                reviewed_images = [line.strip() for line in f.readlines()]
        return reviewed_images

    def save_reviewed_images(self):
        with open(self.log_file, "w") as f:
            for image in self.reviewed_images:
                f.write(image + "\n")

if __name__ == "__main__":
    root = tk.Tk()
    app = ImageReviewTool(root)
    root.mainloop()

Kopiert das Ding in eine .py Datei und führt das Ding dann mit python.exe aus… Natürlich solltet ihr verstehen (oder euch halt von der KI erklären lassen) was das Ding hier tut.

Erst die Good und Bad Ordner wählen, dann den Ordner mit Bildern die ihr sortieren müsst.
Keyboard-Bedienung geht auch 1 ist für gutes, 0 ist für schlechtes und # ist fürs Überspringen.

Sicher noch nicht das Beste, aber brauchbar. Der ganze Code kommt nahezu vollständig aus Claude.ai.
Viel Spaß damit, vielleicht könnt ihr es ja brauchen.

Aether: Slowed & Reverb Versions

Dank Spotify lernt man ab und an so manche neue Musik kennen. Das liegt entweder daran wie ich Spotify benutze, oder an der Tatsache dass es ohne einen Algorithmus der die Musikvorlieben der Nutzer kennen lernt für Spotify selbst nicht funktionieren kann.

Das herunterschrauben der BPM und das Hinzufügen von anderen Effekten ist in letzter Zeit ein beliebtes Konzept um die Musik insgesamt ruhiger zu machen. Oft doch nur Neuinterpretationen bereits existierender Musik wird sie dadurch doch vielleicht für andere Zwecke brauchbarer, weil sie dadurch andere Stimmungen anspricht.
In Profi-Tanzkursen wird die Geschwindigkeit auch häufig dazu genutzt um den Takt an das jeweilige Niveau der Tanzschüler anzupassen. Genau so tut dies ein Fähiger Discjockey im Zusammenspiel mit seiner Tanzfläche.

Ob ihr den oft dann auch dazukommenden Hall-Effekt mögt oder nicht ist jetzt euch überlassen.

Bei Bandcamp könnt ihr euch die Musik bei Gefallen auch gleich kaufen, alternativ auch als Vinyl. Wenns Spotify bleiben muss, dann findet ihr die Musik natürlich auch da.
Die Einbettung hier ist ganz ohne Affiliate und irgendwelches Werbegedöns außer halt dem Tracking von Bandcamp selbst.

Was genau ist „Reverb“?

Komplett und unverändert aus der Microsoft Copilot KI gezogen:

„Slowed and Reverb“ ist ein Begriff aus der Musik- und Soundtechnik. Es bezieht sich auf den Prozess, bei dem die Geschwindigkeit eines Songs reduziert („slowed“) und ein Hall-Effekt („reverb“) hinzugefügt wird. Die Reduzierung der Geschwindigkeit geht oft mit einer technisch induzierten verringerten Frequenz einher, sodass die verlangsamten Songs oder Sounds in ihrer Akustik in der Regel einen tieferen Eindruck machen.

Dieser Prozess ermöglicht es Musikern und Soundtechnikern, eine völlig neue Interpretation des ursprünglichen Soundtracks zu erstellen. Schnellere Songs können durch eine Reduzierung der BPM-Rate (Beats per Minute-Rate) völlig neuen Stimmungsfeldern zugeordnet werden.

Die Gesangsspuren der Songs werden oft separat bearbeitet. Dabei kann die Stimme künstlich neu frequentiert oder gänzlich neu aufgenommen werden, damit sie der neu bearbeiteten Tonspur angepasst werden kann.

Das Konzept von „Slowed and Reverb“ ist sehr beliebt, da es eine neue Interpretation ermöglicht, ohne dass dabei die Gefahr besteht, dass eine bekannte Tonabfolge, die den Originalsound auszeichnet und einzigartig macht, nicht wiedererkannt werden könnte. Es ist auch für das Tanzen eine gern genutzte Methode, da derartig veränderte oder weiterentwickelte Songs beispielweise viel einfacher zum Einüben bestimmter tänzerischer Bewegungsabfolgen genutzt werden können, wenn die BPM zuvor erkennbar reduziert werden.

Rambox mit 25 % Halloween-Rabatt

Den meines Erachtens besten Workspace-Manager Rambox gibt es aktuell mit 25 % Rabatt bis zum 2. November 2023.

Über den Link kommt ihr weiter: billing.rambox.app/upgrade.

Leider ist die Website etwas unübersichtlich und über die normalen Links auf der Seite werden euch auch nach abgelaufener Demo nur Wege in eine angeblich weitere Demo gezeigt. Ihr müsst also direkt über den Link zur Bezahlseite mittels Stripe gehen.

Mit umgerechnet 150 € statt 200 € ist die Software auch weiterhin noch eine Investition für sich. Sie bietet aber meines Erachtens einige Vorteile gegenüber Ferdium. Zum Beispiel die Möglichkeit, Browsererweiterungen zu nutzen und die Webseiten vernünftig zu gruppieren. Dabei kann man auch die Browserdaten-Sätze in der Gruppe halten, was ganz angenehm ist, wenn man z.B. Google- und Microsoft-Dienste gruppiert. Diese können sich dann in der Gruppe eine Anmeldung teilen und so muss sich nicht ständig für jeden einzelnen Dienst neu angemeldet werden.
Man merkt auf jeden Fall, dass dort jemand mitdenkt.

Leider brechen Seiten wie Reddit oder YouTube jeden Workspace-Manager. Mir ist noch keiner untergekommen, der mit mehr als Instagram umgehen konnte. Die Möglichkeit ublock Origin auf Soundcloud und co zu werfen ist aber ein Alleinstellungsmerkmal von Rambox.

Der Breakeven der Lifetime-Version liegt bei drei Jahren, gegengerechnet mit der jährlichen Zahlweise. Das Angebot tut für den Breakeven aktuell nichts, weil auch die Jahresabo-Variante zu 25 % vergünstigt ist. Dieser ist also auch nach der Angebotsphase gleich.

Musik zum Wochenende: Drumless Edition von Random Access Memories

Daft Punk haben sich vor einigen Jahren getrennt. Damit ging eine Band auseinander, die für Ihre Leistung weltweit bekannt war. Seit dem gibt es vom Label nur noch Markenrecycling, weil keine echte neue Musik mehr produziert wird. Zumindest nicht als Daft Punk zusammen.

Am 17.11.2023 kommt ein weiteres Recycling-Album heraus. Allerdings kein Vollrecycling wie die 10th Anniversary Edition von Random Access Memories, sondern eine bei der die Drum komplett aus dem Edit rausgelassen wurde.
Damit wird die Musik runder und etwas ruhiger und ist damit noch Wohnzimmergeeigneter als vorher…

In den Track „Within“ kann man aber schon reinhören:

Bei Qobuz gibt es das Ganze als 24-bit FLAC mit 88,2 kHz und damit ein Ticken besser als das was euch Scheiben bieten könnten, ansonsten könnt ihr euch die CD bei JPC bestellen um das ganze durch Exact Audio Copy durchziehen zu können. Denkt bitte dran vorher EAC sauber und ordentlich einzustellen.

Daft Punk ist eine der wenigen Bands bei denen ich versuche die komplette Diskografie physisch auf CD vorzuhalten. Auch in CD-Laufwerkslosen Zeiten würden mir da einige schnöde Dateien auf der Festplatte nicht ausreichen. Oft fahre ich da sogar doppelt. Habe die Scheibe im Schrank, weil das Gefühl etwas zu besitzen für mich immer noch daran gebunden ist, habe das ganze dann aber erneut in Qualitäten gekauft, die mir die CD nicht bieten kann.

Ich bin gespannt, was sich das Label noch so einfallen lässt um die Marke zu recyclen. Vielleicht ist ja auch noch irgendwas unveröffentlichtes in der Pipeline.
Wer zumindest einen Musiker weiterverfolgen möchte, sollte bei Thomas Bangalter dran bleiben, der allerdings nun Balettmusik macht.

Inzwischen hat jemand aus dem ganzen Album auch schon eimal vorweg das Schlagzeug rausgemixt um einmal schon vorab hören zu können wie es klingen könnte:

Perfekt für euer Wohnzimmer

Und was darf dann natürlich auch nicht fehlen? Natürlich die isolierten Drums aus den ganzen Songs:

Perfekt für euer Training

Der JPC-Link im Artikel ist ein Partnerlink aus dem Partnerprogramm von JPC.

Microsoft, wir müssen über HDR reden

Habt ihr schon mal einen HDR Film in Windows angeschaut? Nein? Ist auch gut so. Es würde euch nur nerven.

Die meißten der aktuellen Actionfilme sind vom Ton her nicht vernünftig gemastert. Oder mein Gehör möchte halt einfach keine lauten Explosionen haben und deshalb spiele ich eigentlich kontant an der Lautstärke herum, wenn ich alleine irgendwelche action-lastigen Filme anschaue. Im Kino ist das was anderes, weil es da ausschließlich um diesen Film geht, wenns da Knallen soll, dann muss es so Knallen wie es der Regisseur haben wollte.
In Windows ist ein solcher Film allerdings bestenfalls nur 75 % meiner Aufmerksamkeitszeit, ich bin also fast immer irgendwas am nebenbei machen. Und das nicht auf Tablet oder Smartphone sondern direkt auf Windows.

Das Problem daran ist jetzt, dass Windows sich selbst nicht vernünftig im HDR-Format darstellen kann. Für die meißten Monitore bedeutet das aber: entweder alles ist HDR, oder nichts ist HDR.
Wenn jetzt Windows mit ihrer Lautstärkeanimation als Overlay kommt, dann gibts eben kein HDR. Und das merkt man. Sehr deutlich. Kleines Blitzen, paar Sekunden warten, noch mal kleines Blitzen und fertig.

Bei jeder verdammten kleinen Mausbewegung.

Also Microsoft: Es wird Zeit die Entwickler ran zu holen, die dir die Auto-HDR-Funktion geschrieben haben, die müssen noch mal ran und dafür sorgen das alles, was Windows irgendwie auf Bildschirmen darstellen kann auch vernünftig im HDR-Format gesendet werden kann. Und das sind nicht nur Bilddateien und Videos, sondern der komplette Displayoutput vom gesamten System und wenn irgendein Assembler-Spielchen wie Rollercoaster Tycoon läuft wo man einfach nicht rankommt, weil der Code einfach zu Maschinennah ist, dann hat man HDR so lange weg zu machen, bis das Dingens wieder geschlossen ist – und das zählt dann auch für alle Overlays und Benachrichtungen von Windows.

Entweder alles ist HDR, oder nichts. Wenn es die Bildschirme so wollen, dann muss es Windows so liefern. Verdammt noch mal…
Und wenn das scho so ist, schließlich kann man Displays nicht im Laufenden Betrieb aus dem HDR-Modus befreien, dann gibts wenigstens bei den Overlays noch Probleme.

Domänennetzwerke: Website nach Anmeldung öffnen

Ihr wollt dass alle User den Browser geöffnet bekommen und eine spezielle Seite angezeigt bekommen?
Dann gibt es mehrere Wege:

  • Autostarteintrag: browser.exe https:// Internetseite
  • ADMX Pakete konfigurieren, dort Standardseite beim Öffnen konfigurieren, Browser.exe ohne Argumente in den Autostart

Ihr solltet hier den Weg mit den ADMX Paketen wählen, weil dieser Weg vom Browserhersteller und nicht von Microsoft kommt. Was viele vergessen: Auch ADMX Pakete werden aktualisiert, diese werden auch mit den Browserupdates nicht aktualisiert und müssen in Updatezyklen mit beachtet werden.

Der Weg über browser.exe mit bereitgestellter Adresse als Startargument funktioniert prinzipiell auch, ist auch der Weg des geringsten Aufwands, aber er basiert auf Funktionen von Windows, nicht auf Funktionen vom Browser.

Ihr kommt also auch bei so kleinen Aufgaben eigentlich nicht am ADMX-Paket des Browsers vorbei.

Musik zum Wochenende: Aether – I love you, Please wake up

Einer der Künstler der aus den Discover Weekly-Playlists einfach hängen geblieben ist. Diesmal in Variante Ambient. Ein neues Konzeptalbum:

I LOVE YOU, PLEASE WAKE UP, by Aether

I LOVE YOU, PLEASE WAKE UP by Aether, released 28 September 2023 1. KYOEI 2. WRAITH 3. DANCING IN THE FIRE 4. SIREN SONG 5. FLASHING LIGHTS 6. TRANSMISSION 7. OBLIVION 8. THE CITY THAT SLEEPS I LOVE YOU, PLEASE WAKE UP is a concept album written and produced by Aether.

Ganz klassisches Ambient. Für den späten Abend zu Hause oder mit Timer zum Einschlafen. Wobei 25-30 Minuten natürlich nicht abendfüllend sind. Da bräuchte es dann schon eine ganze Yoga- oder Massagestudio-Playlist.

Bei Ambient ist manchmal das Problem dass die Musik anfängt zu dröhnen, ähnlich dem Effekt einer Orgel in einer Kirche, die längere Zeit eine Note spielt. Davor ist man auch hier nicht ganz gefreit, aber ohne das Dröhnen wäre man sicherlich dann eher wieder im Easy Listening-Bereich unterwegs und verliert einen Charakterzug von Ambient.

Mit den früheren ganz anders gearteten Titeln, z.B. Elysia’s Heart, zeigt sich meiner bescheidenen Meinung nach auch die Vielfalt und das Können dahinter.

Hier gehts zur ganzen Musik von Aether.

Rambox ist weit besser als Franz, Ferdi, Ferdium, Singlebox etc.

Ich bin ja nicht erst seit gestern mit vielen Workplace-Apps am hantieren. Franz ist so gut wie tot, Ferdi hat auch Probleme, also gibts den Fork Ferdium…
Aber im Hintergrund war immer Rambox, das man sich halt auch empfahl als es um solche Programme ging.

Singlebox fliegt so langsam wieder runter, der Dev hat sich entschieden den Ruhezustand von Apps zu forcen und dem User die Möglichkeit zu nehmen diesen zu deaktivieren. Weil manche Seiten halt Audio abspielen (PocketCasts, SoundCloud, Mixcloud, Bandcamp… und so weiter halt) kann man die in Singlebox nicht mehr verwenden.

Also Rambox angeschmissen, und direkt überzeugt worden:

  • Es gibt Gruppenbasierte Browserdaten. Es können also in einer Gruppe alle Google-Dienste gesammelt werden, die sich eine einzelne Anmeldung teilen. Also keine paar Tage Google Antivirus-Warning, nach dem man sich Singlebox eingerichtet hat.
  • Es gibt Splitscreen innerhalb der Anwendung. Würden die Websites dafür ausgelegt sein (was die meißten leider nicht sind) hindert dich keiner daran zig Spalten mit etlichen Diensten auf einem Screen zu haben.
  • Im Gegensatz zu Singlebox sind auch tatsächlich Erweiterungen möglich. Zwar nur eine Hand voll erlesener Erweiterungen, aber die wichtigsten Passwortmanager und uBlock Origin sind dabei. Da hat jemand aufgepasst und nicht die von Eyeo aufgekauften Blocker genommen. Hut ab.

Rambox ist jetzt die erste Anwendung in der mir ein stinknormales Browserfenster als Dienst fehlt. Also schlicht ein Browser so wie er sonst hätte auch ausgesehen, nur innerhalb von Rambox.
Danach würde ich kaum was anderes als Rambox brauchen und die Google Chrome OS’isierung meiner Oberfläche wäre vollständig. Mit dem Luxus dahinter auch noch ein volles Windows zu haben, falls man es denn mal bräuchte, weil man mal wieder irgendwelche dieser alten Filmchen schaut die komischerweise noch nicht Disney+, Netflix oder eh im Streaming bei Amazon Video oder nach einem PlayStore Kauf sind.

Ob das jetzt die 210 USD wert ist, mag ich noch nicht bewerten können und werde sicherlich den 30-Tägigen Testzeitraum dafür auch verwenden müssen. Die Latten sind hoch gelegt und im Vergleich kommt Rambox beim Hochsprung am weitesten hoch.

Einige Wochen 4K-OLED

Ich bin jetzt einige Wochen mit dem Philips 27E1N8900/00 (was für ein Name – ist aber bei Monitoren halt so) unterwegs.
Ein Sprung von 10 Jahren Displaytechnik…

4K und Breitbild nimmt sich nicht viel

Der Monitor quetscht 4K-Auflösung in nur 27 Zoll, das bedeutet ziemlich irre 163,78 Pixel pro Inch. Aber neben der hohen Auflösung fällt noch etwas nächstes direkt auf.
Das ehemalige Seitenverhältnis 21:9 vom Vorgänger LG 29EA93 ist gar nicht mal so wichtig. Klar, 21:9 sind etwas weniger als zwei 16:9 nebeneinander und spart damit auch Doppelmonitor, aber mit einer hohen Auflösung die so gequetscht wird bekommt man den gleichen Effekt.
Bei 21:9 habe ich quasi permanent im 50/50-Modus gearbeitet. Zwei Fenster füllten also je zur Hälfte den Bildschirm. Sonst ist es für mich zu viel Whitespace.
Genau diesen Effekt habe ich bei 4K ebenfalls. Der Whitespace ist irre, überall. Selbst hier im WordPress-Editor:

Aber nicht nur hier. Der Effekt, den ich vom 21:9 Monitor kenne, hat sich mitgenommen. Hier eine übliche Internetsuche:

Es ist also überhaupt nicht so, dass ich Bildschirmplatz vermisse, auch wenn der Bildschirm kleiner ist. Es geht also eher um die Menge der Pixel…

Die Windows-HDR-Implementierung kann vernachlässigt werden

Ein Ding was sich absolut nicht lohnt ist HDR-Content in Microsoft Windows. Schlicht und einfach, weil Microsoft mit Mixed Content nicht umgehen kann, die eigene Oberfläche ist kein HDR und so gibt bei allem was Überblendung ist (z.B. die Animation zur Lautstärkeänderung oder simple Mausbewegungen) ein Blitzen zwischen HDR und SDR-Content.

Da muss Microsoft nachlegen. Das ist Microsoft durch meine Meldung im Feedback-Hub schon bekannt geworden und ist zumindest im First-Level schon verwurstet worden. Das FollowUp mit ein paar Mausbewegungen überm VLC Mediaplayer muss ich aber noch nachlegen…

USB-C kann immer besser sein

Funktionen wie den KVM am USB habe ich noch nicht getestet. Weil ich es dank Bluetooth Geräten eben nicht brauche. Nett ist die 90 Watt Ladefunktion am USB C, damit ist jedes Smartphone schneller voll als mit jedem mitgelieferten Ladegerät und vor allem deutlich schneller als mit alten Ladegeräten von Vormodellen.

Und: 4K HDR scheint auch für USB C über ein sauberes Thunderbolt 4 Kabel nicht möglich zu sein, wohl aber 4K.
4K, 60 Hz, 10-bit sind alleine schon 20.05 GBit/s. Benötigt wird also zwingend DisplayPort 1.3 und höher. Auch HDMI 2.1 ist relativ gut ausgereizt.

Fazit: Hohe Auflösung kann auch gequetscht werden

Allgemein nehme ich also mit, dass eine hohe Auflösung auch gerne gequetscht sein kann.
Für ähnliche Preise hätte man einen guten 4K-TV, auch mit HDR haben können der auch im Bereich 50-60 Zoll liegen würde. Ich selbst war aber nie auf der Suche nach einem TV, sondern nach einem Computermonitor, dessen Firmware-Features sich heutzutage auch weiterhin etwas unterscheiden.

Mit 4K ist man also auch im kleinen Format richtig.

Singlebox ersetzt Ferdium

Ferdium, oder Franz, oder was auch immer hatte ich ja schon immer mal wieder getestet.
Nach und Nach erhöhen sich damit aber leider auch meine Anforderungen, und so wird es gewissermaßen für mich Notwendig entweder Javascript, oder Browsererweiterungen in die Services rein zu bringen. Natürlich Adblocker, aber z.B. auch gewisse Dinge die Soundcloud einfach ein wenig angenehmer machen – jetzt da auch Soundcloud Sonos-Streaming scheinbar nur noch im Bezahlmodell anbietet.

Singlebox wäre dann die Alternative die genau das erlaubt. Javascript bekommt man auch in Ferdium und allen Abwandlungen hin, das aber nur in dem man dann doch die Dateien der Services hinter Ferdium abändert, so kann man sich auch alles in die anderen Programme reinfrickeln, aber auf den ersten Blick hat Singlebox doch ein paar Vorteile:

  • Der Entwickler scheint aus der MAC OSX Gegend zu kommen. Usability ist also für ihn aus der Apple-Welt ein ganz anderer Ansatz.
  • Mit nur zwei Services in der Free-Variante läuft Singlebox relativ flüssig. Allerdings verglichen mit 45 Services in Ferdium, da stehen noch Tests aus.
  • Der Service-Katalog ist weitaus größer und deutlich freier strukturiert. Wer meint eine Website sollte ein Service sein kann jederzeit einen vorschlagen.
    Dies geht zwar bei den F-Programmen auch, aber gefühlt ist die Moderation, welche Services publiziert werden dort strenger. So gibt es in den F-Programmen keine Services die eher im Asiatischen Bereich genutzt werden.

Im Microsoft Store gibt es eine Testversion, die unbeschränkt ist.

30 Dollar kostet der Spaß, wenn man ihn vernünftig nutzen will. Nicht als Abo sondern als Einmalzahlung, was der nächste Punkt wäre. Natürlich immer mit der Gefahr dass der Entwickler dies im Nachzug einschränkt, andere Programme vom gleichen Entwickler laufen bereits mit Abo-Zahlungen, wenn auch mit angemessen bepreister Lifetime-Variante.
Über Währungseffekte und VPNs kommt man maximal auf 28 €, Günstigst ohne Aufwand ist der Microsoft Store.
Das Mindset des Entwicklers scheint also über allem auch nicht auf Profit aus zu sein, was zumindest für mich ein doch größerer Punkt ist, einem Entwickler zu vertrauen.

Testversion umgehen / Singlebox kostenfrei betreiben

Erst die Testversion der kostenpflichtigen App installieren, dort während des Testzeitraumes (etwa zwei Tage) die Services einrichten, dann diese Variante deinstallieren und die kostenfreie Store-App installieren. Bezahlen müsst ihr dann erst, wenn ihr nachträglich Services hinzufügen müsst.

Gleich zum Beginn genügend Services mit irgendeiner URL die nicht zu viel lädt hinzufügen, um die Slots zu blocken. Die URL ist dann in der kostenlosen Version bei Bedarf wieder änderbar. about:blank funktioniert leider nicht, ihr müsst also mit https://localhost arbeiten.

Cookie-Einwilligung mit Real Cookie Banner