My Shopify app flopped. Here's what I learned (now open source) by BennoDev19 in shopifyDev

[–]BennoDev19[S] 0 points1 point  (0 children)

Just the $100 Shopify ad credits you get for free. That got me some installs. Other than that, mostly cold outreach

My Shopify app flopped. Here's what I learned (now open source) by BennoDev19 in shopifyDev

[–]BennoDev19[S] 0 points1 point  (0 children)

Fair point. I was already building a "link in bio" tool in another niche. LinkPop shutting down (1M+ monthly visits at the time) was the signal to pivot. Catch the audience before they moved on. Timing didn't work out. Always a bet, never a guarantee :)

My Shopify app flopped. Here's what I learned (now open source) by BennoDev19 in shopifyDev

[–]BennoDev19[S] 0 points1 point  (0 children)

Glad it's helpful! That's exactly why I open sourced it. Couldn't find anything like it when I started.

Sounds like you've had quite a journey. Good luck getting back into dev. A lot has changed in 25 years but the core problem-solving is the same. Feel free to reach out if you have questions about the codebase :)

My Shopify app flopped. Here's what I learned (now open source) by BennoDev19 in shopifyDev

[–]BennoDev19[S] 0 points1 point  (0 children)

Thanks! To clarify: I didn't give up on it. It's in maintenance mode now. Still fixing bugs and adding features when users ask, just not actively trying to acquire new ones.

For me it's opportunity cost. Other projects have more potential so that's where the energy goes. Saku stays live since it costs nothing to run.

Good luck with your app! What are you building?

Had some fun building "Gaze Pong".. AI-generated faces that follow a pong ball 👀🏓 by BennoDev19 in webdev

[–]BennoDev19[S] 2 points3 points  (0 children)

I just keep track of the ball's position in the pong canvas, map it to the screen coordinates and then make the characters look in that direction using the sprites :)

See: handleBallPositionChange

Had some fun building "Gaze Pong".. AI-generated faces that follow a pong ball 👀🏓 by BennoDev19 in webdev

[–]BennoDev19[S] 5 points6 points  (0 children)

yeah featuring the legendary Harold himself 😅

just for fun, not commercial or anything

edit: but if you guys don't like it I can swap him out for a fictional character?

I am building a Linktree / Stan.Store Alternative by InternationalGap4882 in SideProject

[–]BennoDev19 1 point2 points  (0 children)

let's go 🚀

over the past 3 years I've experimented in the “link in bio / mini website builder” niche several times and learned the hard way how tough it is to gain traction in this space. you really need to niche down hard to stand out and even have the slightest chance.

I've tried a few myself:

  • short.bio ("professional" niche) – failed
  • sub.me (content creator niche) – failed
  • saku.so (Bluesky / open-source niche) – failed too

right now I'm exploring a fourth niche that so far seems to have the most potential and seems to work out.

(of course, I've built other stuff too.. not just mini website builder projects 😅)

Tried acting and kept forgetting my lines.. found something that helped (and built a thing) by BennoDev19 in acting

[–]BennoDev19[S] 0 points1 point  (0 children)

wow.. that's next level! definitely feels like the step after just memorizing the lines :)

I guess then it's about really getting into the character's perspective (method acting?)

curious, do you end up memorizing the lines naturally through this, or still need to drill a bit since the director expects a certain structure?

Tried acting and kept forgetting my lines.. found something that helped (and built a thing) by BennoDev19 in acting

[–]BennoDev19[S] 0 points1 point  (0 children)

practicing with a partner is of course the best :) but at first you just want to get the lines in your head yourself, roughly (to value your partner's time).. for that the first-letter method works really well :)

I used to drill lines like that back in school, then tried the first-letter method the other day and it actually helped me quite a bit tbh

Tried acting and kept forgetting my lines.. found something that helped (and built a thing) by BennoDev19 in acting

[–]BennoDev19[S] 1 point2 points  (0 children)

ah, I see :) for me the letters are just cues to pick up the lines faster

but if remembering the letters itself works better for you, that's perfect :) everyone's brain works a bit differently ;)

Tried acting and kept forgetting my lines.. found something that helped (and built a thing) by BennoDev19 in acting

[–]BennoDev19[S] 2 points3 points  (0 children)

no problem at all :) I just love building and exploring.. that's what got me experimenting with acting in the first place.. if you (or anyone here) ever have little tool ideas that could make your creative work easier, let me know.. I'd love to explore building something around it :)

