<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: pabli44</title>
    <description>The latest articles on DEV Community by pabli44 (@pabli44).</description>
    <link>https://dev.to/pabli44</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F401562%2Ff6b8e437-e741-4d15-8cc3-dc1cbb203cd0.jpg</url>
      <title>DEV Community: pabli44</title>
      <link>https://dev.to/pabli44</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pabli44"/>
    <language>en</language>
    <item>
      <title>Cloud Scheduler Magic!!</title>
      <dc:creator>pabli44</dc:creator>
      <pubDate>Tue, 21 Apr 2026 21:56:27 +0000</pubDate>
      <link>https://dev.to/pabli44/cloud-scheduler-magic-2ndk</link>
      <guid>https://dev.to/pabli44/cloud-scheduler-magic-2ndk</guid>
      <description>&lt;p&gt;🚀 Stop Hardcoding Your Cron Jobs: Master GCP Cloud Scheduler&lt;br&gt;
Are you still managing scheduled tasks inside your application logic? It’s time to level up.&lt;/p&gt;

&lt;p&gt;One of the most powerful architectural shifts you can make in Google Cloud Platform (GCP) is separating the execution logic from the scheduling frequency. That’s exactly where Cloud Scheduler shines.&lt;/p&gt;

&lt;p&gt;Why use Cloud Scheduler?&lt;br&gt;
Instead of having a service constantly running just to check if "it's time" to do something, Cloud Scheduler acts as a fully managed, enterprise-grade cron job service. It allows you to:&lt;/p&gt;

&lt;p&gt;Decouple your architecture: Your code doesn't need to know when it should run; it only needs to know what to do when called.&lt;/p&gt;

&lt;p&gt;Increase Reliability: No more worrying about a single server going down and missing a critical task. GCP handles the retries and the uptime.&lt;/p&gt;

&lt;p&gt;Simplify Maintenance: Need to change a task from "every hour" to "every 5 minutes"? Change it in the UI or via CLI without a single line of code deployment.&lt;/p&gt;

&lt;p&gt;The Power Trio: Scheduler + Pub/Sub&lt;br&gt;
To build a truly resilient automated pipeline, you’ll usually see these three working together:&lt;/p&gt;

&lt;p&gt;Cloud Scheduler: The "Alarm Clock" that triggers the event.&lt;/p&gt;

&lt;p&gt;Pub/Sub Topics: The "Post Office" that carries the message to the right destination.&lt;/p&gt;

&lt;p&gt;Subscriptions/Functions: The "Worker" that receives the message and executes the task (Cloud Functions, Cloud Run, or App Engine).&lt;br&gt;
&lt;br&gt;&lt;br&gt;
📚 Dive Deeper into the Documentation:&lt;br&gt;
Pub/Sub Topics: &lt;a href="https://docs.cloud.google.com/pubsub/docs/create-topic" rel="noopener noreferrer"&gt;Create and manage topics&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Subscriptions: &lt;a href="https://docs.cloud.google.com/pubsub/docs/subscription-overview" rel="noopener noreferrer"&gt;How to deliver your messages&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cloud Scheduler: &lt;a href="https://docs.cloud.google.com/scheduler/docs" rel="noopener noreferrer"&gt;Set up your first job&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
You know, enjoy learning!!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>productivity</category>
      <category>automation</category>
    </item>
    <item>
      <title>RAM optimization on Ubuntu</title>
      <dc:creator>pabli44</dc:creator>
      <pubDate>Sat, 11 Apr 2026 06:31:44 +0000</pubDate>
      <link>https://dev.to/pabli44/ram-optimization-on-ubuntu-2k23</link>
      <guid>https://dev.to/pabli44/ram-optimization-on-ubuntu-2k23</guid>
      <description>&lt;p&gt;&lt;strong&gt;SWAP MEMORY&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;SWAP is a space on your hard drive (SSD/HDD) used as "virtual memory." While it prevents the system from crashing when RAM is full, it is significantly slower than physical RAM.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Swappiness Adjustment (RAM Priority)&lt;/strong&gt;&lt;br&gt;
