Every ESP32 has a unique mac address burned in at the factory. I turned mine into a face

this is Gurenu, he was technically inside the chip before I even bought it, I just wrote the code that draws him. reflash all you want, he stays.

all open source (MIT), engine and firmware are separate repos so you can port it to whatever esp32 thing you have lying around. blame @mannay for this one, I saw his doodle faces the other day and couldn't let it go

also made a page where you can see who's inside YOUR chip. plug it in, chrome reads the mac and draws the face right there in the browser (same c++ code compiled to wasm, so it can't lie). works even if your board has no screen

https://evandroguedes.github.io/doodlesoul

Flash yours and post it here!

u/evandroguedes — 5 days ago
▲ 6 r/esp32

I put procedural hand-drawn faces on an M5StickC Plus, then made a version where each flash births one permanent character

For the past days I kept coming back to those doodled crowd sketches the artist Mannay posts on X. No drawn assets, every face is code: an eye is two arcs and a pupil, a nose is one long curve around a tip. I wanted that living on a dev board on my desk instead of in a browser tab.

So I built it, and it turned into two repos.

The engine (doodleink, MIT) is header-only C++. A seed rolls a trait sheet with rarity percentages: skull shape, eyes, nose, hair, headwear, one of nine subculture vibes (punk, elder, hippie, desi, rasta...). Features get pinned to a rough 3D head so the face can turn and the nose pokes past the silhouette in profile, which is most of the charm. A stroke engine then draws every line with wobble, pressure taper and ink crumbs onto paper texture. The render target is a two-method canvas interface, so it runs the same on a desktop PNG, an ST7789, and eventually e-paper.

Performance notes, since that's why we're all here. First flash ran 342 ms/frame. I assumed the pixel blending was the problem; an integer RGB565 fast path barely moved it (334 ms). The actual killer was software trig. Xtensa has no hardware sin/cos, newlib's sinf costs hundreds of cycles, and the wobble engine calls it per stroke sample. Polynomial approximations cut the frame to ~80 ms in one step. Sqrt-free stamp coverage and per-row dirty spans got it to 61-71 ms. Profile your trig before your pixels.

Other gotchas that cost me an evening: M5.Display.setSwapBytes(true) if your pushImage colors look like a fish tank on acid (my framebuffer-over-serial screenshot tool showed perfect colors, because it reads before the SPI transfer — the panel is write-only, so only a phone photo caught it). And the stroke engine nests stack buffers, so SET_LOOP_TASK_STACK_SIZE(24*1024).

The part I actually wanted to share (doodlesoul, MIT): a firmware where there is no "next" button. Every ESP32 leaves the factory with a unique MAC burned into eFuse; doodlesoul mixes all 48 bits through splitmix64 and uses the result as the character seed. The soul is the device. Flashing doesn't create it and can't destroy it — the first boot just meets it, every boot after is a reunion. It has a generated name, a rarity tier, moods, blinks, IMU tilt following, and a little hop when you press the button. Two people flashing the same release binary get different characters, guaranteed by the hardware.

The first version tied the soul to the build instead, and I learned why that was wrong within a day: my stick was Bavokot, a nerdy woman with round glasses and a scribbled ponytail, until I fixed a button bug and the reflash erased her. I wrote that rule myself and it still stung. So now the seed comes from the silicon. My device's true character turned out to be Gurenu, a spiky-haired guy with a chin beard, and nothing can touch him: there's no reroll command, no escape hatch. One chip, one soul. If you want a different character, you need a different chip.

Runs on the M5StickC Plus (135×240, ~162 KB heap). The canvas interface is small, so if you port it to a Cardputer, a Core2 or an e-paper panel, I want to see it.

Credits where due: concept inspired by Mannay's crowd doodles, stroke texture techniques ported from kengocodes' cyber-crowd (MIT).

u/evandroguedes — 6 days ago
▲ 31 r/AutomateShopify+3 crossposts

Built with Claude in a few hours: my Shopify store is now a desk Tamagotchi. It got sick last week and my checkout was actually broken

