<?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: Facundo Rada</title>
    <description>The latest articles on DEV Community by Facundo Rada (@facundorada).</description>
    <link>https://dev.to/facundorada</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%2F1503191%2Fcc0e8bf2-e7ca-4950-9920-ebf19e894910.jpg</url>
      <title>DEV Community: Facundo Rada</title>
      <link>https://dev.to/facundorada</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/facundorada"/>
    <language>en</language>
    <item>
      <title>I experimented making apps in Cursor-AI so you don't have to</title>
      <dc:creator>Facundo Rada</dc:creator>
      <pubDate>Sun, 13 Apr 2025 15:45:36 +0000</pubDate>
      <link>https://dev.to/facundorada/i-experimented-making-apps-in-cursor-ai-so-you-dont-have-to-2o1p</link>
      <guid>https://dev.to/facundorada/i-experimented-making-apps-in-cursor-ai-so-you-dont-have-to-2o1p</guid>
      <description>&lt;p&gt;The trend is everywhere on the last weeks, people that roll up a cursor instance, tell it (or them?) to make a basic program, a bunch of code suddenly appears and after a few package installations the app runs and most probably it doesn't behave like expected.&lt;/p&gt;

&lt;p&gt;They call it vibe coding -term under construction- and is supposed to do either of two things, mainly:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;speed up software developers&lt;/li&gt;
&lt;li&gt;bring no-coders into app spawning&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's see how is the case for both scenarios. For this I experimented building 3 apps.&lt;/p&gt;

&lt;h2&gt;
  
  
  Landing Snakes
&lt;/h2&gt;

&lt;p&gt;On the first one I asked the agent to build a landing page in vue.js v3 and to add a backed in python using flask.&lt;br&gt;
The code always generates instantly and a brief description of what was done appears in the agent chat panel.&lt;br&gt;
My next question was certainly how do I run it? And the agent started to issue commands that I can use to spin up the server and front-end. A few issues regarding missing packages on the way and after installing them the landing page was displayed correctly in my browser&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkw2o3huytxzhy39xnbxl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fkw2o3huytxzhy39xnbxl.png" alt="vue.js" width="800" height="496"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After that I come back to the agent and asked to get a simple snake game added to the bottom of the site. For this I provided an example image of the snake game from the (g)old Nokia phone.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbc4ia34e8dlyk4uidug.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcbc4ia34e8dlyk4uidug.png" alt="nokia snake" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The image helped the agent to better understand my idea and to extract more info that I was not providing and not realizing it. Like the characteristics of an old/retro style and monochrome. Plus adding a score counting system and a message for game over state. The results came up instantly and the game was playable from the first run.&lt;/p&gt;

&lt;p&gt;Finally I decided to add more participation to the backend and asked the agent to save and show the high-scores.&lt;br&gt;
For this I switched to chat mode first, and requested suggestions to implement the scoring system. It presented a few alternatives and I took one that involved DB persistence. Simpler solutions were in the list but, at the end, it wasn't me who was implementing all of that so why not choosing a more elaborated implementation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpyo85nhxaxnsak0zzs9x.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpyo85nhxaxnsak0zzs9x.png" alt="vuejs" width="800" height="451"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This app was surprisingly easy, almost nothing to correct having everything functional on the first shot.&lt;br&gt;
I blamed me for choosing tools on which I am knowledgeable so I decided to explore more unknown terrains.&lt;/p&gt;

&lt;h2&gt;
  
  
  Unsafe Pipes
&lt;/h2&gt;

&lt;p&gt;For the next project I choose Rust. Coming from a C++ background that I gained just for fun during my college days that is a language that I was looking to get into. For me it felt like the natural upgrade path. On top of that I have no idea about how to program in Rust, not even how to run a build command so this was a good choice.&lt;/p&gt;

