<?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: Felix Helleckes</title>
    <description>The latest articles on DEV Community by Felix Helleckes (@felix-helleckes).</description>
    <link>https://dev.to/felix-helleckes</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%2F3865542%2Fea401fc3-e0ad-4023-8261-0ff2871dcaca.jpeg</url>
      <title>DEV Community: Felix Helleckes</title>
      <link>https://dev.to/felix-helleckes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/felix-helleckes"/>
    <language>en</language>
    <item>
      <title>I Built an LED World Clock That Lives Behind Your Desktop Icons — Without Eating Your CPU</title>
      <dc:creator>Felix Helleckes</dc:creator>
      <pubDate>Mon, 05 Oct 2026 20:05:35 +0000</pubDate>
      <link>https://dev.to/felix-helleckes/i-built-an-led-world-clock-that-lives-behind-your-desktop-icons-without-eating-your-cpu-2l2a</link>
      <guid>https://dev.to/felix-helleckes/i-built-an-led-world-clock-that-lives-behind-your-desktop-icons-without-eating-your-cpu-2l2a</guid>
      <description>&lt;p&gt;Live wallpapers have a deserved reputation: they look great for a week and then you notice your laptop fan. This one draws vector 7-segment digits that change once a second, and the rest of the time it does nothing at 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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fselvixrvzzwfze33cx2h.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fselvixrvzzwfze33cx2h.jpg" alt="World Clock Live in the dark LED theme, showing a wall of cities with 7-segment digits." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Vector-drawn segments with unlit "ghost" segments behind the lit ones — the detail that makes an LED display look like an LED display.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The LED world clocks on trading floors and in airport halls are one of the great pieces of industrial design nobody thinks about. A grid of cities, 7-segment digits, no decoration, readable from across the room. I wanted one on my desktop.&lt;/p&gt;

&lt;p&gt;Every live wallpaper I tried to do it with had the same problem. They are built on the assumption that something is always moving, so they render continuously, and a clock that redraws sixty times a second to show you a digit that changes once a second is an insult to your battery.&lt;/p&gt;

&lt;h2&gt;
  
  
  A clock has a natural frame rate of one
&lt;/h2&gt;

&lt;p&gt;That is the whole design argument. A display that changes once a second does not need to be redrawn sixty times a second, and a wallpaper that is completely hidden behind a maximised window does not need to be drawn at all.&lt;/p&gt;

&lt;p&gt;General-purpose wallpaper engines cannot assume any of that, because they have to be ready for video and shaders and particle fields. A clock can assume all of it. That is the only reason this one can sit behind your icons all day without turning up in your fan noise — not cleverness, just a much narrower problem.&lt;/p&gt;

&lt;p&gt;The digits are vector-drawn segments, not a font. That matters more than it sounds: a 7-segment &lt;em&gt;font&lt;/em&gt; gives you lit digits on a flat background, and a real display always shows the unlit segments too, faintly. That ghosting is most of what your eye uses to recognise the thing as an LED panel. Drawing the segments as geometry also means it stays crisp at 4K and that the glow is adjustable instead of baked into a bitmap.&lt;/p&gt;

&lt;p&gt;Daylight saving is handled automatically per city, which is the kind of feature nobody thanks you for and everybody notices the one morning it is wrong.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmywmilsgxnamcarg8rr2.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmywmilsgxnamcarg8rr2.jpg" alt="The light theme with the dotted map style." width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Light theme, dot-matrix style. Themes and styles switch live, no restart.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Five ways to install it, which was not the plan
&lt;/h2&gt;

&lt;p&gt;This started as one Windows build. It is now:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Windows standalone&lt;/strong&gt; — installer or a portable &lt;code&gt;.exe&lt;/code&gt; you can keep on a USB stick. No Steam, no wallpaper manager, no account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Microsoft Store&lt;/strong&gt; — for people who, reasonably, do not download &lt;code&gt;.exe&lt;/code&gt; files from strangers.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Mac App Store&lt;/strong&gt; — macOS 13 or newer, universal for Apple silicon and Intel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Wallpaper Engine&lt;/strong&gt; — a separate edition in the Steam Workshop, for the large number of people who already have a wallpaper manager and do not want a second one.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Browser&lt;/strong&gt; — the whole clock runs on a web page, which turns a spare monitor or an old tablet into a wall clock with no install at all.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Shipping the same idea five ways taught me something unglamorous: the build and release work is not the expensive part. Keeping five store listings, five sets of screenshots and five changelogs consistent is. If you are weighing up a second distribution channel for a side project, budget for the paperwork, not the port.&lt;/p&gt;

&lt;p&gt;The Windows version sits on the desktop layer beneath your icons and windows — the same place Wallpaper Engine puts things, without requiring Steam.&lt;/p&gt;

&lt;h2&gt;
  
  
  What costs money
&lt;/h2&gt;

&lt;p&gt;Twelve cities are free, forever, in both themes with the standard LED style.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pro is €4.99, once&lt;/strong&gt; — unlimited cities and the extra display styles. &lt;strong&gt;Business is €49 per office, once&lt;/strong&gt;, for putting it on the screens in a room where people actually need to know what time it is in Singapore.&lt;/p&gt;

&lt;p&gt;No subscription, no account, no telemetry. The app does not need a server and does not have one.&lt;/p&gt;

&lt;p&gt;There is also an iOS version, which I localised into 51 languages mostly because a clock is one of the rare apps where that is genuinely tractable — the interface is numbers and city names.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it is likely to annoy you
&lt;/h2&gt;

