Image 1 — I created GIFNode: A CYD that automatically pulls and loops GIFs uploaded from a web portal
Image 2 — I created GIFNode: A CYD that automatically pulls and loops GIFs uploaded from a web portal
▲ 2 r/esp32

I created GIFNode: A CYD that automatically pulls and loops GIFs uploaded from a web portal

the idea is that anyone can upload a GIF and then i get surprises every now and then. the web server side process the uploads and optimize them for my CYD screen resolution and store them not accessible by the public. i have opted for python using flask for this.

The Web Server Side (Python & Flask)

  • The public portal processes the uploads and automatically optimizes the GIFs to match the CYD screen resolution.
  • Uploaded files are stored securely so they aren't accessible by the public.
  • The back-end stats and internal files are protected with a simple token system.
  • The Stack: Built using Python with FlaskGunicorn, and Pillow for the image processing.

The Hardware Side (ESP32 / CYD)

  • I started with what I already had on hand: a CYD board (ESP32-2432S028).
  • It checks the web server every minute for new files.
  • When a new GIF is found, it downloads it directly to the SD card (an onboard LED flashes to let me know a new file arrived).
  • New downloads are immediately pushed to the front of the playlist so they play first.
  • Troll Protection: I also built a simple async server directly on the ESP32 so I can easily delete GIFs if trolling ever get out of hand!
  • Libraries Used: bitbank2/AnimatedGIFbblanchon/ArduinoJson, and ESP32Async/ESPAsyncWebServer.

Next Steps

  • I'm still working on cleaning up the code and testing everything out.
  • Open Source Plans: I absolutely plan on releasing the code for both the Python server and the ESP32 firmware! Before I release the firmware, I want to put in a little more work to make it easily adaptable for different display modules and screens.

Feel free to try it out by dropping a GIF on the live portal! I'd love to hear your thoughts, optimization tips, or just seeing your GIFs.

u/mohamedation — 1 day ago
▲ 11 r/gamification+4 crossposts

I built a Pomodoro timer that feels like a classic side-scrolling game to keep myself motivated while coding.

Hey everyone,

I wanted to share a side project I've been working on to help me focus better on my tasks. It is now live on the Google Play Store—totally free, with no ads, no tracking, and no accounts needed.

The core idea is that it's a side-scrolling environment that always changes dynamically by swapping out different parallax layers. I wanted to create something that looks completely different every single time you glance at it.

The inspiration actually came from DevDuck on YouTube, who created something similar as a gamified experience. His project is much more feature-rich than mine, and since he does his own pixel art, it's way more coherent! I just wanted something similar but simpler—without having to think about it too much. It just works, with as few options as possible, so you can just focus on enjoying your tasks.

It originally started as a simple HTML and JavaScript project back in 2024. A year later, I finally found some time to polish it up a bit and rebuilt it using Nuxt. Now it's available on the Play Store for Android devices. I'm also reworking the web version right now so it will be fully available as a web app again soon, too.

The settings are straightforward:

  • Configure your focus and break durations.
  • Set them to random.
  • Use a "reverse Pomodoro".

The pixel art is sourced from various talented artists, all of whom you can check out in the app's credits section.

I would really appreciate it if you took the time to try it out. It would mean the world to me if this feels like something you'd enjoy using while focusing or winding down and enjoying the pixel environments.

Website: https://scrollodoro.com

Google Play: https://play.google.com/store/apps/details?id=com.scrollodoro

Let me know what you think!

u/mohamedation — 8 days ago

suspicious JavaScript redirect chain

I’m currently looking into a JavaScript behavior issue and would appreciate help understanding whether this matches any known pattern or framework.

The issue was reported as a site occasionally redirecting users, but only on the first visit or first interaction. After that, the behavior appears to stop or change.

While investigating, I found an obfuscated JavaScript snippet embedded in a popup plugin’s custom JS section. The site is running several older plugins, so I’m still not sure if this originates from the plugin itself or another part of the stack.

it grabs a script from another domain and then that script decides the redirection.

