<?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: Krystian</title>
    <description>The latest articles on DEV Community by Krystian (@hsr88).</description>
    <link>https://dev.to/hsr88</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%2F3646867%2F2eeda811-b844-4cce-b164-ac08903c9d05.png</url>
      <title>DEV Community: Krystian</title>
      <link>https://dev.to/hsr88</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hsr88"/>
    <language>en</language>
    <item>
      <title>I tested 20 websites for consent timing — 14 loaded analytics before user approval</title>
      <dc:creator>Krystian</dc:creator>
      <pubDate>Thu, 12 Feb 2026 17:56:00 +0000</pubDate>
      <link>https://dev.to/hsr88/i-tested-20-websites-for-consent-timing-14-loaded-analytics-before-user-approval-3e25</link>
      <guid>https://dev.to/hsr88/i-tested-20-websites-for-consent-timing-14-loaded-analytics-before-user-approval-3e25</guid>
      <description>&lt;p&gt;We see cookie banners everywhere.&lt;/p&gt;

&lt;p&gt;But I wanted to check something simple:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Do websites actually wait for user consent before loading analytics?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So I tested 20 sites (SaaS, e-commerce, agencies, blogs).&lt;/p&gt;

&lt;h3&gt;
  
  
  The result?
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;14 out of 20 loaded analytics before the user clicked “Accept”.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In most cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The banner was visible&lt;/li&gt;
&lt;li&gt;No interaction had happened&lt;/li&gt;
&lt;li&gt;But GA/GTM requests were already firing&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Visually compliant.&lt;br&gt;
Technically… not really.&lt;/p&gt;


&lt;h2&gt;
  
  
  How I measured it
&lt;/h2&gt;

&lt;p&gt;Instead of manually watching DevTools every time, I built a small tool to monitor:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Cookies being set&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;localStorage&lt;/code&gt; / &lt;code&gt;sessionStorage&lt;/code&gt; usage&lt;/li&gt;
&lt;li&gt;Network requests to common tracking domains&lt;/li&gt;
&lt;li&gt;The exact timestamp of the consent click&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Core logic:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;If tracking_timestamp &amp;lt; consent_click_timestamp
→ tracking happened before consent
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Simple in theory. Messy in real-world implementations.&lt;/p&gt;




&lt;h2&gt;
  
  
  The tricky parts
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;SPAs injecting CMP late&lt;/li&gt;
&lt;li&gt;GTM containers firing too early&lt;/li&gt;
&lt;li&gt;Server-side tagging hiding third-party domains&lt;/li&gt;
&lt;li&gt;Heuristic detection vs explicit CMP integration&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Most issues looked like misconfiguration — not intent.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;As developers, we often:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;install GTM&lt;/li&gt;
&lt;li&gt;plug in analytics&lt;/li&gt;
&lt;li&gt;add a CMP&lt;/li&gt;
&lt;li&gt;assume everything is fine&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But unless you verify timing, tracking may fire earlier than expected.&lt;/p&gt;

&lt;p&gt;The browser doesn’t lie.&lt;br&gt;
Network requests don’t lie.&lt;br&gt;
Timestamps don’t lie.&lt;/p&gt;




&lt;h2&gt;
  
  
  If you want to test this yourself
&lt;/h2&gt;

&lt;p&gt;I packaged the tool into a Chrome extension called &lt;strong&gt;ConsentScope&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You can check it here:&lt;br&gt;
👉 &lt;a href="https://www.consentscope.pro/" rel="noopener noreferrer"&gt;https://www.consentscope.pro/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s not a legal tool — just a technical way to inspect what fires before and after consent.&lt;/p&gt;

&lt;p&gt;Curious how others are validating consent timing in their projects.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>privacy</category>
      <category>extensions</category>
      <category>chrome</category>
    </item>
    <item>
      <title>No Kotlin? No Problem. How I shipped Android Apps using React &amp; Capacitor</title>
      <dc:creator>Krystian</dc:creator>
      <pubDate>Mon, 12 Jan 2026 17:50:29 +0000</pubDate>
      <link>https://dev.to/hsr88/no-kotlin-no-problem-how-i-shipped-android-apps-using-react-capacitor-9ja</link>
      <guid>https://dev.to/hsr88/no-kotlin-no-problem-how-i-shipped-android-apps-using-react-capacitor-9ja</guid>
      <description>&lt;p&gt;For years, I thought mobile development was reserved for "native" developers. I looked at Java and Kotlin code, and frankly, I wanted to run away. I am a web developer. I think in terms of React components, hooks, and CSS.&lt;/p&gt;