&lt;p&gt;It has been out since late September and I have no ratings yet, so this list is what I suspect rather than what I know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Multi-monitor setups with mixed DPI, which is where every desktop-layer app eventually goes wrong&lt;/li&gt;
&lt;li&gt;Manufacturer utilities on Windows that also want to own the wallpaper layer&lt;/li&gt;
&lt;li&gt;Very long city names in some locales pushing the grid out of alignment&lt;/li&gt;
&lt;li&gt;macOS spaces and full-screen apps, where "behind the icons" means something slightly different than it does on Windows&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you hit one of these, tell me. There is no crash reporting in it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://worldclocklive.pages.dev/" rel="noopener noreferrer"&gt;Download for Windows and Mac&lt;/a&gt; · &lt;a href="https://apps.microsoft.com/detail/9n7bxm32zk3g" rel="noopener noreferrer"&gt;Microsoft Store&lt;/a&gt; · &lt;a href="https://apps.apple.com/app/id6811101383" rel="noopener noreferrer"&gt;Mac App Store&lt;/a&gt; · &lt;a href="https://steamcommunity.com/sharedfiles/filedetails/?id=3800376084" rel="noopener noreferrer"&gt;Wallpaper Engine edition&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Felix Helleckes — QA &amp;amp; Test Automation Engineer in Cologne. More of what I build: &lt;a href="https://felix-helleckes.github.io/" rel="noopener noreferrer"&gt;felix-helleckes.github.io&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>windows</category>
      <category>electron</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I Rebuilt ICQ 5 as a WhatsApp Client — and the Download Page Tells You It Might Get You Banned</title>
      <dc:creator>Felix Helleckes</dc:creator>
      <pubDate>Mon, 05 Oct 2026 20:02:49 +0000</pubDate>
      <link>https://dev.to/felix-helleckes/i-rebuilt-icq-5-as-a-whatsapp-client-and-the-download-page-tells-you-it-might-get-you-banned-5dd1</link>
      <guid>https://dev.to/felix-helleckes/i-rebuilt-icq-5-as-a-whatsapp-client-and-the-download-page-tells-you-it-might-get-you-banned-5dd1</guid>
      <description>&lt;p&gt;A desktop messenger that puts your real WhatsApp and Telegram chats behind the 2003 interface, uh-oh sound included. Open source, unsigned, and honest about what it costs you.&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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa4hawh6cdj7vjocdg3sq.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.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fa4hawh6cdj7vjocdg3sq.png" alt="The Retrogram contact list: WhatsApp and Telegram as tabs, groups folded at the top, unread counters per chat, in the dark teal ICQ 5 skin." width="361" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Screenshot from the running app. Contact names are blacked out; nothing else is retouched.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;ICQ's servers went dark for good on 26 June 2024. Every contact list on them went with it.&lt;/p&gt;

&lt;p&gt;I did not want ICQ back. Rebuilding the network would have given me a beautiful client with nobody in it — which is how most nostalgia projects die. What I wanted was the &lt;em&gt;interface&lt;/em&gt;: the dark teal, the separate window per contact that you arranged across your desktop like index cards, the flower icon, and that one sound.&lt;/p&gt;

&lt;p&gt;So Retrogram is ICQ 5's interface sitting on top of the messengers you already use. Your contacts are already there, because they are your actual WhatsApp and Telegram contacts. It is Electron 29 and React 18, and it runs on Windows, macOS and Linux.&lt;/p&gt;

&lt;p&gt;And before any of the fun parts, the part that matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  It might get your WhatsApp account banned
&lt;/h2&gt;

&lt;p&gt;Retrogram speaks WhatsApp's multi-device protocol directly, the same way other third-party clients do. WhatsApp's Terms of Service permit their official apps and nothing else, and they do act against unofficial clients.&lt;/p&gt;

&lt;p&gt;I cannot promise you otherwise, and neither can anybody else who ships something like this. So: do not use it on an account you cannot afford to lose.&lt;/p&gt;

&lt;p&gt;I put that sentence on the download page, above the buttons, in the same size as everything else. It costs me downloads. I have watched the number and it is not imaginary. But a retro messenger is not worth somebody losing the account their family group chat lives in, and anyone who buries that warning in a FAQ footer knows exactly what they are doing.&lt;/p&gt;

&lt;p&gt;Telegram is a different situation — it has an official API for third-party clients and this kind of thing is expected there.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three questions, answered properly
&lt;/h2&gt;

&lt;p&gt;People downloading an unsigned &lt;code&gt;.exe&lt;/code&gt; from a stranger on the internet ask the same three things, and they deserve straight answers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Who can read my messages?&lt;/strong&gt; No server of mine is involved anywhere. The app connects from your machine straight to WhatsApp and Telegram. Your logins and chat cache sit in a local &lt;code&gt;ICQ-Data&lt;/code&gt; folder. The whole source is on GitHub — you do not have to believe me, you can read it, and if you would rather, you can build it yourself in four commands.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Why does Windows warn me?&lt;/strong&gt; Because the builds are not code-signed. A certificate costs money that a hobby project does not have, so SmartScreen flags every unknown publisher. &lt;em&gt;More info&lt;/em&gt; → &lt;em&gt;Run anyway&lt;/em&gt;. On macOS, right-click the app and choose &lt;em&gt;Open&lt;/em&gt;. I would love to tell you this is fine and normal; it is normal, and you should still be suspicious of unsigned binaries in general.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is this ICQ coming back?&lt;/strong&gt; No. Independent project, no connection to ICQ or AOL, no revived network.&lt;/p&gt;

&lt;h2&gt;
  
  
  What actually got rebuilt
&lt;/h2&gt;

&lt;p&gt;The separate chat window per contact is the feature everything else hangs off. Modern messengers put every conversation in one window with a sidebar, which is efficient and completely flattens the sense that each conversation is its own place. In ICQ 5 a chat was an object on your desktop. You moved it. You left it open in a corner. You could glance at three of them at once.&lt;/p&gt;

&lt;p&gt;Getting that to work with modern messaging was most of the project. Each window needs its own state, its own typing indicator, its own read receipts, and they all have to stay in sync with one connection underneath.&lt;/p&gt;

&lt;p&gt;What made it across: images, videos, GIFs, stickers (animated ones on Telegram), voice messages, read receipts with WhatsApp's four acknowledgement states, the live typing indicator, a media lightbox, collapsible groups, unread badges, drag-and-drop file transfer, and profile pictures loaded in the background.&lt;/p&gt;

&lt;p&gt;Three skins, all pure CSS variables: ICQ Retro Dark in the original teal, ICQ Retro Light in green, and an MSN Messenger blue-and-white for people whose nostalgia points somewhere slightly different. One click re-skins everything.&lt;/p&gt;

&lt;p&gt;There are also two games in there, Slide a Lama and Pool, which exist for no defensible reason.&lt;/p&gt;

&lt;p&gt;And the uh-oh. Obviously the uh-oh. In Germany, where ICQ was genuinely enormous, that sound does something to people in their late thirties that no feature list can explain.&lt;/p&gt;