We tuned the kernel's swappiness parameter to ensure Ubuntu prioritizes your physical RAM over the slower disk-based Swap.&lt;/p&gt;

&lt;p&gt;Temporary Change (Immediate):&lt;br&gt;
sudo sysctl vm.swappiness=10&lt;/p&gt;

&lt;p&gt;Permanent Configuration:&lt;br&gt;
Add vm.swappiness=10 to the end of /etc/sysctl.conf.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Technical Explanation&lt;/em&gt;&lt;/strong&gt;&lt;br&gt;
By default, Linux often has a high swappiness value (usually 60). This forces the system to move data to the Swap partition even when there is plenty of RAM available.&lt;/p&gt;

&lt;p&gt;For a workstation with 20 GB of RAM, this is inefficient. Using Swap frequently causes "I/O Wait", where the CPU wastes cycles waiting for the disk to respond. By lowering the value to 10, we ensure:&lt;/p&gt;

&lt;p&gt;Better RAM Utilization: Your system keeps active processes (like IntelliJ and Chrome) in high-speed physical memory.&lt;/p&gt;

&lt;p&gt;Reduced Latency: You eliminate the "stuttering" or lag when switching between windows because the CPU no longer has to retrieve data from the SSD's Swap space.&lt;/p&gt;

&lt;p&gt;Optimal Resource Management: The disk is only used as a last resort when the physical RAM is truly exhausted.&lt;/p&gt;

&lt;p&gt;This configuration essentially unlocks the full potential of your hardware upgrade, ensuring a "buttery smooth" experience even under heavy dev workloads.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;
You know, enjoy learning!!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>productivity</category>
      <category>discuss</category>
      <category>learning</category>
    </item>
    <item>
      <title>Unicode Infection</title>
      <dc:creator>pabli44</dc:creator>
      <pubDate>Wed, 01 Apr 2026 23:16:16 +0000</pubDate>
      <link>https://dev.to/pabli44/unicode-infection-53do</link>
      <guid>https://dev.to/pabli44/unicode-infection-53do</guid>
      <description>&lt;p&gt;&lt;strong&gt;Be careful with Unicode; don't be too trusting. Your PC can be infected if you make a mistake. Here are a few cases to keep in mind just in case:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;**&lt;strong&gt;&lt;em&gt;The "Reverse Extension" Trick (RTLO)&lt;/em&gt;&lt;/strong&gt;**&lt;br&gt;
This is the most dangerous method. There is a special Unicode character called Right-to-Left Override (U+202E) that reverses the order of the text that follows it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;How it works: An attacker names a malicious file something like instructions_codgpj.exe.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The trick: They insert the RTLO character before "gpj".&lt;/p&gt;

&lt;p&gt;What you see: The system displays it as instructions_jop.gdc.&lt;/p&gt;

&lt;p&gt;The danger: You think you are opening an image (.jpg) or a document, but in reality, you are executing a command file (.scr, .exe, .bat).&lt;/p&gt;

&lt;p&gt;**&lt;strong&gt;&lt;em&gt;Homograph Attacks (Phishing)&lt;/em&gt;&lt;/strong&gt;**&lt;br&gt;
Unicode allows the use of characters from different alphabets that look identical to ours. This is frequently used to create fake links.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Example: The "а" in the Cyrillic alphabet looks exactly like our Latin "a".&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The risk: An attacker registers the domain pаypal.com (using the Cyrillic "a"). Visually, it is perfect, but it leads you to a scam site that can download malware onto your PC.&lt;/p&gt;

