<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Technical Articles on Flowing Code</title><link>https://www.flowingcode.com/en/blog/</link><description>Recent content in Technical Articles on Flowing Code</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Wed, 26 Aug 2026 15:16:17 +0000</lastBuildDate><atom:link href="https://www.flowingcode.com/en/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Introducing AppJars: Production-Ready Modules for Java Enterprise Applications</title><link>https://www.flowingcode.com/en/introducing-appjars-production-ready-modules-for-java-enterprise-applications/</link><pubDate>Tue, 25 Aug 2026 20:48:23 +0000</pubDate><guid>https://www.flowingcode.com/en/introducing-appjars-production-ready-modules-for-java-enterprise-applications/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2496" height="585" loading="lazy" src="https://www.flowingcode.com/images/uploads/2026/08/Introducing-AppJars-1024x585.png" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">Over years of building enterprise applications for clients across many industries, we kept running into the same thing. Before a team can write the part that makes an application unique, it spends weeks, sometimes months, rebuilding the same foundations: user management, audit trails, reporting, translations, email, background jobs. Necessary work, and rarely the reason the project started.&lt;/p></description></item><item><title>Google Maps Add-On: Mobile Right-Click for Markers</title><link>https://www.flowingcode.com/en/google-maps-add-on-mobile-right-click-for-markers/</link><pubDate>Tue, 18 Aug 2026 14:16:43 +0000</pubDate><guid>https://www.flowingcode.com/en/google-maps-add-on-mobile-right-click-for-markers/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2078" height="585" loading="lazy" src="https://www.flowingcode.com/images/uploads/2025/09/markers-mobile-1024x585.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">In modern web development, creating a consistent and intuitive user experience across all devices is &lt;strong>essential&lt;/strong>. Users expect features to work seamlessly, whether they’re on a desktop with a mouse or a mobile with touchscreen.&lt;/p></description></item><item><title>Building a Vaadin Add-on in Record Time with Claude AI</title><link>https://www.flowingcode.com/en/building-a-vaadin-add-on-in-record-time-with-claude-ai/</link><pubDate>Tue, 21 Jul 2026 13:39:02 +0000</pubDate><guid>https://www.flowingcode.com/en/building-a-vaadin-add-on-in-record-time-with-claude-ai/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2391" height="559" loading="lazy" src="https://www.flowingcode.com/images/uploads/2026/06/relative-time-blog-post-1024x559.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">Not long ago, I shared my experience on &lt;a href="https://www.flowingcode.com/en/vaadin-10-to-25-migrating-a-8-year-old-app-with-claude-ai/">how to migrate a legacy Vaadin application with the help of Claude AI&lt;/a>. That experience proved that AI is fantastic for untangling legacy code, but it left me with a new question: &lt;strong>What happens when we start from scratch?&lt;/strong> Recently, my team at Flowing Code proposed creating a new add-on: a Vaadin wrapper around the &lt;code>&lt;a href="https://github.com/github/relative-time-element">@github/relative-time-element&lt;/a>&lt;/code> component. This time, I decided to keep Claude in the loop from minute zero, not just as a code generator, but as an architectural design partner.&lt;/p></description></item><item><title>Why Vaadin Still Matters in 2026</title><link>https://www.flowingcode.com/en/why-vaadin-still-matters-in-2026/</link><pubDate>Tue, 30 Jun 2026 13:40:16 +0000</pubDate><guid>https://www.flowingcode.com/en/why-vaadin-still-matters-in-2026/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2335" height="572" loading="lazy" src="https://www.flowingcode.com/images/uploads/2026/06/Why_vaadin_still_matters_2026-1024x572.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">In an industry obsessed with the new and shiny, asking why a technology continues to thrive can be more interesting than asking what will replace it next.&lt;/p>
&lt;p class="wp-block-paragraph">&lt;a href="https://vaadin.com/">Vaadin&lt;/a> is not a newcomer. Its development started in the early 2000s, and it became open source in 2002. Over the years, it has gone through several major architectural changes while remaining actively developed and widely used in enterprise applications. In a space where frameworks often come and go within a few years, that alone makes Vaadin worth reflecting on.&lt;/p></description></item><item><title>Vaadin 10 to 25: Migrating a 8-Year-Old App with Claude AI</title><link>https://www.flowingcode.com/en/vaadin-10-to-25-migrating-a-8-year-old-app-with-claude-ai/</link><pubDate>Thu, 18 Jun 2026 19:49:25 +0000</pubDate><guid>https://www.flowingcode.com/en/vaadin-10-to-25-migrating-a-8-year-old-app-with-claude-ai/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2281" height="572" loading="lazy" src="https://www.flowingcode.com/images/uploads/2026/06/global-stats-2026-1024x572.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">Back in 2018, &lt;a href="https://www.flowingcode.com/en/vaadin-10-spring-demo-application-world-cup-rusia-2018-stats/">our team at Flowing Code built a quick, scrappy demo to show off the then-brand-new Vaadin 10&lt;/a>. It was a hackathon project built around the major global football tournament happening in Russia at the time. The app was designed as a live dashboard tracking match fixtures, real-time scores, and group standings.&lt;/p></description></item><item><title>9 Years Flowing Strong</title><link>https://www.flowingcode.com/en/9-years-flowing-strong/</link><pubDate>Wed, 29 Apr 2026 20:03:48 +0000</pubDate><guid>https://www.flowingcode.com/en/9-years-flowing-strong/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2230" height="559" loading="lazy" src="https://www.flowingcode.com/images/uploads/2026/04/9Years-1024x559.png" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">Time really does fly when you are deeply immersed in doing what you love. It feels like just yesterday we were reflecting on our early milestones, and this month, we are proudly celebrating our 9th anniversary. This past year at Flowing Code has been defined by tackling complex technical challenges, driving major platform upgrades, and strengthening our commitment to both our enterprise clients and the open-source ecosystem.&lt;/p></description></item><item><title>Vaadin 25: How We Solved JSON Migration</title><link>https://www.flowingcode.com/en/vaadin-25-how-we-solved-json-migration/</link><pubDate>Fri, 19 Dec 2025 18:59:32 +0000</pubDate><guid>https://www.flowingcode.com/en/vaadin-25-how-we-solved-json-migration/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2201" height="576" loading="lazy" src="https://www.flowingcode.com/images/uploads/2025/12/Upgrading-Add-ons-for-Vaadin-25-How-We-Solved-JSON-Migration-2-1024x576.png" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">&lt;strong>Vaadin 25&lt;/strong> was just released, and it comes with an &lt;a href="https://vaadin.com/blog/vaadin-25-0-release">interesting set of breaking changes&lt;/a> to keep us entertained and wide awake as we head into the year’s final stretch.&lt;/p>
&lt;p class="wp-block-paragraph">At &lt;strong>Flowing Code&lt;/strong> we &lt;a href="https://www.flowingcode.com/en/opensource/addons/">maintain more than 30 add-ons&lt;/a>, and most of them currently &lt;strong>support Vaadin 14, 23, and 24&lt;/strong>. As you can imagine, this makes the Vaadin 25 migration cycle a substantial effort. And &lt;strong>our goal is ambitious&lt;/strong>: keep a &lt;strong>single codebase&lt;/strong> compatible with all supported Vaadin versions, without branching off into Vaadin-25-specific releases unless absolutely necessary.&lt;/p></description></item><item><title>A Path of Learning, Commitment, and Continuous Improvement</title><link>https://www.flowingcode.com/en/a-path-of-learning-commitment-and-continuous-improvement/</link><pubDate>Mon, 01 Dec 2025 12:21:26 +0000</pubDate><guid>https://www.flowingcode.com/en/a-path-of-learning-commitment-and-continuous-improvement/</guid><description>&lt;figure class="wp-block-image size-full is-resized">&lt;img alt="" class="wp-image-2150" height="470" loading="lazy" src="https://www.flowingcode.com/images/uploads/2025/10/Gemini_Generated_Image_w8i0k2w8i0k2w8i0-edited.jpg" width="941"/>&lt;/figure>
&lt;p class="wp-block-paragraph">On &lt;strong>August 1, 2025&lt;/strong>, at &lt;strong>Flowing Code S.A&lt;/strong>., we reached a new milestone: we successfully achieved our first &lt;a href="https://www.certipedia.com/quality_marks/9000023233">recertification of the ISO 9001:2015 standard&lt;/a>, having successfully passed the audit conducted by TÜV Rheinland. Beyond the certificate itself, what we are celebrating is the entire journey we took to get here.&lt;/p></description></item><item><title>Improving Code Reviews with AI: Our Experience with CodeRabbit</title><link>https://www.flowingcode.com/en/improving-code-reviews-with-ai-our-experience-with-coderabbit/</link><pubDate>Thu, 13 Nov 2025 12:42:55 +0000</pubDate><guid>https://www.flowingcode.com/en/improving-code-reviews-with-ai-our-experience-with-coderabbit/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-2110" height="576" loading="lazy" src="https://www.flowingcode.com/images/uploads/2025/10/review-2-1024x576.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">It seems like everyone is using &lt;strong>AI&lt;/strong> these days. From chatbots to code generators, the wave of tools promising to make developers’ lives easier keeps growing. At Flowing Code, we wanted to see how AI could actually help in our day-to-day work, not just in theory, but in practice. After some investigations and considerations on what could be improved in our daily tasks, we decided to dive into the AI world with &lt;a href="https://www.coderabbit.ai/">CodeRabbit&lt;/a>, a tool designed to help &lt;strong>review Pull Requests&lt;/strong>.&lt;/p></description></item><item><title>Shaping the Flow: 8 Years of Innovation and Evolution</title><link>https://www.flowingcode.com/en/shaping-the-flow-8-years-of-innovation-and-evolution/</link><pubDate>Wed, 30 Apr 2025 21:58:37 +0000</pubDate><guid>https://www.flowingcode.com/en/shaping-the-flow-8-years-of-innovation-and-evolution/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-1909" height="576" loading="lazy" src="https://www.flowingcode.com/images/uploads/2025/04/PlaygroundImage5-1024x576.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">As Flowing Code celebrates its 8th anniversary, we stand proud of a journey marked by steady growth, evolution, and meaningful impact. Year after year, we continue to strengthen our foundation—delivering high-quality software solutions to our clients while nurturing a thriving open-source community. Our commitment to innovation, technical excellence, and collaboration has not only propelled us forward but also deepened our purpose: to create value through software that empowers, simplifies, and inspires. This past year has been a testament to our resilience and our vision, as we expanded our client work, launched new open-source extensions, and laid key groundwork for the future of enterprise development.&lt;/p></description></item><item><title>Our Commitment to Open Source: Releases and Updates in 2024</title><link>https://www.flowingcode.com/en/our-commitment-to-open-source-releases-and-updates-in-2024/</link><pubDate>Tue, 17 Dec 2024 15:15:31 +0000</pubDate><guid>https://www.flowingcode.com/en/our-commitment-to-open-source-releases-and-updates-in-2024/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-1806" height="439" loading="lazy" src="https://www.flowingcode.com/images/uploads/2024/11/flowing-addons-1024x439.png" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">If you keep up with our work, you may already know that here at &lt;strong>Flowing Code&lt;/strong>, we’re passionate about contributing to the Open Source community and dedicated to delivering solutions that can help developers to build better applications. This year, as part of that commitment, we’ve successfully released eight new &lt;a href="https://vaadin.com/">&lt;strong>Vaadin&lt;/strong>&lt;/a> add-ons. If you haven’t had a chance to explore them yet, let’s take a quick look at what each of these add-ons offers.&lt;/p></description></item><item><title>Sustaining Excellence: Our Journey of Continuous Improvement</title><link>https://www.flowingcode.com/en/sustaining-excellence-our-journey-of-continuous-improvement/</link><pubDate>Thu, 05 Sep 2024 20:29:08 +0000</pubDate><guid>https://www.flowingcode.com/en/sustaining-excellence-our-journey-of-continuous-improvement/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-1746" height="620" loading="lazy" src="https://www.flowingcode.com/images/uploads/2024/08/simplewordcloud.com_1920x-2-1-1024x620.png" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">At Flowing Code, our commitment to excellence drives every aspect of our work. This dedication has once again been validated as we successfully passed our third external &lt;a href="https://www.flowingcode.com/en/we-re-an-iso-90012015-certified-company/">ISO 9001:2015&lt;/a> audit without any non-conformities. This achievement reflects our continuous improvement effort to enhance and adapt, ensuring that we not only meet but exceed the standards expected of us. Over the past year, we have focused on enhancing our internal development processes, expanding our organizational structure, and aligning our operations with our environmental responsibilities. This blog post outlines the key improvements we’ve made and expresses our gratitude to those who have supported us along the way.&lt;/p></description></item><item><title>Introducing our first Vaadin add-ons integrating React Components</title><link>https://www.flowingcode.com/en/introducing-our-first-vaadin-add-ons-integrating-react-components/</link><pubDate>Thu, 15 Aug 2024 18:24:30 +0000</pubDate><guid>https://www.flowingcode.com/en/introducing-our-first-vaadin-add-ons-integrating-react-components/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="Introducing our first Vaadin add-ons integrating React Components" class="wp-image-1722" height="585" loading="lazy" src="https://www.flowingcode.com/images/uploads/2024/08/vaadin-react-04-1024x585.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">Vaadin 24.4 brings exciting new capabilities for integrating React into Vaadin applications in various forms. This offers developers a range of integration options, providing unprecedented flexibility in building modern web applications. You can delve into the various possibilities and the reasons behind this improvement in &lt;a href="https://vaadin.com/blog/vaadin-24.4-opens-the-door-to-the-land-of-react">Vaadin’s blog post&lt;/a>.&lt;/p></description></item><item><title>Google Maps Add-on: How to Get and Track Current Location</title><link>https://www.flowingcode.com/en/google-maps-add-on-how-to-get-and-track-current-location/</link><pubDate>Thu, 18 Jul 2024 13:14:01 +0000</pubDate><guid>https://www.flowingcode.com/en/google-maps-add-on-how-to-get-and-track-current-location/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="a map with a marker simulating current location" class="wp-image-1670" height="576" loading="lazy" src="https://www.flowingcode.com/images/uploads/2024/06/maps-location-1024x576.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">The &lt;a href="https://vaadin.com/directory/component/google-maps-addon">Google Maps Add-on&lt;/a> is a powerful wrapper component around the &lt;a href="https://www.npmjs.com/package/@flowingcode/google-map">Google Maps Web Component&lt;/a>. This add-on allows you to display a customized map and incorporate various map-related elements such as markers, polygons, custom controls and more. You can explore all the features the add-on provides in our &lt;a href="https://addonsv24.flowingcode.com/googlemaps">online demo&lt;/a>. For now, we’ll focus on how to obtain and track the user’s current location.&lt;/p></description></item><item><title>Time &amp; Material vs Fixed Price? Why We Prefer the Flexible Approach</title><link>https://www.flowingcode.com/en/time-material-vs-fixed-price-why-we-prefer-the-flexible-approach/</link><pubDate>Mon, 10 Jun 2024 13:55:09 +0000</pubDate><guid>https://www.flowingcode.com/en/time-material-vs-fixed-price-why-we-prefer-the-flexible-approach/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-1580" height="510" loading="lazy" src="https://www.flowingcode.com/images/uploads/2024/04/image-20-1024x510.png" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">When it comes to &lt;a href="https://en.wikipedia.org/wiki/Software_development" rel="noreferrer noopener nofollow" target="_blank">software development&lt;/a> contracts, businesses typically face a choice between two common pricing models: time and material, and fixed price. These frameworks offer distinct approaches to budgeting, project scope, and risk management. In this blog post, we’ll explore the differences between these two models, outlining their respective advantages and drawbacks. This discussion will help clarify why our company has chosen the time and material approach and offer insights into how it aligns with our business values and project management style. Stay tuned as we delve into the nuances of these pricing strategies and share the reasons behind our decision.&lt;/p></description></item><item><title>A Guide to Using Badge List Add-on</title><link>https://www.flowingcode.com/en/a-guide-to-using-badge-list-component/</link><pubDate>Thu, 30 May 2024 13:50:53 +0000</pubDate><guid>https://www.flowingcode.com/en/a-guide-to-using-badge-list-component/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-1627" height="585" loading="lazy" src="https://www.flowingcode.com/images/uploads/2024/05/badge-blog-post-1024x585.jpg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">Introducing &lt;a href="https://vaadin.com/directory/component/badge-list-add-on">Badge List component&lt;/a>, one of our latest &lt;a href="https://vaadin.com/">Vaadin&lt;/a> add-ons, created to address the challenge of displaying a dynamic list of badges within a confined space, such as a &lt;a href="https://vaadin.com/docs/latest/components/grid">Vaadin Grid&lt;/a> cell, in a responsive and user-friendly manner.&lt;/p></description></item><item><title>Adapt, Evolve, Thrive: Flowing Code’s 7th Year in Retrospect</title><link>https://www.flowingcode.com/en/adapt-evolve-thrive-flowing-codes-7th-year-in-retrospect/</link><pubDate>Thu, 25 Apr 2024 19:17:34 +0000</pubDate><guid>https://www.flowingcode.com/en/adapt-evolve-thrive-flowing-codes-7th-year-in-retrospect/</guid><description>&lt;figure class="wp-block-image size-large">&lt;img alt="" class="wp-image-1529" height="512" loading="lazy" src="https://www.flowingcode.com/images/uploads/2024/04/04-vmake2-1024x512.jpeg" width="1024"/>&lt;/figure>
&lt;p class="wp-block-paragraph">As we mark the 7th anniversary of Flowing Code, it’s a special time to look back on our journey. Each year, our company grows stronger, fueled by our commitment to innovation and delivering exceptional work. We’ve faced challenges, seized opportunities, and kept moving forward with determination. Our success isn’t just about the projects we do for &lt;a href="https://www.flowingcode.com/en/customers/">our valued clients&lt;/a>, but also about the active community we’ve built through &lt;a href="https://www.flowingcode.com/en/open-source/">our open-source projects&lt;/a>. Looking back on the past year, we’re proud of what we’ve achieved, from impactful client projects to the cool extensions we’ve added to &lt;a href="https://github.com/flowingcode" rel="noreferrer noopener nofollow" target="_blank">our GitHub repository&lt;/a>. As we look to the future, we’re thankful for the chances ahead and are excited to keep delivering top-notch solutions for our clients and the wider community.&lt;/p></description></item><item><title>Flowing Forward: A Look Back at Flowing Code’s 6th Year</title><link>https://www.flowingcode.com/en/flowing-forward-a-look-back-at-flowing-codes-6th-year/</link><pubDate>Wed, 05 Apr 2023 14:14:10 +0000</pubDate><guid>https://www.flowingcode.com/en/flowing-forward-a-look-back-at-flowing-codes-6th-year/</guid><description>&lt;div class="wp-block-image is-style-default">&lt;figure class="alignright size-large">&lt;img alt="Flowing Forward" class="wp-image-1370" height="518" loading="lazy" src="https://www.flowingcode.com/images/uploads/2023/04/Cake6-1024x518.png" width="1024"/>&lt;/figure>&lt;/div>
&lt;p class="wp-block-paragraph">As we mark another year of existence at Flowing Code, we continue to push the boundaries of software development, delivering innovative solutions and services to our clients. Over the past year, we have faced numerous challenges and opportunities, and we are proud of how our team has risen to the occasion, adapting and evolving to meet the ever-changing demands of the industry. In this review, we take a look back at some of the key highlights and accomplishments of our 6th year.&lt;/p></description></item><item><title>We’re an ISO 9001:2015 certified company!</title><link>https://www.flowingcode.com/en/we-re-an-iso-90012015-certified-company/</link><pubDate>Tue, 06 Sep 2022 15:31:44 +0000</pubDate><guid>https://www.flowingcode.com/en/we-re-an-iso-90012015-certified-company/</guid><description>&lt;figure class="wp-block-image size-full">&lt;img alt="" class="wp-image-1291" height="376" loading="lazy" src="https://www.flowingcode.com/images/uploads/2022/09/image2128.png" width="940"/>&lt;/figure>
&lt;p class="wp-block-paragraph">I am glad to announce that in June we successfully passed the external audit that evaluated the conformity of our Quality Management System with the requirements of the International Standard ISO 9001:2015.&lt;/p></description></item><item><title>Installing Vembu BDRSuite with Docker Compose</title><link>https://www.flowingcode.com/en/installing-vembu-bdr-with-docker-compose/</link><pubDate>Mon, 11 Jul 2022 12:55:25 +0000</pubDate><guid>https://www.flowingcode.com/en/installing-vembu-bdr-with-docker-compose/</guid><description>&lt;div class="wp-block-image">&lt;figure class="aligncenter size-full">&lt;img alt="" class="wp-image-1254" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2022/07/image832.png" width="760"/>&lt;/figure>&lt;/div>
&lt;p class="wp-block-paragraph">In these days we tend to think that just by having our services and data on the cloud everything related to backups is solved and is someone else problem. But for most of the companies this is not enough, and if we’re in charge of defining the infrastructure of an organization we should consider implementing several layers of backups no matter where the data is actually hosted.&lt;/p></description></item><item><title>How to use Angular Components with Vaadin</title><link>https://www.flowingcode.com/en/how-to-use-angular-components-with-vaadin/</link><pubDate>Mon, 04 Jul 2022 15:19:43 +0000</pubDate><guid>https://www.flowingcode.com/en/how-to-use-angular-components-with-vaadin/</guid><description>&lt;div class="wp-block-image">&lt;figure class="aligncenter size-full is-resized">&lt;img alt="" class="wp-image-1231" height="376" loading="lazy" src="https://www.flowingcode.com/images/uploads/2022/06/How-to-use-Angular-Components-with-Vaadin-B.png" width="840"/>&lt;/figure>&lt;/div>
&lt;p class="wp-block-paragraph">If you’re familiar with our work, you know that &lt;a href="https://www.flowingcode.com/en/open-source/">we’ve created a few components&lt;/a> to be used in &lt;a href="https://vaadin.com/flow">Vaadin Flow&lt;/a> applications based on existing &lt;a href="https://www.webcomponents.org/introduction">Web Components&lt;/a> or in JavaScript libraries that we found interesting. But what about if you want to use an &lt;a href="https://angular.io/guide/component-overview">Angular Component&lt;/a> and create a Vaadin component from that? Would that be an easy task? I didn’t have an immediate answer for that question so I did some research, a lot of testing and here are my findings.&lt;/p></description></item><item><title>Using our AppLayout Addon in a Hilla Application</title><link>https://www.flowingcode.com/en/using-our-applayout-in-a-hilla-application/</link><pubDate>Mon, 23 May 2022 20:31:00 +0000</pubDate><guid>https://www.flowingcode.com/en/using-our-applayout-in-a-hilla-application/</guid><description>&lt;div class="wp-block-image">&lt;figure class="aligncenter size-full">&lt;img alt="" class="wp-image-1077" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2022/05/AppLayoutHilla.png" width="760"/>&lt;/figure>&lt;/div>
&lt;p class="wp-block-paragraph">First of all, just a little bit of context for those who haven’t heard about Hilla yet. What’s the fuss about it? It is a framework for building reactive client-side web apps. With reusable web components and simplified, secure, and type-safe access to the Java backend, it allows you to stay more productive than with minimalistic frontend frameworks. Hilla apps are built on web and industry standards, making them more stable than the alternatives. If you want to know more, the best starting point is the &lt;a href="https://hilla.dev" rel="noreferrer noopener nofollow" target="_blank">official site&lt;/a>. For a more concrete view, you can watch &lt;a href="https://www.youtube.com/watch?v=ADLbkZnKjA0" rel="noreferrer noopener nofollow" target="_blank">this video&lt;/a> that analyzes the library and goes through the steps for creating a quick example.&lt;/p></description></item><item><title>Last year in review: 5 rounds keeping the code flowing</title><link>https://www.flowingcode.com/en/last-year-in-review-5-rounds-keeping-the-code-flowing/</link><pubDate>Fri, 01 Apr 2022 12:50:58 +0000</pubDate><guid>https://www.flowingcode.com/en/last-year-in-review-5-rounds-keeping-the-code-flowing/</guid><description>&lt;div class="wp-block-image">&lt;figure class="alignright size-large is-resized">&lt;img alt="5 years in review" class="wp-image-939" height="309" loading="lazy" src="https://www.flowingcode.com/images/uploads/2022/03/cake-g76ab21b41_1920-1024x683.jpg" width="464"/>&lt;/figure>&lt;/div>
&lt;p class="wp-block-paragraph">April 2017 marked the time where Flowing Code started to exist. Since then we’ve been learning, investigating, coding, delivering high value to our customers and also, maintaining a growing community. As we celebrate reaching this amazing milestone, here is a quick review of our last year.&lt;/p></description></item><item><title>Display realtime crypto prices with Vaadin and Spring Reactive</title><link>https://www.flowingcode.com/en/display-realtime-crypto-prices-vaadin-spring/</link><pubDate>Mon, 14 Mar 2022 12:47:38 +0000</pubDate><guid>https://www.flowingcode.com/en/display-realtime-crypto-prices-vaadin-spring/</guid><description>&lt;div class="wp-block-image">&lt;figure class="aligncenter size-full">&lt;img alt="Vaadin + Spring + Reactive + Crypto" class="wp-image-934" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2022/03/CryptoVaadin.png" width="760"/>&lt;/figure>&lt;/div>
&lt;p class="wp-block-paragraph">In this article, we’re going to create a simple application to display crypto currencies trades price in realtime using &lt;a href="https://www.flowingcode.com/en/category/vaadin/">Vaadin&lt;/a> Flow and &lt;a href="https://www.flowingcode.com/en/category/springframework/">Spring&lt;/a> Reactive WebSockets API.&lt;/p></description></item><item><title>Vaadin TreeGrid with lazy loading, filtering and sorting</title><link>https://www.flowingcode.com/en/vaadin-tree-grid-lazy-loading-filtering-sorting/</link><pubDate>Thu, 13 May 2021 14:12:58 +0000</pubDate><guid>https://www.flowingcode.com/en/vaadin-tree-grid-lazy-loading-filtering-sorting/</guid><description>&lt;div class="wp-block-image">&lt;figure class="aligncenter size-large is-resized">&lt;img alt="" class="wp-image-720" height="374" loading="lazy" src="https://www.flowingcode.com/images/uploads/2021/04/TreeGrid.png" width="836"/>&lt;/figure>&lt;/div>
&lt;p class="wp-block-paragraph">I’m giving my first steps into Vaadin 14 after a long, long time of Vaadin 8 projects and I want to share my experience when it was time to work with the TreeGrid component to display hierarchical data. I ran into this issue where I needed to add filtering and sorting to a Vaadin TreeGrid implementing lazy loading. I had this &lt;a href="https://www.flowingcode.com/en/lazy-filtered-and-sorted-vaadin-grid-using-external-data-source/">article&lt;/a> for Grid as base but some things are different so I thought it would be a good idea to share all the steps needed and all things to keep in mind for this kind of implementation.&lt;/p></description></item><item><title>Another year in review: The new normal</title><link>https://www.flowingcode.com/en/another-year-in-review-the-new-normal/</link><pubDate>Mon, 05 Apr 2021 20:03:58 +0000</pubDate><guid>https://www.flowingcode.com/en/another-year-in-review-the-new-normal/</guid><description>&lt;div class="wp-block-image">&lt;figure class="alignright size-large is-resized">&lt;img alt="Happy birthday 4" class="wp-image-594" height="283" loading="lazy" src="https://www.flowingcode.com/images/uploads/2021/03/happy_birthday_2.jpg" width="271"/>&lt;/figure>&lt;/div>
&lt;p class="wp-block-paragraph">Our life, way to enjoy, live and work has changed, but we’re still here giving our best to provide the quality services that our customers demand. Let’s review another year by going through our most remarkable achievements.&lt;/p></description></item><item><title>Our last year in review: #StayHome &amp; Code!</title><link>https://www.flowingcode.com/en/our-last-year-in-review-stayhome-code/</link><pubDate>Tue, 14 Apr 2020 20:14:10 +0000</pubDate><guid>https://www.flowingcode.com/en/our-last-year-in-review-stayhome-code/</guid><description>&lt;div class="wp-block-image">&lt;figure class="alignright size-large is-resized">&lt;img alt="" class="wp-image-452" height="260" loading="lazy" src="https://www.flowingcode.com/images/uploads/2020/04/photo4blog.jpg" width="260"/>&lt;/figure>&lt;/div>
&lt;p class="wp-block-paragraph">Although we’re all navigating uncertain times and the reality of the world is very different from what it was one year ago, Flowing Code is turning 3 years old and we wanted to take a moment to acknowledge all the good work and growth we managed to achieve. So here’s little review of our last year:&lt;/p></description></item><item><title>CSS Theming &amp; Styling in Vaadin 14</title><link>https://www.flowingcode.com/en/css-theming-styling-in-vaadin-14/</link><pubDate>Thu, 22 Aug 2019 14:10:00 +0000</pubDate><guid>https://www.flowingcode.com/en/css-theming-styling-in-vaadin-14/</guid><description>&lt;p>&lt;img alt="" class="alignnone size-full wp-image-375" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2019/08/CSS-Theming-Styling-in-Vaadin-14.png" width="760"/>&lt;/p>
&lt;p>Last week, the new &lt;a href="https://vaadin.com/roadmap" rel="noopener noreferrer" target="_blank">LTS version&lt;/a> of the presentation framework was announced.&lt;br/>
While you can find more information about &lt;a href="https://vaadin.com/blog/top-14-new-features-in-vaadin-14" rel="noopener noreferrer" target="_blank">the new features&lt;/a> in the official site, I would like to focus on one specific feature that I’ve found interesting: styles management.&lt;br/>
Across the years we saw different approaches in how to handle styles in Vaadin applications.&lt;br/>
In Vaadin 6 you could just modify styles using plain CSS. Of course you had two choices: either build everything from scratch, or inherit the built-in themes like Reindeer, Runo or Chameleon. That inheritance scheme was based in the @import css statement, which is the basis of the cascading part of the theming technology.&lt;br/>
The problem with this approach was that the customization was difficult, because the complexity of the rendered DOM, and the lack of variables that could help in modifying certain aspects of the base themes such as sizing and spacing, that several rules had in common.&lt;/p></description></item><item><title>Lazy, Filtered and Sorted Vaadin Grid using External Data Source</title><link>https://www.flowingcode.com/en/lazy-filtered-and-sorted-vaadin-grid-using-external-data-source/</link><pubDate>Wed, 24 Apr 2019 18:06:00 +0000</pubDate><guid>https://www.flowingcode.com/en/lazy-filtered-and-sorted-vaadin-grid-using-external-data-source/</guid><description>&lt;div style="clear: both; text-align: center;">&lt;img alt="" class="alignnone size-full wp-image-391" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2019/04/Lazy-Filtered-and-Sorted-Vaadin-Grid-using-External-Data-Source.png" width="760"/>&lt;/div>
&lt;div>&lt;/div>
&lt;div style="text-align: justify;">In large enterprise application development projects, it’s usual to code use cases that, as the main requirement, define to show the user huge amounts of data in a tabular way. For this kind of scenarios, there is a particular web component that comes really handy: a Grid. Given that we like Vaadin’s framework, we are going to describe how to configure it in such a way that doesn’t restrict you about performance issues when doing that.&lt;/div>
&lt;div style="text-align: justify;">This post assumes that you have some knowledge of web application development using the Vaadin Framework and the Java Platform. But we’ll try to explain everything as much as possible. The version that we used to write this application is Vaadin 13, but this part of the API is almost the same since Vaadin 8, so it should be possible to use the same approach in older versions.&lt;/div>
&lt;div style="text-align: justify;">Setting up a Vaadin Grid, is really easy, just create an instance and then customize the columns, or even skip that part if your Pojo is sufficiently self-descriptive.&lt;/div>
&lt;div style="text-align: justify;">As an example, let’s assume that we want to show a grid with data for a person, which we can define as a simplified entity like this:&lt;/div>
&lt;p>&lt;/p></description></item><item><title>Our 2nd year in review: keep flowing!</title><link>https://www.flowingcode.com/en/our-2nd-year-in-review-keep-flowing/</link><pubDate>Wed, 03 Apr 2019 21:21:00 +0000</pubDate><guid>https://www.flowingcode.com/en/our-2nd-year-in-review-keep-flowing/</guid><description>&lt;div style="clear: both; text-align: center;">&lt;a href="https://2.bp.blogspot.com/-nvtIfgN8duc/XKUQh9VEyFI/AAAAAAAABT8/mE7P45E2uqwWlkKimAmes7fT2rdW9UDWwCEwYBhgL/s1600/anniversary_1.jpg" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">&lt;img border="0" height="292" loading="lazy" src="https://2.bp.blogspot.com/-nvtIfgN8duc/XKUQh9VEyFI/AAAAAAAABT8/mE7P45E2uqwWlkKimAmes7fT2rdW9UDWwCEwYBhgL/s320/anniversary_1.jpg" width="320"/>&lt;/a>&lt;/div>
&lt;div style="text-align: justify;">Another round around the sun, another term ended, and here we are still moving on. A lot of things happened since this team was created, and many of them last year. Here’s a quick review of what we did:&lt;/div>
&lt;h3 style="text-align: justify;">Traveling&lt;/h3>
&lt;div style="text-align: justify;">Let’s start with one of the best experiences we got the chance to share as a team. We had the opportunity to visit the northern hemisphere to meet our friends at &lt;a href="https://goo.gl/maps/9oCmjURSPUR2" rel="nofollow noopener noreferrer" target="_blank">Vaadin’s main HQ&lt;/a>.&lt;/div>
&lt;div style="text-align: justify;">While we were there, &lt;a href="https://www.facebook.com/pg/FlowingCode/photos/?tab=album&amp;amp;album_id=1924289037668253" rel="nofollow noopener noreferrer" target="_blank">we shoot some awesome pictures&lt;/a>, visit some interesting places and had the amazing chance of getting to know &lt;a href="https://vaadin.com/company/team" rel="nofollow noopener noreferrer" target="_blank">all of the experts&lt;/a> behind the company that is responsible for this great open source framework.&lt;/div>
&lt;h3>Sharing&lt;/h3>
&lt;div style="text-align: justify;">Talking about Open Source, we continued to support our community, and created &lt;a href="https://www.flowingcode.com/p/open-source.html" rel="nofollow noopener noreferrer" target="_blank">a special section in our web site&lt;/a> to group all of the projects that we maintain.&lt;/div>
&lt;div style="text-align: justify;">We worked hard to develop &lt;a href="https://github.com/FlowingCode" rel="nofollow noopener noreferrer" target="_blank">a bunch of interesting projects&lt;/a>, giving away our best effort to make them production ready, so anyone can use our technologies in their projects, and participate with us actively so they can improve over time.&lt;/div>
&lt;div style="text-align: justify;">One interesting project to mention, was &lt;a href="https://github.com/FlowingCode/WorldcupStats" rel="nofollow noopener noreferrer" target="_blank">a small PWA application that displayed the results of the Football Worldcup in real time&lt;/a>, showing how to integrate several technologies, so similar projects can be built using this a kickstart.&lt;/div>
&lt;h3 style="text-align: justify;">Learning&lt;/h3>
&lt;div style="text-align: justify;">Delivering intelligence is not an easy task if you don’t find a way to expand your knowledge. We take this statement seriously: we schedule one learning day each week, so we can watch, learn and discuss about many technologies, methodologies, frameworks, languages, etc.&lt;/div>
&lt;div style="text-align: justify;">Here’s a list of the subjects and some interesting links for you to watch if you’re curious:&lt;/div>
&lt;p>&lt;/p></description></item><item><title>Creating a Vaadin Flow Server-Side API for a Javascript component</title><link>https://www.flowingcode.com/en/creating-a-vaadin-flow-server-side-api-for-a-javascript-component/</link><pubDate>Tue, 08 Jan 2019 19:50:00 +0000</pubDate><guid>https://www.flowingcode.com/en/creating-a-vaadin-flow-server-side-api-for-a-javascript-component/</guid><description>&lt;div style="clear: both; text-align: center;">&lt;/div>
&lt;div>&lt;img alt="" class="alignnone size-full wp-image-394" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2019/01/Creating-a-Vaadin-Flow-Server-Side-API-for-a-Javascript-component.png" width="760"/>&lt;/div>
&lt;div style="text-align: justify;">Today we are going to explore some tips about how to create a Java server-side wrapper for a regular javascript component using &lt;a href="https://vaadin.com/flow" rel="nofollow noopener noreferrer" target="_blank">Vaadin Flow&lt;/a>. As you might notice, this popular framework has good documentation about how to integrate an existing Polymer Component, but there is no much info about how to integrate a regular Javascript component, so we will show you one easy approach of doing that.&lt;/div>
&lt;div style="text-align: justify;">What we want to do is, to show you how to create a nice Java API around a typical javascript component, so you can easily integrate it in your java applications.&lt;/div>
&lt;div style="text-align: justify;">Of course, there are many ways to build javascript visual components around there, we will focus on the ones that use this common pattern: &lt;i>you create a html element (like a Div), and then you instruct the library to “enhance” it&lt;/i>.&lt;/div>
&lt;div style="text-align: justify;">Then we have one important feature that is usually wanted: &lt;b>bidirectional communication between the server and the client&lt;/b>.&lt;/div>
&lt;div style="text-align: justify;">For this short tutorial we want to build a Vaadin Flow wrapper around one interesting library that is able to draw time line graphs: &lt;a href="http://visjs.org/" rel="nofollow noopener noreferrer" target="_blank">vis.js&lt;/a>. This library is based on the previous premise: to enhance (in this case) a div html tag.&lt;/div>
&lt;div style="text-align: justify;">Let’s start.&lt;/div>
&lt;h3>Step 1: Overview of your component&lt;/h3>
&lt;div style="text-align: justify;">First, it’s a good idea to use a starter to build a project based on Vaadin. We will use this one, which is perfect for creating a new component. Because it’s mandatory to specify a base GitHub project, just leave the one that is offered, you can change that later.&lt;/div>
&lt;div style="text-align: justify;">We want our component to be easy to use; hence, following Vaadin conventions, we will create a simple class that will extend a Div component. This class will be able to render the component in the client side, exposing some methods that will give the developer the ability for interacting with it in several ways:&lt;/div>
&lt;p>&lt;/p></description></item><item><title>Planning your SCM strategy</title><link>https://www.flowingcode.com/en/planning-your-scm-strategy/</link><pubDate>Tue, 18 Dec 2018 18:28:00 +0000</pubDate><guid>https://www.flowingcode.com/en/planning-your-scm-strategy/</guid><description>&lt;div style="text-align: justify;">
&lt;div style="clear: both; text-align: center;">&lt;img alt="" class="alignnone size-full wp-image-426" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2018/12/Planning-your-SCM-strategy.jpg" width="760"/>&lt;/div>
&lt;p>We have been frequently asked by companies that are planning or are developing a software product about the common issues found trying to achieve a good production workflow, good teamwork and the security of properly handling the code base.&lt;br/>
During our years of expertise we developed a strong vision about the most important tools that you need to use if you want to build software in a controlled way.&lt;br/>
These tools encourage the implementation of a &lt;a href="https://en.wikipedia.org/wiki/Software_configuration_management">Software Configuration Management&lt;/a> (SCM) strategy within your organization. In turn, this will have a great positive impact in many aspects, some of them technical, but also in many functional and workflow oriented ones.&lt;br/>
Today most of software engineers take these tools for granted. But there are cases where companies with small development teams or organizational debts need some help figuring out these stuff. In that spirit we are writing an overview of this topic.&lt;br/>
Most of the important problems that could come up are solved by properly installing, configuring and using this tools.&lt;br/>
One key fact is that these tools are important regardless of the language or platform that you’re using.&lt;/p></description></item><item><title>Developing modern web-apps with Vaadin @ UNL</title><link>https://www.flowingcode.com/en/developing-modern-web-apps-with-vaadin-unl/</link><pubDate>Mon, 24 Sep 2018 20:01:00 +0000</pubDate><guid>https://www.flowingcode.com/en/developing-modern-web-apps-with-vaadin-unl/</guid><description>&lt;div style="text-align: justify;">
&lt;div style="clear: both; text-align: center;">&lt;/div>
&lt;p>&lt;a href="https://2.bp.blogspot.com/-kC8IyMRzV9o/W6kZL1cSRqI/AAAAAAAAA_4/PBR11iYChYQZjLsYKBIX0mmIUcWZBBxngCLcBGAs/s1600/UNL1-1.jpg" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">&lt;img border="0" height="185" loading="lazy" src="https://2.bp.blogspot.com/-kC8IyMRzV9o/W6kZL1cSRqI/AAAAAAAAA_4/PBR11iYChYQZjLsYKBIX0mmIUcWZBBxngCLcBGAs/s320/UNL1-1.jpg" width="320"/>&lt;/a>Last Wednesday we gave a presentation in &lt;a href="http://fich.unl.edu.ar/" rel="noopener noreferrer" target="_blank">Universidad Nacional del Litoral&lt;/a>, where we explained some concepts related to developing web applications using the latest version of the &lt;a href="https://vaadin.com/" rel="noopener noreferrer" target="_blank">Finnish platform&lt;/a>.&lt;/p></description></item><item><title>Vaadin 10 + Spring Demo application: World Cup Rusia 2018 stats</title><link>https://www.flowingcode.com/en/vaadin-10-spring-demo-application-world-cup-rusia-2018-stats/</link><pubDate>Tue, 03 Jul 2018 16:36:00 +0000</pubDate><guid>https://www.flowingcode.com/en/vaadin-10-spring-demo-application-world-cup-rusia-2018-stats/</guid><description>&lt;div style="clear: both; text-align: center;">&lt;img alt="" class="alignnone size-full wp-image-430" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2018/07/Vaadin-10-Spring-Demo-application_-World-Cup-Rusia-2018-stats-1.png" width="760"/>&lt;/div>
&lt;div>
&lt;div>&lt;/div>
&lt;div style="text-align: justify;">To test out some new interesting web technologies, we decided to go ahead and build a small demo application that will point out ideas that could potentially help a developer when trying to decide which ones to use in a new project. We decided to create a small application with responsiveness in mind, that would show real time and aggregated data about the current Football World Cup event that is taking place in Russia.&lt;/div>
&lt;/div>
&lt;h4>Technologies&lt;/h4>
&lt;div>The chosen technologies where:&lt;/div>
&lt;div>
&lt;ul>
&lt;li style="text-align: justify;">&lt;a href="https://vaadin.com/" rel="noopener noreferrer" target="_blank">Vaadin 10&lt;/a>: The brand new version of the popular framework, that is powered by the new standards being pushed by the most popular browsers.&lt;/li>
&lt;li style="text-align: justify;">&lt;a href="https://spring.io/" rel="noopener noreferrer" target="_blank">SpringFramework&lt;/a>: The almost de-facto standard dependency injection framework, that stands as the backbone of almost every java project that are currently being built.&lt;/li>
&lt;li style="text-align: justify;">REST API: Our project uses the API available &lt;a href="http://worldcup.sfg.io/" rel="noopener noreferrer" target="_blank">here&lt;/a>. That API exposes data as a REST API with information being delivered in JSON format.&lt;/li>
&lt;/ul>
&lt;/div>
&lt;h4>Features&lt;/h4>
&lt;div>This is a short list of currently supported features:&lt;/div>
&lt;div>
&lt;ul>
&lt;li style="text-align: justify;">The application is responsive, it will correctly display information regardless the device being used. This feature is achieved by using Vaadin &amp;amp; Polymer technologies.&lt;/li>
&lt;li style="text-align: justify;">Depending on the device that you’re browsing the site (especially mobile phones), you can add the application to the home screen, so it will look like a native application. The only catch is that it will not function in offline mode (yet, maybe sooner).&lt;/li>
&lt;li style="text-align: justify;">You can follow the matches in realtime. Using WebSockets, the application maintains an opened communication pipe between the browser and the server, so the updates can be informed to the client as soon as they are received from the API&lt;/li>
&lt;/ul>
&lt;h4>Construction&lt;/h4>
&lt;div style="text-align: justify;">You need to have a good starting point to start any new project. For us it was the &lt;a href="https://vaadin.com/start/v10-project-base-spring" rel="noopener noreferrer" target="_blank">Vaadin Base Project with String&lt;/a> starter. By choosing this option, we could benefit of the fact that it already has a tested and working Spring configuration, so it was an easy decision.&lt;/div>
&lt;h4>Responsiveness&lt;/h4>
&lt;div>
&lt;div style="text-align: justify;">We achieved this goal, by starting also a parallel development: &lt;a href="https://vaadin.com/directory/component/app-layout-addon" rel="noopener noreferrer" target="_blank">a new Addon for the Vaadin platform&lt;/a> that helps you to build new applications using a simple skeleton that takes care of building the usual visual elements present in a responsive application: hamburger menu, paper-cards and more.&lt;/div>
&lt;/div>
&lt;div>
&lt;div style="text-align: justify;">Besides that, we also used some CSS techniques as media queries to make the final touches.&lt;/div>
&lt;/div>
&lt;h4>PWA&lt;/h4>
&lt;div>
&lt;div style="text-align: justify;">To allow the application to be added to the home screen of your device, and then showing it as a native application, we generated a PWA manifest, with some properties that you can easily mimic, by using a tool like the &lt;a href="https://app-manifest.firebaseapp.com/" rel="noopener noreferrer" target="_blank">App Manifest Generator&lt;/a>.&lt;/div>
&lt;/div>
&lt;h4>Realtime updates&lt;/h4>
&lt;/div>
&lt;div style="clear: both; text-align: center;">&lt;/div>
&lt;div>
&lt;div style="text-align: justify;">This feature is really easy to implement, given Vaadin’s @Push tecnology, based on websockets. Just adding a simple annotation to your main layout will give life to your bubbling screen.&lt;/div>
&lt;div style="text-align: justify;">You can learn more about this technology in &lt;a href="https://vaadin.com/docs/v10/flow/advanced/tutorial-push-configuration.html" rel="noopener noreferrer" target="_blank">Vaadin’s official documentation&lt;/a>.&lt;/div>
&lt;h4>Roadmap&lt;/h4>
&lt;p>These are the things we would like to implement in the near future:&lt;/p></description></item><item><title>ComboBox lazy loading with REST API in Vaadin 8</title><link>https://www.flowingcode.com/en/combobox-lazy-loading-with-rest-api-in-vaadin-8/</link><pubDate>Mon, 09 Apr 2018 13:55:00 +0000</pubDate><guid>https://www.flowingcode.com/en/combobox-lazy-loading-with-rest-api-in-vaadin-8/</guid><description>&lt;div style="background-color: white; color: #172b4d; letter-spacing: -0.07px; margin-top: 12px; padding: 0px; word-wrap: break-word;">
&lt;div style="letter-spacing: -0.07px; margin-top: 12px; padding: 0px; word-wrap: break-word;">
&lt;div style="letter-spacing: -0.07px; margin-top: 12px; padding: 0px; word-wrap: break-word;">
&lt;div style="clear: both; font-size: 14px; text-align: center;">&lt;img alt="" class="alignnone size-full wp-image-434" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2018/04/ComboBox-lazy-loading-with-REST-API-in-Vaadin-8.png" width="760"/>&lt;/div>
&lt;div>&lt;/div>
&lt;div style="text-align: justify;">&lt;span style="font-family: inherit;">In this post we’ll explore how to access a REST service in order to display items in a ComboBox in Vaadin 8.&lt;/span>&lt;/div>
&lt;/div>
&lt;div style="letter-spacing: -0.07px; margin-top: 12px; padding: 0px; word-wrap: break-word;">
&lt;div style="text-align: justify;">&lt;span style="font-family: inherit;">First, we’ll implement a REST service with Spring Boot, as described &lt;a href="https://spring.io/guides/gs/rest-service" rel="nofollow" style="color: #0052cc; text-decoration-line: none;">here&lt;/a>&lt;/span>&lt;/div>
&lt;/div>
&lt;div style="letter-spacing: -0.07px; margin-top: 12px; padding: 0px; word-wrap: break-word;">
&lt;div style="text-align: justify;">&lt;span style="font-family: inherit;">The web service will be exposed at &lt;a href="http://127.0.0.1:8081/api/countries" rel="nofollow" style="color: #0052cc;">http://127.0.0.1:8081/api/countries&lt;/a>. It will receive no parameters and return an array containing the name of all the countries known by the JVM (the Geography knowledge of the JVM is amazing!).&lt;/span>&lt;/div>
&lt;div style="font-size: 14px;">&lt;/div>
&lt;/div>
&lt;div style="font-size: 14px; letter-spacing: -0.07px; margin: 10px 0px 0px; padding: 0px;">
&lt;pre>&lt;code class="nohighlight">@RestController
public class CountriesController {
&lt;pre>&lt;code>@RequestMapping(&amp;quot;/api/countries&amp;quot;)
public String[] getCountries() {
 return countries().toArray(String[]::new);
} 

private static Stream&amp;amp;lt;String&amp;amp;gt; getCountries() {
 return Stream.of(Locale.getISOCountries())
 .map(countryCode -&amp;amp;gt; new Locale(&amp;quot;&amp;quot;, countryCode))
 .map(locale-&amp;amp;gt;locale.getDisplayCountry(Locale.ENGLISH))
 .sorted();
}
&lt;/code>&lt;/pre>
&lt;p>}&lt;/code>&lt;/pre>&lt;/p></description></item><item><title>Our first year in review</title><link>https://www.flowingcode.com/en/our-first-year-in-review/</link><pubDate>Sun, 01 Apr 2018 15:00:00 +0000</pubDate><guid>https://www.flowingcode.com/en/our-first-year-in-review/</guid><description>&lt;p>&lt;a href="https://4.bp.blogspot.com/-T50yzWa708Y/WsGXxkKQWaI/AAAAAAAAAt0/iEVH4dGDjvEpMteGSqSTGmnla5muauH6QCLcBGAs/s1600/birthday-3021071_640.jpg" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;">&lt;img border="0" height="213" loading="lazy" src="https://4.bp.blogspot.com/-T50yzWa708Y/WsGXxkKQWaI/AAAAAAAAAt0/iEVH4dGDjvEpMteGSqSTGmnla5muauH6QCLcBGAs/s320/birthday-3021071_640.jpg" width="320"/>&lt;/a>&lt;/p>
&lt;div style="text-align: justify;">Today we are celebrating the first birthday of our startup. It’s been a long year filled with a lot of experiences and we want to review some of them:&lt;/div>
&lt;div style="text-align: justify;">After we started to exist, we also started to grow, new developers joined our team, and accepted new challenges.&lt;/div>
&lt;div style="text-align: justify;">We completed all the necessary steps for becoming a full blown company according the laws of our country.&lt;/div>
&lt;div style="text-align: justify;">After searching a lot, we found &lt;a href="https://www.google.com/maps/place/Flowing+Code+S.A./@-31.637337,-60.6980907,17z/data=!3m1!4b1!4m5!3m4!1s0x95b5a995d0249491:0x511f87d928216a5d!8m2!3d-31.637337!4d-60.695902" rel="nofollow noopener noreferrer" target="_blank">our place in the world&lt;/a>, and, of course, &lt;a href="https://www.flowingcode.com/2017/11/main-hq-inauguration-vaadin-talks.html" rel="nofollow noopener noreferrer" target="_blank">we celebrated this achievement&lt;/a>!&lt;/div>
&lt;div style="text-align: justify;">We &lt;a href="https://www.flowingcode.com/#blog" rel="noopener noreferrer" target="_blank">wrote a lot of technical notes&lt;/a>, as a way of sharing the result of our knowledge and experience with the community. We created an &lt;a href="https://github.com/flowingcode" rel="nofollow noopener noreferrer" target="_blank">organization in GitHub&lt;/a> and then started to contribute with &lt;a href="https://github.com/FlowingCode/TwinColGridAddon" rel="nofollow noopener noreferrer" target="_blank">some&lt;/a> &lt;a href="https://github.com/FlowingCode/ErrorWindowAddon" rel="nofollow noopener noreferrer" target="_blank">interesting&lt;/a> &lt;a href="https://github.com/FlowingCode/OrgChartAddon" rel="nofollow noopener noreferrer" target="_blank">projects&lt;/a>. We also created some social media accounts to share &lt;a href="https://www.linkedin.com/company/flowingcode/" rel="nofollow noopener noreferrer" target="_blank">articles&lt;/a>, &lt;a href="https://twitter.com/FlowingCode" rel="nofollow noopener noreferrer" target="_blank">opinions&lt;/a> and &lt;a href="https://www.instagram.com/flowingcode/" rel="nofollow noopener noreferrer" target="_blank">nice pictures&lt;/a> of our &lt;a href="https://www.instagram.com/explore/tags/flowingcodelife/" rel="nofollow noopener noreferrer" target="_blank">#FlowingCodeLife&lt;/a> with the community.&lt;/div>
&lt;div style="text-align: justify;">Because we think that is never too late to incorporate new knowledge, we started a new internal program called Learning Fridays were we acquire concepts regarding the following subjects:&lt;/div>
&lt;ul>
&lt;li>First experience writing a Vaadin 10 Addon&lt;/li>
&lt;li>Bower, WebJars and Vaadin 10&lt;/li>
&lt;li>Spring Reactive&lt;/li>
&lt;li>Domain Driven Architectures&lt;/li>
&lt;li>Modern Web Layout with Flexbox and CSS Grid&lt;/li>
&lt;li>Vaadin’s Flow&lt;/li>
&lt;li>Vaadin’s Drag &amp;amp; Drop&lt;/li>
&lt;li>JavaScript Objects and Prototypes&lt;/li>
&lt;li>Progressive Web Apps&lt;/li>
&lt;li>Scaling Java Applications Through Concurrency&lt;/li>
&lt;li>Machine Learning&lt;/li>
&lt;li>Refactoring to a System of Systems (Micro services)&lt;/li>
&lt;li>TensorFlow&lt;/li>
&lt;li>Microservices with Spring Boot&lt;/li>
&lt;li>Clean Architecture: Patterns, Practices, and Principles&lt;/li>
&lt;/ul>
&lt;p>Finally, we completely defined the internal benefits program of the company and started a &lt;a href="https://www.flowingcode.com/p/join-us.html" rel="nofollow noopener noreferrer" target="_blank">recruiting process&lt;/a> to make our team bigger.&lt;/p></description></item><item><title>Vaadin Widgetset compiling: Tips &amp; Hints</title><link>https://www.flowingcode.com/en/vaadin-widgetset-compiling-tips-hints/</link><pubDate>Fri, 09 Feb 2018 19:36:00 +0000</pubDate><guid>https://www.flowingcode.com/en/vaadin-widgetset-compiling-tips-hints/</guid><description>&lt;div>&lt;img alt="" class="alignnone size-full wp-image-436" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2018/02/Vaadin-Widgetset-compiling_-Tips-Hints.jpg" width="760"/>&lt;/div>
&lt;div style="text-align: justify;">Hi everyone!&lt;/div>
&lt;div style="clear: both; text-align: center;">&lt;/div>
&lt;div style="text-align: justify;">The purpose of this post is enumerating the most common issues when trying to compile the widgetset in Vaadin. But before digging into this, let’s explain a little bit what this compiling thing is about.&lt;/div>
&lt;div style="text-align: justify;">In Vaadin version 6, 7 &amp;amp; 8, the visual components have two important parts.&lt;/div>
&lt;div style="text-align: justify;">The first one is server side, and it’s implemented in classic Java classes that are compiled to JVM bytecode.&lt;/div>
&lt;div style="text-align: justify;">The second part, on the other hand, is the client side code, written mostly in Java and then compiled in Javascript using &lt;a href="http://www.gwtproject.org/" rel="nofollow noopener noreferrer" target="_blank">GWT project&lt;/a>. GWT is basically a Java to Javascript compiler. All of these components (widgets) belong to a set known as widgetset.&lt;/div>
&lt;div style="text-align: justify;">The widgetset compilation process is done by executing the GWT compiler to produce the Javascript code associated to all of the Vaadin components that have server and client side code.&lt;/div>
&lt;div style="text-align: justify;">That being said, let’s go on with those tips!&lt;/div>
&lt;h3>Verify that everything is correctly configured&lt;/h3>
&lt;div style="text-align: justify;">There are a lot of ways to compile the widgetset, in this case we will focus in projects that use maven as the build tool, because is the most commonly tool used for this purpose.&lt;/div>
&lt;div style="text-align: justify;">The &lt;a href="https://github.com/vaadin/maven-plugin" rel="noopener noreferrer" target="_blank">vaadin-maven-plugin&lt;/a> will help you on this process, which is a derivation of the &lt;a href="https://gwt-maven-plugin.github.io/gwt-maven-plugin/" rel="noopener noreferrer" target="_blank">gwt-maven-plugin&lt;/a>.&lt;/div>
&lt;div style="text-align: justify;">Depending on the Vaadin version used, there a are a lot of different configurations, the best thing to do, is to create a small maven project, based on the simplest vaadin maven archetype (com.vaadin:&lt;a href="https://github.com/vaadin/archetypes/tree/master/vaadin-archetype-application" rel="nofollow noopener noreferrer" target="_blank">vaadin-archetype-application&lt;/a>)&lt;/div>
&lt;div style="text-align: justify;">These are the steps for doing this:&lt;/div>
&lt;ol>
&lt;li style="text-align: justify;">Run the command “&lt;span style="font-family: 'courier new' , 'courier' , monospace;">mvn archetype:generate&lt;/span>” from a terminal or command line window&lt;/li>
&lt;li style="text-align: justify;">Enter “&lt;span style="font-family: 'courier new' , 'courier' , monospace;">vaadin&lt;/span>” to filter the list of the available archetypes&lt;/li>
&lt;li style="text-align: justify;">Choose 5 (currently that’s the number of the &lt;span style="font-family: 'courier new' , 'courier' , monospace;">com.vaadin:vaadin-archetype-application&lt;/span> archetype, it could change in the future)&lt;/li>
&lt;li style="text-align: justify;">Choose the number before the Vaadin version that you’re using (ie: 127 -&amp;gt; 7.7.13, etc.)&lt;/li>
&lt;li style="text-align: justify;">Complete the parameters that maven will prompt&lt;/li>
&lt;/ol>
&lt;div>
&lt;div style="text-align: justify;">After that, maven will generate a small project, and if you take a look to the pom.xml file that was generated, you are going to find something like this:&lt;/div>
&lt;/div>
&lt;p>&lt;/p></description></item><item><title>Debugging GWT client side code in Vaadin with Eclipse</title><link>https://www.flowingcode.com/en/debugging-gwt-client-side-code-in-vaadin-with-eclipse/</link><pubDate>Tue, 12 Dec 2017 14:17:00 +0000</pubDate><guid>https://www.flowingcode.com/en/debugging-gwt-client-side-code-in-vaadin-with-eclipse/</guid><description>&lt;div style="clear: both; text-align: center;">&lt;/div>
&lt;div>&lt;img alt="" class="alignnone size-full wp-image-438" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2017/12/Debugging-GWT-client-side-code-in-Vaadin-with-Eclipse.jpg" width="760"/>&lt;/div>
&lt;div style="text-align: justify;">You know, if you’re developing a Vaadin application, it is not necessary to understand how to code client side using GWT, unless you’re building your own custom component, and you need to add some special client-side code. In that case, you are going to realize that whenever you want to test your component, debugging it can be tricky.&lt;/div>
&lt;div style="text-align: justify;">The problem is that client side code is not executed by the JVM, instead that code is going to be executed by the browser, and because of this all of the debugging facilities provided by the Java platform are useless.&lt;/div>
&lt;div style="text-align: justify;">Let me tell you what you need to take into account for being able to successfully debug your code.&lt;/div>
&lt;h3>1 – Modify your .gwt.xml file&lt;/h3>
&lt;p>The first thing you need to do is to modify the &lt;a href="https://vaadin.com/docs/framework/clientside/clientside-module.html" rel="nofollow noopener noreferrer" target="_blank">file that contains all of your widgetset information&lt;/a>, by adding this line inside the tag &lt;span style="font-family: 'courier new' , 'courier' , monospace;">&amp;lt;module/&amp;gt;&lt;/span>:&lt;br/>
&lt;/p></description></item><item><title>Main HQ Inauguration &amp; Vaadin talks</title><link>https://www.flowingcode.com/en/main-hq-inauguration-vaadin-talks/</link><pubDate>Tue, 28 Nov 2017 18:28:00 +0000</pubDate><guid>https://www.flowingcode.com/en/main-hq-inauguration-vaadin-talks/</guid><description>&lt;p>Last Tuesday we organized a little event, that targeted two primary objectives: Let the developers of the surrounding area know us and our installations, and kickstart our planned set of technology speeches, targeted for next year.&lt;br/>We offered a couple of presentations, the first one was related to Vaadin 8, where we gave an overview of the framework, the architecture, and a list of the best new features since Vaadin 7.&lt;br/>Then we presented the new Vaadin 10 platform, explaining the new technologies behind the framework, and the new features available in the developer preview.&lt;br/>After that, we invited everyone to taste some snacks and drinks in the open balcony with a starry sky as a background, talking about new technologies and making some good networking.&lt;br/>Here we share some photos of the event!&lt;/p></description></item><item><title>Implementing Spring Security on a Vaadin application</title><link>https://www.flowingcode.com/en/implementing-spring-security-on-a-vaadin-application/</link><pubDate>Mon, 30 Oct 2017 15:35:00 +0000</pubDate><guid>https://www.flowingcode.com/en/implementing-spring-security-on-a-vaadin-application/</guid><description>&lt;div style="clear: both; text-align: center;">&lt;img alt="" class="alignnone size-full wp-image-440" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2017/10/Implementing-Spring-Security-on-a-Vaadin-application.png" width="760"/>&lt;/div>
&lt;p>Today I’m going to write a little bit about my experience of trying to secure a simple Vaadin application using one of the most popular security frameworks: the security extensions of SpringFramework.&lt;br/>
This post will cover the part of configuring a default setting to make it work, of course after this, there are a lot of things to do in your project to finish implementing this, such as storing and retrieving your user details from the underlying datastore of your choice, choosing the password-hashing algorithm, and so on. But at least you will have an overview of what needs to be done to accomplish this.&lt;/p></description></item><item><title>Vaadin’s Grid editing capabilities</title><link>https://www.flowingcode.com/en/vaadins-grid-editing-capabilities/</link><pubDate>Mon, 30 Oct 2017 14:15:00 +0000</pubDate><guid>https://www.flowingcode.com/en/vaadins-grid-editing-capabilities/</guid><description>&lt;div>&lt;img alt="" class="alignnone size-full wp-image-442" height="340" loading="lazy" src="https://www.flowingcode.com/images/uploads/2017/10/Vaadins-Grid-editing-capabilities.png" width="760"/>&lt;/div>
&lt;div style="text-align: justify;">This time I’d like to talk a little bit about something that I believe is one of the most powerful capabilities of Vaadin Grid component: the editing feature. The default view of the component is a read-only view, of the tabular data loaded in the component. But if you enable the editor, you can visually edit the grid’s cells and change the data that the grid is holding in the server’s memory. Let’s dig in some difficulties to use this feature and how to overcome them.&lt;/div>
&lt;h3>Inline editing&lt;/h3>
&lt;div style="text-align: justify;">If you look at the demo sampler application, you’ll see that the Item Editor, is like a little form that opens whenever you double click a row. That’s different than the previous component in older Vaadin versions (Table). With Table, when you double click on it, the entire row turn into read/write mode, without changing the row into a “mini form” as grid does now. Of course this behavior is configurable, you can disable it just by calling &lt;span style="background-color: white; color: #464440; font-size: 14px;">&lt;span style="font-family: 'courier new' , 'courier' , monospace;">&lt;b>setBuffered(false)&lt;/b>&lt;/span>&lt;/span>&lt;span style="background-color: white; color: #464440; font-family: 'helvetica neue' , 'helvetica' , 'arial' , 'microsoft yahei new' , 'microsoft yahei' , 'simsun' , 'stxihei' , sans-serif; font-size: 14px; font-style: italic;">.&lt;/span>&lt;/div>
&lt;div style="text-align: justify;">Despite of being somehow more visual, this new conduct, could be an undesirable behavior for enterprise applications that happens to use the keyboard a lot, and not depending so much on the mouse, to handle the table or grid.&lt;/div>
&lt;div style="text-align: justify;">If your users desire that kind of grid management, then the &lt;a href="https://vaadin.com/directory#!addon/gridfastnavigation-add-on" rel="noopener noreferrer" target="_blank">Grid Fast Navigation Addon&lt;/a> is for you. It uses the &lt;a href="https://vaadin.com/docs/-/part/framework/gwt/gwt-extension.html" rel="noopener noreferrer" target="_blank">Component Extension feature&lt;/a>, to give the grid a new look, that makes the editing much more easier, and transforms it in a sort of excel style facility.&lt;/div>
&lt;table align="center" cellpadding="0" cellspacing="0" style="margin-left: auto; margin-right: auto; text-align: center;">
&lt;tbody>
&lt;tr>
&lt;td style="text-align: center;">&lt;a href="https://www.flowingcode.com/wp-content/uploads/2017/10/FastNavigation.gif" style="margin-left: auto; margin-right: auto;">&lt;img border="0" loading="lazy" src="https://www.flowingcode.com/images/uploads/2017/10/FastNavigation.gif"/>&lt;/a>&lt;/td>
&lt;/tr>
&lt;tr>
&lt;td style="font-size: 12.8px;">Grid Fast Navigation Addon in action&lt;/td>
&lt;/tr>
&lt;/tbody>
&lt;/table>
&lt;h3>Components&lt;/h3>
&lt;div style="text-align: justify;">Another thing that prevented some developers to stop using Table and starting to use grid, was that you couldn’t use a standard component inside a cell of a Grid. If you wanted to, for example, use checkboxes inside a cell, you had to create a special class, called “renderer”, that should handle the server and the client side of that cell.&lt;/div>
&lt;div style="text-align: justify;">Luckily there are some addons that may help you with that task. The one that stands out is the &lt;a href="https://vaadin.com/directory#!addon/grid-renderers-collection-for-vaadin7" rel="noopener noreferrer" target="_blank">Grid renderes collection&lt;/a> (it exists for Vaadin 7 and 8 versions). It provides a lot of components that let you handle select, checkbox, images, etc.&lt;/div>
&lt;div style="text-align: justify;">In the &lt;a href="https://vaadin.com/blog/-/blogs/vaadin-8-1-beta-is-out" rel="noopener noreferrer" target="_blank">last version of Vaadin&lt;/a>, one of the most interesting features, is a new Renderer, that adds the capability to render a Vaadin component inside a cell of a grid. You can see a preview &lt;a href="https://demo.vaadin.com/sampler/#ui/grids-and-trees/grid/component-renderer" rel="noopener noreferrer" target="_blank">in the sampler application&lt;/a>.&lt;/div>
&lt;div style="text-align: justify;">If you are using Vaadin 7, although, you could use a experimental version of that feature, installing the &lt;a href="https://vaadin.com/directory#!addon/componentrenderer" rel="noopener noreferrer" target="_blank">Component Renderer Addon&lt;/a>.&lt;br/>
Happy coding!&lt;/div>
&lt;div style="text-align: justify;">&lt;/div></description></item></channel></rss>