&lt;p&gt;But this week, I achieved something I didn't think was possible for me: I published my first two applications on the Google Play Store. And the best part? I didn't write a single line of native code.&lt;/p&gt;

&lt;p&gt;Here is how I did it, and one mistake you should avoid.&lt;/p&gt;

&lt;p&gt;The False Start: &lt;em&gt;PWABuilder&lt;/em&gt; At first, I tried to take the shortest shortcut possible. I used PWABuilder to simply package my existing Progressive Web App into an APK.&lt;/p&gt;

&lt;p&gt;It sounded perfect on paper, but in reality, it felt... pointless. While it technically worked, I felt like I had zero control over the native experience. It was just a website pretending to be an app, with limited access to device features and a shaky user experience. I realized that if I wanted to be on the Store, I needed something more robust.&lt;/p&gt;

&lt;p&gt;The Solution: &lt;strong&gt;React + Capacitor&lt;/strong&gt;. That’s when I found Capacitor. If you are a React developer, this tool is a superpower. Unlike PWABuilder, Capacitor allows you to keep your standard web development workflow but gives you a runtime that bridges the web world with the native world.&lt;/p&gt;

&lt;p&gt;My workflow looked like this:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;I built my UI in React (just like I do for the web).&lt;/li&gt;
&lt;li&gt;I used Capacitor to wrap the build output.&lt;/li&gt;
&lt;li&gt;I generated the Android project folder and opened it in Android Studio only to hit the "Build" button.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Suddenly, I had access to native plugins, a real file structure, and a performant app that didn't feel like a cheap wrapper.&lt;/p&gt;

&lt;p&gt;The Boss Battle: Google Play Console Coding the app was actually the easy part. The real challenge was the Google Play Console. If you are an indie developer, be prepared for a bureaucratic nightmare:&lt;/p&gt;

&lt;p&gt;The Verification Process: It’s getting stricter every year.&lt;/p&gt;

&lt;p&gt;Privacy Policies: You can't just ignore them anymore.&lt;/p&gt;

&lt;p&gt;Testing Tracks: You need 12 testers for 14 days before you can even think about production (if you have a personal account created after Nov 2023) - annoying AF...&lt;/p&gt;

&lt;p&gt;It took me some time, but finally seeing that green "Approved" status is one of my biggest wins this year.&lt;/p&gt;

&lt;p&gt;The Result Both apps are now live. They aren't perfect, but they are shipped.&lt;/p&gt;

&lt;p&gt;So If you are a web developer afraid of mobile stores: Just do it. Don't waste time on shortcuts like basic PWA wrappers if you want a real store presence. Go with Capacitor (or React Native), leverage your JS skills, and push through the Google Play verification. It's worth it.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>android</category>
      <category>mobile</category>
      <category>react</category>
    </item>
    <item>
      <title>Stop Crashing VS Code: How to View 10GB Log Files in Your Browser</title>
      <dc:creator>Krystian</dc:creator>
      <pubDate>Sat, 06 Dec 2025 00:13:59 +0000</pubDate>
      <link>https://dev.to/hsr88/stop-crashing-vs-code-how-to-view-10gb-log-files-in-your-browser-17i6</link>
      <guid>https://dev.to/hsr88/stop-crashing-vs-code-how-to-view-10gb-log-files-in-your-browser-17i6</guid>
      <description>&lt;p&gt;The "Friday Deploy" Nightmare 😱&lt;/p&gt;

&lt;p&gt;We've all been there. It’s Friday afternoon, production acts up, and you need to investigate. You SSH into the server, find the error.log, and... it’s 8.5 GB.&lt;/p&gt;

&lt;p&gt;You download it. You try to open it with VS Code.&lt;br&gt;
Result: The window freezes. Your fans spin up like a jet engine. The OS asks if you want to kill the process.&lt;/p&gt;

&lt;p&gt;You try Notepad++. It complains the file is too big.&lt;br&gt;
You try less or grep in the terminal, but reading JSON logs in a console is a pain.&lt;/p&gt;