I had a silly idea on the weekend: what if my Shopify store was a Tamagotchi? A few hours of going back and forth with Claude later, there is a pixel pet on a $30 M5StickC (a matchbox-sized ESP32 with a screen) on my desk, and its feelings are my store's data:

* Someone places an order: it dances in coin rain, plays a chiptune cha-ching, and shows the order total
* No orders for 3 hours: it falls asleep
* A product runs low: it gets hungry and tells me exactly what to restock ("LOW STOCK: Blue Hoodie / M, 2 left")
* 5+ unshipped orders: it slowly gets buried under little pixel shipping boxes
* Store health drops: it goes pale with a thermometer in its mouth, and fixing the issues heals it

It costs $0/month to run: Shopify webhooks hit a Cloudflare Worker on the free tier, which pushes events over MQTT (HiveMQ free tier) to the device. My admin token never touches the desk toy; it only gets scoped MQTT credentials.

About the "built with Claude" part, since that is half the reason I am posting: I did not write the code. I described what I wanted, made the decisions, and created the accounts, and Claude wrote the Worker, the ESP32 firmware, and the setup guide. Two moments genuinely surprised me:

* Cloudflare Workers cannot speak MQTT, so Claude hand-rolled the MQTT protocol over a raw TCP socket, about 100 lines, and it just worked.
* The wild one: when I said the UI needed polish, it added a screenshot-over-serial feature to the firmware, flashed the device, pulled PNGs of the actual framebuffer, and reviewed its own pixels. It caught that the retro font renders "$" as "£" (my store briefly earned pounds sterling), that the sick pet's thermometer looked like a cigarette, and that the low stock alert was too subtle, then fixed all of it and re-flashed. I mostly sat there watching my own desk toy get code-reviewed.

To keep expectations honest: it was not one magic prompt. It was a conversation over a weekend, a couple of iterations, and me testing on a real store between rounds. But I have built enough firmware the hard way to say this would have taken me weeks alone, mostly spent in datasheets.

Other details for the curious: the pet is ASCII art in a header file, so you can redesign your gotchi in a text editor. Gift cards are excluded from low-stock alerts because the pet spent a day begging me to restock gift cards. And the "health" that makes it sick is an open endpoint: POST any 0-100 score from an uptime monitor, Lighthouse, or a cron job. I build Shopify tooling for a living, so mine is wired to my own store audits, which is how the pet caught a fever the day my checkout actually broke.

Setup is about 30 minutes (free HiveMQ cluster, a private Shopify app, deploy the Worker, flash the stick). Everything is MIT licensed: https://github.com/evandroguedes/shopagotchi

Happy to answer anything about the build or the Claude workflow. And if you make one, I genuinely want to see a video of its first sale.

u/evandroguedes — 21 days ago
▲ 26 r/shopify

Built with Claude in a few hours: my Shopify store is now a desk Tamagotchi. It got sick last week and my checkout was actually broken

I had a silly idea on the weekend: what if my Shopify store was a Tamagotchi? A few hours of going back and forth with Claude later, there is a pixel pet on a $30 M5StickC (a matchbox-sized ESP32 with a screen) on my desk, and its feelings are my store's data:

  • Someone places an order: it dances in coin rain, plays a chiptune cha-ching, and shows the order total
  • No orders for 3 hours: it falls asleep
  • A product runs low: it gets hungry and tells me exactly what to restock ("LOW STOCK: Blue Hoodie / M, 2 left")
  • 5+ unshipped orders: it slowly gets buried under little pixel shipping boxes
  • Store health drops: it goes pale with a thermometer in its mouth, and fixing the issues heals it

It costs $0/month to run: Shopify webhooks hit a Cloudflare Worker on the free tier, which pushes events over MQTT (HiveMQ free tier) to the device. My admin token never touches the desk toy; it only gets scoped MQTT credentials.

