• zamadatix 3 hours ago

    This is 100% the kind of thing I was hoping for when daydreaming "what will the internet be like 20 years from now" growing up. Cool design, hilariously overpowered backend to do something basic (but do it so well), and 0 of the corporate feeling or ad apocalypse. Awesome stuff!

    • klimeryk 2 hours ago

      Hahah, so true! One clarification, though: while I'm sure the backend is overpowered (Cloudflare Pages, easily handling the Hug of Death from HN), but in this case it's only serving static resources. All the hard work is done by the hilariously overpowered devices we carry in our pockets or use for everything but serious work ;)

      • zamadatix 2 hours ago

        Oh 100%, the hosting is more than fitting. I had meant to refer to the app's non-UI code (machine learning to place meme glasses)! Apologies for the lack of clarity.

        • klimeryk 2 hours ago

          Ah, gotcha! Hahah, yeah, I'm sure this is exactly the use case folks were thinking of when dreaming of AI applications decades ago...

    • andybak 5 hours ago
    • ChrisArchitect an hour ago

      Thank you Slack? For the confusing use of "emoji" instead "animated GIF" or sticker.

      • airstrike 5 hours ago

        > Unfortunately, they were not impressed and ultimately did not offer me the job :(

        Sorry to hear that. No recruiting process is perfect. They often get it wrong, as they clearly did here!

        • com2kid 2 hours ago

          I interviewed a developer once who was super junior on paper but had a side project of a fully featured desktop anime episode to watch/watched tracker with lots of library feature features.

          Hire.

          Interviewed another Dev who made arcade sticks as a side project.

          Hired.

          You can't teach passion. Hire all that passionate people you can. Tech stacks are irrelevant compared to the love of building things.

          • pc86 27 minutes ago

            Also a great filter from the other side.

            I was not hired once because I didn't have React experience, despite having years of both Vue and Angular and having led teams building non-trivial apps in both. IME focusing on such a minor detail like that means either a) you're going to be so pressured to get stuff out of the door they can't handle slightly lower productivity for a month while you learn the different syntax, and/or b) the person hiring you isn't technical enough to know this is a minor detail.

            Either way, better off somewhere else :)

          • Aeolun 4 hours ago

            The only thing I can imagine is that they were up against someone making a partyparrot generator.

            • cheschire 4 hours ago

              Must've been this person: https://parrotify.github.io/

              • klimeryk 4 hours ago

                Hahaha, genuinely laughed out loud, thank you! (also, big fan of partyparrot, of course)

              • klimeryk 5 hours ago

                Thank you! Yeah, I totally understand and not taking it against them. It's impossible to always get the right impression and fit for the candidate (even if it was based on a few interviews and trial, like here). So I figured I'd make the best of the situation and share the project with others! Hoping to make some new connections this way, and maybe find an even better opportunity!

                • aio2 3 hours ago

                  Yeah, this is pretty cool and they can fuck off.

                • asdfman123 an hour ago

                  I'm a Google employee. After looking at this demo I can tell you're spiritually a Googler in ways I can't quite articulate.

                  • bewuethr 2 hours ago

                    A rudimentary version of this used to be integrated into Giphy[1], but it seems to be broken now, meaning the market is wide open for this! ;)

                    [1]: https://giphy.medium.com/the-secret-giphy-slack-commands-9cb...

                    • underlines 3 hours ago

                      The company who didn't hire you will soon use your tool because they feel remorse for not hiring you, and now they have to "deal with it"

                      • klimeryk 2 hours ago

                        Well, I'm using their tool in mine (hint is in one of the Easter Eggs... or just look at what's powering the product analytics ;)). So it's an ouroboros of open-source :D

                      • steve_adams_86 3 hours ago

                        Thanks for sharing this. I love tiny projects like this, especially if they’re over engineered.

                        The job market is rough. I have no doubt you were considered, and they were interested, but everyone is giving their all right now. Someone likely submitted something even cooler, somehow.

                        • yieldcrv 3 hours ago

                          > somehow

                          yeah by recycling their project from a previous interview and adding more to it

                          I just don't engage in that kind of assessment anymore, the job market isn’t thaaaat tough to need to compromise

                          or, put another way, jumping through that hoop will not solve your interview progress as its just far too subjective. other hoops are just as fine

                          • klimeryk 2 hours ago

                            To clarify - I wrote this tool as my own initiative. On top of the "normal" process (that involved multiple interviews and a day paid trial). I was really excited about the opportunity and wanted to go the extra mile.

                            • gxs 2 hours ago

                              Dude I’m often on interview panels and some of the other interviewers are insufferable.

                              When they give feedback, they love getting on their soapbox and critiquing others as if they were Olympic judges or something.

                              I’ve had to hold myself back from saying bro we wouldn’t hire you yourself if this criteria actually had to be met.

                              Some hiring managers require all this elaborate prep work and it’s such bullshit, imo it’s a total cop out to have people do so much work as part of the interview process.

                              It’s the lazy way of evaluating someone versus thoughtfully putting together a good hiring process and conducting effective interviews.

                          • think_build 19 minutes ago

                            I love over-built projects. Do not worry about the job offer, the current market is posting job offers that do not exist.

                            • TZubiri 4 hours ago

                              This is useless, I can't make the glasses come from below, in addition to coming from above.

                              Also, glasses can only be black? We demand a color palette for glass colour.

                              EDIT: wait, I managed to make the glasses come from below

                              blob:https://emoji.build/50c07035-efb9-4341-9205-30adfd6b088e

                              I retract my indignation on the one half of my requests, but transfer it doubly so for the request of a colour palette

                              • barryrandall 4 hours ago

                                That feature was removed because half the people who want black frames were offended that the app offered options that they didn't want to use.

                                • TZubiri 4 hours ago

                                  What's interesting is that the moment that you introduce a feature that allows for sharing of the images, and you need a backend to host the images. You enter a world of pain where you inevitably will end up hosting illegal material, and it turns from a fun project to a serious project.

                                  • klimeryk 4 hours ago

                                    Yeah, that's why I'm keeping everything client-side. There's no backend. This is hosted on Cloudflare Pages, everything on the backend is static. Definitely not looking to host any generated images.

                                    • mnutt 2 hours ago

                                      On Mobile Safari at least, you can press and hold the image to share. I imagine there's probably an equivalent gesture on Mobile Chrome. I spent considerable time many years ago trying to figure out how to indicate to users that they could do this. ("press and hold to share", with a progress indicator) Results were mixed.

                                      Fortunately, these days if you wanted to make it more obvious you could hook up a regular Share button to navigator.share() API and pass it your image blob.

                                  • cheschire 4 hours ago

                                    Those responsible for sacking the people who have just been sacked, have been sacked.

                                  • klimeryk 4 hours ago

                                    > We demand a color palette for glass colour.

                                    You can choose different styles of glasses. But, yeah, they're all black-ish. Definitely open to different colors/styles! I've created a new issue with some possible solutions and will look into it: https://github.com/klimeryk/dealwithit/issues/33 (but PRs are welcome too!)

                                  • m2fkxy 5 hours ago

                                    it's useless thence I love it.

                                    I lied, in fact I just used it to create a couple Slack emojis.

                                    • klimeryk 5 hours ago

                                      > it's useless thence I love it.

                                      That's what kept me going while adding more features :D Just the joy of creating something so useless, but still capable of bringing smile to my (and hopefully your too!) faces. Glad you love it!

                                    • silisili 2 hours ago

                                      This is actually really neat. I like the configurability. Is there an option to change glasses size that I missed? I think that's the only thing I noticed I couldn't do when playing around with it.

                                      * Found it, there is a small indicator in bottom right of glasses that allows dragging out to resize. Thanks all!

                                      • tonymarks 2 hours ago

                                        on a desktop you can click the glasses to resize them

                                        • klimeryk 2 hours ago

                                          On mobile it should work too (at least when I tested on recent iPhones). The drag handle is a bit small, though. Just aim for bottom right corner of the glasses.

                                        • _puk 2 hours ago

                                          Drag to resize

                                        • jihadjihad 4 hours ago

                                          It's great. I wish you could paste an image URL too, that would be slick.

                                          Oh, and it would be cool to have an option for the meme text to go under the image too, and to appear in the final frame of motion for the glasses. For now, I can DEAL WITH IT!

                                        • klabb3 5 hours ago

                                          Used in WhatsApp on iOS the last frame didn’t stay, it seems to stop instantly and/or loop back to too early. IIRC I used 20 frames, 250ms between frame and 2500ms for the last one. Seems to have a similar problem on Telegram.

                                          Otherwise incredible. The customization options are much appreciated.

                                          • summermusic 4 hours ago

                                            This is a known problem for Telegram at least. It cuts off the last frame regardless of that frame's duration. I work around this by adding a single identical frame for 1ms at the end of the GIF.

                                            Source: I've made way too many GIFs for Telegram.

                                          • ninju 4 hours ago

                                            Found a bug

                                            If *after* generating a gif you change the gif size (bigger in my case) the new gif has the sunglasses appear in the same place. But if I change the size first and then generate everything work fine.

                                            Hope I explained it right

                                            • klimeryk 4 hours ago

                                              I immediately knew what you meant, because I ran into the bug while testing earlier today and apparently forgot to file it. So thanks for reporting - I've filed it now properly and should have it fixed soon.

                                              • Krei-se 3 hours ago

                                                Hey man, awesome job and while i'm hitting that same bug: Changing to 512px does not resize the glasses for me and it's on the wrong placement.

                                                This is great for mastodon replies so PLEASE make this work.

                                                Hang tight!

                                              • klimeryk 2 hours ago

                                                Should be fixed by https://github.com/klimeryk/dealwithit/commit/7728d06c90c437... As the classic saying goes:

                                                > There are only two hard things in Computer Science: cache invalidation and naming things.

                                              • i_am_a_squirrel an hour ago

                                                Thank you OP. I needed this.

                                                • eezing 5 hours ago

                                                  Great way to promote yourself. Well done!

                                                  • teqsun 4 hours ago

                                                    That's fantastic stuff!

                                                    Minor UX notes: - clicking the header doesn't navigate back to the "home" screen - singular page history (so the back button doesn't take you back to the previous page state)

                                                    Combined it made it not intuitive for me how to "get rid" of the selection I'd created (I eventually figured it out, but the previous two points were what I intuitively tried first)

                                                    • klimeryk 4 hours ago

                                                      > clicking the header doesn't navigate back to the "home" screen - singular page history (so the back button doesn't take you back to the previous page state)

                                                      Could you describe in more detail this? I'm not sure I agree that state changes should be pushed to browser history. In my experience this usually leads to confusing user experience. But that might be also just years of conditioning and I'm missing some best practices. So happy to learn more.

                                                    • ryandrake 3 hours ago

                                                      Infinite spinner for me: Stuck at "Loading AI models for face detection..." forever. I'd want to fix that before sharing it with recruiters as an example project.

                                                      Desktop Safari 18.0.1 (18619.1.26.111.11, 18619)

                                                      • klimeryk 3 hours ago

                                                        Any console errors?

                                                        • ryandrake 3 hours ago

                                                          Yep, a bunch of warnings and then:

                                                              Unhandled Promise Rejection: Error: StartGraph failed: $Service "kGpuService", required by node mediapipe_tasks_vision_face_detector_facedetectorgraph__mediapipe_tasks_components_processors_imagepreprocessinggraph__ImageCloneCalc...
                                                          
                                                          Warnings prior to the error:

                                                              [Warning] I0000 00:00:1729008143.963000       1 gl_context_webgl.cc:81] Couldn't create webGL 2 context. (vision_wasm_internal.js, line 1087)
                                                              [Warning] W0000 00:00:1729008143.966000       1 gl_context_webgl.cc:106] Creating a context with WebGL 2 failed: UNKNOWN: emscripten_webgl_create_context() returned error 0 (vision_wasm_internal.js, line 1087)
                                                              [Warning] === Source Location Trace: ===  (vision_wasm_internal.js, line 1087)
                                                              [Warning] third_party/mediapipe/gpu/gl_context_webgl.cc:82 (vision_wasm_internal.js, line 1087)
                                                              [Warning] W0000 00:00:1729008143.967000       1 gl_context_webgl.cc:107] Fall back on WebGL 1. (vision_wasm_internal.js, line 1087)
                                                              [Warning] I0000 00:00:1729008143.968000       1 gl_context_webgl.cc:81] Couldn't create webGL 1 context. (vision_wasm_internal.js, line 1087)
                                                              [Warning] W0000 00:00:1729008143.968000       1 gl_context.cc:1000] OpenGL error checking is disabled (vision_wasm_internal.js, line 1087)
                                                              [Warning] E0000 00:00:1729008143.968000       1 gl_graph_runner_internal.cc:252] StartGraph failed: INTERNAL: Service "kGpuService", required by node mediapipe_tasks_vision_face_detector_facedetectorgraph__mediapipe_tasks_components_processors_imagepreprocessinggraph__ImageCloneCalculator, was not provided and cannot be created: emscripten_webgl_create_context() returned error 0; StartRun failed (vision_wasm_internal.js, line 1087)
                                                              [Warning] === Source Location Trace: ===  (vision_wasm_internal.js, line 1087)
                                                              [Warning] third_party/mediapipe/framework/calculator_graph.cc:651 (vision_wasm_internal.js, line 1087)
                                                              [Warning] third_party/mediapipe/framework/calculator_graph.cc:682 (vision_wasm_internal.js, line 1087)
                                                              [Warning] third_party/mediapipe/framework/calculator_graph.cc:551 (vision_wasm_internal.js, line 1087)
                                                              [Warning] research/drishti/app/pursuit/wasm/graph_utils.cc:87 (vision_wasm_internal.js, line 1087)
                                                          
                                                          Hope that helps!
                                                          • klimeryk 3 hours ago

                                                            Thank you! Yeah, that looks like the pipeline from mediapipe (used for ML face detection) has troubles initializing the WebGL context. I don't see immediately any settings for disabling WebGL in Safari, but I'm sure there's some feature flags for that. Do you remember touching any settings related to this? I'm wondering if it's related to some browser settings, an extension (?) or something else.

                                                            Edit: tested on M2 and Safari 18.0 and I cannot reproduce it. Updating now to 15.0.1 to see if that makes a difference.

                                                            • ryandrake 3 hours ago

                                                              I went into Safari Settings and, under Feature Flags, turned on "Allow WebGL in Web Workers" and the site now works. I don't recall ever turning that off or messing with any other feature flags, so I'm guessing that this necessary feature is off by default in at least some versions of Safari. Web development must be so fun, I feel for you.

                                                        • DrammBA 3 hours ago

                                                          As another data point it works on my M1 with Safari 17.2

                                                        • yapyap 3 hours ago

                                                          My god this is so bad, I love it.

                                                          (bad in a taste way, not in the engineering way)

                                                          • chiefrubberduck 4 hours ago

                                                            awesome tool :) thank you for making and sharing it!

                                                            https://s11.gifyu.com/images/SB5XB.gif

                                                            • pelagicAustral 5 hours ago

                                                              I like it... faved for future fuckery. Can you add background photo rotation or shades rotation?

                                                              • klimeryk 5 hours ago

                                                                Yup, shades rotation is on the roadmap: https://github.com/klimeryk/dealwithit/issues/30. Hope to get it done some time today/tomorrow. Most pieces are ready, just need to figure out a good UX for the rotate handle. Worst case scenario, it can be also an input field. Background photo rotation - could you share what would be the use case? The output would be a bit weird, since it has to be square, so either it needs to be cropped (so now there needs to be crop feature ;)) or there will be blank spaces. Honest question, I might be missing some interesting use case! But hopefully, rotating the shades would solve for most of these.

                                                                • pelagicAustral 5 hours ago

                                                                  Background photo rotation is the over-engineered alternative to shade rotation...

                                                                  • klimeryk 4 hours ago

                                                                    Hahaha, roger that! I mean, it would be in line with the whole premise of the tool... I should implement it so that the whole tool/page rotates around the glasses XD

                                                              • dsalaj 4 hours ago

                                                                Cool, thanks! It desperately needs the copping feature for the original image, so I don't need other tools.

                                                                • chankstein38 5 hours ago

                                                                  This is great! I always joke with my girlfriend about people in billboards or whatever needing deal with it glasses and will likely use this regularly haha Thank you!

                                                                  • morkalork 4 hours ago

                                                                    Please please please add a blunt/joint option. I think my favorite ever use of this meme was in Colossal (2016).

                                                                    • howmayiannoyyou an hour ago

                                                                      Thank you for this. Changed my life for the better.

                                                                      • Aardwolf 4 hours ago

                                                                        It seems some memes just stick forever :)

                                                                        • jammaloo 4 hours ago

                                                                          Hell yeah, this is great. I made a similar, but much worse, thing a while back

                                                                          https://jammaloo.com/DealWithIt/

                                                                          It uses face-api.js to find the face, and then move the sunglasses over it. It's about a 5 meg model, so it's pretty slow to load. You can customize with a URL, or drag and drop an image on. Resizing the browser also moves the glasses around.

                                                                          Very happy to see someone take the idea way way way further!

                                                                        • stavros 3 hours ago

                                                                          Oh man, this is amazing, I love it. Well done.

                                                                          • navigate8310 2 hours ago

                                                                            Very clean, it just works!

                                                                            • joshdavham 4 hours ago

                                                                              I love the UI! Definitely gonna inspire from it for a future project

                                                                              • klimeryk 3 hours ago

                                                                                Thank you! It was my first time using Tailwind CSS (and antd). Wanted to try them out for a while, so figured it's a nice opportunity.

                                                                              • llampx 5 hours ago

                                                                                This could be a reCAPTCHA test, to train the models to better detect eye position and face angle.

                                                                              • agos 5 hours ago

                                                                                this is great. feature request: DEAL WITH IT caption and relative options

                                                                              • vladde 5 hours ago

                                                                                Love it. I'll definitely be using this!

                                                                                • jhickok 2 hours ago

                                                                                  Thanks I hate it. Seriously tho, I've already used this twice at work today.

                                                                                  • devmor 4 hours ago

                                                                                    I adore it. I would love the ability to add frame delay (and maybe start/end position/rotation tweening?!) to each layer of glasses.

                                                                                    • klimeryk 4 hours ago

                                                                                      I think we're thinking of the same thing here: https://github.com/klimeryk/dealwithit/issues/22 That's part of the reason I made the list of glasses draggable/sortable. Because I want to add the ability to specify which glasses should appear together and which ones should appear in a sequence. So many features to implement, so this one did not make it for the launch, but it's definitely on the roadmap!

                                                                                    • fHr 3 hours ago

                                                                                      Now this is amazing, well done.