Hacker Newsnew | past | comments | ask | show | jobs | submit | kennyfrc's commentslogin

I've mainly designed this for backend devs (i.e. rails, django people who just render plain html/css on the front-end), and we generally do HTML sanitization on the server side.

Example: https://api.rubyonrails.org/classes/ActionView/Helpers/Sanit...


Yes, the lib's great!

Unfortunately I haven't thought much yet about interoperability with other web components libraries like lit. I imagined folks would choose just one web component library over the other.

That said, you can initialize reactive properties(1), but property bindings won't work if there's a parent LitElement (as my reactive properties need to be called with either a .value method or an .update method for getting and setting respectively).

As of the moment, what's possible is interop with other cami elements using a store, and in a future version, i'm considering a richer event system for external javascript code to listen to.

---

(1) Initializing is possible with observerableAttr: https://github.com/kennyfrc/cami.js/blob/master/examples/008...


Thank you! That’s exactly the segment I was going for.


This is great feedback, thanks! I think there’s something around JSDoc types that can accommodate this. Something I’ll put as a milestone before v1.


Interesting! Many points are indeed similar. Apart from components, Cami also has immutability built-in and state management.


Thanks! Cami is technically a combination of both. I like the intuitiveness of observables so that’s used:

```

// define observable

this.count = this.observable(0);

// getting

this.count.value;

// setting

this.count.update(value => value + 1);

```

But it also has a redux-like pattern where you can dispatch actions and register reducers with far less ceremony:

```

// define store

const todoStore = createStore({ todos: [], });

// register reducer / producer

todoStore.register('add', (store, payload) => { store.todos.push(payload); });

// subscribe component to store

this.todos = this.subscribe(todoStore, 'todos');

// dispatch

this.dispatch("add", newTodo);

```

It looks like it’s mutating, but both the reducers and update() uses immer* under the hood, so we still respect immutability under the hood.

Cami supports redux devtools so you can use that for time-travel debugging too.

—-

* https://github.com/immerjs/immer


> this.dispatch("add", newTodo);

Will the V8 JIT optimize the hash based function table loop into a constant integer array lookup?


You can consider Cami as the light dom sibling of Lit (which uses shadow dom).

Cami loses out on slots & style encapsulation, but you can style Cami components with normal / global css like it’s part of the normal dom. And since there’s no shadow dom overhead, it’s more performant and there is no FOUC if you load CSS in <head>.


I just nope out of the Shadow dom in lit to get external css using createRenderRoot. Mentioned here https://stackoverflow.com/questions/55400222/how-do-you-use-...


Yes, Cami uses fine-grained reactivity, so it’s a cousin of similar solutions like Solid signals, Svelte runes, Knockout / and MobX observables.

It doesn’t support SSR as it aims to be backend-agnostic (i.e. you can use python/ruby/haskell, and you can copy+paste the Cami module with no build step and you can start using it).

If you want SSR for the SEO benefits, I think it’s better to render the text-heavy parts as normal HTML for indexing with Google, and then mount the interactive parts with Cami / web components (i.e. “islands architecture”: https://www.patterns.dev/posts/islands-architecture)


If you want to create a B2B product, I would look for 1-star reviews in G2 and Capterra and see if you can solve these problems yourself.

You could also check what people are complaining about / asking help for in relevant subreddits and see if you can build a product around that.


Have you actually done this approach? If so, I'd love to hear more.

I ask because I often see the advice that people should look in the Shopify/Hubspot app stores for paid apps with lots of users/ratings and a low score, and while this sounds good, I've found very, very few apps that actually match these criteria. Typically a low score indicates a complaint that is outside of the technical scope that the app owners could address, and ends up being a weak signal imo.


Yes, I have used this for feature roadmaps.

I don’t do what you mentioned (ie. look for paid apps with lots of ratings & a low score), I look for any app with at least one 1 star or 2 star reviews and I also look for any problem (doesn’t have to be related to an app) in reddit or any forum.

To be fair, it’s quite a numbers game to dig for useful problems or insights.

A related video about the process is Amy Hoy’s Sales Safari: https://youtu.be/67JVkG4dpj4


Thanks, this is a good insight I hadn't considered.

So it doesn't matter if the app overall has a good rating, you're just looking for the signal that some subset of users isn't getting their needs met?


Yes, exactly!


Aren’t a litany of those reviews fake and written by competitors?

How do you trust a single 1 star review as validation?


Marketer here. If I were to define the fundamental aspects of marketing, it would be as follows (I also have a note about feedback loops after):

1. Customer empathy: you need to know their pains, dreams, opinions, frustrations, and more. The first step of marketing is to always meet people where they are the most frustrated. Good resources for this are Amy Hoy’s Sales Safari [1], or Netnography [2]. I also like Sean D’Souzas Brain Audit [3]. Sean’s is the most accessible.

2. Copywriting: Once you can empathize with the persona / customer, you’ll need to learn how to relate your product or service to the person’s problems, needs, or dreams. There are many scammy resources out there, but the person who does his marketing in the most ethical way is again Sean D’souza [4]. Robert Bly is also good [5].

3. Distribution: once you solve for customer empathy and the right positioning (through compelling copywriting), the final step is to distribute your copies in various media. Weinberg’s Traction is a good starting point [6].

Some will recommend Russell Brunson, Sam Ovens, Gary Halbert, etc, but these folks are in the extreme end of marketing, and may not suit everyone. Their methods work for “get rich quick” online courses or coaching programs, but not for real products or services where you need to sustain a brand over time. The resources I mentioned are a good foundation for ethical marketing.

RE: Feedback loops - the fastest way to get a feedback loop is to start with content marketing. Your article must solve a tiny problem, then you distribute it. If you get good feedback, then make a longer article, then get feedback again. Then turn it into an ebook or small online tool, then get feedback. Keep increasing the size of your solution until you get to your desired goal (like a SaaS).

Another way to get a feedback loop is through ads: run multiple ads, compare their conversion rates, drop the worst ones, scale the best ones, then add more ad tests.

[1] https://stackingthebricks.com/video-sales-safari-in-action/

[2] https://www.amazon.com/Netnography-Essential-Qualitative-Soc...

[3] https://www.psychotactics.com/products/the-brain-audit-32-ma...

[4] https://www.psychotactics.com/home-study/copywriting-home-st...

[5] https://www.amazon.com/Copywriters-Handbook-Step-Step-Writin...

[6] https://www.amazon.com/Traction-Startup-Achieve-Explosive-Cu...


Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: