<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Maksymilian</title>
    <description>The latest articles on DEV Community by Maksymilian (@maksik997).</description>
    <link>https://dev.to/maksik997</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2549743%2F381907da-b1eb-48fb-b4f6-bc50d7f308ea.png</url>
      <title>DEV Community: Maksymilian</title>
      <link>https://dev.to/maksik997</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/maksik997"/>
    <language>en</language>
    <item>
      <title>File Bucketer, a simple CLI tool to organize files into buckets</title>
      <dc:creator>Maksymilian</dc:creator>
      <pubDate>Sat, 01 Nov 2025 09:38:44 +0000</pubDate>
      <link>https://dev.to/maksik997/file-bucketer-a-simple-cli-tool-to-organize-files-into-buckets-2p5l</link>
      <guid>https://dev.to/maksik997/file-bucketer-a-simple-cli-tool-to-organize-files-into-buckets-2p5l</guid>
      <description>&lt;p&gt;Working with large file collections often requires splitting them into smaller chunks. You might be preparing datasets, batching assets for processing, archiving, or migrating data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;File Bucketer&lt;/strong&gt; is a lightweight command-line tool that automatically distributes files from an input directory into a specified number of buckets, or into buckets with a defined maximum number of files. It supports both copying and moving files.&lt;/p&gt;

&lt;h4&gt;
  
  
  ✨ Features
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Automatically splits files from any input directory&lt;/li&gt;
&lt;li&gt;Choose either number of buckets or number of files per bucket&lt;/li&gt;
&lt;li&gt;Supports &lt;code&gt;copy&lt;/code&gt; and &lt;code&gt;move&lt;/code&gt; operations&lt;/li&gt;
&lt;li&gt;Cross-platform binary (Windows, Linux, macOS)&lt;/li&gt;
&lt;li&gt;Informative terminal output with clear progress messages&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  📦 Installation
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt;Go to the &lt;a href="https://codeberg.org/magzik/file_bucketer/releases" rel="noopener noreferrer"&gt;Releases&lt;/a&gt; page&lt;/li&gt;
&lt;li&gt;Download the &lt;code&gt;.tar&lt;/code&gt; or &lt;code&gt;.zip&lt;/code&gt; archive containing the binary&lt;/li&gt;
&lt;li&gt;Extract it&lt;/li&gt;
&lt;li&gt;Run:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Linux/macOS:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./bin/file-bucketer
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Windows:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight postscript"&gt;&lt;code&gt;&lt;span class="nf"&gt;.\bin\file-bucketer.bat&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  🛠️ Usage
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Linux/macOS:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./bin/file-bucketer &amp;lt;parameters&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Windows:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight postscript"&gt;&lt;code&gt;&lt;span class="nf"&gt;.\bin\file-bucketer.bat&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nf"&gt;parameters&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Parameters:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Option&lt;/th&gt;
&lt;th&gt;Short option&lt;/th&gt;
&lt;th&gt;Description&lt;/th&gt;
&lt;th&gt;Type&lt;/th&gt;
&lt;th&gt;Required&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--input&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-i&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Input directory&lt;/td&gt;
&lt;td&gt;String&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--output&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-o&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Output directory. May not exist&lt;/td&gt;
&lt;td&gt;String&lt;/td&gt;
&lt;td&gt;yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--buckets&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-b&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Bucket count. Mutually exclusive with &lt;code&gt;--count&lt;/code&gt; option. Must be present if &lt;code&gt;--count&lt;/code&gt; option is not specified&lt;/td&gt;
&lt;td&gt;Int&lt;/td&gt;
&lt;td&gt;yes/no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--count&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-c&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Count per bucket. Mutually exclusive with &lt;code&gt;--buckets&lt;/code&gt; option. Must be present if &lt;code&gt;--buckets&lt;/code&gt; option is not specified&lt;/td&gt;
&lt;td&gt;Int&lt;/td&gt;
&lt;td&gt;yes/no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--transferOption&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-t&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Transfer type. Value should be one of &lt;code&gt;copy&lt;/code&gt;, &lt;code&gt;move&lt;/code&gt;. Defaults to &lt;code&gt;copy&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;copy&lt;/code&gt;, &lt;code&gt;move&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;--help&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;-h&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Usage info&lt;/td&gt;
&lt;td&gt;-&lt;/td&gt;
&lt;td&gt;no&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h4&gt;
  
  
  📁 Example
&lt;/h4&gt;

