<?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: spuggnik</title>
    <description>The latest articles on DEV Community by spuggnik (@spuggnik).</description>
    <link>https://dev.to/spuggnik</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3300833%2F78aca612-d67b-44ef-a64d-b10f169eb991.png</url>
      <title>DEV Community: spuggnik</title>
      <link>https://dev.to/spuggnik</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/spuggnik"/>
    <language>en</language>
    <item>
      <title>devlog 003</title>
      <dc:creator>spuggnik</dc:creator>
      <pubDate>Sat, 05 Jul 2025 16:05:10 +0000</pubDate>
      <link>https://dev.to/spuggnik/devlog-003-3p3o</link>
      <guid>https://dev.to/spuggnik/devlog-003-3p3o</guid>
      <description>&lt;p&gt;Finally!!!! I somehow did it. I deployed it and it's live.&lt;br&gt;
I'm talking about the locale handling, btw. I had so many problems. One of them:&lt;/p&gt;

&lt;p&gt;The params prop can be a Promise when using dynamic routes – I tried to use params.locale directly and got an error because I was trying to access a property on a Promise, not on the actual object.&lt;br&gt;
You need to await the params Promise to get the real object.&lt;br&gt;
Also, ESLint and TypeScript really don’t like any, as I found out.&lt;/p&gt;

&lt;p&gt;Yeah, but now it's deployed, and you can switch the language from English to German and back. 🙌&lt;/p&gt;

&lt;p&gt;Also, I bought a new domain, so I don't have that weird Vercel stuff in my URL anymore. It's called pdf-edit.app.&lt;br&gt;
Why PDF edit? Isn’t it a compressor?&lt;br&gt;
Yes – at least for now. I was thinking about the web app and its usefulness, and I came to the conclusion that compressing with pdf-lib is pretty... not good.&lt;br&gt;
But some other features – like editing PDFs, slicing them up, or merging them – are actually useful. And if everything works out like I planned, it all runs only in the frontend.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>devlog 002</title>
      <dc:creator>spuggnik</dc:creator>
      <pubDate>Mon, 30 Jun 2025 17:26:47 +0000</pubDate>
      <link>https://dev.to/spuggnik/devlog-002-478</link>
      <guid>https://dev.to/spuggnik/devlog-002-478</guid>
      <description>&lt;p&gt;So, recently I have been trying to implement locale handling. It's quite hard, and I still cannot deploy it because of some TypeScript-specific issues. I think choosing TypeScript from the beginning was not the smartest choice. One of the first problems was actually really simple once I noticed it. Let me explain: at first, I was trying to build a tool suite, meaning many tools under my URL. I realized this would get complicated and decided to focus only on the PDF converter, but I already had the routing set up with /compressor, so I hardcoded a redirect to /compressor. This meant that if you went to my URL, it would redirect you to /compressor. But now, with language locales, the route changed to /en/compressor, and /compressor resulted in a "404 - not found". It took me way too long to realize this...&lt;/p&gt;

&lt;p&gt;The next step was automatic locale handling, meaning it would go straight to the language of your browser. But that was too difficult, so the simpler solution was just to use the redirect again, but this time to /en/compressor. So now the default is English, but you can still manually adjust the language via a dropdown on the website itself.&lt;/p&gt;

&lt;p&gt;Unfortunately, my URL still points to the old webpage because I couldn't deploy the new one yet. This will be a task for next time.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>javascript</category>
      <category>beginners</category>
    </item>
    <item>
      <title>devlog 001</title>
      <dc:creator>spuggnik</dc:creator>
      <pubDate>Fri, 27 Jun 2025 16:03:00 +0000</pubDate>
      <link>https://dev.to/spuggnik/devlog-001-2bgi</link>
      <guid>https://dev.to/spuggnik/devlog-001-2bgi</guid>
      <description>&lt;p&gt;Hi, my name is Nik, i am here to document my journey building a webapp.&lt;br&gt;
I don't have any educational background in programming or similar. I am completely self-taught through internet. I watched some stuff from CS50, learned with ChatGPT, and went through roadmap.sh. Since I wasn't so patient and went through every checkpoint from roadmap.sh, i decided to just start. Meaning installing node.js and just typing the create app command. I had no clue and understood nothing, but it became more and more familiar. To clarify, i work with ai, i use Chatgpt and Copilot from Github, BUT i don't use autocompletion in vscode, since i often don't really understand what it's even trying to do. I try to only use ai to understand stuff and to give me ideas.&lt;/p&gt;

&lt;p&gt;Oh yeah, the app i am making is a pdf-compressor, not special, i know. But i wanted something that i can deploy and really just works.&lt;br&gt;
So here i am, i deployed on vercel, it's a really barebone pdf-compressor which compresses with pdf-lib. At the moment, it can only compress the pdf, give it back to you with the same name + "_compressed" and show you how much smaller it got. &lt;/p&gt;

&lt;p&gt;To my understanding right now, pdf-lib is not really a great compression, in fact, most other platforms do the compression on their own on their backend and with that you can achieve much better compression rates. BUT mine is safer! It only goes to the RAM on the Vercel server, gets compressed, and then it's gone. It never gets saved or has to be saved like most other compressors.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://pdf-compressor-two.vercel.app/compressor" rel="noopener noreferrer"&gt;https://pdf-compressor-two.vercel.app/compressor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;this is the link!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>beginners</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
