Hopefully they actually follow through on that.
HN user
tfb
twitter @_timbur
Google could easily adjust their ranking algorithm to better reward non-AMP pages (which they've obviously already crawled) which they know are 1) below say 75 KB and 2) contain a limited number of resources to fetch. But instead of doing that, they choose to attempt to strongarm everyone into using AMP.
What you're describing is called "replication" in Unreal Engine. It helps tremendously with writing declarative code, and I've found it to be exceptionally powerful and predictable.
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. :)
SEEKING WORK - Remote; I'm in Colorado.
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é :)
SEEKING WORK
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é :)
These self-driving cars are a good start though. It makes sense - to me at least - that more self-driving cars on the road means fewer accidents. Imagine if nearly every vehicle was autonomous and wirelessly networked with other nearby vehicles. We'd see little to no accidents, assuming everything is secure and working correctly.
And a lot of determination! :)
https://github.com/loggur/react-redux-provide
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.
SEEKING WORK
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é :)
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é :)
I believe most of what it's doing under the hood is explained in the article. Sorry if it isn't 100% clear.
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.
There seem to be a lot of similar questions about how to reduce redux's boilerplate and build something real-world with it. I think I found a pretty good solution (among other things) which I wrote about within this article.
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!
I've been using JSS for everything. It makes the most sense to me. It's minimal in size and function to the point that any extra functionality can be quickly and easily added via `jss.use(plugin)`. And it's maximally modular. Every class is namespaced, and exporting everything to a single sheet for production builds is super simple, as it should be.
My dog can do this. Sadly he was tied to a tree for years before I got him, which is probably how he figured it out. I'll walk him and on extremely rare occasions he will accidentally wrap around a pole or something, and when he realizes he doesn't have any slack, he immediately unwraps himself. I also say "on extremely rare occasions" because somehow he figured out that if there's a tree/pole ahead, he should stay between myself and the tree/pole to avoid ever wrapping around it to begin with. The only times he will go on the wrong side is if he's preoccupied with a smell or something, and even then, he never actually fully wraps around it, as he almost always realizes he should immediately go the other way.
He was never formally trained to do this. :)
The phrases "political correctness" and "treating people with respect" describe entirely different things. They are not interchangeable without altering the meaning of the sentence, as they refer to two completely different concepts. Whether or not you agree with the intended meaning is irrelevant. The meaning is still there.
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.
The comment block I provided was just an example. It can be changed to anything that would make the most sense for generating tests.
Forgot to add: Compatibility with ES6/ES7 is preferred.
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?
It's because it's only text with little to no JavaScript, and I haven't looked at the source behind HN, but presumably, the HTML for every URL is cached upon each change (comment, upvote) and requires very little processing time per user customization.
This is very cool. I wonder if I could put this on my old prepaid Android. I'm sure I could but how easy would it be?
Most that you've seen are probably using bootstrap (http://getbootstrap.com). Though the only indication of bootstrap I'm seeing within this particular site is font-awesome loaded from the bootstrap cdn.
SEEKING WORK - Remote / North Carolina
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
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
Get a dog. They're called man's best friend for a reason. :) When I'm feeling like you are now, I look over to my little buddy and think, "What would you do without me?" But what I should really be thinking is, "What would I do without you?" Words cannot express the amount of joy that my dog brings to my life. I don't know if I would be here right now if it wasn't for him. When I don't feel like getting out of bed, he's always there to wake me up and give me a reason to get moving. I cherish every moment.
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.
Yes, I read that. But it's also most logical explanation for why I don't remember the ending.
You know what... this is really interesting to learn about this now, because I played the hell out of Earthbound when I was younger using an emulator, but to this day I don't recall ever beating it. And it is extremely rare that I would just stop playing a game. The only game I started and haven't completed is Oblivion.
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.
The RocksDB engine developed by Facebook engineers is one of the fastest, most compact and write-optimized storage engines available.
Will it fix MongoDB's data loss issues? I'm hoping that is what "write-optimized" is partly implying.
How would RethinkDB's real-time capabilities compare to doing something like this with Mongo? (I'm genuinely curious about any shortcomings with the following implementation, besides scaling.)
// 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);I'll start posting about it when things are further along. Unfortunately, I'm only one man and lack the resources to fund a team, unlike Facebook. It's just frustrating to see all this hype surrounding React/Relay when I've implemented essentially this exact functionality as part of a much larger project. For the past year (at least), I've considered this functionality to be fairly basic and implicit to modern web apps.
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...
Sorry. I was hesitant to post the comment to begin with given that I'm 100% sure I'd be downvoted, which it was literally within 1 minute of posting it. You can check my comment history for details on the project.
Anyone born since ~2000 perhaps is in this situation. Will they have eliminated this kind of "fun" "bullshit" from their behavior completely?
They find different ways of having fun and bullshitting.