&lt;h2&gt;
  
  
  The unglamorous engineering notes
&lt;/h2&gt;

&lt;p&gt;Early versions bundled a browser to drive WhatsApp Web. That is how most of these projects start and it is miserable: heavy, fragile, and on Linux it dragged in a pile of runtime dependencies. The app now speaks the protocol directly, which removed the browser, the Linux dependency mess, and a whole category of bugs where the thing broke because a web interface moved a button.&lt;/p&gt;

&lt;p&gt;Sessions survive restarts — scan the QR once. Telegram takes QR or phone number with 2FA. Neither service needs an API key or a developer account from you.&lt;/p&gt;

&lt;p&gt;The portable Windows build is a single &lt;code&gt;.exe&lt;/code&gt; whose login lives in its own folder, so you can carry it. You can run it on several machines at once; each links as its own device.&lt;/p&gt;

&lt;h2&gt;
  
  
  It is small, and that is fine
&lt;/h2&gt;

&lt;p&gt;Nine stars. A few dozen downloads per release. I am not pretending this is a movement.&lt;/p&gt;

&lt;p&gt;But the people who do use it send me the kind of email you do not get for a utility — mostly one sentence about where they were in 2003. That is a reasonable return on a side project.&lt;/p&gt;

&lt;p&gt;If you want to look at it: the whole thing is on GitHub, issues included. The build instructions are four lines and I have kept them working, which is the one courtesy every open-source project owes and about half of them deliver.&lt;/p&gt;

&lt;p&gt;Retrogram is an independent project with no connection to ICQ, AOL, Meta or Telegram.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;a href="https://icq-retrogram.pages.dev/" rel="noopener noreferrer"&gt;Download&lt;/a&gt; · &lt;a href="https://github.com/Felix-Helleckes/ICQ" rel="noopener noreferrer"&gt;Source on GitHub&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Felix Helleckes — QA &amp;amp; Test Automation Engineer in Cologne. More of what I build: &lt;a href="https://felix-helleckes.github.io/" rel="noopener noreferrer"&gt;felix-helleckes.github.io&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>opensource</category>
      <category>electron</category>
      <category>javascript</category>
    </item>
    <item>
      <title>Rebuilding Battle Network's Combat for a Touchscreen (and with a lot of new online features)</title>
      <dc:creator>Felix Helleckes</dc:creator>
      <pubDate>Thu, 13 Aug 2026 15:48:17 +0000</pubDate>
      <link>https://dev.to/felix-helleckes/rebuilding-battle-networks-combat-for-a-touchscreen-and-with-a-lot-of-new-online-features-2594</link>
      <guid>https://dev.to/felix-helleckes/rebuilding-battle-networks-combat-for-a-touchscreen-and-with-a-lot-of-new-online-features-2594</guid>
      <description>&lt;p&gt;It looks like an action game. You control a character called MegaMan.EXE on a 3×6 grid of panels, three rows deep, split down the middle — your side, their side. Viruses move and shoot in real time. You dodge along rows and fire back.&lt;/p&gt;

&lt;p&gt;But you're not playing an action game. You're playing a deck.&lt;/p&gt;

&lt;p&gt;Before the fight you build a folder of Battle Chips. During the fight, every few seconds, a Custom gauge fills and the game stops dead to deal you a random hand from that folder — five chips, and you can only select the ones that share a letter code or a name. Pick your combination, unpause, and now you have a sword, a cannon and nothing else until the gauge fills again.&lt;/p&gt;

&lt;p&gt;That tension is the whole design. Real-time positioning on a grid, turn-based resource management layered on top, and a deck you assembled hours ago deciding what options you get right now.&lt;/p&gt;

&lt;p&gt;I've been rebuilding that system for phones. It's out now, it's free, and it's called &lt;a href="https://mega-man-advanced-pet.vercel.app/" rel="noopener noreferrer"&gt;Mega Man: Advanced PET&lt;/a&gt;. This is a post about the design problems, because they turned out to be more interesting than the code.&lt;/p&gt;

&lt;h2&gt;
  
  
  The input problem
&lt;/h2&gt;

&lt;p&gt;The GBA had a d-pad. This matters more than it sounds.&lt;/p&gt;

&lt;p&gt;Battle Network's combat assumes you can move exactly one panel, in a chosen direction, at a moment of your choosing, while a projectile is already travelling toward you. The d-pad gives you that for free. Four discrete directions, tactile, no ambiguity, no visual occlusion.&lt;/p&gt;

&lt;p&gt;A touchscreen gives you none of it. Every option is a compromise:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A virtual d-pad&lt;/strong&gt; puts a fake control under a thumb that has no way to feel where it is. Players drift off it constantly, and they only notice when an input doesn't register — which is exactly the moment they were dodging something.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Swipe gestures&lt;/strong&gt; read cleanly when you swipe deliberately. They read terribly when you're panicking. Fast repeated swipes get merged, misinterpreted, or eaten by the gesture recogniser's timing window.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tap-the-destination-panel&lt;/strong&gt; is precise and unambiguous. It also puts your thumb directly on top of the six panels you most need to see.&lt;/p&gt;

&lt;p&gt;There isn't a clean answer here. Every touch control scheme for a real-time grid game is choosing which failure mode you can live with. That's worth saying plainly, because a lot of mobile ports pretend the problem doesn't exist and ship a virtual d-pad without comment.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Custom screen is the part that survives translation
&lt;/h2&gt;

&lt;p&gt;Here's the good news: the half of Battle Network that's a card game ports beautifully.&lt;/p&gt;

&lt;p&gt;The Custom screen is already a menu. It already pauses the action. It already expects deliberate, considered input rather than reflexes. Touch is &lt;em&gt;better&lt;/em&gt; at this than a d-pad — you tap the chips you want instead of cursoring across a grid of them.&lt;/p&gt;

&lt;p&gt;Advanced PET has 273 chips, and they fuse the way they should: by matching code letters or matching names, chaining into Program Advances. The &lt;a href="https://mega-man-advanced-pet.vercel.app/chips.html" rel="noopener noreferrer"&gt;full chip library is browsable on the web&lt;/a&gt;, searchable by element, power and rarity, if you want to look at the numbers without installing anything.&lt;/p&gt;

