Within this repository, I will document my evolution as a software engineer. Maintaining a record of our progress is invaluable. When I first embarked on my programming journey, I envisioned a way to reflect on my past decisions. This repository stands as a testament to that vision, a chronicle of my growth in the world of software engineering.
During the weekend I have been studied the Message Brokers theory. I begin with a medium Go tutorial Article, on this tutorial I build a in memory basic implementation, after completing the tutorial I started my own implementation using Java. I used the Socket Java API to create the Socket server, a client can connect to the server, I used the nc linux tool to create the client. When the client connects to the Java server can send messages and the server needs to know how to understand the message. Really interesting how a message broker works under the hood. I have the plan to work on this learning project for some months. My idea is to become a expert on message brokers. I had bast experience working with Kafka and RabbitMQ.
Today I was debugging a problem with the Log42j Java library, for the project the library uses a configuration XML file to configure the logging properties, the problem was I don't know why the application was not showing info logs, I reviewed the library documentation and looks like fine. At the end of the day I replace all the info log statements to error, with this change the applications works with normal behavior. I don't want to learn about this library I prefer use the SE logging library.
Today I started to solve sorting problems, I discovered that I had problems understanding problems with a lot of words, problems that are tricky to understand and you will need first understand the problem, second discover the pattern and third solve the itself problem. Sorting problems for my are good candidates to practice this because most of the sorting problems contains a strange explanation.
Today I attempted to solve two medium LeetCode problems, after a few attempts and spend more than 40 minutes in each problem I couldn't solve them. I needed to view the solutions to understand how solve them and also understand the pattern problems.
Today I solved two medium problems on LeetCode related to arrays and math, also I reviewed the recursion topic again, working with trees I discovered that my recursion knowledge needs to be refreshed and I have a lack of knowledge about this topic.
These days I have been studying about binary search trees, I learned how to implement a BST with Python and the basic operation like inserting, deleting, update and searching for elements. I learned about pre-order and post-order traversals ways to traverse a BST.
Today I learned the concept of bitmasking, bitmasking is the concept of represent something in their binary form, I solved a leet code problem in which I represent an string into a bitmask represent the existence of a character with a number 1 in the bitmask, with this representation was easy found duplicates characters in the string.
Today I have been working on a problem, I solved the problem with a brute force solution, the problem was with the brute force the algorithm exceeded the time limit. So, I will need to investigate how can I improve the efficiency of the algorithm.
Today I studied these two sorting and selection algorithms. Quick sort is one of the most efficient algorithms to sort array elements in the average case, quick sort has a Big O notation of O(N log N)
. For the moment I don't understand how works the quick select algorithm, looks like magic how it's works.
Day 1 - 50 HTML - CSS - Javascript here
Day 51 - 100 Javascript here
Day 101 - 150 Javascript here
Day 151 - 200 Javascript here
Day 201 - 250 Javascript and start React JS here
Day 251 - 300 Javascript - React JS here
Day 301 - 350 Javascript - React JS and start Node JS here
Day 351 - 400 Start learn MERN stack here
Day 401 - 450 MERN stack - Docker - Typescript - TDD here
Day 451 - 500 Object Oriented Programming here
Day 501 - 550 Data Structures and Algorithms here
Day 551 - 600 Java
Day 601 - 650 Java here
Day 651 - 700 Java and Spring Boot here
Day 701 - 750 Java | Spring Boot | MySQL here
Day 751 - 800 Java | Spring Boot | MySQL here
Day 801 - 850 Java | Spring Boot | OCI here
Day 851 - 900 Java | Design Patterns here
Day 901 - 950 Java | Design Patterns here
Day 951 - 1000 Java | Design Patterns here
Day 1001 - 1050 Java | New Job here
Day 1051 - 1100 Java | Python | Cloud Computing here
Day 1101 - 1150 Java | Containers | Cloud Native Development | OpenShift here
Day 1151 - 1200 Java | Containers | Python | Security here
Day 1201 - 1250 Java | Python | Security | English here
Day 1251 - 1300 Java | Python | Security | English | Soft-Skills here
Day 1301 - 1350 Java | Python | Spark | Microservices here
Day 1351 - 1400 Java | Python | Design Patterns | Microservices here
Day 1401 - 1450 Java | Design Patterns | CI/CD here
Day 1451 - 1500 Java | Design Patterns | CI/CD here
Day 1501 - 1550 Java | Python | Data Analytics | CI/CD here
Day 1551 - 1600 Java | Python | Data Analytics | CI/CD here
Day 1601 - 1700 Java | Python | ReactJS | Data Structures and Algorithms here