&lt;p&gt;**&lt;strong&gt;&lt;em&gt;Buffer Overflow&lt;/em&gt;&lt;/strong&gt;**&lt;br&gt;
Sometimes, programmers do not prepare their applications to handle complex or very long Unicode characters.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If a program expects simple text and receives a strange Unicode string, it could crash.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In extreme and highly technical cases, an attacker could design a string of text that, when processed, "breaks" the program's memory and executes hidden malicious code. This is uncommon nowadays thanks to modern operating system protections.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>advice</category>
    </item>
    <item>
      <title>FAT 32- node modules</title>
      <dc:creator>pabli44</dc:creator>
      <pubDate>Mon, 16 Mar 2026 16:43:03 +0000</pubDate>
      <link>https://dev.to/pabli44/fat-32-node-modules-1g3c</link>
      <guid>https://dev.to/pabli44/fat-32-node-modules-1g3c</guid>
      <description>&lt;p&gt;If you have a drive formatted in FAT32, be careful when creating projects on it. This format tends to cause issues when loading project dependencies. It is recommended to use an additional flag when running processes in your project; for example:&lt;/p&gt;

&lt;p&gt;Command:&lt;br&gt;
&lt;strong&gt;npm run dev&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Recommended Command:&lt;br&gt;
&lt;strong&gt;npm run dev --no-bin-links&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;By using the command this way, you avoid the aforementioned problem. However, the best practice would be to host your projects on a drive with a format other than FAT32, such as exFAT or NTFS.&lt;/p&gt;

&lt;p&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;
You know, enjoy learning!!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>tutorial</category>
      <category>cli</category>
    </item>
    <item>
      <title>IA tools</title>
      <dc:creator>pabli44</dc:creator>
      <pubDate>Fri, 13 Mar 2026 23:09:46 +0000</pubDate>
      <link>https://dev.to/pabli44/ia-tools-1de</link>
      <guid>https://dev.to/pabli44/ia-tools-1de</guid>
      <description>&lt;p&gt;Here is a list of several AI tools currently in use. To each their own, but it's worth noting that many more exist (and more are on the way...). However, to save you from starting from scratch and breaking your head over it, here are some of the coolest ones.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notebooklm&lt;/strong&gt; ---&amp;gt; &lt;a href="https://notebooklm.google/" rel="noopener noreferrer"&gt;https://notebooklm.google/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;ClaudeCode&lt;/strong&gt; ---&amp;gt; &lt;a href="https://code.claude.com/docs/en/overview" rel="noopener noreferrer"&gt;https://code.claude.com/docs/en/overview&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Cursor&lt;/strong&gt; -------&amp;gt; &lt;a href="https://cursor.com/docs" rel="noopener noreferrer"&gt;https://cursor.com/docs&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Kiro.dev&lt;/strong&gt; -----&amp;gt; &lt;a href="https://kiro.dev/docs/" rel="noopener noreferrer"&gt;https://kiro.dev/docs/&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Codex&lt;/strong&gt; --------&amp;gt; &lt;a href="https://developers.openai.com/codex" rel="noopener noreferrer"&gt;https://developers.openai.com/codex&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Antigravity&lt;/strong&gt; --&amp;gt; &lt;a href="https://antigravity.google/docs/get-started" rel="noopener noreferrer"&gt;https://antigravity.google/docs/get-started&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You know, enjoy learning!!&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>CURL Error!</title>
      <dc:creator>pabli44</dc:creator>
      <pubDate>Fri, 27 Feb 2026 16:28:21 +0000</pubDate>
      <link>https://dev.to/pabli44/curl-error-4oc8</link>
      <guid>https://dev.to/pabli44/curl-error-4oc8</guid>
      <description>&lt;p&gt;For Ubuntu Linux users, please note that when using Client URL (commonly known as CURL), you should use the version installed via the apt package manager rather than the snap version.&lt;/p&gt;

&lt;p&gt;The snap distribution has been known to cause errors when downloading software through the command line. If you don't have the apt version installed, you can get it by running:&lt;/p&gt;

&lt;p&gt;sudo apt install curl&lt;/p&gt;

&lt;p&gt;Once installed this way, your downloads should work without issues. If you currently have the snap version installed, it is recommended to remove it:&lt;/p&gt;