&lt;p&gt;What makes chip fusion interesting as a design object is that it makes folder-building a constraint puzzle rather than a power calculation. A folder of thirty individually excellent chips with thirty different codes is worse than a folder of mediocre chips that all share the letter B, because the second one actually combines when it's dealt to you. You're not optimising for chip strength. You're optimising for the probability that your random hand contains a legal combination.&lt;/p&gt;

&lt;p&gt;That's a genuinely good system, and it survives the platform change completely intact.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making a fan game feel occupied
&lt;/h2&gt;

&lt;p&gt;Battle Network had hub areas — cyberspace plazas where other NetNavis stood around. In the originals they were NPCs with two lines of dialogue each.&lt;/p&gt;

&lt;p&gt;Advanced PET has The Square, which is the same idea with actual people in it: a shared real-time space where players walk around as their own Navis, with name plates, live chat, a trade bazaar, and community goals. It runs on Supabase.&lt;/p&gt;

&lt;p&gt;The design constraint that shaped this most was that event viruses spawn &lt;strong&gt;deterministically&lt;/strong&gt; — every client computes the same spawns at the same time from shared state, rather than a server telling each client what appeared. That's a meaningful architectural choice for a project without dedicated game servers, and it's what makes a shared world possible at all when the thing coordinating it is a database with a realtime channel rather than an authoritative simulation.&lt;/p&gt;

&lt;p&gt;The trade-off is that determinism has to hold under bad mobile connectivity, which is a harder guarantee than it sounds.&lt;/p&gt;

&lt;p&gt;Co-op raids sit on top of the same social layer. You invite people from your BrotherBand friend list, the boss scales to how many of you turn up, and rewards are shared across everyone who joined. There's also local Bluetooth NetBattling, which exists purely because sitting next to someone and linking up was a real part of what the GBA games were.&lt;/p&gt;

&lt;h2&gt;
  
  
  Some smaller decisions worth defending
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Your step count charges the Cyber-Meter.&lt;/strong&gt; Real-world walking fuels battles. This could easily be a gimmick, and in a monetised game it would be — but here it's the thing that gets you to open the app when you're not already playing it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;No pay-to-win, no ads.&lt;/strong&gt; The game is free and there's no monetisation at all. This isn't generosity, it's the only defensible position for a fan project built on someone else's IP.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Colour-blind-friendly UI and adjustable text.&lt;/strong&gt; Battle Network leans heavily on elemental colour matching — fire beats wood, wood beats electric — and a game that encodes core mechanics in colour alone is unplayable for a meaningful chunk of players. Haptics and text scaling are in for the same reason.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The website doesn't load YouTube until you press play.&lt;/strong&gt; No Google content, no cookies, until you actively ask for the trailer. Small thing, but it's the difference between claiming to care about privacy and implementing it.&lt;/p&gt;

&lt;h2&gt;
  
  
  On the legal question, because someone always asks
&lt;/h2&gt;

&lt;p&gt;It's a fan game. It's free, there's no monetisation of any kind, and it isn't affiliated with or endorsed by Capcom. Mega Man is their trademark.&lt;/p&gt;

&lt;p&gt;Fan projects on active IP live at the owner's discretion, and everyone building one knows it. The only honest position is to not monetise, not pretend it's official, and accept that the calculus belongs to Capcom rather than to me.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it is
&lt;/h2&gt;

&lt;p&gt;Out now on &lt;a href="https://apps.apple.com/app/id6787106134" rel="noopener noreferrer"&gt;the App Store&lt;/a&gt; and &lt;a href="https://play.google.com/store/apps/details?id=com.megaman.advancedpet" rel="noopener noreferrer"&gt;Google Play&lt;/a&gt;, free, in English, German and French.&lt;/p&gt;

&lt;p&gt;Sixty seconds of actual gameplay:&lt;/p&gt;


&lt;div&gt;
    &lt;iframe src="https://www.youtube.com/embed/K4S1KJexcIY"&gt;
    &lt;/iframe&gt;
  &lt;/div&gt;


&lt;p&gt;If you played the originals and have opinions about what I got wrong — particularly on the input scheme, which is the part I'm least settled on — &lt;a href="https://discord.gg/2kGC69ugXP" rel="noopener noreferrer"&gt;the Discord&lt;/a&gt; is where that conversation happens.&lt;/p&gt;

&lt;p&gt;I'd genuinely rather hear that the controls don't feel right than not hear it.&lt;/p&gt;

</description>
      <category>capcom</category>
      <category>android</category>
      <category>ios</category>
      <category>indidev</category>
    </item>
    <item>
      <title>"Uh-Oh!” 🌼 Who else still hears this sound in their sleep?</title>
      <dc:creator>Felix Helleckes</dc:creator>
      <pubDate>Tue, 12 May 2026 08:16:25 +0000</pubDate>
      <link>https://dev.to/felix-helleckes/uh-oh-who-else-still-hears-this-sound-in-their-sleep-4ehi</link>
      <guid>https://dev.to/felix-helleckes/uh-oh-who-else-still-hears-this-sound-in-their-sleep-4ehi</guid>
      <description>&lt;p&gt;Let’s be honest: Modern messaging is efficient, but it’s become… soulless. Everything is clean, minimal, and predictable. That’s why I spent the last few weeks turning back the clock—while keeping the tech firmly in 2026.&lt;/p&gt;

&lt;p&gt;I built ICQ &lt;a href="https://github.com/felix-helleckes/ICQ" rel="noopener noreferrer"&gt;Retrogram&lt;/a&gt;. 💻✨&lt;/p&gt;

&lt;p&gt;It’s a fully functional multi-messenger for WhatsApp and Telegram, but with the exact look and feel of the legendary ICQ 5.&lt;/p&gt;

&lt;p&gt;What’s under the hood?&lt;/p&gt;

&lt;p&gt;Frontend: Pure retro vibes, including the original status icons, window skins, and that iconic lime-green flower.&lt;/p&gt;

&lt;p&gt;Backend: Seamless integration of modern messenger APIs, making sure the nostalgia actually works in your daily life.&lt;/p&gt;

&lt;p&gt;The "Why": Because chatting should be fun again. UI design can be more than just "white space and sans-serif fonts."&lt;/p&gt;

