Blog Layout

Week 15: Reflections on Learning and Living in Colombia

Alexander Clemens • May 29, 2023

Share

Welcome to week 15 of the Hack Reactor documentation. I had many new learnings this week in Hack Reactor and outside Hack Reactor. In addition, our friend Andres Ospina visited us from Medellín, Colombia, and saw Val and me on Tuesday evening. We went to the Santa Rosa de Cabal hot springs, about a 20-minute drive outside of Santa Rosa De Cabal, and spent the evening soaking in a hot spring next to a beautiful waterfall for about four hours. The hot springs are open till midnight, and I can see us getting a car in the future and going there at least once or twice a week in the evening to relax.


Termales Santa Rosa de Cabal - termales.com.co

En termales Santa Rosa de Cabal podrás disfrutar de comodidades exclusivas mientras te cuidamos por medio de un…

termales.com.co


My other friend Raz who is from Scotland and lives in Medellin, spent Friday and Saturday here in Santa Rosa. We showed him around, took him to eat, and introduced him to Colombian culture! We spoke on numerous topics about the culture here, and he told us that this was his first time sitting down to eat with a Colombian family, my girlfriend, myself, and her parents. He enjoyed coming here and was interested in the much lower cost of living and highly affordable properties compared to Medllín.


Earlier this week, Santa Rosa De Cabal was without natural gas because one of the local gas companies had to turn off the gas line that provides over 300,000 residents with natural gas. This was due to an unusual heat reading where the gas line is located. Santa Rosa De Cabal was affected for several days. The entire town was without natural gas, involving all restaurants and inhabitants. We couldn’t cook on the stovetop because most things are just natural gas, which is cheaper. If you had an electric stove or a propane tank, you would be able to cook. This was also the case for restaurants that didn’t have propane tanks. We had to find a restaurant that had the means to cook. We went to celebrate my girlfriend’s recent promotion and had to spend time walking around and asking the staff of restaurants if they had gas to cook with.


Thankfully, after almost two days, natural gas was returned. However, I am still determining what will occur over the next several weeks if they must stop natural gas again. I found out through this process that many taxi drivers are using natural gas because it’s a more cost-effective alternative than just using regular vehicle gas. But as you can imagine, many taxi drivers get scared and frustrated when natural gas is shut off. I read one article that said 70% of taxi drivers switch their cars to natural gas because it’s more cost-effective for them.


Limitan suministro de gas en suroccidente del país por anomalía en un volcán

Los departamentos de Caldas, Tolima, Risaralda, Quindío, Valle del Cauca y Cauca en el suroccidente del país enfrentan…

www.elheraldo.co


We handled the situation with adaptability and perspective. Like everything, we find ways to adapt, and it’s just part of the living process. No matter where you are in the world, things will always happen. Infrastructure is never constant. The day infrastructure is built, it’s already depreciating. This isn’t necessarily the cause, but no one could say it’s not declining because it’s on top of the earth. The earth is constantly changing, evolving, and shifting, whether it’s an earthquake or, in this case, tied to a volcano.


Now, let’s get into this week’s learnings


React Redux

I’ve realized that React Redux libraries intend to manage the state in React applications. It offers a centralized and predictable solution for handling complex conditions. Redux simplifies the development and maintenance of large-scale React applications by keeping all application state in a single store and modifying it through dispatched actions. Moreover, Redux allows middleware to be applied, which can be utilized for tasks such as error handling, logging, or asynchronous data fetching. With components able to subscribe to the store and receive updates when the state changes, sharing the state between multiple components has become a breeze. React Redux has proven an indispensable tool for managing conditions in larger React apps.


When should you use React Redux?

I have discovered that React Redux is a valuable tool for large-scale React applications with complex state management requirements. This library can help share the state between multiple components and handle asynchronous data fetching. Additionally, Redux can improve debugging and testing processes since it provides predictable state changes that can be easily traced through actions and reducers.


During my research, I learned about the Redux Toolkit, a collection of tools and utilities for using Redux. One of its features is creating Redux slices, which are smaller pieces of the Redux store that handle a specific part of the state. The Redux Toolkit also simplifies creating a Redux store with middleware and other configuration options through the configure store function. The Redux Toolkit is designed to make writing Redux code more straightforward and faster, with fewer lines of code and less boilerplate. You can find more information about the Redux Toolkit in the official documentation, like all good libraries and frameworks😁


Bubble Sort