&lt;p&gt;sudo snap remove curl&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>curl</category>
      <category>terminal</category>
      <category>resources</category>
    </item>
    <item>
      <title>WPS error solved - wpspdf</title>
      <dc:creator>pabli44</dc:creator>
      <pubDate>Wed, 23 Jul 2025 15:52:21 +0000</pubDate>
      <link>https://dev.to/pabli44/wps-error-solved-wpspdf-gii</link>
      <guid>https://dev.to/pabli44/wps-error-solved-wpspdf-gii</guid>
      <description>&lt;p&gt;Hello, technology enthusiasts! I want to share with you that I’ve been researching and trying to find good, functional software that provides the necessary tools to use Office applications. Yes, you heard that right—Office apps! But since I’m somewhat of an Ubuntu fan, I decided to explore the realm of open-source software (we need to use it more often).&lt;/p&gt;

&lt;p&gt;We have a wide variety of free and open-source products that we sometimes don’t even get to know because we stick to a single company. This time, I’ve been checking out WPS Office, a very good tool that is free (basic version with basic functionalities). It does have some paid premium features, like AI tools, but you can give it a try.&lt;/p&gt;

&lt;p&gt;Here’s what happened: I installed it, but I noticed it wasn’t reading PDFs or functioning properly when converting Word documents to PDF. After investigating, it seems that by default, it uses a library version with errors. But Boom! I found the solution! In case this happens to you, all you need to do is run the following commands from the terminal (I love it):&lt;/p&gt;

&lt;p&gt;Command 1 ---&amp;gt; cd /usr/lib/x86_64-linux-gnu&lt;/p&gt;

&lt;p&gt;Command 2 ---&amp;gt; sudo ln -s libtiff.so.6 libtiff.so.5&lt;/p&gt;

&lt;p&gt;And voilà—problem solved!&lt;/p&gt;

</description>
      <category>wps</category>
      <category>wpsoffice</category>
      <category>wpspdf</category>
      <category>ubuntulover</category>
    </item>
    <item>
      <title>Eager vs Lazy</title>
      <dc:creator>pabli44</dc:creator>
      <pubDate>Fri, 02 Oct 2020 19:52:16 +0000</pubDate>
      <link>https://dev.to/pabli44/eager-vs-lazy-4a9k</link>
      <guid>https://dev.to/pabli44/eager-vs-lazy-4a9k</guid>
      <description>&lt;p&gt;Uso de Lazy o Eager para la obtención(fetch) de datos, implementando JPA en un proyecto Spring, pude notar la diferencia entre estos dos conceptos de persistencia de datos, cabe aclarar que los dos funcionan y traen resultados, pero todo depende de la aplicación o proyecto que estés desarrollando, a veces usar Lazy no es tan bueno en proyectos y toca obtener datos a través de Eager porque nos damos cuenta que aparecen errores, y simplemente cambiando uno por otro, de una obtenemos los datos correspondientes, teniendo en cuenta si el proyecto en el momento no tiene muchos usuarios, o a penas se encuentra en etapas de desarrollo local y no aún desplegando a ambiente de producción, puede que sea mejor usar Lazy, y en producción Eager, entre las dos opciones, Lazy obtiene datos pero así como puede demorar un poco más de lo esperado, puede que no toque esperar tanto, es un tanto relativo, a diferencia de Eager que siempre va a tratar de obtener los datos a como dé lugar, cabe anotar una experiencia por si depronto les pasa, en un desarrollo de un proyecto usé Lazy y simplemente me salía error en el consumo, y adivinen qué?, tan solo cambiándolo a Eager funcionó con normalidad, para que lo tengan en cuenta por si alguna vez les pasa y no encuentran la solución, tener en cuenta que lo diferente es que para conectarme a la base de datos en Oracle, necesitaba VPN, importante dato.&lt;/p&gt;

&lt;p&gt;Documentación&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.baeldung.com/hibernate-lazy-eager-loading" rel="noopener noreferrer"&gt;https://www.baeldung.com/hibernate-lazy-eager-loading&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Saludes.&lt;/p&gt;

</description>
      <category>java</category>
      <category>spring</category>
      <category>jpa</category>
      <category>microservices</category>
    </item>
  </channel>
</rss>