About the "built with Claude" part, since that is half the reason I am posting: I did not write the code. I described what I wanted, made the decisions, and created the accounts, and Claude wrote the Worker, the ESP32 firmware, and the setup guide. Two moments genuinely surprised me:

  • Cloudflare Workers cannot speak MQTT, so Claude hand-rolled the MQTT protocol over a raw TCP socket, about 100 lines, and it just worked.
  • The wild one: when I said the UI needed polish, it added a screenshot-over-serial feature to the firmware, flashed the device, pulled PNGs of the actual framebuffer, and reviewed its own pixels. It caught that the retro font renders "$" as "£" (my store briefly earned pounds sterling), that the sick pet's thermometer looked like a cigarette, and that the low stock alert was too subtle, then fixed all of it and re-flashed. I mostly sat there watching my own desk toy get code-reviewed.

To keep expectations honest: it was not one magic prompt. It was a conversation over a weekend, a couple of iterations, and me testing on a real store between rounds. But I have built enough firmware the hard way to say this would have taken me weeks alone, mostly spent in datasheets.

Other details for the curious: the pet is ASCII art in a header file, so you can redesign your gotchi in a text editor. Gift cards are excluded from low-stock alerts because the pet spent a day begging me to restock gift cards. And the "health" that makes it sick is an open endpoint: POST any 0-100 score from an uptime monitor, Lighthouse, or a cron job. I build Shopify tooling for a living, so mine is wired to my own store audits, which is how the pet caught a fever the day my checkout actually broke.

Setup is about 30 minutes (free HiveMQ cluster, a private Shopify app, deploy the Worker, flash the stick). Everything is MIT licensed: https://github.com/evandroguedes/shopagotchi

Happy to answer anything about the build or the Claude workflow. And if you make one, I genuinely want to see a video of its first sale.

u/evandroguedes — 22 days ago

Fiz uma extensão do chrome que filtra marcas paralelas e duvidosas do MercadoLivre

É isso mesmo. E você pode configurar e adaptar pro seu gosto.

Quem quiser testar antes de lançar, posso enviar. É um fork da Knockoff (extensão focada na Amazon).

u/evandroguedes — 1 month ago

CRO + agent readiness audit on Shopify stores

Hey everyone,

I am running free CRO/GEO audits on the /r/auditmyshopify

No catches, looking for real feedback of the reports.

Great for new stores and/or stores with traffic and low conversions.

Wish you all the best with your store.

u/evandroguedes — 3 months ago
▲ 4 r/ShopifySEO+1 crossposts

Shopify store audit

Hey everyone,

I created the r/auditmyshopify where I am auditing Shopify stores for free.

The report output insights are stunning, check the sneak peak screenshots.

See you there!

u/evandroguedes — 3 months ago

Competitor monitoring

Hey there, I was wondering if any of you do some kind of competitor tracking/monitoring.

If yes, how do you do it? I have a few competitors I’d like to track, but right now it’s a pretty manual process.

reddit.com
u/evandroguedes — 3 months ago

Built an AI-powered Shopify SEO auditor and looking for feedback from people deep into Shopify SEO 👀

I’ve been building a tool that automatically audits Shopify stores and generates a detailed report focused on:

  • Technical SEO
  • GEO / AI search optimization
  • Structured data & schema coverage
  • Internal linking & crawlability
  • Shopify app bloat affecting performance
  • Core Web Vitals risks
  • Collection/product page optimization
  • AI-readiness for ChatGPT, Perplexity & Google AI Overviews
  • CRO & UX issues impacting rankings/conversions

It navigates the store like a real user, analyzes rendered pages, checks collections/products/cart flows, detects apps/scripts, captures screenshots, and generates a visual HTML report.

Here are some reports done with the tool:
https://promptjam.com/tania-bulhoes
https://promptjam.com/molamodel/
https://promptjam.com/drawbot/
https://promptjam.com/explosivefibresxxxl/

I’m looking for real Shopify stores to test against and get honest feedback from SEO-focused merchants/agencies.

Main things I’m trying to validate:

  • Are the SEO findings actually actionable?
  • Is the GEO/AI visibility analysis useful?
  • Any false positives or missing checks?
  • Would this save time vs manual audits?
  • What would make this genuinely valuable for Shopify SEO work?

Drop your Shopify URL below and I’ll reply with the generated report.

Would really appreciate feedback 🙏

reddit.com
u/evandroguedes — 3 months ago