<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Software-Development on Janik von Rotz</title>
    <link>https://janikvonrotz.ch/categories/software-development/</link>
    <description>Recent content in Software-Development on Janik von Rotz</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Thu, 30 Apr 2026 17:35:27 +0200</lastBuildDate>
    <atom:link href="https://janikvonrotz.ch/categories/software-development/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Confidently Wrong</title>
      <link>https://janikvonrotz.ch/2026/04/30/confidently-wrong/</link>
      <pubDate>Thu, 30 Apr 2026 17:35:27 +0200</pubDate>
      <guid>https://janikvonrotz.ch/2026/04/30/confidently-wrong/</guid>
      <description>&lt;p&gt;In two days I had two customers that sent me a zip file containing an Odoo module and asked to install it on their server. This is new and for some reason made me angry.&lt;/p&gt;&#xA;&lt;p&gt;Developing Odoo modules and maintaining them over many Odoo versions is what I am doing as an Odoo developer for the past six year. My experience and learning from others has been accumulated into many best practices and patterns.&lt;/p&gt;&#xA;&lt;p&gt;Is this only about pride or much more? Let&amp;rsquo;s find out.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disable Copilot Reviews on Github?</title>
      <link>https://janikvonrotz.ch/2026/04/15/disable-copilot-reviews-on-github/</link>
      <pubDate>Wed, 15 Apr 2026 16:51:08 +0200</pubDate>
      <guid>https://janikvonrotz.ch/2026/04/15/disable-copilot-reviews-on-github/</guid>
      <description>&lt;p&gt;I got slopped on SlopHub. Somebody opened a vibe coded PR on one of my companies repos. The PR is totally overloaded and huge wall of text. So far the new normal. To make things worse Slopilot entered the stage.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Setup opencode with Infomaniak AI Tools</title>
      <link>https://janikvonrotz.ch/2026/04/01/setup-opencode-with-infomaniak-ai-tools/</link>
      <pubDate>Wed, 01 Apr 2026 16:16:12 +0200</pubDate>
      <guid>https://janikvonrotz.ch/2026/04/01/setup-opencode-with-infomaniak-ai-tools/</guid>
      <description>&lt;p&gt;No Aprils fool here. Instead you get the instructions to run &lt;a href=&#34;https://opencode.ai/&#34;&gt;opencode&lt;/a&gt; with &lt;a href=&#34;https://www.infomaniak.com/en/hosting/ai-services&#34;&gt;Infomaniak AI Tools&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>AI is not abstraction</title>
      <link>https://janikvonrotz.ch/2025/11/10/ai-is-not-abstraction/</link>
      <pubDate>Mon, 10 Nov 2025 10:02:32 +0100</pubDate>
      <guid>https://janikvonrotz.ch/2025/11/10/ai-is-not-abstraction/</guid>
      <description>&lt;p&gt;The concept of abstraction has been applied to software engineering. But it never made sense. Software is flexible. Software can be changed even after it has been put into production.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Disable dependabot alerts for all repos</title>
      <link>https://janikvonrotz.ch/2025/09/10/2025-08-09-10-disable-dependabot-alerts-for-all-repos/</link>
      <pubDate>Wed, 10 Sep 2025 10:45:30 +0200</pubDate>
      <guid>https://janikvonrotz.ch/2025/09/10/2025-08-09-10-disable-dependabot-alerts-for-all-repos/</guid>
      <description>&lt;p&gt;It is well known that GitHub dependabot alerts and PRs are less than helpful. For hubbers the dependabot is very similar to what clippy was to the office users. It tries to help, but is very distracting for solving the actual problem.&lt;/p&gt;&#xA;&lt;p&gt;Disabling dependabot alerts for one repo is simple. Got to this page &lt;code&gt;https://github.com/$GITHUB_USERNAME/$REPO/settings/security_analysis&lt;/code&gt; and click &lt;em&gt;disable&lt;/em&gt;. But doing this for a 100 or 1000 repos is not feasible. We need a script to automate this process. Let me show you how.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Migrate from Github to Codeberg</title>
      <link>https://janikvonrotz.ch/2025/08/20/migrate-from-github-to-codeberg/</link>
      <pubDate>Wed, 20 Aug 2025 13:15:03 +0200</pubDate>
      <guid>https://janikvonrotz.ch/2025/08/20/migrate-from-github-to-codeberg/</guid>
      <description>&lt;p&gt;Since the &lt;a href=&#34;https://arstechnica.com/gadgets/2025/08/github-will-be-folded-into-microsoft-proper-as-ceo-steps-down/&#34;&gt;enshittification of GitHub&lt;/a&gt; I decided to become a &lt;em&gt;Berger&lt;/em&gt; instead of &lt;em&gt;Hubber&lt;/em&gt;. Which I means that I wanted to move all my repos from github.com to codeberg.org.&lt;/p&gt;&#xA;&lt;p&gt;Running a migration script is easy. But of course there are many details to consider once the repos have been moved. In this post I&amp;rsquo;ll brief you on my experience and give you details on these challenges:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Sync .env files</title>
      <link>https://janikvonrotz.ch/2025/01/16/sync-dotenv-files/</link>
      <pubDate>Thu, 16 Jan 2025 09:04:17 +0100</pubDate>
      <guid>https://janikvonrotz.ch/2025/01/16/sync-dotenv-files/</guid>
      <description>&lt;p&gt;The &lt;code&gt;.env&lt;/code&gt; file is a common standard to define environment variables and secrets for a software project. When working on multiple machines and in teams, ensuring that the &lt;code&gt;.env&lt;/code&gt; files are up-to-date is important.&lt;/p&gt;&#xA;&lt;p&gt;I was looking for a solution to solve this problem. If you duck for &amp;ldquo;Sync .env files&amp;rdquo; you will most likely end up on &lt;a href=&#34;https://www.dotenv.org/docs/quickstart/sync&#34;&gt;https://www.dotenv.org/docs/quickstart/sync&lt;/a&gt;. The Dotenv project provides a service for syncing &lt;code&gt;.env&lt;/code&gt; files. However, their service requires an account and this was out of question in my case.&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;How can I sync secrets with my team using git only?&lt;/p&gt;&#xA;&lt;/blockquote&gt;</description>
    </item>
    <item>
      <title>Rust Development in Termux</title>
      <link>https://janikvonrotz.ch/2024/10/08/08-rust-development-in-termux/</link>
      <pubDate>Tue, 08 Oct 2024 19:35:38 +0200</pubDate>
      <guid>https://janikvonrotz.ch/2024/10/08/08-rust-development-in-termux/</guid>
      <description>&lt;p&gt;In my holiday I used to Termux to do server maintenance in emergency cases and it worked pretty well. I thought about learning Rust and how this can be combined. Can I use my phone as a desktop development environment? In this post I am going to answer this question.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Odoo Development:  Settings fields for your module</title>
      <link>https://janikvonrotz.ch/2024/08/28/odoo-development-settings-fields-for-your-module/</link>
      <pubDate>Wed, 28 Aug 2024 16:41:29 +0200</pubDate>
      <guid>https://janikvonrotz.ch/2024/08/28/odoo-development-settings-fields-for-your-module/</guid>
      <description>&lt;p&gt;Odoo modules store their settings on the settings page. The fields definitions for the settings are different from the module. These fields can be mapped with system parameters. I  would like to show how you can add settings field for your Odoo module.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build and deploy Odoo with and without Jenkins</title>
      <link>https://janikvonrotz.ch/2024/04/11/build-and-build-odoo-with-and-without-jenkins/</link>
      <pubDate>Thu, 11 Apr 2024 14:15:28 +0200</pubDate>
      <guid>https://janikvonrotz.ch/2024/04/11/build-and-build-odoo-with-and-without-jenkins/</guid>
      <description>&lt;p&gt;Jenkins is a popular but outdated CI/CD system. Compared to modern CI/CD systems such as GitHub Actions or GitLab Workflows, Jenkins does not deliver on containerization. As Docker containers are high in demand for building and hosting applications Jenkins has to go some extra miles. Nonetheless, Jenkins is yet the only self-hostable feature-rich CI/CD solution. For a project I went with Jenkins to deploy a multi-stage Odoo environment.&lt;/p&gt;&#xA;&lt;p&gt;In this post I would like to present the main parts of the final project such as the Docker setup or the Jenkins pipeline. An important goal was that the deployment can be done without Jenkins.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git Cheat Sheet</title>
      <link>https://janikvonrotz.ch/2021/11/25/git-cheat-sheet/</link>
      <pubDate>Thu, 25 Nov 2021 11:58:06 +0100</pubDate>
      <guid>https://janikvonrotz.ch/2021/11/25/git-cheat-sheet/</guid>
      <description>&lt;p&gt;A simple git cheat sheet.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Understand Git</title>
      <link>https://janikvonrotz.ch/2021/11/18/understand-git/</link>
      <pubDate>Thu, 18 Nov 2021 08:29:50 +0100</pubDate>
      <guid>https://janikvonrotz.ch/2021/11/18/understand-git/</guid>
      <description>&lt;p&gt;Everybody who works with a computer must understand the basics of &lt;a href=&#34;https://git-scm.com/&#34;&gt;git&lt;/a&gt; and how to collaborate with git.&lt;/p&gt;</description>
    </item>
    <item>
      <title>The value of code</title>
      <link>https://janikvonrotz.ch/2021/06/11/the-value-of-code/</link>
      <pubDate>Fri, 11 Jun 2021 19:33:08 +0200</pubDate>
      <guid>https://janikvonrotz.ch/2021/06/11/the-value-of-code/</guid>
      <description>&lt;p&gt;Being a disciple to the Open Source movement I often have to explain why it is better to make code public than private. Apart from the usual arguments such as &amp;ldquo;access to better security&amp;rdquo;, &amp;ldquo;trust through transparency&amp;rdquo; or &amp;ldquo;the design is the intellectual property&amp;rdquo;, I came up with the argument of true value. Let me explain.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Postgres connection URI password fails</title>
      <link>https://janikvonrotz.ch/2021/03/09/postgres-connection-uri-password-fails/</link>
      <pubDate>Tue, 09 Mar 2021 14:16:59 +0100</pubDate>
      <guid>https://janikvonrotz.ch/2021/03/09/postgres-connection-uri-password-fails/</guid>
      <description>&lt;p&gt;With the &lt;code&gt;psql&lt;/code&gt; command line tool you can either pass the connection credentials as parameters or simply as one connection string.&lt;/p&gt;&#xA;&lt;p&gt;The general form for a connection URI is:&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;postgresql://\[user\[:password\]@\]\[host\]\[:port\]\[,...\]\[/dbname\]\[?param1=value1&amp;amp;...\]&lt;/code&gt;&lt;/p&gt;&#xA;&lt;p&gt;While developing an Odoo module I could no longer execute queries using connections URIs. I always got the error &lt;code&gt;psql: error: FATAL:  password authentication failed for user &amp;quot;odoo&amp;quot;&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git pull overwrite local changes</title>
      <link>https://janikvonrotz.ch/2021/01/07/git-pull-overwrite-local-changes/</link>
      <pubDate>Thu, 07 Jan 2021 10:23:38 +0100</pubDate>
      <guid>https://janikvonrotz.ch/2021/01/07/git-pull-overwrite-local-changes/</guid>
      <description>&lt;p&gt;A new year a new post. Instead of a new years resolution I&amp;rsquo;ve got a git wisdom for you. If you ever have to reset your repository/life use this command:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a stateful serverless Telegram bot - Part 2</title>
      <link>https://janikvonrotz.ch/2020/01/21/build-a-stateful-serverless-telegram-bot-part-2/</link>
      <pubDate>Tue, 21 Jan 2020 11:39:00 +0100</pubDate>
      <guid>https://janikvonrotz.ch/2020/01/21/build-a-stateful-serverless-telegram-bot-part-2/</guid>
      <description>&lt;p&gt;In &lt;a href=&#34;https://janikvonrotz.ch/2020/01/18/build-a-stateful-serverless-telegram-bot-part-1/&#34;&gt;part 1&lt;/a&gt; of this tutorial we&amp;rsquo;ve setup the initial folder structure for our chatbot and made a first deployment. In part 2 we are going to teach the bot some new commands and implement a state management for the chat dialog chain.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a stateful serverless Telegram bot - Part 1</title>
      <link>https://janikvonrotz.ch/2020/01/18/build-a-stateful-serverless-telegram-bot-part-1/</link>
      <pubDate>Sat, 18 Jan 2020 13:55:31 +0100</pubDate>
      <guid>https://janikvonrotz.ch/2020/01/18/build-a-stateful-serverless-telegram-bot-part-1/</guid>
      <description>&lt;p&gt;For the first time in my life I bought a plant to decor my room. The plant is a &lt;a href=&#34;https://en.wikipedia.org/wiki/Monstera&#34;&gt;Monstera&lt;/a&gt;, growing up to 2 meters if watered properly. It actually needs to be watered every two weeks. Now there are various options to remind myself of watering it. Installing an app, set an alarm on my phone or place a paper calendar next to the plant. But this is too easy, lets make it more complicated.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apollo Graphql integration testing in practice</title>
      <link>https://janikvonrotz.ch/2019/12/05/apollo-graphql-integration-testing-in-practice/</link>
      <pubDate>Thu, 05 Dec 2019 10:16:19 +0100</pubDate>
      <guid>https://janikvonrotz.ch/2019/12/05/apollo-graphql-integration-testing-in-practice/</guid>
      <description>&lt;p&gt;The &lt;a href=&#34;https://www.apollographql.com/docs&#34;&gt;Apollo Graphql documention&lt;/a&gt; offers a pretty comprehensive guide on how to &lt;a href=&#34;https://www.apollographql.com/docs/apollo-server/testing/testing&#34;&gt;test your Graphql API&lt;/a&gt;. But sure its different once you implement tests for your non generic project. That is why I wrote this post. First I would like to introduce you to integration tests and how they are different from the other testing levels. And then I&amp;rsquo;ll give you a hands on experience for writing integration tests for Apollo Graphql with &lt;a href=&#34;https://github.com/avajs/ava&#34;&gt;Ava&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Open multiple projects in Intellij</title>
      <link>https://janikvonrotz.ch/2019/01/11/open-multiple-projects-in-intellij/</link>
      <pubDate>Fri, 11 Jan 2019 10:01:30 +0100</pubDate>
      <guid>https://janikvonrotz.ch/2019/01/11/open-multiple-projects-in-intellij/</guid>
      <description>&lt;p&gt;Most IDEs provide workspaces that contain multiple projects and thus enable you to work on mutliple projects in one instance of the IDE.&#xA;IntelliJ, which has becom the defacto standard for Java Devs, does not support workspaces.&#xA;So, how is it possible to open mutliple projects in one IntelliJ instance?&lt;/p&gt;</description>
    </item>
    <item>
      <title>Undo a pushed git merge</title>
      <link>https://janikvonrotz.ch/2018/09/11/undo-a-pushed-git-merge/</link>
      <pubDate>Tue, 11 Sep 2018 18:37:25 +0200</pubDate>
      <guid>https://janikvonrotz.ch/2018/09/11/undo-a-pushed-git-merge/</guid>
      <description>&lt;p&gt;First of all the solution to the problem I am tackling should not exist in the first place. If you have to revert a merge on a git branch, think about alternatives. If not other option is left, I&amp;rsquo;ll show you how you can undo a merge with &lt;code&gt;git revert&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Git branch typing completion and other useful stuff</title>
      <link>https://janikvonrotz.ch/2018/06/22/git-branch-typing-completion-and-other-useful-stuff/</link>
      <pubDate>Fri, 22 Jun 2018 09:11:28 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2018/06/22/git-branch-typing-completion-and-other-useful-stuff/</guid>
      <description>&lt;p&gt;Recently I was looking a way to have auto completion with git when checking out a branch. The solution was kind of obvious. The &lt;a href=&#34;https://github.com/git/git&#34;&gt;github git mirror repository&lt;/a&gt; has a &lt;a href=&#34;https://github.com/git/git/tree/master/contrib&#34;&gt;folder containing experimental tools&lt;/a&gt;. One of these tools is a shell scripts that enables completion for various git sub commands. Exactly what I was looking for.&lt;/p&gt;</description>
    </item>
    <item>
      <title>JavaFX - Filterable and Sortable Tableview with nested Objects</title>
      <link>https://janikvonrotz.ch/2015/11/30/javafx-filterable-and-sortable-tableview-with-nested-objects/</link>
      <pubDate>Mon, 30 Nov 2015 10:01:22 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2015/11/30/javafx-filterable-and-sortable-tableview-with-nested-objects/</guid>
      <description>&lt;p&gt;This is a simple example for a sortable and filterable table view with properties from nested objects.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Java 3-tier application from scratch – Part 6: Client view</title>
      <link>https://janikvonrotz.ch/2015/04/02/build-a-java-3-tier-application-from-scratch-part-6-client-view/</link>
      <pubDate>Thu, 02 Apr 2015 07:13:31 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2015/04/02/build-a-java-3-tier-application-from-scratch-part-6-client-view/</guid>
      <description>&lt;p&gt;Welcome to the final part of my tutorial. In this last part we are going to write our view and run the client application.&lt;/p&gt;&#xA;&lt;p&gt;The client application consists of a login and a data pane. When you&amp;rsquo;ve successfully logged in, the visibility of these panes will be switched. That&amp;rsquo;s all you have to know. In case you want to use scene builder to create the client GUI here&amp;rsquo;s a picture of what you have to build:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Java 3-tier application from scratch – Part 5: Client controller</title>
      <link>https://janikvonrotz.ch/2015/04/01/build-a-java-3-tier-application-from-scratch-part-5-client-controller/</link>
      <pubDate>Wed, 01 Apr 2015 09:27:32 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2015/04/01/build-a-java-3-tier-application-from-scratch-part-5-client-controller/</guid>
      <description>&lt;p&gt;As you&amp;rsquo;ve seen there are 5 models in our application. This is not that much but requires a lot of effort to display them in the client application. As this tutorial doesn&amp;rsquo;t cover every aspect of a rich 3-tier applicatoin I will show only how you can authenticate the client application and edit the Employer entities.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Java 3-tier application from scratch – Part 4: Webservice</title>
      <link>https://janikvonrotz.ch/2015/03/31/build-a-java-3-tier-application-from-scratch-part-4-webservice/</link>
      <pubDate>Tue, 31 Mar 2015 08:05:04 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2015/03/31/build-a-java-3-tier-application-from-scratch-part-4-webservice/</guid>
      <description>&lt;p&gt;Our ORM is working so we are ready to create our JAX-RS restful webservice and implement a custom authentication mechanism. In addition I&amp;rsquo;ll provide you a class to insert dummy data into the database, so you don&amp;rsquo;t have to do it manually.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Java 3-tier application from scratch – Part 3: Object-relational mapping</title>
      <link>https://janikvonrotz.ch/2015/03/30/build-a-java-3-tier-application-from-scratch-part-3-object-relational-mapping/</link>
      <pubDate>Mon, 30 Mar 2015 16:41:24 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2015/03/30/build-a-java-3-tier-application-from-scratch-part-3-object-relational-mapping/</guid>
      <description>&lt;p&gt;Welcome to third part of my 3-tier application tutorial. Within this and the next part we are going to develope simple webservice that communicates with the database and maps Java objects to data tables.&#xA;We will create a controller that communicates with our MySQL database using the EclipseLink ORM to abstract this process.&lt;/p&gt;&#xA;&lt;p&gt;Here&amp;rsquo;s a picture of what we want to achieve. A simple webservice that&amp;rsquo;s serves depending on the url an array of json data.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2015/03/Java-3-tier-webservice.png&#34; alt=&#34;Java 3-tier webservice&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Java 3-tier application from scratch - Part 2: Model setup</title>
      <link>https://janikvonrotz.ch/2015/03/28/build-a-java-3-tier-application-from-scratch-part-2-model-setup/</link>
      <pubDate>Sat, 28 Mar 2015 18:01:51 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2015/03/28/build-a-java-3-tier-application-from-scratch-part-2-model-setup/</guid>
      <description>&lt;p&gt;Last time we&amp;rsquo;ve set up our basic project structure with gradle. This time we are going to create the models aka our Java classes. Below is uml diagram showing all classes, interfaces and their relationship.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2015/03/3-tier-java-application-Classmodel.png&#34; alt=&#34;3-tier java application Classmodel&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Build a Java 3-tier application from scratch - Part 1: Introduction and project setup</title>
      <link>https://janikvonrotz.ch/2015/03/15/build-a-java-3-tier-application-from-scratch-part-1-introduction-and-project-setup/</link>
      <pubDate>Sun, 15 Mar 2015 16:57:38 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2015/03/15/build-a-java-3-tier-application-from-scratch-part-1-introduction-and-project-setup/</guid>
      <description>&lt;p&gt;Welcome to my first post of the Java 3-tier application tutorial. In this tutorial I will tell show how you can develope a Model-View-Controller based Java desktop and server application using the latest tools and frameworks.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Superb Java development with Gradle, Hibernate, FlywayDB, JavaFX and Eclipse – Part 2</title>
      <link>https://janikvonrotz.ch/2015/03/05/superb-java-development-with-gradle-hibernate-flywaydb-javafx-and-eclipse-part-2/</link>
      <pubDate>Thu, 05 Mar 2015 17:01:57 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2015/03/05/superb-java-development-with-gradle-hibernate-flywaydb-javafx-and-eclipse-part-2/</guid>
      <description>&lt;p&gt;As promised here&amp;rsquo;s the sequel to my last tutorial: &lt;a href=&#34;https://janikvonrotz.ch/2015/03/03/superb-java-development-with-gradle-hibernate-flywaydb-javafx-and-eclipse-part-1/&#34; title=&#34;Superb Java development with Gradle, Hibernate, FlywayDB, JavaFX and Eclipse – Part 1&#34;&gt;Part 1&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;This time we create a basic rich application with JavaFX. It will be quite simple, but still a good example to show how you can structure a complex project according to MVC.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Superb Java development with Gradle, Hibernate, FlywayDB, JavaFX and Eclipse - Part 1</title>
      <link>https://janikvonrotz.ch/2015/03/03/superb-java-development-with-gradle-hibernate-flywaydb-javafx-and-eclipse-part-1/</link>
      <pubDate>Tue, 03 Mar 2015 23:53:04 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2015/03/03/superb-java-development-with-gradle-hibernate-flywaydb-javafx-and-eclipse-part-1/</guid>
      <description>&lt;blockquote&gt;&#xA;&lt;p&gt;Wow that&amp;rsquo;s the best Java tutorial I&amp;rsquo;ve seen so far!&lt;/p&gt;&#xA;&lt;/blockquote&gt;&#xA;&lt;p&gt;-You in a few minutes.&lt;/p&gt;&#xA;&lt;p&gt;Sounds selfish, doesn&amp;rsquo;t it? Well it has the right to be, it took me 2 hours to write that! Don&amp;rsquo;t hesitate now and turn on your dev machine.&#xA;After this tutorial you have to rethink your Java development process and if you don&amp;rsquo;t have one yet this is the best place to start.&#xA;I will show you the most advanced tools to speed up your Java development environment and collaboration capabilities.&#xA;In this tutorial we are going to develop a simple MVC (Model, View, Controller) application ruled by the DRY (Don&amp;rsquo;t repeat yourself) approach.&lt;/p&gt;&#xA;&lt;p&gt;The crappy picture below shows what&amp;rsquo;s going on according to my brain.&lt;/p&gt;&#xA;&lt;p&gt;&lt;img src=&#34;https://janikvonrotz.ch/wp-content/uploads/2015/03/Project-Concept.png&#34; alt=&#34;Project Concept&#34;&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>You want to learn Java? BlueJ is the answer</title>
      <link>https://janikvonrotz.ch/2014/10/08/you-want-to-learn-java-bluej-is-the-answer/</link>
      <pubDate>Wed, 08 Oct 2014 16:47:39 +0000</pubDate>
      <guid>https://janikvonrotz.ch/2014/10/08/you-want-to-learn-java-bluej-is-the-answer/</guid>
      <description>&lt;p&gt;So you decided to learn some Java programming, but you don&amp;rsquo;t know where to start?&lt;/p&gt;&#xA;&lt;p&gt;Let me help you. The first thing you should do is to visit the website: &lt;a href=&#34;http://www.bluej.org/&#34;&gt;http://www.bluej.org/&lt;/a&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
