337 karma · joined September 22, 2011
I love this architecture so much that I brought it into the world of React and Redux a couple years ago (see https://github.com/loggur/react-redux-provide and https://github.com/loggur/redux-replicate). Dan Abramov and the ReactTraining guys immediately shit on it for some odd reason (I probably did a horrible job of explaining it), saying it wouldn't work in the real world, but I (and my team) have been using it very successfully... in the real world.
With that said, I do need to update the docs and improve some internals (and remove some unnecessary stuff like query handling), but there's only so much time in a day. :)
I'm a full stack expert with years of experience ranging from modern web dev to robotics & embedded systems to gaming engines. Passionate about great tools and great design and I enjoy pushing technology to the next level.
Technologies: JavaScript (ES6/ES7), Node.js w/ Babel, WebPack, React.js w/ Flux, Redux, HTML5, CSS3, NoSQL (Redis, MongoDB), SQL (MySQL), Linux, Git, Embedded Systems (C, C++), whatever you need!
Résumé/CV: https://drive.google.com/open?id=0B-zisSYSW820cXB3OWZVWDBKTV...
Email: See Résumé :)
I'm a full stack expert with years of experience ranging from modern web dev to robotics & embedded systems to gaming engines. Passionate about great tools and great design and I enjoy pushing technology to the next level.
Location: Colorado
Remote: Yes
Willing to relocate: No
Technologies: JavaScript (ES6/ES7), Node.js w/ Babel, WebPack, React.js w/ Flux, Redux, HTML5, CSS3, NoSQL (Redis, MongoDB), SQL (MySQL), Linux, Git, Embedded Systems (C, C++), whatever you need!
Résumé/CV: https://drive.google.com/open?id=0B-zisSYSW820cXB3OWZVWDBKTV...
Email: See Résumé :)
This allows you to encapsulate all of your Redux actions/reducers/etc into standalone "providers". It decouples pretty much all of your React components (UI) from your Redux logic (models/controllers), which maximually separates your concerns and makes it trivial to reuse anything anywhere. It also allows you to instantly swap databases and/or websocket implementations.
Location: Boulder, Colorado
Remote: Yes
Willing to relocate: Yes
Technologies: JavaScript (ES6/ES7), Node.js w/ Babel, WebPack, React.js w/ Flux, Redux, HTML5, CSS3, NoSQL (Redis, MongoDB), SQL (MySQL), Linux, Git, Embedded Systems (C, C++), whatever you need!
Résumé/CV: https://drive.google.com/file/d/0B-zisSYSW820cXB3OWZVWDBKTVE...
Email: See Résumé :)
Remote: Yes
Willing to relocate: Yes
Technologies: JavaScript (ES6/ES7), Node.js w/ Babel, WebPack, React.js w/ Flux, Redux, HTML5, CSS3, NoSQL (Redis, MongoDB), SQL (MySQL), Linux, Git, Embedded Systems (C, C++), whatever you need!
Résumé/CV: https://drive.google.com/file/d/0B-zisSYSW820cXB3OWZVWDBKTVE...
Email: See Résumé :)
Short version:
- A provider has its own store (or it can share a store with other providers if you need it to).
- When you have a `propType` matching a provider's `actions`, those actions are automatically mapped to the store's dispatcher; so when you call `this.props.someAction`, it's essentially calling `provider.store.dispatch(provider.actions.someAction())`.
- And when you have a `propType` matching a provider's `reducers`, that component will always have the latest state of that reducer.
Without the `@provide` decorator, you would just `export default provide(SomeComponent)`. I've opted to use the ES7 decorator because it's cleaner, more concise, and immediately apparent.
TL;DR: You can create redux providers that automatically match themselves to your components based on their propTypes. All you really need is a components directory, a providers directory, and an optional but recommended themes directory. Everything is easily interchangeable, understandable, maintainable, extendable, and reusable. There's a lot more included with all that like hot reloading both client and server, server rendering, etc., etc., etc. I built an app from scratch based on the included boilerplate yesterday and it took about 10 minutes as opposed to the 1 hour it would usually take!
He was never formally trained to do this. :)
Just to be clear, I'm all for treating people with respect, as any decent human being should be. And political correctness is perfectly fine and necessary in most cases, but in most contexts it refers to conforming to certain narratives to avoid scrutiny and being ostracized, which typically only exists to serve some underlying agenda. It's been taken to the extremes lately and conflating "political correctness" with "treating people with respect" is a mistake, because more often than not, political correctness does more harm than good. Imagine there's a serious security flaw in some software but no one will speak up about it because it might result in ostracizing whoever does speak up about it because it offends people. The more freely people are allowed to express themselves, the better off we will all be, regardless of the message. But yes, when speaking freely, one should also be respectful. You can be politically incorrect and treat people with respect at the same time. That is why those phrases are not interchangeable.
Edit: Found https://github.com/tj/dox, but surely there's a way to convert these comments (with maybe a little extra info) to tests?
Full stack web dev looking to push web apps to their absolute limits.
Location: North Carolina
Remote: Yes, but some personal interaction is always a plus
Willing to relocate: Definitely
Technologies: Node.js, React.js, MongoDB, Redis, ES6/ES7, anything you throw at me really
Résumé/CV: github/timbur and github/loggur
Email: tim -at- loggur -dot- com
Location: North Carolina
Remote: Yes, but some personal interaction is always a plus
Willing to relocate: Definitely
Technologies: Node.js, React.js, MongoDB, Redis, ES6/ES7, anything you throw at me really
Résumé/CV: github/timbur and github/loggur
Email: tim -at- loggur -dot- com
Here is a video I recorded the other week of one of our walks. We've walked along this path at least a thousand times. https://www.youtube.com/watch?v=iH4TsjD97cU
Get a dog. Give it all the love you have. You will receive the same, unconditionally. Go do all kinds of things that your little friend enjoys. Go for long walks as often as you can, morning and night, at least. Your friend's excitement and joy over the smallest things will rub off on you too. And you'll come to realize that, to your dog, you are literally everything. It really puts things into perspective. There really isn't much more to life than that, and I think there's a certain beauty to it.
I can't for the life of me remember completing Earthbound or when/why I stopped playing it. I just watched that Youtube clip of the end battle with Giygas and I vaguely remember it, but I have no recollection of some kind of ending. If anything I remember being kind of confused. I bet I ran into that last layer of protection where it randomly freezes and deletes the saved game, and that's why I don't recall an actual ending.
Learning about this now, I guess I feel a little better about not remembering ever beating Earthbound.
Will it fix MongoDB's data loss issues? I'm hoping that is what "write-optimized" is partly implying.
// plugins/replicate.js
var replicator = require('replicator');
module.exports = exports = function replicatePlugin (schema, options) {
schema.pre('save', function (next) {
// notify subscribers of save
replicator.notify('save', this);
next();
});
}
// schemas/game.js
var replicatePlugin = require('../plugins/replicate.js');
var GameSchema = new Schema({ ... });
GameSchema.plugin(replicatePlugin);However, millions of people will see it eventually. Epic Games will almost certainly be using it for the community portion of their new Unreal Tournament.
This thread on their forums details some of the functionality on a more abstract level as it exists thus far: https://forums.unrealtournament.com/showthread.php?14859-Web...
They find different ways of having fun and bullshitting.