Red Hat Logo

Hello, my name is Fernando Comunello.

And here's my IT Timeline:

follow from the beginning
  • # AN OPEN-SOURCE CONTRIBUTION

    2022 - now By specializing in Jakarta EE and MicroProfile, I decided to invest my time in Quarkus — a supersonic and subatomic framework of Red Hat, very well optimized for the JVM, and also for GraalVM, with the native compilation thing. It was then that I made my first contribution
    Merged Quarkus PR #27372: Improve live reload experience of external artifacts on dev mode
    Pull-request #27372
    to the Quarkus project, in which 1.348 lines of code were added on the core module.

    I shipped new file manager implementations that extend the default JDK implementations and integrate with the native compiler interface of JDK, this interface is important for Quarkus dev mode (comment on dev mode in this video
    Youtube Video: Learn JDBC and JTA using Quarkus and Jakarta EE!
    Video from my YouTube channel
    ) — this is one of the features where the framework shines. The main purpose of this PR was to separate the static classpath from the external classpath and it's dependencies, this class loading approach is more efficient than initializing a new file manager for each compilation task, as only the reloadable part is reset separately from the others, thus maintaining the classpaths cache and re-using the objects, which reduces the overhead between re-compilations.

    As a result, companies that already used or who intend to use the framework in production, are able to integrate external projects that contain business rules together with the API and web applications developed with Quarkus, acting as a shared kernel that helps reduce of code duplication between business layers, this integration support also works with other languages interoperable with the JVM such as Kotlin, Kotlin Multiplatform and Scala, all without having to change context or restart developer mode with each change to the project or external lib, maintaining an automated and practically instantaneous feedback loop between the moment of code change and execution.

    "The live coding fast feedback loop was very useful when developing with Quarkus. Although fast startup was nice, it wasn’t critical since our apps are long-running, but during development, as we tweaked our APIs, being able to immediately re-test saved us a ton of development time."
    - Lead Developer at Adoptium Technical Steering Committee

  • # BIG CHALLENGES PHASE

    January - December, 2021

    At this stage, I assumed technical responsibilities, carrying out several performance improvements and helping new developers on the team.

    A major impact improvement

    One of these improvements was in the processing and synchronization of data for offline usage of the CRM, This routine moved a large volume of data extracted from databases.

    Before improvements: GlassFish JVM pid graph before applying improvements

    When executing the synchronization steps that aggregated the data, it was noticed a "Stop the World GC" event in which the JVM Garbage Collector allocated a lot of memory by pausing threads of the application to be able to deallocate later. Finding a solution to such a problem is not usually simple, it is even more complicated if application monitoring is not performed frequently.

    After improvements: GlassFish JVM pid graph after applying improvements

    After the improvements, it can be seen that the GC started to act properly, no big peaks and with normalized memory allocation! The improvement was made through the migration to a structure that allowed to divide operations of I/O in multiple batches, stacking and consuming few records per iteration. This is feasible using the JDBC Fetch Size technique by consuming a database cursor, sometimes this approach can outperform of paged readings, as the execution plan is generated only once and not N times.

    I also worked on the front line refactoring PL/SQL procedures, always seeking to maximize performance, reduce resource consumption and minimize N+1 problems by analyzing execution plans and logs, decreasing the number of roundtrips between the application and the RDBMS. Finally, the main gain was in the day-to-day lives of users, who no longer had to wait several minutes or even half an hour to synchronize the aggregated data, but just a few seconds in some cases, considerably decreasing the chances of failures in the process.

    My first article about Jakarta EE

    After much in-depth study of application servers, especially JBoss and WildFly, I published my first article on the subject: Getting Started with WildFly/JBoss Application Server and Jakarta EE

    Understanding the specification Jakarta EE — formerly known as Java EE — it was essential for my evolution, since not all developers understand that implementation is a different concept than the specification, That's why they often end up competing with resources that the application server already has. By understanding this small concept, the application would be portable between different application servers, with JBoss EAP and Glassfish (acquired by Payara company) examples of these servers, thus eliminating the vendor lock-in.

    Red Hat JBoss application server logo Oracle GlassFish application server logo
  • # PERFORMED AT WORK

    January, 2020

    After I graduated from high school, my employment contract passed for full time, working in person at the company until then. And in the first quarter of the year I started working remotely, solving the most varied problems, developing improvements and new features.

    Main works:
    • Refactoring of Barter Exchange
      Tela de Barter do aplicativo de CRM da VIASOFT
      CRM Mobile » Barter.
      system.

      The purpose of the Barter is to exchange agricultural materials for a portion of future production, using the materaisl as a guarantee of payment. The changes included in the refactoring were of great importance for the clients.

    • Implementation of a Products Price Aggregator
      VIASOFT CRM Product Inquiry Screen
      CRM Web » Product Consultation.
      .

      Several companies selling agricultural inputs use this routine as an aid in agility and sales.

    • Implementation of Audio Recording
      Demonstration of audio recording in Technical Visits in VIASOFT CRM
      CRM Web » Technical Visit.
      as attachments of technical visits made in farms.

      It was a big challenge in which I had to implement a communication interface via JNI to execute C instructions in the Android JVM - thus making it possible the encode/decode of audios in .mp3 format with compression through the LAME Project.


  • # MY FIRST JOB

    February, 2018

    It was then that I got my first work experience as a Java web/mobile programmer at VIASOFT when I was 15 years old, I started with the development of solutions into the agribusiness sector while balancing school and work part time.

    I had the great opportunity to learn different technologies when joining the team CRM | Agrotitan after doing the company e-learnings, delving deeper not only into Java SE 7/8 but also into the specification Java EE 7 using the application server GlassFish, the Spring Framework and Hibernate ORM — and beyond HTML, CSS and JavaScript, I also learned server-side rendering (SSR) using JSF and JSP

    I also had my first contact with mobile programming using Java and Android API, working on development of a CRM application whose main requirement was operating completely offline so that farmers could save your work even if they are far away from an internet network, it was a challenging requirement as it relies on the data being synchronized with the online RDBMS (Oracle , Firebird) and offline (SQLite).

    Samples of my work carried at the company:

  • # HOW DID I DISCOVER THE JAVA LANGUAGE?

    ~ 2017

    In mid-2017, at the age of 14, I started, out of curiosity, researching ways to develop my own Spigot Plugins to a Minecraft server so that I could offer an exclusive gaming experience to the players.

    As soon as I discovered that plugins were written in Java, I became interested in the language and decided to spend a few months studying Java and SQL, so I could develop my own plugins that depended on storing and querying data of in-game players. For someone who only knew how to configure plugins in YAML downloaded from the Spigot repository would certainly not be a simple task, taking into account that I had not yet had contact with any programming language at that time I only had contact with HTML & CSS, which I learned in training made on Saturdays by UTFPR, the region's federal university.

    So I decided to move on looking for Java trainings and I found these Java SE 7 video lessons from XTI university on YouTube, I used to practice and attend classes every day as soon as I got home from school. The official Java's tutorial was also of great importance in my studies. In addition, I took a SQL fundamentals course from Softblue, which also provided advanced Java training at the time.

    However to make it possible to keep the server online 24/7 with the plugins I was developing, it was necessary to maintain a monthly contract with a Linux VPS service, then I realized that perhaps it would be time to find a job as a trainee...

    Minecraft: Java Edition Launcher