<?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 Csongor - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/it255501/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/it255501/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Wed, 16 Sep 2026 23:24:16 +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 Csongor - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/it255501/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Seed Data Is Not Test Data: Building a Realistic Development Database</title>
		<link>https://mobile.fhstp.ac.at/allgemein/seed-data-is-not-test-data-building-a-realistic-development-database/</link>
		
		<dc:creator><![CDATA[Csongor]]></dc:creator>
		<pubDate>Wed, 16 Sep 2026 23:24:16 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=16009</guid>

					<description><![CDATA[<p>This blog article argues whether database seeding should make the application look as if ordinary users have already been using it, in contrast to showcasing edge cases and test suits. While seed scripts in reality can be used to accomplish both the argument is not that seed data can never support testing but instead that one development dataset should not be filled with every technical edge case.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/seed-data-is-not-test-data-building-a-realistic-development-database/">Seed Data Is Not Test Data: Building a Realistic Development Database</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">This blog article argues whether database seeding should make the application look as if ordinary users have already been using it, in contrast to showcasing edge cases and test suits. While seed scripts in reality can be used to accomplish both the argument is not that seed data can never support testing but instead that one development dataset should not be filled with every technical edge case.</p>



<h2 class="wp-block-heading">1. Introduction</h2>



<p class="wp-block-paragraph">When developing an application the developer doesn&#8217;t want to repeat the process or creating a user, then listing a product, sending messages, and so on just to be able to test a new feature they are working on. Manually creating records in the database wastes time especially if it has to be done frequently. A seed script solves this issue so the developer doesn&#8217;t have to start from zero every time. How ever seeds can also hinder development if it gets bloated with testing every single scenario possible with potential technical non-realistic naming, missing fields and placeholders. <strong>What should a useful development seed actually contain?</strong></p>



<h2 class="wp-block-heading">2. <strong>Seed data and test data serve different purposes</strong></h2>



<p class="wp-block-paragraph">First of all, database seeding means to populate a database with initial records after its structure has been created (<a href="https://supabase.com/docs/guides/local-development/seeding-your-database">Supabase</a>). Seeds may include reference data like roles, categories, or settings. It provides a constant and reproduceable sample dataset for development. I can also provide a prepared environment to conduct specific tests. This blog post differentiates two main use cases for seed data.</p>



<p class="wp-block-paragraph"><strong>Development Demo Data</strong><br>First development demo data&#8217;s aim is to produce a regular environment for manual use of the application. It makes the application understandable and useable out of the box. These are really only used in local development to hep with developing or demonstrating features.</p>



<p class="wp-block-paragraph"><strong>Test Fixtures</strong><br>These are created for specific scenarios that are aimed at smaller parts of the application. The seed data contains only the required states for the given test. This isolates areas of the application and uses less time and processing power because its meant to be dropped often (<a href="https://playwright.dev/docs/test-fixtures">playwright</a>).</p>



<h2 class="wp-block-heading"><strong>3. <strong>Properties of useful development seed data</strong></strong></h2>



<p class="wp-block-paragraph"><strong>How unrealistic seed data hurts development</strong><br>The realism behind the data that is seeded into the database has high significance when finalizing or demonstrating features. Technical labels and placeholders can make or break the UI. A poor seed can create presentation problems, development, and usability problems. To try and avoid these watch out for the following properties.</p>



<p class="wp-block-paragraph"><strong>a. Believable visible content</strong><br>Names, titles and descriptions are all textual information that need to look natural and follow the application. Other data such as prices with currencies and dates should be reasonable. Images also play a major role and are not an easy thing to make realistic. Finally one of the most important factor is not to use user-facing fields for storing developer notes or technical naming.</p>



<p class="wp-block-paragraph"><strong>b. Relationships</strong><br>Filling out the table row by row is not best practice to make the data look realistic. A solution for this is to create a few users and create connected records around a few scenarios demonstrating complete workflows.</p>



<p class="wp-block-paragraph"><strong>c. Representativeness</strong><br>Make sure that all major features of the application are represented in the seed data. This doesn&#8217;t have to cover every single possibility, but allow the developer to see functioning features.</p>



<p class="wp-block-paragraph"><strong>d. Safe information</strong><br>One might ask why not just use production data if available? There are many cases where that is the solution to diagnose a bug for build a highly specific feature. The issue is the handling of personal information. Ideally when using production data a different script should be used to anonymize the data. Even if that is the case real data has to be used with extra care and may add difficulty and require more time when developing, hence the safest option is to use invented but realistic looking data.</p>



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



<p class="wp-block-paragraph">I decided to choose this topic because i encountered database seeding in multiple development environments before and I have always thought that I would do it a bit differently. Then I started my own project that had seeding for the first time fully controlled by myself. I experienced both ends of the scale either putting too many scenarios and potential edge cases in the seed data or lacking the ability to instantly test some feature. Finally I believe multiple seeding scripts are ideal and a middle point has to be found between maintenance requirement and usefulness due to the size some seeds can grow to.</p>



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



<p class="wp-block-paragraph"><a href="https://www.prisma.io/docs/orm/v7/prisma-migrate/workflows/seeding">https://www.prisma.io/docs/orm/v7/prisma-migrate/workflows/seeding</a></p>



<p class="wp-block-paragraph"><a href="https://supabase.com/docs/guides/local-development/seeding-your-database">https://supabase.com/docs/guides/local-development/seeding-your-database</a></p>



<p class="wp-block-paragraph"><a href="https://playwright.dev/docs/test-fixtures">https://playwright.dev/docs/test-fixtures</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/seed-data-is-not-test-data-building-a-realistic-development-database/">Seed Data Is Not Test Data: Building a Realistic Development Database</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>RevMatchMarket Phase 2 – From Swipe-Based Browsing to Buyer-Seller Communication</title>
		<link>https://mobile.fhstp.ac.at/allgemein/revmatchmarket-phase-2-from-swipe-based-browsing-to-buyer-seller-communication/</link>
		
		<dc:creator><![CDATA[Csongor]]></dc:creator>
		<pubDate>Wed, 16 Sep 2026 21:40:10 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Webdevelopment]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Web-App]]></category>
		<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15917</guid>

					<description><![CDATA[<p>1. Introduction Rev Match Market is a used car marketplace lead by the left right swiping mechanism for marking interest in used car postings and connecting buyers with sellers. This blog post describes the second phase of development that took place on this project. Initially a MVP was made in the 1st phase that already <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/revmatchmarket-phase-2-from-swipe-based-browsing-to-buyer-seller-communication/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/revmatchmarket-phase-2-from-swipe-based-browsing-to-buyer-seller-communication/">RevMatchMarket Phase 2 – From Swipe-Based Browsing to Buyer-Seller Communication</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">1. Introduction</h2>



<p class="wp-block-paragraph">Rev Match Market is a used car marketplace lead by the left right swiping mechanism for marking interest in used car postings and connecting buyers with sellers. This blog post describes the second phase of development that took place on this project. Initially a MVP was made in the 1st phase that already contained the following features: authenticated sessions, swipe-based discovery, favorites, and seller listing management. For further reading about the 1st phase find the previous blog post <a href="https://mobile.fhstp.ac.at/allgemein/rev-match-market-a-swipe-based-used-car-marketplace/">here</a>.</p>



<p class="wp-block-paragraph">As a continuation to the initial MVP, the 2nd phase&#8217;s main goal was to introduce buyer-seller communication within the application aided with a notification system informing buyers and sellers about new interactions from each other. Another goal was to significantly improve the mobile experience and expand the capability of the UI from a single mobile view to a responsively transitioning UI that supports desktop, tablet, and mobile. Additional goals were the implementation of a concrete sold state that could later be the starting point of KPI tracking. Finally, to be able to later experiment with the app as a real business the application structure and code quality was to be made more production-ready.</p>



<h2 class="wp-block-heading">2. From Phase 1 MVP to Phase 2 &#8211; The Plan</h2>



<p class="wp-block-paragraph">The starting point of the 2nd phase was directly from where phase 1 and the last blog post left off.</p>



<ul class="wp-block-list">
<li>Authenticated marketplace.</li>



<li>Seller listing creation, editing and soft deletion.</li>



<li>Swipe-based discovery with LIKE and PASS.</li>



<li>Favorites and basic make/model/price filtering.</li>



<li>Nuxt, NestJS, PostgreSQL and Prisma foundation.</li>
</ul>



<p class="wp-block-paragraph">The features implemented by phase 2 in order of priority.</p>



<ul class="wp-block-list">
<li>Mobile-first redesign before implementing major new screens.</li>



<li>Chat and in-app notifications as the main new product features.</li>



<li>Improved marketplace filtering and incremental feed loading.</li>



<li>Cleaner domain boundaries, response contracts and privacy handling.</li>
</ul>



<p class="wp-block-paragraph">The result speak for them self, even if at this point of the blog only visually.</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 size-full"><img fetchpriority="high" decoding="async" width="1699" height="944" data-id="16003" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/Screenshot-2026-09-16-131945-3.png" alt="" class="wp-image-16003" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/Screenshot-2026-09-16-131945-3.png 1699w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/Screenshot-2026-09-16-131945-3-1536x853.png 1536w" sizes="(max-width: 1699px) 100vw, 1699px" /></figure>
</figure>



<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-layout-flow wp-block-column-is-layout-flow" style="flex-basis:100%"></div>
</div>



<h2 class="wp-block-heading">3. The Mobile-First Interface</h2>



<p class="wp-block-paragraph"><strong>Shared Application Shell</strong><br>The shell places the screens in a wrapping element which provides consistent navigation throughout the navigation between pages and also provides a responsive layout. The components and visual primitives used in the application are also standardized across the different pages including spacing, typography and interaction states. This meant that many components from phase 1 have been completely replaced with special care so no parallel or redundant designs would have to be maintained.</p>



<p class="wp-block-paragraph"><strong>Screen Changes and Account Identity</strong><br>To start off at the beginning of users journey the login and registration pages have been completely redesigned and made responsive, along with the swipe, car-detail, favorites and seller-listing screens. A visible addition to the users was also made by displaying a name for user facing identity. The user identity also gained increased protection, since emails and user IDs of other users are no longer reaching the frontend other than public contact information on car-detail pages. </p>



<figure class="wp-block-image size-full is-resized"><img decoding="async" width="545" height="1189" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/Screenshot-2026-09-16-132131.png" alt="" class="wp-image-15934" style="aspect-ratio:0.45837641540362645;width:192px;height:auto"/><figcaption class="wp-element-caption">Swipe page of the application with demo data where users brows listings.</figcaption></figure>



<h2 class="wp-block-heading"><strong>4. Improving Marketplace Discovery</strong></h2>



<p class="wp-block-paragraph">A task originally coming from phase 1 has been implemented and improved, which is pagination and filtering of the queue of cars on the swipe page. First of all Filtering did already exist but it is now moved from the frontend to the backend. The number of filters remains small though now its way easier to expand. The front end now only holds a limited number of cars that come next and before the queue is exhausted the prefetching of new cars occurs. Pass decisions still expire and listings return to the queue later.</p>



<figure class="wp-block-image size-full"><img decoding="async" width="3760" height="3160" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/image-1.png" alt="" class="wp-image-16005" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/image-1.png 3760w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/image-1-1536x1291.png 1536w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/image-1-2048x1721.png 2048w" sizes="(max-width: 3760px) 100vw, 3760px" /></figure>



<h2 class="wp-block-heading">5. Communication (Chat), Notifications and Sale Lifecycle</h2>



<p class="wp-block-paragraph">This section is arguably the most important for phase 2. This encapsulates Likes creating conversations, the chat experience between buyer and seller, in-app notifications, and a new state for listings &#8220;SOLD&#8221;.</p>



<p class="wp-block-paragraph"><strong>LIKEs and conversations</strong><br>As one can know from phase 1 when a user likes a listing, the listing appears in the users favorites tab. Now following that the seller also receives a notification of a potential buyer who liked their listing. To avoid the creation of empty conversations a like in it self doesn&#8217;t create a new conversation. Following the like both parties get the chance to initiate a conversation. The seller can initiate from the notification they receive and the buyer can start a chat from the favorites tab or the car-detail page. Either way a new conversation is created when the first message is sent. There can only be one conversation per car and interested buyer.</p>



<p class="wp-block-paragraph"><strong>Chat experience</strong><br>Chats appear in a list like page which provides basic information to the user about all the chats like total number of unread messages and about individual list items representing a single chat like the last message, the time it was sent and the car that is the subject of the conversation. Chats can still be reached following a successful sale or if a buyer decided to withdraw interest. When a listing is deleted the chat is still readable but new messages are blocked.</p>



<p class="wp-block-paragraph"><strong>In-app Notifications</strong><br>The two sources of notifications are the Likes and messages. When the application is open and the user receives a notification an in-app popup appears temporarily. In case the user misses the popup, they might still access the notifications in their inbox with a list view. The notification inbox list view similarly to the chat shows notification contents, read or unread states and a counter for all unread notifications. The user can mark only one notification or all at the same time as read.</p>



<p class="wp-block-paragraph"><strong>Sold Listing</strong><br>The listings can be marked as sold only by the seller. They can do this either from the listing itself or the conversation which will associate the conversation with the successful sale. Sold listings can’t be found on the swipe page anymore and buyers may no longer start new conversations about the sold listings. Within favorites or existing conversations, the listing shows up as sold.</p>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="3760" height="3560" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/image.png" alt="" class="wp-image-16004" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/image.png 3760w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/image-1536x1454.png 1536w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/image-2048x1939.png 2048w" sizes="auto, (max-width: 3760px) 100vw, 3760px" /></figure>



<h2 class="wp-block-heading"><strong>6. Technical Foundation and Data Model</strong></h2>



<ul class="wp-block-list">
<li>RevMatchMarket still uses Nuxt 4 for the frontend, NestJS for the backend, and PostgreSQL with Prisma ORM for the database.</li>



<li>New persistence models that were added in phase 2 are conversations, messages, notifications, and sold state.</li>



<li>A major change is the increased privacy meaning that response DTOs no longer expose account email and userID.</li>



<li>The development process was also improved between phases 1 and 2 by using dedicated git feature branches merged into develop and later charry picking from develop to main (production).</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="10460" height="3960" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/image-3.png" alt="" class="wp-image-16007" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/image-3.png 10460w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/image-3-1536x582.png 1536w, https://mobile.fhstp.ac.at/wp-content/uploads/2026/09/image-3-2048x775.png 2048w" sizes="auto, (max-width: 10460px) 100vw, 10460px" /></figure>



<h2 class="wp-block-heading"><strong>7. Challenges and Lessons Learned</strong></h2>



<p class="wp-block-paragraph">The first challenge was to plan the chat and notification system before implementation, what I learned is that it is significantly easier if the process is visualized beforehand using one of many flow chat methods. I also learned about the effort required to produce production grade code, where edge cases have to be treated with special care. I have learnt about several new techniques listed below.</p>



<p class="wp-block-paragraph"><strong>Cursor Pagination</strong><br>Pagination is used when requesting batches of a long list of data from the API. Cursor pagination loads the next group of records relative to the last record already received. This differs from the more simple offset pagination which requests by skipping x amount of records from the start. A cursor marks the last record loaded by a deterministic value in most cases a timestamp and the record&#8217;s id. This is used on RevMatchMarket&#8217;s swipe feed, and notification and chat inbox for example to avoid duplicate or skipped records.</p>



<p class="wp-block-paragraph"><strong>Client-side Reconciliation</strong><br>Reconciliation is to be understood as checking back with the API new data based on the data the browser already had. This process merges new server data with the existing state of the browser. This technique is important mainly because the application uses polling to fetch new messages or notifications. In case a notification is deleted and at the same time the polling occurs the deleted notification may appear again because the polling happened before the delete went through. When new server data arrives it is merged with the browser data by comparing IDs and the newer updatedAt wins over the older one.</p>



<p class="wp-block-paragraph"><strong>Prefetching</strong><br>The swipe page uses prefetching to achieve a continues feed. When only 3 cars remain from the previous batch of 20 a newer batch is fetched. To have a fluid swipe feed additional steps are also taken to filter out duplicates, potentially successful swipes can&#8217;t be re-introduced again, and account and filter changes are watched.</p>



<h2 class="wp-block-heading">8. Results</h2>



<p class="wp-block-paragraph">The development in the 2nd phase yielded the following results: a completely reworked design and application structure, the ability for buyers and sellers to connect within the application after a potential buyer liked a listing, a notification system to keep buyers and sellers up to date with liked and owned listings, and finally a revised discovery logic that is more reliable and scalable.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/revmatchmarket-phase-2-from-swipe-based-browsing-to-buyer-seller-communication/">RevMatchMarket Phase 2 – From Swipe-Based Browsing to Buyer-Seller Communication</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Vibe Coding: Fast AI-Driven Development — Benefits, Risks, and Guardrails</title>
		<link>https://mobile.fhstp.ac.at/allgemein/vibe-coding-fast-ai-driven-development-benefits-risks-and-guardrails/</link>
		
		<dc:creator><![CDATA[Csongor]]></dc:creator>
		<pubDate>Thu, 26 Feb 2026 06:51:11 +0000</pubDate>
				<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15665</guid>

					<description><![CDATA[<p>AI-assisted development is changing software development as a whole. “Vibe coding” is new trending term that means fast, AI-driven approach focuses on results rather than understanding code. With great power also comes great responsibility, since there are lots of risks involved. This blog will show: What it is, why it’s popular, what can go wrong, <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/vibe-coding-fast-ai-driven-development-benefits-risks-and-guardrails/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/vibe-coding-fast-ai-driven-development-benefits-risks-and-guardrails/">Vibe Coding: Fast AI-Driven Development — Benefits, Risks, and Guardrails</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">AI-assisted development is changing software development as a whole. “Vibe coding” is new trending term that means fast, AI-driven approach focuses on results rather than understanding code. With great power also comes great responsibility, since there are lots of risks involved.</p>



<p class="wp-block-paragraph">This blog will show: What it is, why it’s popular, what can go wrong, and a checklist for safely.</p>



<h2 class="wp-block-heading">What Is “Vibe Coding</h2>



<p class="wp-block-paragraph">“Vibe coding” is programming using natural language. AI generates the code and the developer iterates based on the results. In this approach. “the coder does not need to understand how or why the code works” (Merriam-Webster, 2025) The term became mainstream in 2025 and is now widely used to describe building software by prompting AI and iterating quickly, often with minimal manual code review.</p>



<p class="wp-block-paragraph">Instead of understanding code, developers when vibe coding focus on a simple question<br>“Does it work?”</p>



<p class="wp-block-paragraph">Traditional coding focuses on understanding, structure, and design, while vibe coding focuses on speed, iteration, and end-result.</p>



<h2 class="wp-block-heading">The Vibe Coding Loop</h2>



<p class="wp-block-paragraph">Vibe coding typically follows a simple loop:</p>



<ol class="wp-block-list">
<li>Describe feature in natural language</li>



<li>AI generates code</li>



<li>Run it and test it</li>



<li>paste errors back</li>



<li>Fix and repeat</li>
</ol>



<p class="wp-block-paragraph">This loop further emphasizes the speed of iteration vibe coding allows its users. Results are produced faster and the developer can focus more on refinement of the results or extending features.</p>



<h2 class="wp-block-heading">Why People Love It: Speed</h2>



<p class="wp-block-paragraph">The biggest reason developers vibe code is speed.<br>As they say time equals money. AI assistants can greatly reduce task completion time. Its been measured that developers using GitHub Copilot finished a coding task ~55.8% faster<br>(Peng et al., 2023). Naturally this number can change depending on the scenario but it clearly shows that Ai assistance accelerates implementation.</p>



<h2 class="wp-block-heading">Reality Check: “Looks Right” ≠ “Is Right”</h2>



<p class="wp-block-paragraph">Results can be misleading, just because code looks correct does not mean it actually is correct. The more “long-term maintenance” and “high stakes,” the more we must shift from vibes to verification. A well known phenomenon hallucination can occur in AI-generated code. While the code can be syntactically correct it can contain factual inaccuracy. ” (Alansari &amp; Luqman, 2025)</p>



<p class="wp-block-paragraph">Bugs may also be subtle:</p>



<ul class="wp-block-list">
<li>Edge cases may not be handled</li>



<li>Race conditions may exist</li>



<li>Wrong assumptions may be built into the logic</li>



<li>Maintenance becomes risky if nobody understands the code later</li>
</ul>



<p class="wp-block-paragraph">This leads to systems that work initially but become fragile and difficult to maintain.</p>



<h2 class="wp-block-heading">Real-World Security Risks</h2>



<p class="wp-block-paragraph">Often AI-generated code contain serious vulnerabilities for example: Data exfiltration (exportation), unsafe actions by AI agents injecting instructions.</p>



<p class="wp-block-paragraph">Schreiber &amp; Tippe (2025) — Analysed 7,703 AI-generated files and found thousands of CWE-mapped vulnerabilities.<br>Sabra, Schmitt &amp; Tyler (2025) — SonarQube analysis showed hard-coded credentials and other severe issues even when unit tests passed. SonarQube is a tool for Static Code Analysis for all languages.<br>Tihanyi et al. (2024) — Large-scale model study found ~62% of generated code was insecure by formal verification. This formal verification is done through Efficient SMT-based Context-Bounded Model Checker (ESBMC).<br>Fu et al. (2025) — Copilot and similar assistants produced code with ~24–30% serious Common Weakness Enumeration (CWE) security flaws across languages.</p>



<p class="wp-block-paragraph">Even if your own code is fine, your tooling and agent workflow can be the attack surface especially when the AI has “powers” (terminal access, file writes, network).</p>



<h2 class="wp-block-heading">Security Risks in Vibe Coding</h2>



<h3 class="wp-block-heading">Prompt Injection</h3>



<p class="wp-block-paragraph">LLM app guard rails can be manipulated by prompt injection. OWASP lists prompt injection as a top LLM app risk category (OWASP, 2024). UK NCSC warns prompt injection is not like SQLi and may be harder to fully “fix” with a single mitigation (UK National Cyber Security Centre (NCSC), 2025).</p>



<h3 class="wp-block-heading">Insecure Code Generation</h3>



<p class="wp-block-paragraph">LLMs may generate code with known vulnerabilities Prone to insecure code, but can improve with feedback/hints (Yan et al., 2025)</p>



<h2 class="wp-block-heading">Guardrails: How to Vibe Code Responsibly</h2>



<p class="wp-block-paragraph">Vibe coding can be powerful but only with proper guardrails.<br>Responsible use should include:</p>



<ul class="wp-block-list">
<li>Generate tests first</li>



<li>Force model to justify by explanations</li>



<li>Use linters + type checking</li>



<li>Prompt “avoid CWE top issues; use safe defaults”</li>



<li>Never let an agent run with broad permissions by default</li>



<li>Code review: auth, input validation, file/network access</li>
</ul>



<p class="wp-block-paragraph">Using AI-assisted development should be done with taking the necessary precautions. Keep a fast loop but add verification gates. Effort from  typing code to validating it.</p>



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



<p class="wp-block-paragraph">Vibe coding is a new way to code that is becoming more and more standardised. It is fast, iterative, and AI-driven. It helps in rapid development and experimentation, but it also introduces risks in quality, security, and long-term maintainability.</p>



<p class="wp-block-paragraph">Used responsibly, vibe coding can be a powerful tool in modern development. Without guardrails, it can quickly become hidden tech-debt and security issues.</p>



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



<p class="wp-block-paragraph">Alansari, A., &amp; Luqman, H. (2025). <em>Large Language Models Hallucination: A Comprehensive Survey</em> (No. arXiv:2510.06265). arXiv. <a href="https://doi.org/10.48550/arXiv.2510.06265">https://doi.org/10.48550/arXiv.2510.06265</a></p>



<p class="wp-block-paragraph">Collins Dictionary. (2025). <em>Collins—The Collins Word of the Year 2025 is&#8230;</em> <a href="https://www.collinsdictionary.com/woty">https://www.collinsdictionary.com/woty</a></p>



<p class="wp-block-paragraph">Fu, Y., Liang, P., Tahir, A., Li, Z., Shahin, M., Yu, J., &amp; Chen, J. (2025). <em>Security Weaknesses of Copilot-Generated Code in GitHub Projects: An Empirical Study</em> (No. arXiv:2310.02059). arXiv. <a href="https://doi.org/10.48550/arXiv.2310.02059">https://doi.org/10.48550/arXiv.2310.02059</a></p>



<p class="wp-block-paragraph">Merriam-Webster. (2025). <em>Vibe coding</em>. <a href="https://www.merriam-webster.com/slang/vibe-coding">https://www.merriam-webster.com/slang/vibe-coding</a></p>



<p class="wp-block-paragraph">OWASP. (2024, 2025). <em>LLMRisks</em><em> Archive</em>. OWASP Gen AI Security Project. <a href="https://genai.owasp.org/llm-top-10/">https://genai.owasp.org/llm-top-10/</a></p>



<p class="wp-block-paragraph">Peng, S., Kalliamvakou, E., Cihon, P., &amp; Demirer, M. (2023). <em>The Impact of AI on Developer Productivity: Evidence from GitHub Copilot</em> (No. arXiv:2302.06590). arXiv. <a href="https://doi.org/10.48550/arXiv.2302.06590">https://doi.org/10.48550/arXiv.2302.06590</a></p>



<p class="wp-block-paragraph">Sabra, A., Schmitt, O., &amp; Tyler, J. (2025). <em>Assessing the Quality and Security of AI-Generated Code: A Quantitative Analysis</em> (No. arXiv:2508.14727). arXiv. <a href="https://doi.org/10.48550/arXiv.2508.14727">https://doi.org/10.48550/arXiv.2508.14727</a></p>



<p class="wp-block-paragraph">Schreiber, M., &amp; Tippe, P. (2026). <em>Security Vulnerabilities in AI-Generated Code: A Large-Scale Analysis of Public GitHub Repositories</em> (Vol. 16219, pp. 153–172). <a href="https://doi.org/10.1007/978-981-95-3537-8_9">https://doi.org/10.1007/978-981-95-3537-8_9</a></p>



<p class="wp-block-paragraph">Tihanyi, N., Bisztray, T., Ferrag, M. A., Jain, R., &amp; Cordeiro, L. (2024). How secure is AI-generated code: A large-scale comparison of large language models. <em>Empirical Software Engineering</em>, <em>30</em>. <a href="https://doi.org/10.1007/s10664-024-10590-1">https://doi.org/10.1007/s10664-024-10590-1</a></p>



<p class="wp-block-paragraph">UK National Cyber Security Centre (NCSC). (2025). <em>Prompt injection is not SQL injection (it may be worse)</em>. <a href="https://www.ncsc.gov.uk/blog-post/prompt-injection-is-not-sql-injection">https://www.ncsc.gov.uk/blog-post/prompt-injection-is-not-sql-injection</a></p>



<p class="wp-block-paragraph">Yan, H., Vaidya, S. S., Zhang, X., &amp; Yao, Z. (2025). <em>Guiding AI to Fix Its Own Flaws: An Empirical Study on LLM-Driven Secure Code Generation</em> (No. arXiv:2506.23034). arXiv. <a href="https://doi.org/10.48550/arXiv.2506.23034">https://doi.org/10.48550/arXiv.2506.23034</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/vibe-coding-fast-ai-driven-development-benefits-risks-and-guardrails/">Vibe Coding: Fast AI-Driven Development — Benefits, Risks, and Guardrails</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Rev Match Market &#8211; A Swipe-Based Used Car Marketplace</title>
		<link>https://mobile.fhstp.ac.at/allgemein/rev-match-market-a-swipe-based-used-car-marketplace/</link>
		
		<dc:creator><![CDATA[Csongor]]></dc:creator>
		<pubDate>Wed, 25 Feb 2026 22:05:50 +0000</pubDate>
				<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15663</guid>

					<description><![CDATA[<p>In my Masterclass Mobile project, I explore how a familiar interaction feature from dating apps could be applied to a completely different use cases. I applied it to the used car market. The core idea behind RevMatchMarket is instead of scrolling through endless lists of car listings, users swipe left to pass or right to <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/rev-match-market-a-swipe-based-used-car-marketplace/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/rev-match-market-a-swipe-based-used-car-marketplace/">Rev Match Market &#8211; A Swipe-Based Used Car Marketplace</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">In my Masterclass Mobile project, I explore how a familiar interaction feature from dating apps could be applied to a completely different use cases. I applied it to the used car market. The core idea behind RevMatchMarket is instead of scrolling through endless lists of car listings, users swipe left to pass or right to like a car, making the browsing experience faster, more engaging, and more intuitive .</p>



<h3 class="wp-block-heading">The Idea</h3>



<p class="wp-block-paragraph">Buying a used car can be overwhelming. Traditional marketplaces often present users with long, filter-heavy pages filled with static listings. My goal was to improve that experience. The swipe mechanic makes browsing fun.</p>



<h2 class="wp-block-heading">Objectives and Learning Goals</h2>



<p class="wp-block-paragraph">Three main goals: technical, business, and personal learning.</p>



<h3 class="wp-block-heading">Technical Objectives</h3>



<p class="wp-block-paragraph">To develop a mobile-web application that demonstrates:</p>



<ul class="wp-block-list">
<li>authentication with protected routes</li>



<li>creation and management of car listings</li>



<li>swipe-based browsing</li>



<li>favorites management</li>



<li>filtering by make, model, and price</li>



<li>frontend-backend integration in a structured monorepo</li>



<li>database-backed persistence for users, listings, images, and swipe decisions</li>
</ul>



<p class="wp-block-paragraph">Although the initial plan mentioned Ionic and Angular, the project evolved into using:</p>



<ul class="wp-block-list">
<li><strong>Nuxt 4</strong> for the frontend</li>



<li><strong>NestJS</strong> for the backend API</li>



<li><strong>PostgreSQL + Prisma ORM</strong> for persistence</li>



<li><strong>Cookie-based JWT authentication</strong> for session handling</li>



<li><strong>Docker</strong> for local database infrastructure</li>
</ul>



<p class="wp-block-paragraph">This is due to my more dependable previous experience with this stack to build a full-stack monorepo.</p>



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



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



<ul class="wp-block-list">
<li>Mobile-first UI</li>



<li>User registration and login</li>



<li>Car listing creation and management</li>



<li>Swipe-based browsing of cars</li>



<li>Filtering by make, model, and price</li>



<li>Favorites page</li>



<li>Backend-connected database</li>
</ul>



<h3 class="wp-block-heading">What the Current MVP Includes</h3>



<ul class="wp-block-list">
<li>user registration and login</li>



<li>cookie-based authenticated sessions</li>



<li>protected pages for logged-in users</li>



<li>a swipe feed for browsing available cars</li>



<li>like and pass actions</li>



<li>a favorites page for liked cars</li>



<li>a “My Cars” area for sellers</li>



<li>car listing creation</li>



<li>car listing editing</li>



<li>car listing removal through soft delete</li>



<li>car detail pages</li>



<li>optional image upload for listings</li>



<li>simple client-side filters for make, model, and maximum price</li>
</ul>



<h3 class="wp-block-heading">Explicitly Excluded</h3>



<ul class="wp-block-list">
<li>Payment processing between users</li>



<li>Full production-grade infrastructure</li>



<li>Chat functionality</li>



<li>Location-based matching</li>



<li>Analytics systems</li>



<li>App Store / Play Store deployment</li>
</ul>



<h2 class="wp-block-heading">Key Deliverables</h2>



<p class="wp-block-paragraph">The final outcome of RevMatchMarket includes:</p>



<ol class="wp-block-list">
<li><strong>A working MVP</strong><br>A swipe-based used car marketplace where:
<ul class="wp-block-list">
<li>Sellers can create, Edit, Delete listings</li>



<li>Listings have images</li>



<li>Buyers can browse cars</li>



<li>Users can like or pass listings</li>



<li>Users can apply filters to listings</li>



<li>Favorites are stored and retrievable</li>



<li>Full authentication </li>
</ul>
</li>



<li><strong>Documentation</strong>
<ul class="wp-block-list">
<li>Detailed project and milestone planning</li>



<li>This blog post summarizing the process and learnings</li>
</ul>
</li>



<li><strong>Final Presentation</strong>
<ul class="wp-block-list">
<li>Live demo of the application</li>



<li>Reflection on challenges</li>



<li>Discussion of future improvements</li>
</ul>
</li>
</ol>



<h2 class="wp-block-heading">Challenges and Lessons Learned</h2>



<p class="wp-block-paragraph">Creating a UI for mobile devices required careful consideration. Authentication and protecting routes was required a few iterations. Managing JWT tokens via httpOnly cookies and handling session bootstrapping on the frontend. Features need to be limited. It is tempting to add chat, real-time updates, and other features but keeping the MVP focused was essential.</p>



<h2 class="wp-block-heading">Diagrams &#8211; Database &amp; Flow Chart</h2>



<figure class="wp-block-image size-large"><img decoding="async" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/RevMatchMarket-Logical-Database-Schema-1540x800.png" alt="" class="wp-image-15818"/></figure>



<figure class="wp-block-image size-large"><img decoding="async" src="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/RevMatchMarket-Application-Flow-1-1540x800.png" alt="" class="wp-image-15817"/></figure>



<h2 class="wp-block-heading">Final Thoughts</h2>



<p class="wp-block-paragraph">RevMatchMarket redefines a simple interaction pattern. This project, I strengthened my skills in full-stack development, mobile-first UI design, backend integration, and structured project planning.</p>



<p class="wp-block-paragraph">This project started as an assignment but it has the can become much more.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/rev-match-market-a-swipe-based-used-car-marketplace/">Rev Match Market &#8211; A Swipe-Based Used Car Marketplace</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 in Real-Time 2D Pose Estimation using Smartphones</title>
		<link>https://mobile.fhstp.ac.at/allgemein/state-of-the-art-in-real-time-2d-pose-estimation-using-smartphones/</link>
		
		<dc:creator><![CDATA[Csongor]]></dc:creator>
		<pubDate>Wed, 25 Feb 2026 19:43:27 +0000</pubDate>
				<guid isPermaLink="false">https://mobile.fhstp.ac.at/?p=15652</guid>

					<description><![CDATA[<p>Csongor Jánosi AbstractReal-time 2D human pose estimation using smartphone cameras hasbecome a highly relevant technology for interactive applicationssuch as physical education, gesture-based interaction, and aug-mented reality. While recent advances have significantly improvedpose estimation models, using such systems on mobile devicesremains challenging due to computational, energy, and latency con-straints. This paper presents a state-of-the-art review of <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/state-of-the-art-in-real-time-2d-pose-estimation-using-smartphones/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/state-of-the-art-in-real-time-2d-pose-estimation-using-smartphones/">State of the Art in Real-Time 2D Pose Estimation using Smartphones</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">Csongor Jánosi</p>



<p class="wp-block-paragraph"><br><strong>Abstract<br></strong><br>Real-time 2D human pose estimation using smartphone cameras has<br>become a highly relevant technology for interactive applications<br>such as physical education, gesture-based interaction, and aug-<br>mented reality. While recent advances have significantly improved<br>pose estimation models, using such systems on mobile devices<br>remains challenging due to computational, energy, and latency con-<br>straints. This paper presents a state-of-the-art review of real-time<br>2D pose estimation approaches targeting smartphones, following<br>a PRISMA inspired systematic literature review. Two recent and<br>relevant papers, LMFormer and LiPE, are analyzed and compared<br>based on design choices, efficiency metrics, evaluation scope, and<br>suitability for mobile and human–computer interaction (HCI) prac-<br>tical use cases. The review highlights the balancing of accuracy and<br>computational efficiency, identifies limitations in current evaluation<br>practices, and outlines open research gaps related to end-to-end<br>mobile performance and interaction-oriented evaluation criteria.</p>



<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/02/it255501_Janosi_SOTA_paper__ACM_Journal_.pdf" type="application/pdf" style="width:100%;height:600px" aria-label="Embed of it255501_Janosi_SOTA_paper__ACM_Journal_."></object><a id="wp-block-file--media-67463445-6b8f-485a-b325-b1a5ae6f25f3" href="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/it255501_Janosi_SOTA_paper__ACM_Journal_.pdf">it255501_Janosi_SOTA_paper__ACM_Journal_</a><a href="https://mobile.fhstp.ac.at/wp-content/uploads/2026/02/it255501_Janosi_SOTA_paper__ACM_Journal_.pdf" class="wp-block-file__button wp-element-button" download aria-describedby="wp-block-file--media-67463445-6b8f-485a-b325-b1a5ae6f25f3">Download</a></div>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/state-of-the-art-in-real-time-2d-pose-estimation-using-smartphones/">State of the Art in Real-Time 2D Pose Estimation using Smartphones</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