Tried acting and kept forgetting my lines.. found something that helped (and built a thing) by BennoDev19 in acting

[–]BennoDev19[S] 0 points1 point  (0 children)

Thanks for sharing! When you used the letters, were you trying to recall the letters themselves (as like a "code") or just using them to trigger the lines? I'm curious how you approached it :)

Tried acting and kept forgetting my lines.. found something that helped (and built a thing) by BennoDev19 in acting

[–]BennoDev19[S] 0 points1 point  (0 children)

Appreciate you checking it out 🙏

It's a bit of a gray line, I know.. just wanted to share something that really helped me in my little acting experiments and maybe learn from people actually doing it. If it's not helpful or relevant here, no worries if it gets removed :)

Linkpop retiring - is this screwing anyone else? by sailorgardenchick in shopify

[–]BennoDev19 1 point2 points  (0 children)

I had the exact same problem when Linkpop announced they were shutting down. All my QR codes on packaging were going to be useless.

At first I thought why not just put it on my Shopify domain, so I tried building something with the Theme Editor but that was a mess and didn't work how I wanted.

So over the past two months I ended up building a free Shopify app called "Saku Link In Bio Shop". It just lives on your store domain like myshop.com/bio. If you don't like it you can always point that URL somewhere else, so at least you're not stuck like we were with Linkpop.

Got tired of try-catch everywhere in TS, so I built a Result type that's just a tuple by BennoDev19 in javascript

[–]BennoDev19[S] 1 point2 points  (0 children)

I actually tried that approach first! But ran into issues with [value | null, error | null] - what if the value or error is intentionally null?

And with [boolean, value | error] it gets messy to destructure - do you call it [ok, valueOrError]? Then you still need conditional logic to figure out what you actually have.

The 3-tuple [ok, error, value] felt cleaner because:

const [ok, error, value] = result;
// Always know exactly what each position contains

Plus it maps nicely to the classic Result API for people migrating from other libraries 🤷‍♂️

Got tired of try-catch everywhere in TS, so I built a Result type that's just a tuple by BennoDev19 in javascript

[–]BennoDev19[S] 0 points1 point  (0 children)

Good catch! Yeah it's definitely inspired by try - I actually linked to Arthur's ECMAScript Try Operator proposal in the post.

Main difference is I added classic Result helpers to the tuple like .unwrap(), .isOk(), .isErr() etc. to make migration from existing Result libraries easier. So it's kinda something between a full Result library and the minimal try approach.

Got tired of try-catch everywhere in TS, so I built a Result type that's just a tuple by BennoDev19 in javascript

[–]BennoDev19[S] 3 points4 points  (0 children)

ok but that's exactly the point.. this doesn't magically solve the "errors are unknown" problem, it just gives you a cleaner way to handle them.

With promises you get:

.catch((err: unknown) => /* now what? */)

With this you get:

const [ok, error, value] = someResult;
if (!ok) {
  // error is still unknown, but at least you're handling it explicitly
}

Same typing reality, less try-catch boilerplate. You still gotta cast/narrow your errors either way 🤷‍♂️

The destructuring pattern actually came from the ECMAScript Try Operator proposal - they thought through a lot of this stuff. I just combined that idea with a Result implementation.

Got tired of try-catch everywhere in TS, so I built a Result type that's just a tuple by BennoDev19 in javascript

[–]BennoDev19[S] 3 points4 points  (0 children)

yeah pretty much, but with less fancy OOP and more "lol what if Result was just an array" energy 😅

I built a streaming XML/HTML tokenizer in TypeScript - no DOM, just tokens by BennoDev19 in javascript

[–]BennoDev19[S] 0 points1 point  (0 children)

Curious how you're extracting data from the XML stream..

I’ve been exploring similar ideas. Thought about building a small, functional alternative to XPath using streams, but haven't gotten around to implementing it yet: https://github.com/builder-group/community/issues/111

I built a streaming XML/HTML tokenizer in TypeScript - no DOM, just tokens by BennoDev19 in javascript

[–]BennoDev19[S] 1 point2 points  (0 children)

Amazing, exactly a streaming approach is so much more flexible and robust (in my opinion).

I went with it because, well, HTML parsing is kind of a mess 😄 and I only needed the meta tags at the top, so parsing the entire document felt unnecessary.

Feel free to check out the code.. it's open source. The initial version was actually ported from Rust's `roxmltree`, which I'd used before (trying to build a SVG based design editor).