<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Beiträge von Sander Hahn - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/it251511/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/it251511/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Thu, 07 May 2026 07:02:39 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://mobile.fhstp.ac.at/wp-content/uploads/2025/03/icon-120x120.webp</url>
	<title>Beiträge von Sander Hahn - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/it251511/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Wild Week &#8211; Wyld Interactive Media Player</title>
		<link>https://mobile.fhstp.ac.at/allgemein/wild-week-wyld-interactive-media-player/</link>
		
		<dc:creator><![CDATA[Sander Hahn]]></dc:creator>
		<pubDate>Thu, 07 May 2026 07:02:37 +0000</pubDate>
				<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15824</guid>

					<description><![CDATA[<p>For our Wild Week project, we created WIMP (Wyld Interactive Media Player). WIMP is an engine designed to handle branching, interactive video content similar to Netflix’s interactive specials. But WIMP can not only play videos, but also show other media like pictures, texts and audio in an interactive way. The goal Our goal was to <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/wild-week-wyld-interactive-media-player/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/wild-week-wyld-interactive-media-player/">Wild Week &#8211; Wyld Interactive Media Player</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">For our Wild Week project, we created <strong>WIMP</strong> (Wyld Interactive Media Player). WIMP is an engine designed to handle branching, interactive video content similar to Netflix’s interactive specials. But WIMP can not only play videos, but also show other media like pictures, texts and audio in an interactive way. </p>



<h2 class="wp-block-heading">The goal</h2>



<p class="wp-block-paragraph">Our goal was to create a prototype that plays media that isn&#8217;t just linear. We wanted a way to inject logic, like quizzes, info overlays, and decision points, directly into the media timeline. It doesn&#8217;t matter if it&#8217;s a certain position on a text or a specific time in a video.</p>



<p class="wp-block-paragraph">To make this work across different platforms, we first had to define a standardized data structure. This led to the development of the <strong>WIMP format</strong>.</p>



<p class="wp-block-paragraph">Another important part of this project is a media player that is highly mobile optimized and easy to understand, so that even a five year old can experience a WIMP interactive medium.</p>



<p class="wp-block-paragraph">The project is split into two distinct layers: the data standard and the playback engine.</p>



<h2 class="wp-block-heading">Architecture</h2>



<h3 class="wp-block-heading">1. The Format</h3>



<p class="wp-block-paragraph">Before building the player, we needed a predictable way to describe the media content. For this, we had to design a format that incooperates everything a WIMP user needs and will need in the future. This forward thinking and upgradeability of our format was one of the main challenges that we faced during this Wild Week. We ended up with an open-format JSON schema that defines a graph of &#8220;media nodes.&#8221; Each node can contain:</p>



<ul class="wp-block-list">
<li><strong>Timed Events:</strong> Quizzes, info texts, external links and more that can be triggered at specific timestamps.</li>



<li><strong>Choice Events:</strong> Branching points that tell the player which media node to load next.</li>
</ul>



<p class="wp-block-paragraph">By publishing this as an NPM package, we integrated a validator directly into the workflow, ensuring that any content loaded by the player is structurally sound and free of dead ends.</p>



<p class="wp-block-paragraph">Here&#8217;s an example format:</p>


<div class="wp-block-syntaxhighlighter-code "><pre class="brush: plain; title: ; notranslate">
{
    &quot;version_number&quot;: &quot;0.0.1&quot;,
    &quot;format_type&quot;: &quot;wimp&quot;,
    &quot;meta_data&quot;: {
        &quot;id&quot;: &quot;7f6b6d2d-8fb7-4bd4-9f2a-5a1e2d7c6b42&quot;,
        &quot;created_at&quot;: &quot;2026-04-23T00:00:00+02:00&quot;,
        &quot;updated_at&quot;: &quot;2026-04-23T00:00:00+02:00&quot;,
        &quot;author&quot;: &quot;Melanie Maier&quot;,
        &quot;title&quot;: &quot;What If Dinosaurs Still Lived Today?&quot;,
        &quot;start_media_id&quot;: &quot;dinosaur_intro_text&quot;,
        &quot;description&quot;: &quot;An interactive documentary exploring the hypothetical scenario of dinosaurs still existing in the modern world.&quot;,
        &quot;tags&quot;: &#x5B;
            &quot;dinosaurs&quot;,
            &quot;interactive documentary&quot;,
            &quot;hypothetical scenario&quot;,
            &quot;modern world&quot;
        ]
    },
    &quot;media&quot;: &#x5B;{
            &quot;id&quot;: &quot;dinosaur_intro_text&quot;,
            &quot;title&quot;: &quot;Introduction&quot;,
            &quot;type&quot;: &quot;text&quot;,
            &quot;resource_link&quot;: &quot;https://wimplayer.media.ustp.at/media.php?name=dinosaurs_intro.html&quot;,
            &quot;timeline_events&quot;: &#x5B;{
                &quot;type&quot;: &quot;choice&quot;,
                &quot;title&quot;: &quot;Do you want hear about dinosaurs?&quot;,
                &quot;position&quot;: {
                    &quot;type&quot;: &quot;seconds&quot;,
                    &quot;value&quot;: 0
                },
                &quot;event_context&quot;: {
                    &quot;choices&quot;: &#x5B;{
                        &quot;label&quot;: &quot;Start the journey&quot;,
                        &quot;next_media&quot;: &quot;dinosaur_audio1&quot;
                    }]
                }
            }]
        },
        {
            &quot;id&quot;: &quot;dinosaur_audio1&quot;,
            &quot;title&quot;: &quot;Audio 1&quot;,
            &quot;type&quot;: &quot;audio&quot;,
            &quot;resource_link&quot;: &quot;https://wimplayer.media.ustp.at/media.php?name=dinosaur_1.mp3&quot;,
            &quot;timeline_events&quot;: &#x5B;{
                    &quot;type&quot;: &quot;quiz&quot;,
                    &quot;title&quot;: &quot;What would be the most likely immediate response from modern states once the existence of large living dinosaurs was confirmed?&quot;,
                    &quot;position&quot;: {
                        &quot;type&quot;: &quot;seconds&quot;,
                        &quot;value&quot;: 5
                    },
                    &quot;event_context&quot;: {
                        &quot;answers&quot;: &#x5B;{
                                &quot;label&quot;: &quot;Opening all affected regions to tourism&quot;,
                                &quot;is_correct&quot;: false,
                                &quot;feedback&quot;: &quot;&quot;
                            },
                            {
                                &quot;label&quot;: &quot;Establishing exclusion zones and interdisciplinary crisis task forces&quot;,
                                &quot;is_correct&quot;: true,
                                &quot;feedback&quot;: &quot;&quot;
                            },
                            {
                                &quot;label&quot;: &quot;Immediately classifying all species as domesticated animals&quot;,
                                &quot;is_correct&quot;: false,
                                &quot;feedback&quot;: &quot;&quot;
                            },
                            {
                                &quot;label&quot;: &quot;Suspending all ongoing scientific research&quot;,
                                &quot;is_correct&quot;: false,
                                &quot;feedback&quot;: &quot;&quot;
                            }
                        ]
                    }
                },
                {
                    &quot;type&quot;: &quot;quiz&quot;,
                    &quot;title&quot;: &quot;Why would the discovery of living dinosaurs be more than just a zoological sensation?&quot;,
                    &quot;position&quot;: {
                        &quot;type&quot;: &quot;seconds&quot;,
                        &quot;value&quot;: 30
                    },
                    &quot;event_context&quot;: {
                        &quot;answers&quot;: &#x5B;{
                                &quot;label&quot;: &quot;Because it would automatically replace all existing animal species&quot;,
                                &quot;is_correct&quot;: false,
                                &quot;feedback&quot;: &quot;&quot;
                            },
                            {
                                &quot;label&quot;: &quot;Because modern cities are already designed for giant reptiles &quot;,
                                &quot;is_correct&quot;: false,
                                &quot;feedback&quot;: &quot;&quot;
                            }, {
                                &quot;label&quot;: &quot;Because it would challenge long-held assumptions about ecology, history, and risk planning&quot;,
                                &quot;is_correct&quot;: true,
                                &quot;feedback&quot;: &quot;Still too high. Fast fashion is often discarded quickly.&quot;
                            },
                            {
                                &quot;label&quot;: &quot;Because dinosaurs could only survive in artificial reserves &quot;,
                                &quot;is_correct&quot;: false,
                                &quot;feedback&quot;: &quot;&quot;
                            }
                        ]
                    }
                },
                {
                    &quot;type&quot;: &quot;choice&quot;,
                    &quot;title&quot;: &quot;Do you want to hear more about this scenario?&quot;,
                    &quot;position&quot;: {
                        &quot;type&quot;: &quot;seconds&quot;,
                        &quot;value&quot;: 60
                    },
                    &quot;event_context&quot;: {
                        &quot;choices&quot;: &#x5B;{
                            &quot;label&quot;: &quot;Yes please&quot;,
                            &quot;next_media&quot;: &quot;dinosaur_audio2&quot;
                        }]
                    }
                }
            ],
            &quot;description&quot;: &quot;Quick cuts of clothing store racks, online shopping scrolls, and factory workers sewing.&quot;,
            &quot;media_length&quot;: 76
        },
        {
            &quot;id&quot;: &quot;dinosaur_audio2&quot;,
            &quot;title&quot;: &quot;Dinosaur 2&quot;,
            &quot;type&quot;: &quot;audio&quot;,
            &quot;resource_link&quot;: &quot;https://wimplayer.media.ustp.at/media.php?name=dinosaur_2.wav&quot;,
            &quot;timeline_events&quot;: &#x5B;{
                    &quot;type&quot;: &quot;quiz&quot;,
                    &quot;title&quot;: &quot;Which dinosaur group would likely be the hardest to control in a modern civilization?&quot;,
                    &quot;position&quot;: {
                        &quot;type&quot;: &quot;seconds&quot;,
                        &quot;value&quot;: 5
                    },
                    &quot;event_context&quot;: {
                        &quot;answers&quot;: &#x5B;{
                                &quot;label&quot;: &quot;Small to medium-sized, intelligent, highly adaptable predators&quot;,
                                &quot;is_correct&quot;: true,
                                &quot;feedback&quot;: &quot;&quot;
                            },
                            {
                                &quot;label&quot;: &quot;Very large, slow-moving herbivores&quot;,
                                &quot;is_correct&quot;: false,
                                &quot;feedback&quot;: &quot;&quot;
                            },
                            {
                                &quot;label&quot;: &quot;Flightless species living only in remote areas&quot;,
                                &quot;is_correct&quot;: false,
                                &quot;feedback&quot;: &quot;&quot;
                            },
                            {
                                &quot;label&quot;: &quot;Species with strongly territorial but fixed-range behavior&quot;,
                                &quot;is_correct&quot;: false,
                                &quot;feedback&quot;: &quot;&quot;
                            }
                        ]
                    }
                },
                {
                    &quot;type&quot;: &quot;quiz&quot;,
                    &quot;title&quot;: &quot;Which societal conflict would be most likely if humans and dinosaurs had to coexist permanently?&quot;,
                    &quot;position&quot;: {
                        &quot;type&quot;: &quot;seconds&quot;,
                        &quot;value&quot;: 35
                    },
                    &quot;event_context&quot;: {
                        &quot;answers&quot;: &#x5B;{
                                &quot;label&quot;: &quot;Whether dinosaurs should be included in school curricula &quot;,
                                &quot;is_correct&quot;: false,
                                &quot;feedback&quot;: &quot;&quot;
                            },
                            {
                                &quot;label&quot;: &quot;The complete abolition of modern infrastructure&quot;,
                                &quot;is_correct&quot;: false,
                                &quot;feedback&quot;: &quot;&quot;
                            },
                            {
                                &quot;label&quot;: &quot;A global abandonment of agriculture&quot;,
                                &quot;is_correct&quot;: false,
                                &quot;feedback&quot;: &quot;&quot;
                            },
                            {
                                &quot;label&quot;: &quot;A conflict between species protection, public safety, and economic use of land&quot;,
                                &quot;is_correct&quot;: true,
                                &quot;feedback&quot;: &quot;&quot;
                            }
                        ]
                    }
                },
                {
                    &quot;type&quot;: &quot;choice&quot;,
                    &quot;title&quot;: &quot;Do you want to read more?&quot;,
                    &quot;position&quot;: {
                        &quot;type&quot;: &quot;seconds&quot;,
                        &quot;value&quot;: 55
                    },
                    &quot;event_context&quot;: {
                        &quot;choices&quot;: &#x5B;{
                            &quot;label&quot;: &quot;Yes please&quot;,
                            &quot;next_media&quot;: &quot;dinosaur_end_text&quot;
                        }]
                    }
                }
            ],
            &quot;description&quot;: &quot;Dinosaur audio&quot;,
            &quot;media_length&quot;: 59
        },
        {
            &quot;id&quot;: &quot;dinosaur_end_text&quot;,
            &quot;title&quot;: &quot;End&quot;,
            &quot;type&quot;: &quot;text&quot;,
            &quot;resource_link&quot;: &quot;https://wimplayer.media.ustp.at/media.php?name=dinosaurs_end.html&quot;,
            &quot;timeline_events&quot;: &#x5B;]
        }
    ]
}
</pre></div>


