Example: https://api.rubyonrails.org/classes/ActionView/Helpers/Sanit...
144 karma · joined October 14, 2014
monolithgrowth.com & jetdraftai.com
Example: https://api.rubyonrails.org/classes/ActionView/Helpers/Sanit...
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...
```
// 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.
—-
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>.
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)
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
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.
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...
I tried rails in conjunction with roda in the first 2 weeks, but I felt far more productive with roda for my use case and stuck with it.
I would then try to re-implement the “getting started” code in the readme from scratch, like a little programming puzzle. If I can’t figure it out, I‘ll add in some debugger breakpoints, inspect the stack trace to understand how it works, then code the needed methods / classes as I go.
If you’re a ruby programmer, soveran’s work in github can be read in a day or two. I specifically like cuba (micro webframework) and mote (microtemplate).
- Zed Shaw’s Learn More Python the Hard Way[1]
- Brian Hogan’s Exercises for Programmers (best for beginners or for learning a new language)[2]
- Hal Fulton’s The Ruby Way[3]
- Chris Ferdinandi’s Vanilla JS Academy[4]
- Marc-Andre Cournoyer’s Great Code Club (it’s old, and the community doesn’t exist anymore, but i think he still maintains it)[5]
- A few python books from No Starch Press (notably those authored by Al Sweigart)
I learned the most as a beginner from Zed Shaw’s work, and from reading open source code.
Once you’re done with the initial “learn from tutorials” phase, there’s no better resource than reading open source code.
[1] https://www.amazon.com/Learn-More-Python-Hard-Way/dp/0134123...
[2] https://www.amazon.com/Exercises-Programmers-Challenges-Deve...
[3] https://www.amazon.com/Ruby-Way-Programming-Addison-Wesley-P...
On the user side - I think the review area would benefit from principle-based analysis similar to what is seen in chess.com. I am guessing that for it to happen, there needs to be a separate analysis engine that can detect positional motifs. I think chess.com did a decent job with that (better and more actionable than decodechess in my opinion).
On the tech side - I’m curious how this project differs from existing neural nets trained for lc0 such as bad gyal and maia?
If you're targeting to a developing country, then you need to then filter by profession (e.g. Software Engineers, CTO, etc.). Some countries (notably Vietnam, Philippines, and Bangladesh) have fake account farms where they sell fake likes or do shady stuff like click on their clients' competitors' ads to they can jack up their cost.
A close analogy would be a radio show -- no one over teh course of a few decades has ever paid for a transcribed radio show
... Here's what I like:
On the business end: - Badass by Kathy Sierra - Impossible to Inevitable by Aaron Ross - Traction by Gabriel Weinberg - Cold Calling Early Customers by Robert Graham - Learn or Die by Edward Hess
On "refining your thought process": - Mind for Numbers by Barbara Oakley - Racing Towards Excellence by Jan Sramek - Art of Learning by Josh Waitzkin - Case Interview Secrets by Victor Cheng (helps you think in a nice, structured way)
So that means allocating placements to be used either for adsense / auction-style ad placements.
Then I realized that the process of breaking down workload and personal life into small tasks does not fit well in a to-do list app context.
What worked for me was using something like BusyCal, which is a souped-up calendar. It was more aligned with the 'breaking down' process because I used the 'banner' feature to help me define my weekly goals then I proceed with tasks assigned with specific chunks of time.
I then track the planned vs actual time spent using letsfreckle.com, which is a time tracking tool.
For the more higher-level stuff (ie. monthly goals, yearly goals), I just keep them in Trello.
As for habits, I have a weekly review to check where I am vs monthly goals and I also use that review to allocate tasks into my calendar.
So what I do is the following:
1. I break down what I've learned into steps or checklists
2. I then put these into Scrivener
3. Each topic that I've learned has it's own page
Here's a small example from my notes around PDF generation + attachments in Rails. This is just the overall picture -- each bullet point expands to another bunch of notes which has actual code details.
* build a mailer with mail(to:, from: content:)
* build a controller what delivers that content
* the controller should render a notice that says that the post has been successfully created <via a respond_to method>
* make sure that you configure the SMTP settings
* build a pdf creator (PrawnPDF::Base) => this initializes a PDF w/ some view_context
* configure a MIME type within config/initializers
* configure a controller that triggers a respond_to for this
* add a button that links to think Printable receipt
* save the PDF into some foldere
* insert a paperclip file type into the migration
* add this intot he user model
* go back to the PDF / order controller and then add a custom path to save the PDF (pdf.render file…)
* then save that file inside teh database & set it to the certificate
Specifically for you, I think this might help: https://www.codementor.io/computer-vision-experts
In general, here's how I usually do my googling: - Initial search: "<keyword> + Done for You Service" || "<keyword> + Consultancy" - Second Search Run (if technical): "site:codementor.io <keyword>" - Third Search Run: Go to Clarity.fm and ask some of the folks there for referrals to someone