I have learned that bubble sort is a basic sorting algorithm that involves swapping adjacent elements if they are not in the correct order. This process causes more minor details to “bubble” up to the top of the list as the algorithm runs. While bubble sort is straightforward to comprehend and execute, it could be more efficient for sorting large lists. Therefore, it is mainly used for educational purposes or when the list is already mostly sorted.


Merge Sort

I recently learned about merge sort, a sorting algorithm that breaks down the input array into smaller subarrays sorts them, and then merges them back together. This approach is highly effective for handling large lists and is widely utilized in computer science.


WebSockets

I learned that WebSockets is a protocol that enables real-time communication between a client and a server. With WebSockets, a client can establish a persistent connection to a server and communicate with it bi-directionally. This means the server can push data to the client as soon as it becomes available without the client requesting it. WebSockets are ideal for applications that require real-time updates, such as chat applications or online games.


However, I also discovered that WebSockets can have higher latency than traditional HTTP requests and require a persistent connection, which can be resource-intensive for both the client and server. Additionally, some proxies and firewalls may not support WebSockets, which can limit their usefulness in specific environments.


Disadvantages to WebSockets

I’ve researched WebSockets and found that certain drawbacks must be considered before implementing them. One significant disadvantage is the issue of security. Since WebSockets allow bidirectional communication, securing connections can be more challenging than standard HTTP requests. Moreover, WebSocket connections are kept open constantly, which can cause performance problems and make it hard to scale applications. Lastly, not all browsers support WebSockets, which can limit their usage in some environments. Despite these drawbacks, WebSockets are still a potent tool for developing real-time applications. To mitigate these issues, it’s crucial to follow security best practices like encryption and authentication, use a WebSocket library that can aid in developing secure and efficient WebSocket applications, and thoroughly test the app in all browsers to ensure compatibility.


Alternatives to a Websocket

There are several alternatives to WebSockets that you can consider, including:


Server-Sent Events (SSE): This simple protocol allows a server to send data to a client without the client having to request it. SSE can be useful for applications that need to send updates to the client in real-time, such as a chat application or a stock ticker.

Long polling: This technique allows you to keep a connection open to a server and wait for data to be available. Long polling can be helpful for applications that need to send updates to the client, but only occasionally, such as a weather application.

MQTT: This is a lightweight protocol that is designed for machine-to-machine communication. It is often used in IoT applications, such as smart home devices.

WebRTC: This is a technology that allows browsers to communicate with each other without the need for a server. WebRTC can be helpful for applications that need to send real-time audio or video data, such as a video chat application.

The best alternative to WebSockets will depend on the specific needs of your application. SSE or WebSockets are good options if you need to send updates to the client in real-time. Long polling may be a better option if you only need to send updates occasionally. MQTT may be a good choice if you are developing an IoT application. And if you need to send real-time audio or video data, then WebRTC may be the best option.


Can a server establish a WebSocket connection to a client?

In the WebSocket protocol, the client initiates the connection by sending a handshake request to the server. The server responds with a handshake response, and the connection is established. Once established, both the client and the server can send messages to each other.


Although it is possible to simulate a server-initiated WebSocket connection using workarounds, such as creating a long-polling request, this is not a genuine WebSocket connection. A long-polling request keeps the link open until the server has some data to send. At this point, the client can poll the server periodically to check for new data. However, this method can be less efficient than a real WebSocket connection.


Articles that I read this week

Nervous ChatGPT Will Steal Your Programming Job?

A Guide to Coping with AI for Anxious Software Developers

levelup.gitconnected.com


The article above intrigued me after first learning about 

Adam Hughes, who discusses the potential impact of AI technology on the job market for software developers. His perspective is on ChatGPT and that this technology could decrease demand for human coders. But after a previous article that outlines the complete loss of demand for software engineers, this article shares his perspective on how developers/engineers are processing the anxiety and stress that comes from talk and news in the industry portraying the end of coders because of this technology. The article notes that while AI can automate some aspects of coding, it is likely to replace human programmers partially. It also emphasizes the importance of developing new skills and keeping up with technological advancements to remain competitive in the job market. I’m grateful for Adam taking the time to reply to my lengthy commitment, and I will follow up with him and his writings. I appreciate individuals who formulate their thoughts and present them for the public to learn and discuss.


ChatGPT spells the end of coding as we know it

When ChatGPT was released to the world in November, most of us marveled at its ability to write rap lyrics and cover…

www.businessinsider.com