&lt;p&gt;I’ve documented the entire journey—from the initial spark to the technical hurdles—in a new Medium article.&lt;/p&gt;

&lt;p&gt;👉 Read it here: &lt;a href="https://felix-helleckes.medium.com/i-built-a-retro-icq-messenger-for-whatsapp-telegram-and-suddenly-chatting-is-fun-again-ad01fc6df8b7" rel="noopener noreferrer"&gt;https://felix-helleckes.medium.com/i-built-a-retro-icq-messenger-for-whatsapp-telegram-and-suddenly-chatting-is-fun-again-ad01fc6df8b7&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I’m curious: Which old-school feature do you miss the most? The "Invisible" mode? The "Nudge"? Or just the thrill of someone coming online?&lt;/p&gt;

&lt;p&gt;Let me know in the comments! 👇&lt;/p&gt;

&lt;h1&gt;
  
  
  RetroTech #WebDevelopment #Nostalgia #ICQ #SoftwareEngineering #UIUX #BuildInPublic #RetroComputing
&lt;/h1&gt;

</description>
      <category>icq</category>
      <category>retro</category>
      <category>whatsapp</category>
      <category>telegram</category>
    </item>
    <item>
      <title>The Rise of the Machine Employees: OpenClaw vs. Paperclip.ing vs. Hermes Agent — A QA Reality Check</title>
      <dc:creator>Felix Helleckes</dc:creator>
      <pubDate>Wed, 06 May 2026 20:13:12 +0000</pubDate>
      <link>https://dev.to/felix-helleckes/the-rise-of-the-machine-employees-openclaw-vs-papercliping-vs-hermes-agent-a-qa-reality-check-2jpn</link>
      <guid>https://dev.to/felix-helleckes/the-rise-of-the-machine-employees-openclaw-vs-papercliping-vs-hermes-agent-a-qa-reality-check-2jpn</guid>
      <description>&lt;p&gt;We are rushing toward autonomous agents, but are we building resilient software or just expensive prompt-looping machines?&lt;/p&gt;

&lt;p&gt;Hi, my Name is Felix Helleckes. I’m a Senior QA Engineer and Fullstack Developer with a passion for building autonomous systems. Currently, I’m focusing on the intersection of AI and data at SteamRoast.ai.&lt;/p&gt;

&lt;p&gt;Let’s connect: LinkedIn&lt;br&gt;
See my Hobby Projects here: GitHub&lt;br&gt;
Read More&lt;/p&gt;

&lt;p&gt;In the last six months, the “Agent” hype has shifted from experimental Python scripts to polished, production-ready frameworks. We are no longer just chatting with LLMs; we are giving them hands, eyes, and — scarily enough — access to our file systems.&lt;/p&gt;

&lt;p&gt;Today, three names are dominating the conversation: OpenClaw, Paperclip.ing, and Hermes Agent. At first glance, they all promise the same: “Let the AI do the work.”&lt;/p&gt;

&lt;p&gt;But as a Senior QA Engineer, I don’t care about promises. I care about determinism, reliability, and edge cases. Here is how these three stack up when you strip away the marketing fluff.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Contenders: A High-Level Breakdown
OpenClaw: The “Swiss Army Knife”
OpenClaw positions itself as the open-source alternative to proprietary operator frameworks. It’s designed to bridge the gap between “thinking” and “doing.” It’s highly modular and thrives in environments where you need custom tool-calling.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Paperclip.ing: The “Productivity Specialist”&lt;br&gt;
Paperclip feels like the “Apple” approach to agents. It’s sleek, web-integrated, and focused on automating browser-based workflows. If you want to automate your SaaS-ops, Paperclip is the frontrunner.&lt;/p&gt;

&lt;p&gt;Hermes Agent (Nous Research): The “Brain-First” Approach&lt;br&gt;
Coming from the legendary Nous Research team, Hermes isn’t just a wrapper; it’s built around the Hermes 3 model. It’s an agentic framework that leverages the model’s native ability to follow complex, long-form instructions without “losing the plot.”&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Why They Are Similar (The “Agentic Blueprint”)
From a structural perspective, all three follow the ReAct (Reason + Act) pattern:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Input: User gives a goal.&lt;br&gt;
Observation: The agent looks at its environment (DOM, Terminal, API).&lt;br&gt;
Thought: The LLM decides what to do next.&lt;br&gt;
Action: The tool is called.&lt;br&gt;
They all suffer from the same “Infinite Loop” risk and the “Hallucination of Capability” (where the agent thinks it clicked a button that doesn’t exist).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Critical QA Lens: Why They Are Different
FeatureOpenClawPaperclip.ingHermes AgentPrimary StrengthTool VersatilityBrowser AutomationReasoning DepthReliability BugConfiguration DriftDOM FlakinessModel LatencyQA ChallengeInfinite Tool LoopsVisual RegressionNon-Deterministic Logic&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The “Flakiness” Factor&lt;br&gt;
As a QA, Paperclip.ing keeps me up at night. Web-based agents are notoriously fragile. A 10px shift in a UI or a dynamic ClassName change can break a Paperclip workflow. It’s powerful, but the “Test Stability” is low.&lt;/p&gt;

&lt;p&gt;Write on Medium&lt;br&gt;
OpenClaw is more robust because it’s closer to the API layer, but it requires massive “Guardrail Testing.” Without strict schemas, OpenClaw can easily hallucinate tool parameters, leading to “Silent Failures.”&lt;/p&gt;

&lt;p&gt;Hermes Agent is the most interesting from a logic perspective. Because it’s fine-tuned for agentic tasks, it handles edge-case recovery better than the others. If a step fails, Hermes is more likely to “realize” it and pivot, whereas the others might just retry the same failing action until your API credits hit zero.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The Verdict: Innovation vs. Reliability
We are currently in the “Move Fast and Break Things” phase of AI Agents.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Use OpenClaw if you are building a custom internal tool and need full control over the “hands.”&lt;br&gt;
Use Paperclip.ing if you need to automate tedious browser tasks today and don’t mind a bit of maintenance.&lt;br&gt;
Use Hermes Agent if you are building a system where the “Thinking” is more important than the “Clicking.”&lt;br&gt;
My QA Take: None of these are “Set and Forget.” The industry is missing a unified Agent Testing Framework. We are deploying agents faster than we can validate their decision-making trees.&lt;/p&gt;

