During the weekend I continue to reading the Soft Skills to advance your developer career book. I was doing the exercises provided by the book, really I was some aha moments because now I understand some things better. With this new gained knowledge I feel more confident and focused in my developer career. Also I am happy I could reach 1500 programming days.
Today I had a problem trying to run an Spark application with Java 21, looks like that Spark is not compatible with Java 21, you will need to run the application with some predefined configurations. However after add this configurations don't works for me. With Scala and Spark I don't have these type of problems.
Today I continue working in my Java application to read CSV files into buffers inside a ZIP file, then with the buffer data create Spark Dataframe to perform data analytics and transformations, finally saving the result into a new CSV file. I am learning a little about Data Engineering because in my work most of the applications are ETL process. My goal is to use new technologies in these applications to refactor it.
Today I learned how to unzip a ZIP file saving the data into buffers without use a IO disk operation to storage the data. With Scala I created a short application to perform some data analytics in a database, creating a report fetching data and saving the result with Spark in a CSV format. I have the plan to learn Scala and also learn another programming language to learn low-level concepts.
Today I studied IO operations in Java, like reading data from a file into a buffer and then saving the buffer into a file. I want to know more about these operations in a Computer Science general concept. Tomorrow I am planning to continue studying more about this. We have an application that consumes a lot of RAM memory because saves a lot of data in memory, my intention is understand these operation and then look a way to optimized the high-consume.
On the weekend I have been learning Vim following some tutorials after attempt to configure my neovim editor with my own choices, I surrender because configure your neovim editor is hard and require time. However I can learn how to move faster with vim, learning shortcuts and more about vim. I started to read a software developer book to improve my Soft-Skills as a software developer following a recommendation from my company.
With the problem related that I could not continue using Jetbrains IDEs in my current work, I started to look for alternatives like VSC. I know that VSC is the most editor used in the Software Engineer industry, but well I think maybe I will need to attempt to use Neovim. In the past I attempt to use neovim without successful results. This time I take my time to learn vim and don't die in the attempt.
Today I continue studying more about TDD (Test-Driven Development), I created a little code exercise following TDD. Thinking in my future I will need to focus in my current goals like achieve my Red Hat Certification, maybe I will need to stop reading the Clean Craftsmanship book.
Today I have been working in a problem with concurrency in Java. Work with concurrency is always when working with legacy code because is hard to understand.
Today I am facing a problem the VSC code editor, VSC code in my MacBooks drain a lot of battery. Looking in the web other people faced the same problem. I hate this type of problems when you need to change your tools, the bad thing is I will need to change my primary editor because my current work.
On the weekend I continue to reading the Getting Things done book. I started a travel to organize all the things that arrives in my life personal and work. I started applied the methodology creating some projects references. I choice outlook as my main tool for organize my things. With Python I create a Script to send me emails with repetitive content like complete the module 1 for the course X. Python is a great language to crete fast tasks.
Today, I successfully developed a desktop application for validating JSON schemas using Python and PyQt6. I undertook this project with the aim of learning how to create desktop applications. Initially, I considered using Java for the task. However, considering I already had the Python code to create and validate JSON schemas, I opted for Python. The outcome was excellent, and the application fully meets the specified requirements. I am pleased with the result.
Today, I started debugging a Java OutOfMemory error. Our application utilizes 2GB of RAM memory, but it's throwing an OutOfMemory exception because the heap space is full. Tomorrow, I plan to review the resource consumption of the application and pinpoint the part of the code where the memory is being exhausted.
Today I have been studied how works the SFTP protocol. I learned interesting things like the SFTP protocol runs on the SSH protocol, you need first creates a SSH connection and then a SFTP channel is open by the serves that manage the connection. I did a basic diagram to understand the step under a SFTP connection and created a basic golang application to test a SFTP server running in a container.
Today I had a SFTP connection problem, for some reason I cannot connect to a SFTP server using the JSch Java library, I attempt some solutions to fix the issue, but I cannot achieve the connection. The error is strange because I can connect to a SFTP server created with a container. Another application has the same code, use the same library and connect with the same library. Tomorrow I will need to continue investigating more about how an application creates a SFTP connection.
Today I had a problem with a SFTP podman container, I created a SFTP server with a container the problem was the application that needs to read data from the SFTP server does not work. The application cannot find the files inside the container, I attempt to find a solution for the problem, but I cannot fix the issue. In the past when I needed to create SFTP servers in containers, working with docker is more easy, I have not this type of problems.
During the weekend I continued studying and practicing more about TDD methodology. I want to apply TDD for most of the code that I will need to write in the future, code for work and for personal projects.
Today, I've decided to take a break from my Red Hat certification course and instead, devote my time to reading the ' Clean Craftsmanship' book. This book is something I'd started reading as a continuation of the 'Clean Agile' book.
During the week, I have been practicing TDD (Test-Driven Development). What surprised me about this technique is that it has significantly reduced my impostor syndrome as it gives me a thorough understanding of the code. This knowledge not only aids me while fixing a bug but also while adding a new feature, as it allows me to refactor the code efficiently.
Today I studied about the image layers that are generated when you build a container with Podman/Docker. When you start to create a container with a Dockerfile the first instruction FROM choice the base image layer for your container, some instructions like RUN, COPY and ADD creates image layers, these images layers are thin and ephemeral and can be reusable. Also, I learned that the image layers work in Copy-on-write operation.
Today, I continued my study on creating containers. I utilized advanced instructions such as ENV and ARG to customize container creation. By employing different instructions, you can personalize the process of container creation.
Today I began the Red Hat certification path about Cloud-Native developer. In the Cloud-Native developer certification I will need to improve and learn new skills about Java, Quarkus, Containers, Kubernetes and OpenShift technologies. I choose this certification path because I love work with Java and DevOps methodology. The course in large and hard.
Today I have been working in my Spark application to ingest data from a CSV file to a database. I implemented the Abstract Factory pattern to change the database target without clean and write code. Using the Abstract Factory pattern I can write implementations for save the data in different NoSQL databases like Cloudant and CouchDB.
Over the weekend, I've been working on creating a Java application using Spark to ingest data into a database. I've encountered challenges with the volume of data involved - I was attempting to process a batch of two million records, which the database was unable to handle. Consequently, I modified the Java code to split the data into manageable chunks. However, a subsequent issue arose - the application failed after splitting the data, and was only able to upload one million of the two million records.
These days I was working in write Python code create reports in PDF format, I have test data in many databases, so I have been creating an ETL process to extract data from multiple sources, transform in a unique data and finally load the data into CSV files. With Java, I am working in an application to create data database records to apply some query's to these records.
Today I created a basic Java application to test the SLA (Service Level Agreement) for a database. The application works as a cronjob that every minute sends five requests to the database to save documents if an error occurs when saving the data in the database. We catch the error and try again to save the registry again. The application runs in a Docker container in an oracle server to avoid wasting my resources on my laptop.
Recently, I completed reading the Clean Agile book. While going through its pages, I experienced several 'aha' moments, realizing the essence of Agile in my work. It became evident that our current approach to Agile practices was lacking. Prior to reading the book, I didn't fully grasp the concept of Agile. Now, armed with newfound knowledge, I am equipped to apply Agile methodologies effectively in my daily work.
Today I have been continuing reading the Clean Agile book, this book is amazing. I love the next message about practice TDD: We practice TDD because it gives us the courage to keep the code clean and orderly. It gives us the courage to act like professionals.
Today I am studying about the nex Java ecosystem like GrailVM and trying to build a native image. I had some problems with maven about compiling the project, its amazing when you only use Spring Boot for all your projects, how building an application from scratch can be arduous at the start.
Today I began to study the new features that arrive with Java 17 and Java 21, I am not studying about the new Java features, and I have the goal to obtain the Java 17 Developer certification next year.
Today I have been learning how to create a Cronjob application with Kotlin. I will need to use a JVM library to create the cronjob functionality. The application was easy only execute a short task every hour, the idea was created the application to run in a Docker container.
On the weekend I finished reading the Head-First Design Patterns. It took me three months to complete it. During my journey, I learned a lot about design patterns and Java. I really love the Head-First books because they offer a lot of examples, and you can read the book in an interactive way. I learned some new things about Java and Design Patterns, and also gained more knowledge in Software Design principles like SOLID principles.
Today I had been learning more about design patterns. The last of the Head-First Design Patterns book talks about what is a pattern, what is a pattern catalog, etc. I am learning general concepts about Design Patterns. Also, I started a new book lecture, this time I choose the Clean Agile book, I am always trying to read two books at the same time, one book related a code (read the book sitting in front of my laptop) and other book that I can read in any place like the commute to my work.
Today I completed my study of the MVC design pattern. Now, I understand that the MVC pattern is intricately woven with other patterns such as Strategy, Observer, and Adapter. I recall studying the MVC pattern during my exploration of Angular. It fascinated me because Angular's framework incorporates this pattern at its core.
Today I studied the Model-View-Controller (MVC) design pattern. Now I know that the MVC pattern is composed of other patterns like the Observer and Strategy patterns. I am building a Java Swing application following a book tutorial to understand the MVC pattern. Learning about Java Swing is a pleasure for me because it is a great technology to create desktop applications. Maybe when I finish this book, I will learn more about Java Swing.
Today I am creating a basic application following a tutorial. The application implements six different design patterns like Adapter and Observer. My next thing to study is MVC(Model View Controller) design pattern; I hope that this time studying the MVC pattern will be less difficult that the other times and I can understand in a better way.
These days I continue to read the Head-First Design Patterns book. The Proxy pattern is a great tool for our design box; I remember in the past that I could see some proxy implementations, but I don't know that this type of implementing the code has a name. Basic description: The Proxy pattern protects the access to an object and next surrogate the calls to the real object.