<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Uncategorized on Sven Ruppert</title><link>https://sven-ruppert.info/categories/uncategorized/</link><description>Recent content in Uncategorized on Sven Ruppert</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>sven.ruppert@gmail.com (Sven Ruppert)</managingEditor><webMaster>sven.ruppert@gmail.com (Sven Ruppert)</webMaster><copyright>© 2026 Sven Ruppert</copyright><lastBuildDate>Wed, 03 Sep 2025 13:05:56 +0000</lastBuildDate><atom:link href="https://sven-ruppert.info/categories/uncategorized/index.xml" rel="self" type="application/rss+xml"/><item><title>Signal via SSE, data via REST – a Vaadin demonstration in Core Java</title><link>https://sven-ruppert.info/posts/signal-via-sse-data-via-rest-a-vaadin-demonstration-in-core-java/</link><pubDate>Wed, 03 Sep 2025 13:05:56 +0000</pubDate><author>sven.ruppert@gmail.com (Sven Ruppert)</author><guid>https://sven-ruppert.info/posts/signal-via-sse-data-via-rest-a-vaadin-demonstration-in-core-java/</guid><description>&lt;h2 class="relative group"&gt;1. Introduction
 &lt;div id="1-introduction" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-introduction" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;

&lt;h3 class="relative group"&gt;1.1 Motivation: Event-driven updating without polling
 &lt;div id="11-motivation-event-driven-updating-without-polling" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#11-motivation-event-driven-updating-without-polling" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;In classic web applications, the pull principle still dominates: Clients repeatedly make requests to the server to detect changes. This polling is simple, but it leads to unnecessary load on the server and network side, especially if the data stock changes only sporadically. &lt;em&gt;Server-Sent Events (SSE)&lt;/em&gt; is a standardised procedure that allows the server to signal changes to connected clients actively. This avoids unnecessary requests, while updates reach the interface promptly.&lt;/p&gt;</description></item><item><title>Connecting REST Services with Vaadin Flow in Core Java</title><link>https://sven-ruppert.info/posts/connecting-rest-services-with-vaadin-flow-in-core-java/</link><pubDate>Tue, 24 Jun 2025 09:39:25 +0000</pubDate><author>sven.ruppert@gmail.com (Sven Ruppert)</author><guid>https://sven-ruppert.info/posts/connecting-rest-services-with-vaadin-flow-in-core-java/</guid><description>&lt;h2 class="relative group"&gt;1. Introduction
 &lt;div id="1-introduction" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#1-introduction" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;

&lt;h3 class="relative group"&gt;Why REST integration in Vaadin applications should not be an afterthought
 &lt;div id="why-rest-integration-in-vaadin-applications-should-not-be-an-afterthought" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#why-rest-integration-in-vaadin-applications-should-not-be-an-afterthought" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;In modern web applications, communication with external services is no longer a special function, but an integral part of a service-oriented architecture. Even if Vaadin Flow, as a UI framework, relies on server-side Java logic to achieve a high degree of coherence between view and data models, the need to communicate with systems outside the application quickly arises. These can be simple public APIs—for example, for displaying weather data or currency conversions—as well as internal company services, such as license verification, user management, or connecting to a central ERP system.&lt;/p&gt;</description></item><item><title>Short links, clear architecture – A URL shortener in Core Java</title><link>https://sven-ruppert.info/posts/short-links-clear-architecture-a-url-shortener-in-core-java/</link><pubDate>Tue, 10 Jun 2025 22:43:22 +0000</pubDate><author>sven.ruppert@gmail.com (Sven Ruppert)</author><guid>https://sven-ruppert.info/posts/short-links-clear-architecture-a-url-shortener-in-core-java/</guid><description>&lt;p&gt;A URL shortener seems harmless – but if implemented incorrectly, it opens the door to phishing, enumeration, and data leakage. In this first part, I&amp;rsquo;ll explore the theoretical and security-relevant fundamentals of a URL shortener in Java – without any frameworks, but with a focus on entropy, collision tolerance, rate limiting, validity logic, and digital responsibility. The second part covers the complete implementation: modular, transparent, and as secure as possible.&lt;/p&gt;</description></item><item><title>If hashCode() lies and equals() is helpless</title><link>https://sven-ruppert.info/posts/if-hashcode-lies-and-equals-is-helpless/</link><pubDate>Fri, 06 Jun 2025 20:53:34 +0000</pubDate><author>sven.ruppert@gmail.com (Sven Ruppert)</author><guid>https://sven-ruppert.info/posts/if-hashcode-lies-and-equals-is-helpless/</guid><description>&lt;p&gt;A deep look into Java’s HashMap traps – visually demonstrated with Vaadin Flow.&lt;/p&gt;