&lt;p&gt;As we move toward “100k missions” and AI-driven startups, the winner won’t be the agent with the coolest features — it will be the one that is the most observable and testable.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Final Thoughts
The line between OpenClaw, Paperclip, and Hermes is blurring. Soon, the “Agent” will just be a commodity. The real value lies in the Environment we build for them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;What’s your experience? Have you let an agent touch your production codebase yet? Let’s discuss in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>openclaw</category>
      <category>n8n</category>
      <category>programming</category>
    </item>
    <item>
      <title>The USB-C Paradox: Why the EU Standard is a Mess and Apple is Charging You for 20-Year-Old Tech</title>
      <dc:creator>Felix Helleckes</dc:creator>
      <pubDate>Mon, 27 Apr 2026 08:27:08 +0000</pubDate>
      <link>https://dev.to/felix-helleckes/the-usb-c-paradox-why-the-eu-standard-is-a-mess-and-apple-is-charging-you-for-20-year-old-tech-39hn</link>
      <guid>https://dev.to/felix-helleckes/the-usb-c-paradox-why-the-eu-standard-is-a-mess-and-apple-is-charging-you-for-20-year-old-tech-39hn</guid>
      <description>&lt;p&gt;Think all USB-C cables are the same? Think again. From “USB 2.0” speeds in €35 cables to the EU’s half-baked standardization, here is why your tech is slower than it should be.&lt;br&gt;
As a Senior QA Engineer, I spend my life looking for single points of failure. Usually, these are in code or cloud infrastructures. But lately, the biggest failure in the tech ecosystem is sitting right on our desks, disguised as a “universal” connector: USB-C.&lt;/p&gt;

&lt;p&gt;Hi, my Name is Felix Helleckes. I’m a Senior QA Engineer and Fullstack Developer with a passion for building autonomous systems. Currently, I’m focusing on the intersection of AI and data at SteamRoast.ai.&lt;/p&gt;

&lt;p&gt;Let’s connect: LinkedIn&lt;br&gt;
See my Hobby Projects here: GitHub&lt;br&gt;
Read More&lt;br&gt;
The European Union recently forced a “Common Charger” mandate. Great for the environment, right? In theory, yes. In practice, it created a Kabelchaos (cable chaos) that is more confusing than ever.&lt;/p&gt;

&lt;p&gt;Here is the breakdown of why “USB-C” is just a shape, not a standard, and why you should be careful what you plug into your devices.&lt;/p&gt;

&lt;p&gt;Press enter or click to view image in full size&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The EU’s Half-Baked Victory: Shapes vs. Standards
The EU mandate forced every smartphone manufacturer (yes, looking at you, Apple) to adopt the USB-C port. The goal was simple: one cable for everything.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Problem: The EU only standardized the physical connector, not the internals of the cable.&lt;/p&gt;

&lt;p&gt;No performance requirements: The law doesn’t dictate how fast a cable must transfer data or how much power it must deliver.&lt;br&gt;
The result: You can have two cables that look identical, but one can charge a laptop at 240W and stream 8K video, while the other can barely charge a phone and transfers data at the speed of a 2004 MP3 player.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Apple’s €35 Time Machine: USB 2.0 in 2026?
This is where it gets frustrating for consumers. Apple now sells official USB-C cables for around €35. You would expect high-end performance for that price, right?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Become a Medium member&lt;br&gt;
The Reality: Many of these “official” cables are limited to USB 2.0 speeds (480 Mbps).&lt;/p&gt;

&lt;p&gt;The Math: USB 2.0 is a standard from the year 2000.&lt;br&gt;
The Irony: You are using a cutting-edge iPhone or iPad, connected via a “modern” USB-C port, but your data is moving through a pipeline designed over two decades ago.&lt;br&gt;
Why? Because it’s cheaper to manufacture, and most users only care about charging (where these cables do deliver up to 240W). But for professionals transferring large video files, it’s a massive bottleneck.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;How to Spot a “Good” Cable (The QA Perspective)
To survive this chaos, you need to look past the connector. Here is what I look for to ensure “System Integrity” in my setup:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Thunderbolt 4 / 5: These are the “All-in-One” kings. If you see the lightning bolt icon, it usually supports high-speed data, power, and video signals simultaneously.&lt;br&gt;
USB4 Gen 3 / Gen 4: These are the non-Intel equivalents. A “USB 80Gbps” cable is roughly equivalent to Thunderbolt 5 and is often much cheaper than Apple’s offerings.&lt;br&gt;
DisplayPort Alt Mode: If you want to connect a monitor, your cable must support this. Many “charging cables” simply lack the internal wiring for video.&lt;br&gt;
The Senior QA Verdict: Visibility is Everything&lt;br&gt;
In software testing, we say: “If you can’t measure it, you don’t know if it works.” The same applies to your hardware.&lt;/p&gt;

&lt;p&gt;The USB-C market currently lacks transparency. We have a universal plug but a fragmented brain. If you find your phone charging slowly or your SSD transfer taking hours, don’t blame the device — blame the “dumb” cable in the middle.&lt;/p&gt;

&lt;p&gt;My Advice: Stop buying “official” basic cables. Look for certified USB4 or Thunderbolt alternatives. It might cost you €20 instead of €15, but it saves you from the 20-year-old speed trap.&lt;/p&gt;

&lt;p&gt;What’s in your drawer? I recently used a cable tester and realized 40% of my “USB-C” collection was actually e-waste in disguise. Check your cables, or they will become the silent bottleneck of your career.&lt;/p&gt;

&lt;p&gt;Catch me on LinkedIn or checkout my Github Portfolio for more deep dives into tech architecture and quality standards.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>cryptocurrency</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>From Manual Testing to Cloud-Native Playwright Automation: An 8-Year QA Journey</title>
      <dc:creator>Felix Helleckes</dc:creator>
      <pubDate>Fri, 10 Apr 2026 10:42:24 +0000</pubDate>
      <link>https://dev.to/felix-helleckes/from-manual-testing-to-cloud-native-playwright-automation-an-8-year-qa-journey-2d6o</link>
      <guid>https://dev.to/felix-helleckes/from-manual-testing-to-cloud-native-playwright-automation-an-8-year-qa-journey-2d6o</guid>
      <description>&lt;p&gt;How the role of Quality Assurance has evolved, and why "Shift-Left" is no longer just a buzzword.&lt;/p&gt;