&lt;p&gt;The idea was to make a puzzle game similar to &lt;a href="https://en.wikipedia.org/wiki/Pipe_Mania" rel="noopener noreferrer"&gt;connecting pipes/pipe mania/pipe dream&lt;/a&gt;.&lt;br&gt;
I started with a more detailed prompt and as expected I instantly got some code generated.&lt;br&gt;
After some iterations the game was far from being playable. Serious bugs that prevented the game to even start.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhyqowldf4bhjpbvdsjxj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhyqowldf4bhjpbvdsjxj.png" alt="rust-pipe" width="800" height="770"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But with all of that I noticed that, with each prompt, the project improved and it was getting there. In the meantime, I kept reading and trying the understand the code (again, with no previous exposure to Rust 'till this point) as much as I could.&lt;br&gt;
After many intents I gave up. It will take too much to have this game in good shape.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbl7avhnolzbca2zz28xb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbl7avhnolzbca2zz28xb.png" alt="rust-pipe" width="800" height="867"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  MOV AND JMP like NOP one is watching. XOR like everyone is
&lt;/h2&gt;

&lt;p&gt;For my 3rd program I decided to go even further on the lands of the unknowing. This time I asked the agent to write a simple encryption program..&lt;/p&gt;

&lt;p&gt;.. in assembler.&lt;/p&gt;

&lt;p&gt;After installing &lt;a href="https://en.wikipedia.org/wiki/Netwide_Assembler" rel="noopener noreferrer"&gt;NASM&lt;/a&gt; for my assembler program I spend the next several iterations trying to make the program runnable, expecting to achieve a simple encryption operation at some point. But all I got was an ol' good segmentation fault message.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4e4qigjk50dnrpy1dfj1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4e4qigjk50dnrpy1dfj1.png" alt="assembler segfault" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In opposition to the previous programs, were I can identify what was wrong in the code by reading a bit (vue + python) or at least by understanding the context of the functions and variables (Rust), here I was completely blind in the sense that all this code made no sense to me at all. Trying to debug it myself would be pointless.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7nii3phwood1swxo2gyq.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7nii3phwood1swxo2gyq.jpg" alt="segfault" width="517" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So for that I relied on the agent to solve it. Every time that the program failed to run I asked the agent to look for it. Surprisingly it started to add debug messages and even guided me to use &lt;a href="https://sourceware.org/gdb/" rel="noopener noreferrer"&gt;GDB&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;At the end the agent made the program work and I managed to encrypt and decrypt a file using simple XOR encryption.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpkn7beldavysyigrfiuj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpkn7beldavysyigrfiuj.png" alt="assembler encryption" width="800" height="397"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Finally it made a summary of the corrections it made to the initial program and it showed quick instructions on how to use it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj19o6xdpyj7mjhdktsq2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fj19o6xdpyj7mjhdktsq2.png" alt="thank your agent" width="800" height="247"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Did I thank the program for fixing the bugs? Yes, yes I did.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;"Coding" this way was interesting and definitely helped me get some outputs on these new new tools. I believe the Rust game couldn't be completed because it was more complex than the other two and &lt;em&gt;probably&lt;/em&gt; the idea of a pipe game is much more rare than a landing page or an xor file encryption, so the models might not have that much training on that area.&lt;/p&gt;

&lt;p&gt;At first I will say that it &lt;u&gt;helps on the learning process when faced with new technologies&lt;/u&gt;. Similarly when trying to learn a new national language, surrounding yourself with it in functional and guided contexts will speed up your adoption getting into new technologies more easily.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Yes, debugging is painful&lt;/u&gt;. It is no-brainer that trying to fix issues on the code at first is a heavy task. I think this is commonly the most criticized step due the contrast of instant machine code generation vs the slow human process of reading through and understanding it. But starting with a large existing project is something that we all faced everytime we joined a new company or when we were moved to a new project. We have to reserve time to learn the system before starting to be productive on it so in this scenario I see no much difference. As a recommendation tell the agent to add debugging statements to help to tackle issues along the way.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Agents can help understanding the codebase&lt;/u&gt;. Linked to the previous point (the biggest turn-off for many) I believe this could be the biggest benefit. Code is many more times read rather than written -although this might change with the adoption of this tools- so agents play an important role on easing the way for getting the developers confident into projects that they are not familiar with. Or when time passes and you have to revisit that module just to add a few changes to it. A question that comes to my mind is if having proper comments would help the agent in this task.&lt;/p&gt;