&lt;p&gt;This specific frustration led me to build a tool that solves this problem once and for all.&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%2Fc6s47xlknayfxv2gkmq2.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%2Fc6s47xlknayfxv2gkmq2.png" alt=" " width="425" height="439"&gt;&lt;/a&gt;&lt;br&gt;
Meet Log Voyager 🛸&lt;/p&gt;

&lt;p&gt;I built Log Voyager – a specialized, web-based tool designed specifically to handle massive log files without eating your RAM.&lt;/p&gt;

&lt;p&gt;It runs entirely in your browser, works offline, and—most importantly—it opens 10GB+ files instantly.&lt;/p&gt;

&lt;p&gt;🛠️ How It Works (The Technical Part)&lt;/p&gt;

&lt;p&gt;Why does VS Code crash? Because it tries to load the entire file string into memory (RAM) to tokenize and render it.&lt;/p&gt;

&lt;p&gt;Log Voyager uses a different approach: File Slicing.&lt;/p&gt;

&lt;p&gt;Instead of reading the whole file, it uses the native HTML5 File API, specifically the .slice() method.&lt;/p&gt;

&lt;p&gt;It reads the file metadata (size).&lt;/p&gt;

&lt;p&gt;It calculates which "chunk" (e.g., 50KB) corresponds to your current scroll position.&lt;/p&gt;

&lt;p&gt;It reads only those bytes from the disk into memory.&lt;/p&gt;

&lt;p&gt;This means the memory footprint is constant (~20MB), whether your log file is 5MB or 500GB. It acts like a "window" sliding over the data on your hard drive.&lt;/p&gt;

&lt;p&gt;✨ Key Features for Backend Devs&lt;/p&gt;

&lt;p&gt;Besides not crashing your computer, I added features that I personally missed in other tools:&lt;/p&gt;

&lt;p&gt;🔒 Privacy First (Local Execution): This was critical. Even though it's a website, your files are never uploaded anywhere. The processing happens 100% locally in your browser's sandbox. Safe for sensitive production logs.&lt;/p&gt;

&lt;p&gt;JSON Prettifier: If your logs are messy JSON blobs, Log Voyager detects them. One click formats them into a readable tree structure.&lt;/p&gt;

&lt;p&gt;Warp Jump Bookmarks: Navigating a 10GB file is hard. You can "bookmark" a line, scroll 5GB down, and then "warp" back to the exact byte offset instantly.&lt;/p&gt;

&lt;p&gt;Mobile Friendly: Since it's efficient, it works perfectly on mobile. You can analyze logs on your phone while away from your desk.&lt;/p&gt;

&lt;p&gt;🚀 Try It Out&lt;/p&gt;

&lt;p&gt;It is a free, open-source project. If you are looking for a reliable huge log file viewer, give it a spin next time you face a giant log file.&lt;/p&gt;

&lt;p&gt;👉 Live App: logvoyager.cc&lt;br&gt;
💻 GitHub: hsr88/log-voyager&lt;/p&gt;

&lt;p&gt;Let me know in the comments if you have any feature requests! I'm actively working on adding regex filtering next.&lt;/p&gt;

&lt;p&gt;Happy debugging! 🐛&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>devops</category>
      <category>opensource</category>
    </item>
    <item>
      <title>A Cyberpunk notification library with glitch animations and typewriter effects.</title>
      <dc:creator>Krystian</dc:creator>
      <pubDate>Thu, 04 Dec 2025 17:48:58 +0000</pubDate>
      <link>https://dev.to/hsr88/a-cyberpunk-notification-library-with-glitch-animations-and-typewriter-effects-3mo7</link>
      <guid>https://dev.to/hsr88/a-cyberpunk-notification-library-with-glitch-animations-and-typewriter-effects-3mo7</guid>
      <description>&lt;p&gt;Just finished my latest open-source project: CyberToast.js. A zero-dependency notification system focused on Sci-Fi aesthetics. It taught me a lot about DOM manipulation and CSS animations. Check it out on GitHub!&lt;br&gt;
&lt;a href="https://github.com/hsr88/cyber-toast-js" rel="noopener noreferrer"&gt;https://github.com/hsr88/cyber-toast-js&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