&lt;p&gt;When I look back at the last decade of software development, the transformation of Quality Assurance is nothing short of revolutionary. We have moved from being the "gatekeepers at the end of the pipeline" to becoming integral automation architects right at the core of the development lifecycle.&lt;/p&gt;

&lt;p&gt;Hi, I am Felix Florian Helleckes, a Senior Quality Assurance Engineer. Over the past eight years, I’ve navigated the shifting landscapes of manual testing, IoT integrations, and highly scalable cloud environments. Here are my key takeaways from transitioning through different eras of QA.&lt;/p&gt;

&lt;p&gt;🎮 The Foundation: Gaming and Legacy Enterprise Systems&lt;br&gt;
Every automation expert needs to understand the fundamentals of manual testing first. My career started back in 2015 as an independent tester, where I had the opportunity to conduct manual testing for global players in the gaming industry, including Blizzard Entertainment. Testing games teaches you a vital lesson: user experience is everything, and edge cases are where the worst bugs hide.&lt;/p&gt;

&lt;p&gt;As I transitioned into the enterprise sector with ampada GmbH in Cologne, the focus shifted toward robust End-to-End (E2E) test automation. Here, I worked heavily with Javascript and Webdriver.io, but also tackled legacy desktop applications using VisualBasic and Microfocus UFT. It taught me how to build reliable safety nets for complex systems.&lt;/p&gt;

&lt;p&gt;📱 &lt;strong&gt;The Mobile and IoT Era&lt;/strong&gt;&lt;br&gt;
By 2018, the industry was heavily pivoting toward mobile and the Internet of Things (IoT). Joining grandcentrix GmbH, a leading agency for IoT and App development, forced me to rethink test coverage.&lt;/p&gt;

&lt;p&gt;Testing hardware-software integrations is a completely different beast. I focused on building comprehensive test concepts using Jira and Testrail, automating mobile applications with Appium, and driving API integration tests via Postman.&lt;/p&gt;

&lt;p&gt;🚀 &lt;strong&gt;Scaling Up: E-Commerce, Kubernetes, and Playwright&lt;/strong&gt;&lt;br&gt;
The real paradigm shift in my career happened when I took on the role of QA Manager and Automation Lead at Fashion Digital GmbH (the IT backbone of Peek &amp;amp; Cloppenburg).&lt;/p&gt;

&lt;p&gt;In enterprise-level e-commerce, downtime or performance bottlenecks cost real money. Here, the QA role expanded significantly:&lt;/p&gt;

&lt;p&gt;Modernizing the Stack: We moved to Playwright.dev, which drastically improved our E2E testing speed and reliability compared to older Selenium-based frameworks.&lt;/p&gt;

&lt;p&gt;Performance Testing: Functional testing isn't enough. I implemented performance and stress test automation using Python and Locust.io to ensure the web architecture could withstand heavy traffic events like Black Friday.&lt;/p&gt;

&lt;p&gt;Cloud-Native QA: The most significant step was managing and configuring test environments directly within Kubernetes clusters. QA engineers today need a solid understanding of Docker and Kubernetes to seamlessly integrate quality gates into the CI/CD pipeline.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;🚲 High-Performance Retail&lt;/strong&gt;&lt;br&gt;
Recently, I’ve been refining these high-performance QA strategies in the fast-paced retail sector at Bike24 GmbH. As a Senior Quality Assurance Engineer, my goal remains the same: ensuring that complex web architectures remain scalable, robust, and entirely bug-free upon deployment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;💡 My QA Philosophy for 2026 and Beyond&lt;/strong&gt;&lt;br&gt;
If my journey from manual gaming tests to configuring Kubernetes test environments has taught me anything, it is this: Quality is a feature, not an afterthought.&lt;/p&gt;

&lt;p&gt;To succeed in modern software development, we must embrace "Shift-Left Testing." This means bringing QA into the architectural discussions from day one. As the lines between DevOps, Development, and QA continue to blur, those who understand the entire lifecycle—from the first line of Typescript to the final Docker container—will drive the industry forward.&lt;/p&gt;

&lt;p&gt;Let’s connect and discuss the future of test automation!&lt;/p&gt;

&lt;p&gt;Portfolio: &lt;a href="//felix-helleckes.github.io"&gt;felix-helleckes.github.io&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/felix-helleckes-758529202/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Felix Florian Helleckes is a Cologne-based Senior QA Engineer specializing in Playwright, E2E Automation, and Cloud Infrastructure.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>webdev</category>
      <category>programming</category>
      <category>testing</category>
    </item>
    <item>
      <title>I Built a Star Wars Mandalorian Movie Countdown Site with React + Vite</title>
      <dc:creator>Felix Helleckes</dc:creator>
      <pubDate>Wed, 08 Apr 2026 06:12:29 +0000</pubDate>
      <link>https://dev.to/felix-helleckes/i-built-a-star-wars-mandalorian-movie-countdown-site-with-react-vite-3f4i</link>
      <guid>https://dev.to/felix-helleckes/i-built-a-star-wars-mandalorian-movie-countdown-site-with-react-vite-3f4i</guid>
      <description>&lt;p&gt;I'm a huge Star Wars fan, and with The Mandalorian &amp;amp; Grogu hitting theaters on May 22, 2026, I couldn't just sit and wait — I had to build something.&lt;/p&gt;