&lt;p&gt;Imagine you want to split the files located in &lt;code&gt;/home/bob/foo&lt;/code&gt; into 5 buckets and move them to &lt;code&gt;/home/alice/foo&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;./bin/file-bucketer &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-i&lt;/span&gt; /home/bob/foo &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-o&lt;/span&gt; /home/alice/foo &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-b&lt;/span&gt; 5 &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-t&lt;/span&gt; move
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Example output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;Got parameters:
    input: &lt;span class="s1"&gt;'/home/bob/foo'&lt;/span&gt;
    output: &lt;span class="s1"&gt;'/home/alice/foo'&lt;/span&gt;
    buckets: &lt;span class="s1"&gt;'5'&lt;/span&gt;
    count: &lt;span class="s1"&gt;'calculated'&lt;/span&gt;
    transfer option: &lt;span class="s1"&gt;'MOVE'&lt;/span&gt;
Validating given input directory...
Validate given output directory...
Counting files under the directory...
Found: 10 files.
Preparing 5 buckets with at most 2 elements...
Pouring into the buckets...
Process completed.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Result:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;❯ &lt;span class="nb"&gt;ls&lt;/span&gt; /home/alice/foo
bucket_0 bucket_1 bucket_2 bucket_3 bucket_4
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  🚀 Summary
&lt;/h4&gt;

&lt;p&gt;If you need a straightforward utility to split files without writing your own scripts, File Bucketer provides a simple and efficient solution.&lt;/p&gt;

&lt;p&gt;The project is fully open-source and available on Codeberg.&lt;br&gt;
Feedback and contributions are welcome. Happy bucketing!&lt;/p&gt;

</description>
      <category>kotlin</category>
      <category>programming</category>
      <category>cli</category>
    </item>
    <item>
      <title>🎧 Meet VPlayer - A Simple Audio Player with Visualizations (Built by a Python Newbie)</title>
      <dc:creator>Maksymilian</dc:creator>
      <pubDate>Thu, 10 Jul 2025 19:04:31 +0000</pubDate>
      <link>https://dev.to/maksik997/meet-vplayer-a-simple-audio-player-with-visualizations-built-by-a-python-newbie-1nka</link>
      <guid>https://dev.to/maksik997/meet-vplayer-a-simple-audio-player-with-visualizations-built-by-a-python-newbie-1nka</guid>
      <description>&lt;p&gt;Hey devs 👋&lt;/p&gt;




&lt;p&gt;I'm still pretty new to Python, but I recently challenged myself to rebuild an old Bash script I wrote for playing music… and I ended up with a full terminal media player.&lt;/p&gt;

&lt;p&gt;Meet &lt;a href="https://github.com/maksik997/vplayer" rel="noopener noreferrer"&gt;VPlayer&lt;/a&gt; a minimal audio player that lets you listen to your favorite tracks with live terminal visualizations. All powered by Python, VLC, and Cava.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 What It Does
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Plays audio files using &lt;code&gt;vlc&lt;/code&gt; (headless)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Launches &lt;code&gt;cava&lt;/code&gt; for cool terminal visualizations&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lightweight and simple&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cross-platform (buildable with PyInstaller)&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  📦 Try It Out
&lt;/h2&gt;

&lt;p&gt;🔗 GitHub: &lt;a href="https://github.com/maksik997/vplayer" rel="noopener noreferrer"&gt;github.com/maksik997/vplayer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You’ll find:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Installation instructions (build or binary)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Usage examples&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Troubleshooting tips&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Built for fun and for anyone who misses visual EQs in their terminal ✨&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  ❗ Why?
&lt;/h2&gt;

&lt;p&gt;This started as a simple Bash script…&lt;br&gt;
Now it’s my first real Python project with packaging and cross-platform support.&lt;/p&gt;

&lt;p&gt;If you're a Python beginner like me, maybe it’ll inspire you to build something from your own scripts too.&lt;/p&gt;




&lt;p&gt;🎶 Check it out, give it a star ⭐, and let me know what you think!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Enjoy your terminal music with VPlayer!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>python</category>
      <category>cli</category>
      <category>audiotools</category>
      <category>beginners</category>
    </item>
    <item>
      <title>📖 ZomboidBookTracker – Track Your Skill Books in Project Zomboid!</title>
      <dc:creator>Maksymilian</dc:creator>
      <pubDate>Sat, 01 Mar 2025 22:33:47 +0000</pubDate>
      <link>https://dev.to/maksik997/zomboidbooktracker-track-your-skill-books-in-project-zomboid-4l6p</link>
      <guid>https://dev.to/maksik997/zomboidbooktracker-track-your-skill-books-in-project-zomboid-4l6p</guid>
      <description>&lt;p&gt;Are you a &lt;em&gt;Project Zomboid&lt;/em&gt; player struggling to keep track of which skill books you've found and read?&lt;br&gt;