<h3 class="wp-block-heading">2. The Frontend: Nuxt &amp; Logic</h3>



<p class="wp-block-paragraph">The player itself is built with <strong>Nuxt</strong>. We chose Nuxt because its reactive framework is ideal for syncing a video’s progress with dynamic UI overlays.</p>



<p class="wp-block-paragraph">For this we split our team into 2 departments: </p>



<ul class="wp-block-list">
<li>The UI/UX of the main page and components</li>



<li>The player with the state machine</li>
</ul>



<h4 class="wp-block-heading">Main Page &amp; Components UI/UX</h4>



<p class="wp-block-paragraph">For prototyping and designing our pages and components, we decided on using Figma with Nuxt&#8217;s components to help us out. Here are some examples of our pages and components:</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img decoding="async" data-id="15826" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/04/Template_-Dahsboard-402x800.png" alt="" class="wp-image-15826"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="15840" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/04/Template_-Video-1-402x800.png" alt="" class="wp-image-15840"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="15836" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/04/Template_-Audio-1-402x800.png" alt="" class="wp-image-15836"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="15835" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/04/Template_-Text-1-402x800.png" alt="" class="wp-image-15835"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="15834" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/04/Template_-Media-Description3-1-402x800.png" alt="" class="wp-image-15834"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="15838" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/04/Template_-Media-Description1-1-402x800.png" alt="" class="wp-image-15838"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="15839" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/04/Template_-Media-Description-1-402x800.png" alt="" class="wp-image-15839"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" data-id="15837" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/04/Template_-Media-Description2-1-402x800.png" alt="" class="wp-image-15837"/></figure>
</figure>



