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
Pull-request #27372
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
Video from my YouTube channel
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, 2021At 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: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: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.
-
# PERFORMED AT WORK
January, 2020After 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
CRM Mobile » Barter.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
CRM Web » Product Consultation.Several companies selling agricultural inputs use this routine as an aid in agility and sales.
- Implementation of
Audio Recording
CRM Web » Technical Visit.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.
- Refactoring of
Barter Exchange
-
# MY FIRST JOB
February, 2018It 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:
- I implemented a
Financial Summary
CRM Web » Reports » Financial Summary - Periodic maintenance of business rules of
Milk Collection
CRM Mobile » Milk Collection - Periodic maintenance of Orders business rules.
- i18n improvements, among other tasks.
- I implemented a
Financial Summary
-
# HOW DID I DISCOVER THE JAVA LANGUAGE?
~ 2017In 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...