&lt;p&gt;*&lt;em&gt;So I created a countdown website: &lt;a href="//mando-countdown.netlify.app"&gt;Mandalorian Cinema Countdown&lt;/a&gt;&lt;br&gt;
*&lt;/em&gt;&lt;br&gt;
What's on the site?&lt;br&gt;
⏳ Live countdown timer (days, hours, minutes, seconds)&lt;br&gt;
🌟 Animated starfield background&lt;br&gt;
🎬 Embedded official trailer&lt;br&gt;
👤 Character cards for Din Djarin &amp;amp; Grogu&lt;br&gt;
📱 Fully responsive design&lt;br&gt;
Tech Stack&lt;br&gt;
React 18 with Vite&lt;br&gt;
Pure CSS (no UI framework) — custom Star Wars-inspired dark theme with gold accents&lt;br&gt;
Deployed on Netlify (free tier, zero config)&lt;br&gt;
The Fun Part: Pure CSS Starfield&lt;br&gt;
Instead of a canvas library, I went with a pure CSS animated starfield using layered box-shadow on pseudo-elements. It's lightweight and looks great:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.stars&lt;/span&gt;&lt;span class="nd"&gt;::before&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;''&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;position&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;fixed&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;2px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;background&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;transparent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;box-shadow&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="c"&gt;/* 200 random positions generated */&lt;/span&gt; &lt;span class="p"&gt;...;&lt;/span&gt;
  &lt;span class="nl"&gt;animation&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;twinkle&lt;/span&gt; &lt;span class="m"&gt;4s&lt;/span&gt; &lt;span class="n"&gt;infinite&lt;/span&gt; &lt;span class="n"&gt;alternate&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;What I learned&lt;br&gt;
Vite is ridiculously fast for React projects&lt;br&gt;
Netlify deploys a Vite build in under 30 seconds&lt;br&gt;
A well-chosen color palette (#C9A84C gold + near-black) carries a whole theme without needing images&lt;/p&gt;

</description>
      <category>css</category>
      <category>react</category>
      <category>showdev</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I Built a Self-Improving AI Crypto Bot with Python and Kraken (Full Architecture)</title>
      <dc:creator>Felix Helleckes</dc:creator>
      <pubDate>Tue, 07 Apr 2026 10:10:37 +0000</pubDate>
      <link>https://dev.to/felix-helleckes/i-built-a-self-improving-ai-crypto-bot-with-python-and-kraken-full-architecture-25bl</link>
      <guid>https://dev.to/felix-helleckes/i-built-a-self-improving-ai-crypto-bot-with-python-and-kraken-full-architecture-25bl</guid>
      <description>&lt;p&gt;The Dream: A Bot That Learns from Its Mistakes&lt;br&gt;
Most trading bots are static. You program a strategy (like RSI or MACD), and it executes until the market regime changes and you lose money. On my channel The Efficient Dev, I wanted to solve this.&lt;/p&gt;

&lt;p&gt;I built a system that doesn't just trade—it reflects. It uses AI agents to analyze its own P&amp;amp;L and suggest optimizations. Here’s how I did it.&lt;/p&gt;

&lt;p&gt;🛠️ The Tech Stack&lt;br&gt;
To keep it "efficient" and 24/7 capable, I chose:&lt;/p&gt;

&lt;p&gt;Language: Python 3.11+&lt;/p&gt;

&lt;p&gt;Exchange: Kraken API (Robust and dev-friendly)&lt;/p&gt;

&lt;p&gt;Brain: AI Agents (Analyzing trade history)&lt;/p&gt;

&lt;p&gt;Environment: Raspberry Pi (Low power, high uptime)&lt;/p&gt;

&lt;p&gt;🏗️ The System Architecture&lt;br&gt;
The bot operates in a continuous loop, but with a twist. Instead of just Market Data -&amp;gt; Trade, it follows a Reflective Loop:&lt;/p&gt;

&lt;p&gt;Ingestion: Pulling real-time OHLCV data from Kraken.&lt;/p&gt;

&lt;p&gt;Strategy Execution: A technical analysis layer triggers potential entries.&lt;/p&gt;

&lt;p&gt;The "Agent" Layer: This is the secret sauce. An AI agent reviews the last 24 hours of trades.&lt;/p&gt;

&lt;p&gt;Question: "Why did we lose 2% on that ETH long?"&lt;/p&gt;

&lt;p&gt;Action: Adjusts the volatility threshold for the next trade.&lt;/p&gt;

&lt;p&gt;Autonomous Deployment: Running on a Raspberry Pi via a systemd service.&lt;/p&gt;

&lt;p&gt;💻 Code Snippet: Connecting to Kraken&lt;br&gt;
Here is a simplified look at how I handle the authenticated client:&lt;/p&gt;

&lt;p&gt;Python&lt;br&gt;
import krakenex&lt;br&gt;
from pykrakenapi import KrakenAPI&lt;/p&gt;

&lt;p&gt;def get_kraken_connection():&lt;br&gt;
    api = krakenex.API()&lt;br&gt;
    api.load_key('kraken.key') # Keep your keys safe!&lt;br&gt;
    return KrakenAPI(api)&lt;/p&gt;

&lt;h1&gt;
  
  
  The bot then uses this to fetch balances and execute trades
&lt;/h1&gt;

&lt;p&gt;kraken = get_kraken_connection()&lt;br&gt;
print(kraken.get_account_balance())&lt;br&gt;
🧠 Why "Self-Improving"?&lt;br&gt;
The core problem with algorithmic trading is Overfitting. By using an AI reflection layer, the bot identifies if a strategy is failing because of "bad luck" or because the "market logic" has shifted.&lt;/p&gt;

&lt;p&gt;In the full video, I show the logs where the bot actually decides to stay out of the market because the AI agent detected high-frequency noise that the standard RSI couldn't see.&lt;/p&gt;

&lt;p&gt;📺 Full Technical Walkthrough&lt;br&gt;
I’ve documented the entire build process, the challenges with the Kraken API, and the exact logic of the AI agents in this video:&lt;/p&gt;

&lt;p&gt;WATCH THE VIDEO HERE: &lt;a href="https://youtu.be/nTXojkvskGM" rel="noopener noreferrer"&gt;https://youtu.be/nTXojkvskGM&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🚀 Get the Source Code&lt;br&gt;
I’m a big believer in open source. You can find the repository for this project on my GitHub. Feel free to star it or fork it to build your own version!&lt;/p&gt;

&lt;p&gt;👉 GitHub Repo: irgendwasmitfelix/TradingBot&lt;/p&gt;

&lt;p&gt;Let's Discuss!&lt;br&gt;
How do you handle risk management in your bots?&lt;/p&gt;

&lt;p&gt;Do you think AI agents are the future of retail trading, or just hype?&lt;/p&gt;

&lt;p&gt;I'll be in the comments answering questions!&lt;/p&gt;

</description>
      <category>python</category>
      <category>ai</category>
      <category>raspberrypi</category>
      <category>cryptocurrency</category>
    </item>
  </channel>
</rss>