&lt;h3 class="relative group"&gt;The silent danger in the standard library
 &lt;div id="the-silent-danger-in-the-standard-library" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#the-silent-danger-in-the-standard-library" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h3&gt;
&lt;p&gt;The use of &lt;strong&gt;HashMap&lt;/strong&gt; and &lt;strong&gt;HashSet&lt;/strong&gt; is a common practice in everyday Java development. These data structures offer excellent performance for lookup and insert operations, as long as their fundamental assumptions are met. One of them is &lt;strong&gt;hashCode()&lt;/strong&gt; of a key remains stable. But what if that&amp;rsquo;s not the case?&lt;/p&gt;</description></item><item><title>Creating a simple file upload/download application with Vaadin Flow</title><link>https://sven-ruppert.info/posts/creating-a-simple-file-upload-download-application-with-vaadin-flow/</link><pubDate>Tue, 20 May 2025 17:34:15 +0000</pubDate><author>sven.ruppert@gmail.com (Sven Ruppert)</author><guid>https://sven-ruppert.info/posts/creating-a-simple-file-upload-download-application-with-vaadin-flow/</guid><description>&lt;p&gt;Vaadin Flow is a robust framework for building modern web applications in Java, where all UI logic is implemented on the server side. In this blog post, we&amp;rsquo;ll make a simple file management application step by step that allows users to upload files, save them to the server, and download them again when needed. This is a great way to demonstrate how to build protection against CWE-22, CWE-377, and CWE-778 step by step.&lt;/p&gt;</description></item><item><title>Java Cryptography Architecture (JCA) - An Overview</title><link>https://sven-ruppert.info/posts/java-cryptography-architecture-jca-an-overview/</link><pubDate>Thu, 03 Apr 2025 12:22:30 +0000</pubDate><author>sven.ruppert@gmail.com (Sven Ruppert)</author><guid>https://sven-ruppert.info/posts/java-cryptography-architecture-jca-an-overview/</guid><description>&lt;p&gt;The &lt;strong&gt;Java Cryptography Architecture (JCA)&lt;/strong&gt; is an essential framework within the Java platform that provides developers with a flexible and extensible interface for cryptographic operations. It is a central component of the Java Security API and enables platform-independent implementation of security-critical functions.&lt;/p&gt;</description></item><item><title>TornadoVM - Boosting the Concurrency</title><link>https://sven-ruppert.info/posts/tornadovm-boosting-the-concurrency/</link><pubDate>Sat, 23 Nov 2024 19:40:08 +0000</pubDate><author>sven.ruppert@gmail.com (Sven Ruppert)</author><guid>https://sven-ruppert.info/posts/tornadovm-boosting-the-concurrency/</guid><description>&lt;p&gt;TornadoVM is an open-source framework that extends the Java Virtual Machine (JVM) to support hardware accelerators such as Graphics Processing Units (GPUs), Field-Programmable Gate Arrays (FPGAs), and multi-core central processing units (CPUs). This allows developers to accelerate their Java programs on heterogeneous hardware without needing to rewrite their code in low-level languages such as CUDA or OpenCL.&lt;/p&gt;</description></item><item><title>Cache Poisoning Attacks on Dependency Management Systems like Maven</title><link>https://sven-ruppert.info/posts/cache-poisoning-attacks-on-dependency-management-systems-like-maven/</link><pubDate>Wed, 13 Nov 2024 14:15:16 +0000</pubDate><author>sven.ruppert@gmail.com (Sven Ruppert)</author><guid>https://sven-ruppert.info/posts/cache-poisoning-attacks-on-dependency-management-systems-like-maven/</guid><description>&lt;p&gt;Cache poisoning on Maven Caches is a specific attack that targets how Maven Caches manages packages and dependencies in a software development process. It&amp;rsquo;s essential to understand how Maven works before we look at the details of cache poisoning.&lt;/p&gt;</description></item><item><title>What is CWE-1007: Insufficient visual discrimination of homoglyphs for you as a user?</title><link>https://sven-ruppert.info/posts/what-is-cwe-1007-insufficient-visual-discrimination-of-homoglyphs-for-you-as-a-user/</link><pubDate>Mon, 04 Nov 2024 12:34:27 +0000</pubDate><author>sven.ruppert@gmail.com (Sven Ruppert)</author><guid>https://sven-ruppert.info/posts/what-is-cwe-1007-insufficient-visual-discrimination-of-homoglyphs-for-you-as-a-user/</guid><description>&lt;p&gt;The world of cybersecurity is full of threats, many of which are surprisingly subtle and challenging to detect. One such threat is the problem of so-called homoglyphs. CWE-1007, also known as &amp;ldquo;Insufficient Visual Distinction of Homoglyphs Presented to User&amp;rdquo;, is a vulnerability often used by attackers to deceive and compromise your systems or data. In this blog article, you will get a deep insight into CWE-1007, understand its mechanisms, and how to protect yourself from such attacks. We will discuss examples, technical challenges, and best practices that can help you as a developer understand and mitigate this threat.&lt;/p&gt;</description></item><item><title>BLD - a lightweight Java Build Tool</title><link>https://sven-ruppert.info/posts/bld-a-lightweight-java-build-tool/</link><pubDate>Thu, 26 Sep 2024 17:31:17 +0000</pubDate><author>sven.ruppert@gmail.com (Sven Ruppert)</author><guid>https://sven-ruppert.info/posts/bld-a-lightweight-java-build-tool/</guid><description>&lt;h2 class="relative group"&gt;What is a dependency management tool?
 &lt;div id="what-is-a-dependency-management-tool" class="anchor"&gt;&lt;/div&gt;
 
 &lt;span
 class="absolute top-0 w-6 transition-opacity opacity-0 -start-6 not-prose group-hover:opacity-100 select-none"&gt;
 &lt;a class="text-primary-300 dark:text-neutral-700 !no-underline" href="#what-is-a-dependency-management-tool" aria-label="Anchor"&gt;#&lt;/a&gt;
 &lt;/span&gt;
 
&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;dependency management tool&lt;/strong&gt; is a software system or utility that automates the process of identifying, retrieving, updating, and maintaining the external libraries or packages (referred to as &lt;strong&gt;dependencies&lt;/strong&gt;) required by a software project. It ensures that all necessary dependencies are included and managed in a standardised way, which helps prevent version conflicts, missing libraries, and manual errors during software development.&lt;/p&gt;</description></item><item><title>Introduction to the Linux Foundation's SLSA project</title><link>https://sven-ruppert.info/posts/introduction-to-the-linux-foundations-slsa-project/</link><pubDate>Sat, 10 Dec 2022 21:56:43 +0000</pubDate><author>sven.ruppert@gmail.com (Sven Ruppert)</author><guid>https://sven-ruppert.info/posts/introduction-to-the-linux-foundations-slsa-project/</guid><description>&lt;p&gt;Supply Chain Security is a hot topic these days. And more and more, we as developers are dealing with this daily. But what does this mean for us, and how is this influencing our job? I want to give an overview of common attacks against the Software Supply Chain from the developer&amp;rsquo;s view and will introduce the Open Source project SLSA from the Linux Foundation.&lt;/p&gt;</description></item></channel></rss>