&lt;p&gt;&lt;u&gt;Security was completely overlooked&lt;/u&gt;. Unless explicitly asked for, it won't be included. I understand when creating a new PoC you just want to test the waters before committing to a solution. But when working with an existing project things like not authenticating your auto-generated new endpoint is something that will come back and bite you in the arse.&lt;br&gt;
Now, imagine all these generated vibe-coded apps eventually making it to production. What a great time to get into cybersecurity.&lt;/p&gt;

&lt;p&gt;All in all I say this is a must-try trend. &lt;/p&gt;

&lt;p&gt;Stay relevant&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>learning</category>
    </item>
    <item>
      <title>Embrace your penguin side</title>
      <dc:creator>Facundo Rada</dc:creator>
      <pubDate>Fri, 17 May 2024 18:24:00 +0000</pubDate>
      <link>https://dev.to/facundorada/embrace-your-penguin-side-inc</link>
      <guid>https://dev.to/facundorada/embrace-your-penguin-side-inc</guid>
      <description>&lt;p&gt;At that point it had been years since I had used Linux. Back in the college days, in the technological university, the cool kids were the ones using it, we even had an entire subject dedicated to learn it, so that’s what I did. I installed an Ubuntu-based distro in my PC and I tried to familiarize with the OS for all my activities.&lt;br&gt;
But I that didn’t stick and after gaining experience developing in .NET my Linux days were gone.&lt;br&gt;
Needless to say that spending more than ten years without any interaction with the OS made me lose all the knowledge I gain at college and home.&lt;/p&gt;

&lt;p&gt;After all that period my next contact with Linux wasn’t installing a distro for my day-to-day PC but rather for a home server. I wanted to set up a server to do just one task at the moment and using Windows would require me to buy a box with certain hardware to run it. Immediately I started to look at Debian requirements and I saw that I would need way less resources but that will make me face a learning curve. I encountered myself in the most common tradeoff we can think of, time vs money.&lt;br&gt;
As I wasn’t worried about having my server running soon I took all the time I could to learn how to install the OS and how to make the setup properly.&lt;br&gt;
I familiarized with the well known and so feared Linux terminal and one day I had my server up and running.&lt;/p&gt;

&lt;p&gt;During that moment another situation collided with my hunger to automate a task at home. Working in cyber-security as part of my job made me aware of the security of my devices and how to protect them. Windows users have naturalized the fact that their system can catch a virus at any point just by not paying enough attention to a simple action such as connecting a pendrive or opening a link to a website. This is not such a big problem in Linux as the OS is way less targeted by attackers than its corporative counterpart.&lt;/p&gt;

&lt;p&gt;In that moment I raised the big question… What if I switch Linux for my personal Operating System?&lt;br&gt;
The analysis was simple, when I started to list all the activities I did with my PC, the vast majority of them just required a browser. That was it, that was the breaking point for me.&lt;br&gt;
I navigated through different reviews of the distro families that exist out there and which were the most beginner friendly. And after all that I end up choosing Linux Mint.&lt;/p&gt;

&lt;p&gt;Mint is an Ubuntu based – which is a Debian based – OS. That made the right linking to me as I experienced with Debian because of my server.&lt;br&gt;
Mint is posed as a distro for Windows users for its similarity and I have to say that’s an accurate description. The transition was very smooth to me, I continued with all my activities once I migrated all my documents and personal files to the new OS.&lt;br&gt;
I didn’t even have to use the terminal at all, nevertheless, I started doing it at a later stage just because of personal choice, but nothing stops me to operate with the system using pure graphical interaction.&lt;/p&gt;

&lt;p&gt;I was satisfied with my choice, but always wondering if after a while I should opt to hop to a more complex and Linux-oriented distro. This changed when chatting with some old college friends at my birthday I told them that I started using back that nerd OS. They seem interested and asked me which distro I choose. It was of my surprise that when I say Mint, they told me they were using the same. My friends, die-hard Linux users, were in the same spot than me. Automatically I understood that I will stay for a while in this OS and that time I spent reading reviews and doing my comparisons was well invested.&lt;/p&gt;

&lt;p&gt;All in all I haven’t had any issue with my transition and I feel happy for the path I choose. It is worth to mention that the only application I miss is Notepad++. I been using it since college, now mostly for taking notes, and despite some hours spent invested on a search and try, I haven’t end up with any good replacement.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>mint</category>
    </item>
  </channel>
</rss>
