Gabriel Márquez Blog

Welcome to the Gabriel Márquez Blog! 🎉

I’m seasoned Full Stack Developer with 10+ years of experience building scalable, secure, and maintainable software.

I write about Java, JavaScript, Spring, Docker, and more.

Learn about backend development, DevOps, and clean code practices.

Feel free to reach out

👇

Just an ai generated cover for the blogpost

AI and Code Generation Tools: Promise and Pitfalls

AI and Code Generation Tools: Promise and Pitfalls Artificial Intelligence has revolutionized many aspects of software development, particularly in code generation. Tools like ChatGPT, Claude, and specialized platforms such as Bolt.new promise to simplify development by generating code, facilitating prototyping, and even creating fully functional systems in the cloud without requiring traditional development environments. While these technologies are transformative in many ways, they come with significant limitations that must be addressed before they can fully replace traditional software development practices. This article explores the strengths, weaknesses, and implications of these tools, particularly in the context of scalability, maintainability, and practical applications in large-scale projects. ...

February 5, 2025 · 5 min · Gabriel Márquez
Just an ai generated cover for the blogpost

Speeding Up Java Applications with Caffeine: A Comprehensive Guide

Caching is like coffee for your Java application—it keeps things running faster and smoother. And when it comes to caching libraries, Caffeine is the double espresso of the Java world. Built to replace Guava Cache, Caffeine is a high-performance, flexible caching solution with a Java-friendly API and thoughtful design choices. In this blog post, we’ll dive into the nuts and bolts of Caffeine and show you how to configure it with practical examples. ...

February 4, 2025 · 4 min · Gabriel Márquez
Just an ai generated cover for the blogpost

Asynchronous Methods in Spring Boot Using @Async

In modern backend development, asynchronous processing plays a crucial role in improving performance and responsiveness. Spring Boot provides a powerful mechanism for executing tasks asynchronously using the @Async annotation. This blog post will explore how to use @Async, its configuration, best practices, and some real-world use cases. What is @Async in Spring Boot? The @Async annotation in Spring allows methods to run asynchronously in a separate thread, enabling non-blocking execution. This is particularly useful when handling long-running tasks, such as sending emails, making API calls, or processing large amounts of data without blocking the main thread. ...

February 3, 2025 · 4 min · Gabriel Márquez
Just an ai generated cover for the blogpost

Aspect-Oriented Programming in Java: A Real-World Example with Conditional Cron Jobs

Imagine this: Your Java application is set up to run scheduled tasks at specific intervals, but there’s a catch—during maintenance mode, you want to temporarily disable these jobs. Modifying each job individually to check for a maintenance flag can be tedious, repetitive, and error-prone. This is where Aspect-Oriented Programming (AOP) comes to the rescue. In this post, we’ll dive into Aspect-Oriented Programming in Java and explore how you can use it to conditionally run cron jobs based on a property, such as a “maintenance mode” flag. Let’s start by understanding AOP and then dissect a practical example. ...

February 2, 2025 · 4 min · Gabriel Márquez
Just an ai generated cover for the blogpost

Demystifying Aspect-Oriented Programming (AOP) in Java: A Practical Introduction

If you’ve been coding in Java for a while, you’ve likely faced a situation where you needed to perform cross-cutting tasks—like logging, caching, or security checks—across multiple parts of your application. Wouldn’t it be nice to handle these tasks elegantly, without cluttering your core business logic? Enter Aspect-Oriented Programming (AOP). In this post, we’ll dive into the basics of AOP in Java and show you how to use it with a practical example: automatically invalidating a cache after saving a user. Let’s go! ...

February 1, 2025 · 4 min · Gabriel Márquez
Just an ai generated cover for the blogpost

Parsing Logs with Regex in VS Code: The Ultimate Guide

Logs are the unsung heroes of debugging, offering crucial insights into your applications. But when you’re faced with a massive log file, finding the information you need can feel like searching for a needle in a haystack. That’s where regular expressions (regex) in Visual Studio Code (VS Code) come to the rescue. In this guide, you’ll learn how to use regex in VS Code to efficiently parse, filter, and reformat logs. With step-by-step instructions and practical examples, you’ll master this essential skill and save hours of manual work. ...

January 11, 2025 · 3 min · Gabriel Márquez
Just an ai generated cover for the blogpost

How Online Courses Changed My Life Forever: $15 That Made Me Thousands

Have you ever made a small decision that ended up having a massive impact on your life? For me, that decision was investing $15 in an online course. At the time, I had no idea that this modest investment would lead to doubling my income within a year, landing exciting new job opportunities, and even securing freelance gigs. This is the story of how one online course not only transformed my career but also changed my life forever. ...

January 9, 2025 · 4 min · Gabriel Márquez
Just an ai generated cover for the blogpost

How to setup your Mac for Software Development (Java and React)

Congratulations on your new Mac! Whether you’re building robust backends in Java or crafting sleek UIs with React, getting your development environment right is the key to success. This guide will help you set up your Mac, step-by-step, turning it into a powerhouse for Java and React programming. Let’s dive in! Step 1: Homebrew – The Foundation of macOS Development Homebrew is your Swiss army knife for macOS. It’s a package manager that simplifies installing and managing software. ...

January 5, 2025 · 4 min · Gabriel Márquez
Just an ai generated cover for the blogpost

Mastering Multiple SSH Keys

Managing multiple SSH keys can seem overwhelming at first, especially if you’re working across various projects that require different keys for secure access. Without proper configuration, switching between keys can lead to frustrating errors. This guide provides a clear and practical approach to handling multiple SSH keys effectively, ensuring seamless workflows across repositories. Why Manage Multiple SSH Keys? Using multiple SSH keys is common for developers working on: Personal projects. Employer repositories. Client repositories (freelance work). Each organization might require a unique SSH key for security and access control, and managing these keys properly ensures smooth sailing between repositories. ...

January 2, 2025 · 3 min · Gabriel Márquez
Just an ai generated cover for the blogpost

What is a Jumpbox, and How to Use it in AWS?

What’s a Jumpbox? A jumpbox (aka bastion host) is a secure server designed to act as a gateway for accessing resources in a private network. Think of it as your golden bridge—without it, you wouldn’t reach the other side. Key Features of a Jumpbox: Enhanced Security: It limits SSH or RDP access to a single entry point, reducing your attack surface. Access Control: Only authorized users can connect, often via specific IP whitelisting or VPN. Auditing: All actions passing through the jumpbox can be logged for accountability. In AWS, jumpboxes are typically EC2 instances with tight security group rules that allow inbound connections from your IP and outbound connections to resources like RDS instances. ...

December 31, 2024 · 3 min · Gabriel Márquez