This Business Insider article above is where I first learned of the article Adam had written on the doom for coders/programmers; This article discusses the potential impact of AI technology on the job market for software developers. Listening to all sides of a topic with profound implications is essential. In this case, we are talking about society and humanity radically changing. No one can predict the future, and history has many examples of incorrect predictions. At the same time, with data and knowing that history does react, many signals show that the world is in store for a change of life habits for being a human in the 21st century.


Two Informational Interviews this week

I chatted with Maximilian Kwok, founder of JobFit. This platform provides free company research for skilled operators from non-traditional backgrounds to showcase their value in a way that makes hiring managers hire them on the spot.


We discussed the importance of understanding the hiring manager’s needs and creating content that addresses those needs. We also discussed the similarities between building a pitch deck and a resume/cover letter and how to utilize tools best to communicate with investors and hiring managers.


Maximilian suggested that graduates should communicate their personal and capsule projects in a way that resonates with the hiring manager, such as by integrating tech stack elements into their experience section, creating solutions to the hiring manager’s problems, and framing their projects as if they are launching an app in the App Store. He also suggested networking by motivating the person asking for help, such as by offering a solution to a problem based on the company’s characteristics. We also discussed the importance of solving problems to get hired, the post-bootcamp depression, and Max’s upcoming program to help bootcamp graduates.


Here is my recommendation for Max that I wrote about him on LinkedIn:


"During my coaching session with Max, we explored the nuances and benefits of understanding the hiring manager’s perspective within the software engineering industry. Max’s insights were invaluable as he emphasized the importance of frequent and open communication channels to address current and relevant business challenges. He provided practical solutions that can be easily implemented.


As a passionate business owner with years of experience, Max is dedicated to helping boot camp graduates develop the communication skills they need to excel in the ever-evolving tech industry. He is committed to ensuring that they are well-prepared for the opportunities and challenges that lie ahead. Max’s company is unique in that it provides value upfront, evident in its list of hiring companies and the current problems they need to solve. This empowering perspective in the business world shows that finding solutions to individuals’ problems is the language of “I will hire you” or “I will pay for your product or service.


I highly recommend Max for his practical insights, dedication to helping others succeed, and unique perspective in the tech industry and coding bootcamp graduates."


Max’s Linkedin Profile to connect


My other informational interview this week was with Joyce Ma on the topic of coding assessments and her experience with them in the past and currently, in additional helping to share her service when viewing work opportunities and what are good leads on Linkedin for assessing if a Hiring team manager is active on Linkedin and what is a good sign for when to send a direct message with a high likelihood of response. Here is Joyce’s LinkedIn. She also shared with me a company gaining more usage as a technical assessment provider for companies hiring software engineers called WovenTeams.


Technical Interview Software for Developers | Woven Teams

Our technical assessment is the only platform to evaluate the whole candidate and provide same-day feedback and results…

www.woventeams.com


Learning how to customize the Chrome DevTools

How to Customize Your Chrome DevTools to Have a Material Design Look

When you spend most of your working time on a computer, it’s essential to be able to customize visuals and color…

xanderclemens.medium.com


Thoughts going into next week

To sign off for this week, I am officially getting baptized in the Catholic Church. My name will be written somewhere, and the documentation will be entered into a database to show that I have been baptized. This by no means represents my beliefs regarding religion, but it’s more about being on good terms with my family here in Colombia. Nonetheless, I always find value in activities and experiences in my life, and I always look for the good in things.


As Jocko Willink, the former US Navy SEAL Commander says: “Good.” It’s an excellent time to gain a different perspective, meet individuals you wouldn’t usually meet, and have conversations with others or yourself. Next week, I’ll have some documentation and video footage showing that process. My girlfriend’s father, Orlando, may be able to sing at the event. Currently, it’s just another kid and me, as generally, for babies, this takes place within the first 40 days of life to get baptized. Nonetheless, it’s a unique experience to share.


Tomorrow, we’re going with some friends to a small town where the regional coffee of Colombia is called Silento. I’m looking forward to going as it will be my first time, and our team will be looking to develop more of the front end for our project. I’m also constantly learning and staying consistent with good, healthy habits.


My girlfriend and I celebrated a year of knowing each other and nine months together as a couple. We’re looking forward to another year of getting to know each other and another nine months together.


Thank you so much for reading, and if you have any comments, questions, or perspectives, please send them my way. Xander, the software engineer, is signing off for now.


Ready to work with Xander Clemens?

I'd be happy to discuss your project and how we can work together to create unique, fun and engaging content.

Go ahead and click here to be taken to my business service page and see what I can do for you. Book a call with me now. Looking forward to chatting soon!

Book A Call
Share by: