504 karma · joined December 28, 2011
This platform is kind of "on the side" and not in the middle though. It's not meant to affect how people listen to the music, how else they contribute to the bands (buying records, tickets, merch). This would just be a way of supporting the bands extra. I think Patreon is good, overall. This is similar but based on your "usage" and leveraging your Spotify account, and it's nice to bypass Spotify to support the band directly. I mean, Spotify gets enough money to run their service, but the bands don't.
The main reason I haven't explored this further is – would enough people care enough to make this worthwhile?
At first i was like, well... you could put it all in an index.html file, but realised that it’s not good enough because you can’t use npm packages, and its tricky to connect to the api and deploy such an app.
Then I was like, ok it’s easy, you just need – webpack, babel (for jsx or async/await), babel plugins, webpack config, css loaders, express and nodemon… yeah, that’s a bit much. Assembling an SPA didn’t seem beginner friendly, but also I myself didn’t enjoy wiring all of those things up from scratch.
Then I suggested Next.js, but wrapping your head around SSR has it’s own challenges.
After feeling a bit frustrated that it wasn’t easy to spin up an SPA backed by an API I started working on jetpack.
Since then, I’ve used jetpack to launch a couple internal tools and I am now using jetpack in building my next product.
Its not much, just a thin webpack wrapper with preconfigured defaults. But it’s nice to have this good, simple reference of how to assemble all these different plugins and loaders to create a good foundation for an SPA.
One feature that sets jetpack apart from similar tools is that you don’t need to install it locally into your project. You can point it to any JavaScript file on your machine and it will serve it up in your browser. Useful for testing out libraries or ideas.
Achieving Jetpack’s vision – making it easy for beginners and pros to spin up an SPA – is still work in progress. But that’s mainly due to a lack of good examples or tutorials, I’m pretty happy with the tool overall at this point.
* uses the new React.createContext
* is [highly optimised](https://medium.com/@kidkarolis/tiny-atom-3-0-0-e65a50de7f4a)
* provides `<Provider>`, `<Connect>` and `connect()` for both react and preact
* can be plugged in with immer
* explores how to improve over Redux API by combining dispatching and mutations in actions
* is small
In general, immer plugs in nicely to a lot of contexts, such as redux. Here's another example of how it works with tiny-atom: https://qubitproducts.github.io/tiny-atom/using-with-immer (disclaimer: yet another state management lib, which I wrote).
An alternative approach to immer I've been using in production is http://zaphod.surge.sh/, which is more like an immutable lodash.
Here's yet another similar approach, also in 100 LOC https://qubitproducts.github.io/tiny-atom/. Been using it for a year in a few projects.
What about Facebook/Google/Twitter Sign In buttons - do you think Persona is an improvement over those?
JavaScript badly needs a package manager and the community badly needs to agree on a module format (AMD). Do you think that will happen? How can we make that happen?
Every other language has package managers.. ruby has gems and bundler, node has npm, java has maven. That makes it so easy to develop any application or library that can be used by any other application or library. ClientSide JavaScript finally has an amazing way to manage dependencies and build modular applications (AMD). All it needs now is a good package manager for being able to split large applications into individual components and manage external library dependencies. I want to be able to configure jQuery, Backbone, jQuery plugins, Backbone plugins, any other JS library, my own subcomponents as dependencies, use them via AMD's require and optimize in a smart way when building (e.g. only build in a single copy of the given library and warn if multiple versions are required).
I'm really hoping Volo (https://github.com/volojs/volo) or Jam (or both if they become interoperable) will become the solution for this stuff.