<h4 class="wp-block-heading">State Machine</h4>



<p class="wp-block-paragraph">To manage the complexity of interactive playback, we implemented a <strong>state machine</strong>. The state machine coordinates:</p>



<ul class="wp-block-list">
<li><strong>Syncing Logic:</strong> Monitoring the video’s <code>currentTime</code> to trigger overlays from the WIMP format.</li>



<li><strong>Interaction States:</strong> When a <code>pause: true</code> event occurs, the machine pauses the background media, putting the quiz or choice interface in the foreground.</li>



<li><strong>Dynamic Media Handling:</strong> When a user makes a choice, the machine resolves the <code>next_media</code> ID and updates the Nuxt state to swap the media and move forward in the decission tree.</li>
</ul>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/wild-week-wyld-interactive-media-player/">Wild Week &#8211; Wyld Interactive Media Player</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Language Learning App</title>
		<link>https://mobile.fhstp.ac.at/allgemein/language-learning-app/</link>
		
		<dc:creator><![CDATA[Sander Hahn]]></dc:creator>
		<pubDate>Tue, 24 Feb 2026 08:57:56 +0000</pubDate>
				<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15474</guid>

					<description><![CDATA[<p>As my second project for the first semester, I set out to learn more about app development with Kotlin. For this, I used Android Studio to create a language-learning app with a small twist: instead of entering the word you want to learn in your own language, you enter the foreign word. The backend then <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/language-learning-app/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/language-learning-app/">Language Learning App</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">As my second project for the first semester, I set out to learn more about app development with Kotlin. For this, I used Android Studio to create a language-learning app with a small twist: instead of entering the word you want to learn in your own language, you enter the foreign word. The backend then automatically translates the word into your language. The idea behind this is that writing the new word yourself helps memorize it, while also saving a little time by translating it automatically.</p>



<h2 class="wp-block-heading">Tools and Technologies</h2>



<p class="wp-block-paragraph">To achieve this, I used the most recent version of Android Studio in combination with:</p>



<h3 class="wp-block-heading">Frontend: Jetpack Compose</h3>



<p class="wp-block-paragraph">When developing apps in Android Studio, the recommended framework is Android’s Jetpack Compose. It is a modern toolkit for building native UIs and simplifies and accelerates UI development on Android.</p>



<h3 class="wp-block-heading">Backend / Database: Jetpack Room</h3>



<p class="wp-block-paragraph">Jetpack Room is a persistence library introduced as part of the Android Jetpack suite to simplify working with SQLite databases. It provides an abstraction layer over SQLite, allowing more robust database access while still enabling the full power of SQLite.</p>



<h3 class="wp-block-heading">Translation: ML Kit</h3>



<p class="wp-block-paragraph">With Android Studio’s ML Kit Translation API, users can translate text in over 50 different languages without the need for an internet connection, and it is completely free to use for development.</p>



<h2 class="wp-block-heading">Project Scope</h2>



<p class="wp-block-paragraph">My goal is to develop an intuitive app that lets users learn new words in different languages.</p>



<p class="wp-block-paragraph">The app should contain:</p>



<ul class="wp-block-list">
<li>Start Page
<ul class="wp-block-list">
<li>Before users can begin learning, they need to set a name and their nationality so ML Kit knows which language to translate into.</li>
</ul>
</li>



<li>Overview of folders and cards
<ul class="wp-block-list">
<li>Users can create multiple folders with different language settings and visuals. In these folders, they can see their added cards.</li>
</ul>
</li>



<li>Add folders
<ul class="wp-block-list">
<li>Adding folders should be easy, and folders should also be easily distinguishable. To achieve this, users can set a name (e.g., German vocabulary), a color, the foreign language (e.g., German), and change the local language if needed (default is the user’s nationality).</li>
</ul>
</li>



<li>Add cards
<ul class="wp-block-list">
<li>Adding cards is the most important feature of this app. Users add a new word and have two optional fields for example sentences and tags.</li>
</ul>
</li>



<li>Automatic translation
<ul class="wp-block-list">
<li>For ease of use (and to experiment with Android’s APIs), the new word is automatically translated into the user’s language.</li>
</ul>
</li>



<li>Quiz mode
<ul class="wp-block-list">
<li>With quiz mode, users can test their skills using three different modes: Random, Bookmarked, and Recall (a list of incorrectly answered cards).</li>
</ul>
</li>
</ul>



<h2 class="wp-block-heading">Beyond the Initial Scope</h2>



<p class="wp-block-paragraph">Additionally, I implemented several features that further improve the app’s functionality:</p>



<ul class="wp-block-list">
<li>User edit page: Allows users to edit their name, nationality, and app theme.</li>



<li>Light and dark mode: Added for additional customization.</li>
</ul>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<p class="wp-block-paragraph">Overall, the implementation of this project during my first semester was very successful and involved learning many new technologies. Both frontend and backend are fully implemented and can be further extended in the upcoming semesters.</p>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/language-learning-app/">Language Learning App</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>State of the Art of AI-Enhanced SLAM</title>
		<link>https://mobile.fhstp.ac.at/allgemein/state-of-the-art-of-ai-enhanced-slam/</link>
		
		<dc:creator><![CDATA[Sander Hahn]]></dc:creator>
		<pubDate>Wed, 21 Jan 2026 18:01:37 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[AI]]></category>
		<category><![CDATA[Artificial Intelligence]]></category>
		<category><![CDATA[ORB-SLAM]]></category>
		<category><![CDATA[SIFT]]></category>
		<category><![CDATA[Simultaneous Localization And Mapping]]></category>
		<category><![CDATA[slam]]></category>
		<category><![CDATA[VSLAM]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15297</guid>

					<description><![CDATA[<p>Abstract This paper discusses recent developments in Simultaneous Localization and Mapping (SLAM) combined with the use of Artificial Intelligence (AI). SLAM makes it possible for robots to build maps of unknown environments while tracking their position, but with traditional methods robots often struggle in dynamic or unstructured settings due to unclear or moving objects. Recent <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/state-of-the-art-of-ai-enhanced-slam/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/state-of-the-art-of-ai-enhanced-slam/">State of the Art of AI-Enhanced SLAM</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading">Abstract</h2>



<p class="has-text-align-left wp-block-paragraph">This paper discusses recent developments in Simultaneous Localization and Mapping (SLAM) combined with the use of Artificial Intelligence (AI). SLAM makes it possible for robots to build maps of unknown environments while tracking their position, but with traditional methods robots often struggle in dynamic or unstructured settings due to unclear or moving objects. Recent advances in AI and its integration into SLAM address these issues by improving feature extraction, predictive modeling, and adaptability. Convolutional and Graph Convolutional Networks enhance robustness and scalability, while transformer architectures enable efficient trajectory planning. Obstacle detection and avoidance in real-world scenarios are further reinforced by deep reinforcement learning. AI-driven innovations also introduce multi-modal sensor fusion, semantic mapping, enhanced loop closure detection, and collaborative multi-agent frameworks. Comparative studies reveal that AI-enhanced SLAM shows a higher accuracy and robustness across varied scenarios.</p>



<div style="height:100px" aria-hidden="true" class="wp-block-spacer"></div>



<div data-wp-interactive="core/file" class="wp-block-file"><object data-wp-bind--hidden="!state.hasPdfPreview" hidden class="wp-block-file__embed" data="https://mobile.fhstp.ac.at/wp-content/uploads/2026/01/State-of-the-Art-of-AI-Enhanced-SLAM.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Embed of State of the Art of AI-Enhanced SLAM."></object><a id="wp-block-file--media-a94bbd24-f9c3-4c5e-af6a-968726c47153" href="https://mobile.fhstp.ac.at/wp-content/uploads/2026/01/State-of-the-Art-of-AI-Enhanced-SLAM.pdf">State of the Art of AI-Enhanced SLAM</a><a href="https://mobile.fhstp.ac.at/wp-content/uploads/2026/01/State-of-the-Art-of-AI-Enhanced-SLAM.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-a94bbd24-f9c3-4c5e-af6a-968726c47153">Download</a></div>



<p class="wp-block-paragraph"></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/state-of-the-art-of-ai-enhanced-slam/">State of the Art of AI-Enhanced SLAM</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>What is Supabase and when to use it</title>
		<link>https://mobile.fhstp.ac.at/allgemein/what-is-supabase-and-when-to-use-it/</link>
		
		<dc:creator><![CDATA[Sander Hahn]]></dc:creator>
		<pubDate>Wed, 21 Jan 2026 12:02:10 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[backend]]></category>
		<category><![CDATA[compare]]></category>
		<category><![CDATA[comparison]]></category>
		<category><![CDATA[firebase]]></category>
		<category><![CDATA[saas]]></category>
		<category><![CDATA[supabase]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15295</guid>

					<description><![CDATA[<p>When you start your Fullstack application, the planning can be difficult. What Programming Language should I use? What Framework should I use? Should I write my own backend? Choosing the right backend is very difficult and can decide everything from your development speed to how much control you have over your data. Firebase has been <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/what-is-supabase-and-when-to-use-it/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/what-is-supabase-and-when-to-use-it/">What is Supabase and when to use it</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">When you start your Fullstack application, the planning can be difficult. What Programming Language should I use? What Framework should I use? Should I write my own backend? Choosing the right backend is very difficult and can decide everything from your development speed to how much control you have over your data. Firebase has been a first option for developers who want to have a fast backend with minimal setup for years, but more recently, Supabase has been growing in popularity, making an open-source Postgres database a compelling alternative.</p>



<p class="wp-block-paragraph">Both platforms promise fast and easy development, built-in authentication, real-time data, and scalable infrastructure. But can they deliver on these promises and when should I use what? Both are valid choices for your next project but they have their differences in some fundamental ways: data modeling, query flexibility, pricing transparency, and how much you can customize as your app grows. Those differences matter, especially once you move beyond a prototype. But first: what is Supabase actually and what can it do?</p>



<h2 class="wp-block-heading">What is Supabase</h2>



<p class="wp-block-paragraph">Supabase is a serverless, open-source backend platform that is designed to help developers build scalable, high-performance applications with minimal setup. It’s built on top of PostgreSQL, it provides a fully managed, production-ready database along with essential backend features such as authentication, storage, and real-time data without relying on other services. This means that you don’t need to configure or maintain a custom backend server, allowing you to move faster and focus on product development.</p>



<p class="wp-block-paragraph">As a serverless solution, Supabase handles infrastructure concerns like provisioning, scaling, and security automatically. It also allows the user to get direct access to a powerful SQL database that uses PostgreSQL for structured data modeling, complex queries, joins, and transactions.</p>



<p class="wp-block-paragraph">With Supabase, you get a managed backend with features like:</p>



<ul class="wp-block-list">
<li>SQL database: PostgreSQL with support for advanced queries, joins, and JSON data.</li>



<li>Authentication: Secure, built-in user management.</li>



<li>Realtime updates: Live data synchronization using WebSockets.</li>



<li>Storage: Easy-to-use storage for files and media.</li>



<li>Edge functions: Custom serverless functions for handling app logic.</li>
</ul>



<h2 class="wp-block-heading">Firebase</h2>



<p class="wp-block-paragraph">Similar to Supabase, Firebase is a backend-as-a-service solution offered by Google, which assists developers in the development of applications without the need for them to handle the infrastructure on their own. Firebase also offers a set of features such as authentication, real-time databases, cloud functions, file storage, and analytics. This solution is designed with the objective of providing ease of use and rapid development.</p>



<p class="wp-block-paragraph">At the heart of the Firebase platform are the NoSQL databases, namely the Realtime Database and the Cloud Firestore, which organize and store the data in the form of documents and collections, unlike traditional relational databases in the form of tables. Although the NoSQL databases provide a degree of flexibility and ease of development, especially when real-time updates and data access patterns are concerned, handling complex relationships and queries in a scaled-up application might be a challenge.</p>



<p class="wp-block-paragraph">Supabase takes a different approach to backend development. Like mentioned above, it’s an open-source, serverless framework that centers around PostgreSQL. Supabase offers its features with just one Postgres database.</p>



<h2 class="wp-block-heading">Supabase vs Firebase</h2>



<h3 class="wp-block-heading">Data model</h3>



<p class="wp-block-paragraph">Firebase supports a NoSQL, document-oriented data structure well-suited for hierarchical or event-oriented data. Supabase supports relational SQL, which provides support for schemas, joins, transactions, and consistency.</p>



<h3 class="wp-block-heading">Querying and logic</h3>



<p class="wp-block-paragraph">It allows complex queries and business logic to be implemented directly in the database through SQL, constraints, and triggers. Firebase uses more client-side logic and Cloud Functions for complex operations.</p>



<h3 class="wp-block-heading">Scalability &amp; Control</h3>



<p class="wp-block-paragraph">Whereas Firebase abstracts infrastructure almost completely, which is easy to set up but makes it difficult to customize, Supabase provides more visibility and flexibility, which includes direct database access and the ability to host it on your own infrastructure.</p>



<h3 class="wp-block-heading">Vendor lock-in</h3>



<p class="wp-block-paragraph">Firebase is highly integrated with Google Cloud. Supabase values portability and focuses on using open standards and tools that make it easy to migrate in and out.</p>



<h3 class="wp-block-heading">Use Cases</h3>



<p class="wp-block-paragraph">Supabase is well suited for:</p>



<ul class="wp-block-list">
<li>SaaS platforms with relational data and role-based access control</li>



<li>Data-intensive applications such as analytics dashboards and internal tools</li>



<li>Projects that require complex queries, transactions, or strong data integrity</li>



<li>Teams that value open source, portability, and long-term flexibility<br></li>
</ul>



<p class="wp-block-paragraph">Firebase is well suited for:</p>



<ul class="wp-block-list">
<li>MVPs and prototypes that need to ship quickly</li>



<li>Real-time applications like chat, presence, or collaborative tools</li>



<li>Frontend-heavy apps with simple data relationships</li>



<li>Teams already invested in the Google Cloud ecosystem<br></li>
</ul>



<h2 class="wp-block-heading">Choosing Between Supabase and Firebase</h2>



<p class="wp-block-paragraph">The choice between Supabase and Firebase ultimately depends on how your application handles data and how much control you want over your backend. Firebase is very good at simplicity and speed, while Supabase shines when structure, scalability, and flexibility become more important over time.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p class="wp-block-paragraph">Choosing a backend platform is one of the most important decisions you’ll make when starting you fullstack application. It decides not only how fast you&#8217;ll progress and deliver your first version, but also how well your application can scale and how complex your data model can become.</p>



<p class="wp-block-paragraph">Firebase and Supabase are both good options to choose from and remove a lot of the traditional backend complexity. Firebase is good for rapid development, especially for real-time, frontend-driven applications. Supabase, on the other hand, offers a more structured and transparent approach, built around the concept of open-source and PostgreSQL, making it a strong choice for applications that need simple data models and long-term flexibility.</p>



<p class="wp-block-paragraph">As always, there is no universally &#8220;better&#8221; option&#8230; Only the better fit for your project. If you need to move fast with minimal setup and simple data relationships, Firebase is a solid choice. If your application relies on relational data, complex queries, and future-proof architecture, Supabase provides a powerful and scalable foundation.</p>



<p class="wp-block-paragraph">Ultimately, the best backend is the one that aligns with your application’s needs today while still supporting where you want it to go tomorrow.</p>



<h3 class="wp-block-heading">Sources</h3>



<ol class="wp-block-list">
<li><a href="https://bejamas.com/hub/serverless-database/supabase">https://bejamas.com/hub/serverless-database/supabase</a></li>



<li><a href="https://somindadhaniya.medium.com/what-is-supabase-the-open-source-firebase-alternative-developers-love-ef63f15e0e48">https://somindadhaniya.medium.com/what-is-supabase-the-open-source-firebase-alternative-developers-love-ef63f15e0e48</a></li>



<li><a href="https://www.newline.co/@zaoyang/what-is-supabase-and-how-it-can-replace-your-entire-backend--62b84205">https://www.newline.co/@zaoyang/what-is-supabase-and-how-it-can-replace-your-entire-backend&#8211;62b84205</a></li>



<li><a href="https://supabase.com/">https://supabase.com/</a></li>



<li><a href="https://supabase.com/docs/guides/getting-started/architecture">https://supabase.com/docs/guides/getting-started/architecture</a></li>



<li><a href="https://www.postgresql.org/about/">https://www.postgresql.org/about/</a></li>



<li><a href="https://firebase.google.com/">https://firebase.google.com/</a></li>



<li><a href="https://medium.com/firebase-developers/what-is-firebase-the-complete-story-abridged-bcc730c5f2c0">https://medium.com/firebase-developers/what-is-firebase-the-complete-story-abridged-bcc730c5f2c0</a></li>
</ol>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/what-is-supabase-and-when-to-use-it/">What is Supabase and when to use it</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>PrintToMobile &#124; TreeFund</title>
		<link>https://mobile.fhstp.ac.at/development/printtomobile-treefund/</link>
		
		<dc:creator><![CDATA[Sander Hahn]]></dc:creator>
		<pubDate>Fri, 17 Oct 2025 12:56:35 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Print-to-mobile]]></category>
		<category><![CDATA[React]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Webentwicklung]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=14942</guid>

					<description><![CDATA[<p>Today’s world is becoming increasingly complicated – and increasingly grey. Pollution, conflict, and overconsumption are draining the color from our planet. The idea of TreeFund is simple: find an easy, meaningful way to help make our world greener again – one small step at a time. Idea The goal of TreeFund is to provide an <a class="read-more" href="https://mobile.fhstp.ac.at/development/printtomobile-treefund/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/printtomobile-treefund/">PrintToMobile | TreeFund</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p class="wp-block-paragraph">Today’s world is becoming increasingly complicated – and increasingly grey. Pollution, conflict, and overconsumption are draining the color from our planet. The idea of TreeFund is simple: find an easy, meaningful way to help make our world greener again – one small step at a time.</p>



<h2 class="wp-block-heading">Idea</h2>



<p class="wp-block-paragraph">The goal of <em>TreeFund</em> is to provide an easy and transparent way for people to contribute to environmental restoration projects in St. Pölten. Its main focus is supporting tree planting initiatives and teaching new generations how to help our planet. The idea is to connect with individuals who want to make a difference and focus on their specific needs. People will first encounter <em>TreeFund </em>through posters and flyers placed around the city. A QR code on each will lead directly to the <em>TreeFund </em>website, where users can learn more, get involved, and track the impact of their contributions.</p>



<p class="wp-block-paragraph"></p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-8f761849 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-vertically-aligned-center is-layout-flow wp-block-column-is-layout-flow">
<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="595" height="842" data-id="14964" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Print2-5.jpg" alt="" class="wp-image-14964"/></figure>



<figure class="wp-block-image size-full"><img decoding="async" width="720" height="1520" data-id="14963" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot_20251017-134357_Camera-5.jpg" alt="" class="wp-image-14963"/></figure>
</figure>
</div>
</div>



<p class="wp-block-paragraph"></p>



<h2 class="wp-block-heading"><strong>Implementation</strong></h2>



<p class="wp-block-paragraph">As the first step in the implementation process, I created a user persona: <em>Lisa Gruber</em>, a student at the <em>University of Applied Sciences St. Pölten</em>.</p>



<p class="wp-block-paragraph"><em>Lisa </em>is deeply environmentally conscious and eager to contribute to positive change. However, she often feels frustrated by the impersonal nature of many existing donation platforms. She wants to see the real impact of her actions and connect with initiatives that align with her values on a local level.</p>



<p class="wp-block-paragraph"></p>



<figure class="wp-block-image size-full"><img decoding="async" width="1787" height="1725" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Persona.png" alt="" class="wp-image-14966" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Persona.png 1787w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Persona-1536x1483.png 1536w" sizes="(max-width: 1787px) 100vw, 1787px" /></figure>



<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">To personalize this process, the user (Lisa) first contacts TreeFund via a form describing their personal needs and where they want to see a part of the world a little greener. Only after the user is happy and the tree planting effort is accepted by the city, the payment process begins.&nbsp;</p>



<p class="wp-block-paragraph">To attract younger customers the design follows a minimalist aesthetic with clean whites and greens to emphasize the simplicity and positivity of the project’s goal. The design was first created in Figma with inspirations like Ecosia and TreeApp. My goal was to stick to a strict number of TailwindCSS colors. The website switches between Stone-50 and -100 for the background and Lime-400, -500, -600 and -800 for the green accents.</p>


<div class="wp-block-image">
<figure class="aligncenter size-full"><img loading="lazy" decoding="async" width="387" height="144" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Frame-17.png" alt="" class="wp-image-14982"/></figure>
</div>


<p class="wp-block-paragraph"></p>



<p class="wp-block-paragraph">After the design process, the actual website was implemented using React, Next.js, Tailwind CSS, and Lucide for icons.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1436" height="2724" data-id="14975" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot_20251017-135253_Chrome-1.jpg" alt="" class="wp-image-14975" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot_20251017-135253_Chrome-1.jpg 1436w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot_20251017-135253_Chrome-1-810x1536.jpg 810w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot_20251017-135253_Chrome-1-1080x2048.jpg 1080w" sizes="auto, (max-width: 1436px) 100vw, 1436px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1440" height="2724" data-id="14976" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot_20251017-135326_Chrome-1.jpg" alt="" class="wp-image-14976" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot_20251017-135326_Chrome-1.jpg 1440w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot_20251017-135326_Chrome-1-812x1536.jpg 812w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot_20251017-135326_Chrome-1-1083x2048.jpg 1083w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></figure>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1440" height="2920" data-id="14974" src="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot_20251017-135332_Chrome.jpg" alt="" class="wp-image-14974" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot_20251017-135332_Chrome.jpg 1440w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot_20251017-135332_Chrome-757x1536.jpg 757w, https://mobile.fhstp.ac.at/wp-content/uploads/2025/10/Screenshot_20251017-135332_Chrome-1010x2048.jpg 1010w" sizes="auto, (max-width: 1440px) 100vw, 1440px" /></figure>
</figure>



<p class="wp-block-paragraph"><strong>Link to the Web Application:</strong> https://fhstp-print2mobil.vercel.app/</p>



<p class="wp-block-paragraph"><br><strong>Disclaimer: </strong><em>This is a personal project created for educational and illustrative purposes. It is not affiliated with any existing environmental organizations. The aim is to demonstrate how web technology can be used to promote sustainability and environmental awareness.</em></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/printtomobile-treefund/">PrintToMobile | TreeFund</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