the script seems to:

  • Perform basic environment checks (webdriver, user-agent filtering, bot detection lists)
  • Detect iframe context (top !== self)
  • Collect basic browser fingerprint information (including navigator.userAgentData)
  • Send a POST request to a remote endpoint
  • Include parameters such as:
    • current page URL
    • static identifier values
    • iframe flag
    • timestamp

how can i find more about such campaign and if its new or old? i have more details in my blog because i dont know how much can i post here. searching for the domains doesnt reproduce much info other than that they might be malicious.

reddit.com
u/mohamedation — 19 days ago
▲ 0 r/Passwords+1 crossposts

PwnedCheck – A lightweight CLI tool to check if passwords have been exposed in data breaches

Hey everyone,

I wanted to share a tiny tool I built called PwnedCheck.

It’s a command-line tool written in Go that lets you quickly check if a password has been compromised in a data breach using Troy Hunt's Have I Been Pwned (HIBP) API.

Recently i refactored the code to add the ability to check Bitwarden password encrypted JSON exports. i think it needs more testing and vetting so that is why i am sharing, but i think its very useful to check all the passwords in the vault.

Key features:

  • Fast & Lightweight: Built in Go, runs right out of your terminal.
  • Supports Bitwarden password encrypted JSON export.
  • Privacy-focused (k-Anonymity): It uses HIBP's range API model. It only sends the first 5 characters of the SHA-1 password hash over the network, so your actual password never leaves your machine.
  • Simple CLI interface: Easy to integrate into your setup or scripts.

If you like minimal CLI utilities or want a quick way to audit a password locally without opening a browser, check it out!

GitHub source: https://github.com/mohamedation/PwnedCheck

Feedback and contributions are always welcome!

u/mohamedation — 19 days ago
▲ 18 r/linuxadmin+2 crossposts

[OC] Yet another terminal animation tool - GoTermFX

I wanted to create a tool to easily run animations/sequences in the terminal, either for fun or for automations.

I built it in Go and designed it to be easily expandable, so more animations (complex or simple) can be added effortlessly.

Current Animations (8 total):

  • Matrix: Kinda a must.
  • WikiDecrypt: Inspired by the movie Sneakers and no-more-secrets. It grabs a random article from Wikipedia and runs a decryption animation.
  • WarGhost: Inspired by the movie WarGames.
  • Rain
  • Snow
  • Fireworks
  • Starfield
  • Hyperspace

I would love some feedback and possible contributions for more fun animations
https://github.com/mohamedation/gotermfx

u/mohamedation — 2 months ago
▲ 3 r/ShowYourApp+1 crossposts

I built a web tool to search for terms in multiple PDFs to solve my own issue and learn how to launch a product

Hey everyone,

I recently ran into a problem where I needed to search for a specific list of words across a bunch of different PDFs at once. I couldn't find a simple way to do it, so I built a tool to solve it for myself.

Then I figured—why not try to turn this into an actual "end product" to help others and finally learn how to build something for the public? I’ve never handled the commercial side of a project before, so I created PDFSleuth.com to figure it all out.

What it does: It’s a web-based tool where you drop in multiple PDFs and search them all simultaneously. It shows you exactly which pages the results are on and gives you a small excerpt of the text before and after the keyword so you have context.

The Tech & Privacy: Privacy: I’m big on this, so uploaded files are deleted immediately after processing. If a user has a subscription, only the text excerpts are saved so they can view their search history later.

Analytics: This was my first time using Simple Analytics instead of Google Analytics to keep things more privacy-friendly.

Stack: The frontend is Nuxt, the backend is Python, and payments are handled through Lemon Squeezy.

My main goal was to learn and maybe see the first subscription notification.I wanted to make sure about registration flows, email activation, and managing free vs. paid tiers. It’s definitely a work in progress and might not be the next viral thing espicially with all the products being launched with AI boom, but it’s helped me polish my skills and its one more project kinda done and not just WIP on my computer.

I’d love some feedback if possible and of course I am happy to answer any questions about the stack or the process!

u/mohamedation — 2 months ago