Do you want a simple and lightweight tool to manage your book collection efficiently?&lt;/p&gt;

&lt;p&gt;Introducing &lt;strong&gt;ZomboidBookTracker&lt;/strong&gt; – a handy application that helps you monitor your reading progress and optimize your character’s skill development!&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 What is ZomboidBookTracker?
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Project Zomboid&lt;/em&gt; features an extensive skill book system that significantly boosts skill progression. However, keeping track of what you've already read can be a hassle—especially in multiplayer games or long playthroughs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ZomboidBookTracker&lt;/strong&gt; is a simple and effective tool that allows you to:&lt;br&gt;
✅ &lt;strong&gt;Track skill books&lt;/strong&gt; – Mark books as owned or missing to manage your collection.&lt;br&gt;
✅ &lt;strong&gt;Stay organized&lt;/strong&gt; – Avoid wasting time searching for duplicates.&lt;br&gt;
✅ &lt;strong&gt;Work with any game version&lt;/strong&gt; – The book list is customizable to match updates or mods.&lt;br&gt;
✅ &lt;strong&gt;Use it easily&lt;/strong&gt; – Simple UI, no unnecessary complexity!&lt;/p&gt;

&lt;h2&gt;
  
  
  🔧 How to Get Started?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  🚀 Option 1: Download the Pre-Built JAR
&lt;/h3&gt;

&lt;p&gt;For a quick start, head over to the &lt;a href="https://github.com/maksik997/ZomboidBookTracker/releases/tag/1.0" rel="noopener noreferrer"&gt;Releases&lt;/a&gt; section and grab the latest &lt;code&gt;.jar&lt;/code&gt; file.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Download the &lt;code&gt;ZomboidBookTracker.jar&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run it by double-clicking the file, or using:&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;java &lt;span class="nt"&gt;-jar&lt;/span&gt; ZomboidBookTracker.jar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Java 21 or later is required!&lt;/p&gt;

&lt;h3&gt;
  
  
  🛠 Option 2: Build from Source
&lt;/h3&gt;

&lt;p&gt;If you prefer building it yourself:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clone the repository:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/maksik997/ZomboidBookTracker.git
&lt;span class="nb"&gt;cd &lt;/span&gt;ZomboidBookTracker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;Build and run with Maven:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;mvn clean javafx:run
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt; JDK 21 or later and Maven installed on your system.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎮 How to Use It?
&lt;/h2&gt;

&lt;p&gt;It’s straightforward—just like the definition of horse in the first Polish dictionary. 🐴&lt;/p&gt;

&lt;p&gt;Mark the books you own, track what you've read, and enjoy your zombie survival with a well-planned skill progression!&lt;/p&gt;

&lt;h2&gt;
  
  
  📜 License
&lt;/h2&gt;

&lt;p&gt;ZomboidBookTracker is released under the &lt;strong&gt;MIT License&lt;/strong&gt; – feel free to use, modify, and contribute!&lt;/p&gt;

&lt;h2&gt;
  
  
  🤝 Contribute &amp;amp; Support
&lt;/h2&gt;

&lt;p&gt;Want to improve the project? Feel free to fork, contribute, or report issues on GitHub:&lt;br&gt;
👉 &lt;a href="https://github.com/maksik997/ZomboidBookTracker" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Got feedback? Drop a comment or reach out—I’d love to hear your thoughts!&lt;/p&gt;

&lt;p&gt;💀📚 &lt;em&gt;Survive smarter, read better, and stay ahead of the apocalypse!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>java</category>
      <category>javafx</category>
      <category>programming</category>
    </item>
    <item>
      <title>Major Release: Total Overhaul - JavaFX Renaissance</title>
      <dc:creator>Maksymilian</dc:creator>
      <pubDate>Fri, 27 Dec 2024 18:49:38 +0000</pubDate>
      <link>https://dev.to/maksik997/major-release-total-overhaul-javafx-renaissance-51m</link>
      <guid>https://dev.to/maksik997/major-release-total-overhaul-javafx-renaissance-51m</guid>
      <description>&lt;p&gt;Hey devs! After months of development, I'm thrilled to announce the &lt;strong&gt;biggest update yet&lt;/strong&gt; to my project - &lt;strong&gt;PictureComparerFX&lt;/strong&gt;!&lt;/p&gt;

&lt;h2&gt;
  
  
  🔥 What's new?
&lt;/h2&gt;

&lt;p&gt;This update is a complete transformation of the application, featuring:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A modern UI powered by JavaFX&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Enhanced performance&lt;/strong&gt; targeting &lt;strong&gt;Java 21&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;New logging &amp;amp; resource management systems&lt;/strong&gt; for smoother operation&lt;/li&gt;
&lt;li&gt;Easy-to-install packages for &lt;strong&gt;MacOS&lt;/strong&gt; and &lt;strong&gt;Linux&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;It's not just an update; it's the foundation for future growth and stability.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🛠️ Key Changes:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;New Classes:&lt;/strong&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;PictureComparerFX&lt;/code&gt;, &lt;code&gt;PathResolver&lt;/code&gt;, &lt;code&gt;FileSizeComparator&lt;/code&gt;, and many more...&lt;/li&gt;
&lt;li&gt;New controllers, models, services...&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;StateMachine&lt;/strong&gt; implemented for the Comparer module.&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;UI fully rebuilt&lt;/strong&gt; in JavaFX&lt;/li&gt;

&lt;li&gt;

&lt;strong&gt;Build scripts&lt;/strong&gt; added for Linux and MacOS.&lt;/li&gt;

&lt;/ul&gt;

&lt;h2&gt;
  
  
  🧹 Refactoring &amp;amp; Cleanup:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;AsyncTaskFactory&lt;/strong&gt; has been reworked into &lt;code&gt;AsyncTaskSupport&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Replaced the application thumbnail&lt;/li&gt;
&lt;li&gt;Improved documentation (&lt;code&gt;README.md&lt;/code&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💀 Deprecated:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Swing-based UI is gone - RIP 🪦&lt;/li&gt;
&lt;li&gt;Old controllers, models, and legacy components have been removed clearing the path for more scalable architecture.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  📅 Release Date: 27.12.2024
&lt;/h2&gt;

&lt;h2&gt;
  
  
  ➡️ How to Upgrade:
&lt;/h2&gt;

&lt;p&gt;To upgrade, follow the instructions here: &lt;a href="https://github.com/maksik997/PictureComparerFX/blob/master/README.md" rel="noopener noreferrer"&gt;GitHub Link&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Why This Matters:
&lt;/h2&gt;

&lt;p&gt;Switching to JavaFX not only breathes new life into the app but also lays a strong foundation for future development. I wanted to make sure the UI feels modern and snappy, while the backend benefits from improved efficiency and maintainability.&lt;/p&gt;

&lt;p&gt;If you're interested in &lt;strong&gt;JavaFX, UI rebuilding,&lt;/strong&gt; or general Java development - this might be worth a look. Feedback is always appreciated!&lt;/p&gt;

&lt;p&gt;👉 Check it out on GitHub: &lt;a href="https://github.com/maksik997/PictureComparerFX" rel="noopener noreferrer"&gt;PictureComparerFX Repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"This marks the biggest update yet, redefining the application from the ground up."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Would love to hear your thoughts or experiences with similar overhauls.&lt;/p&gt;

</description>
      <category>java</category>
      <category>beginners</category>
      <category>programming</category>
      <category>product</category>
    </item>
    <item>
      <title>Scalable Image Comparison: An Open-Source Java Library</title>
      <dc:creator>Maksymilian</dc:creator>
      <pubDate>Tue, 10 Dec 2024 00:29:32 +0000</pubDate>
      <link>https://dev.to/maksik997/scalable-image-comparison-an-open-source-java-library-57f8</link>
      <guid>https://dev.to/maksik997/scalable-image-comparison-an-open-source-java-library-57f8</guid>
      <description>&lt;p&gt;I’ve been working on an open-source Java library designed for scalable, multi-stage image comparison. It allows you to mix and match strategies (like CRC32 checksum and perceptual hashing) to de-duplicate massive collections efficiently.&lt;/p&gt;

&lt;p&gt;The core design is modular, so you can implement your own strategies for both grouping and comparison. For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Combine &lt;code&gt;CRC32Grouper&lt;/code&gt; + &lt;code&gt;PHash&lt;/code&gt; + &lt;code&gt;PixelByPixel&lt;/code&gt; to identify duplicates.&lt;/li&gt;
&lt;li&gt;Use some kind of meta data &lt;code&gt;Grouper&lt;/code&gt; + &lt;code&gt;PerceptualHash&lt;/code&gt; to identify similar images. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’d love to hear your feedback:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this approach make sense for large-scale scenarios?&lt;/li&gt;
&lt;li&gt;What could I improve to make it more extensible?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Here’s the repository: &lt;a href="https://github.com/maksik997/PictureComparer" rel="noopener noreferrer"&gt;LINK&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you have ideas for new features or want to contribute, feel free to open an issue or submit a PR. Any thoughts appreciated!&lt;/p&gt;

</description>
      <category>java</category>
      <category>beginners</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
