<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: tfb</title><link>https://news.ycombinator.com/user?id=tfb</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sat, 11 Apr 2026 07:47:51 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=tfb" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by tfb in "Google AMP – A 70% drop in our conversion rate"]]></title><description><![CDATA[
<p>Hopefully they actually follow through on that.</p>
]]></description><pubDate>Sat, 11 Aug 2018 03:24:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=17738119</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=17738119</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17738119</guid></item><item><title><![CDATA[New comment by tfb in "Google AMP – A 70% drop in our conversion rate"]]></title><description><![CDATA[
<p>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.</p>
]]></description><pubDate>Thu, 09 Aug 2018 02:35:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=17721311</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=17721311</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=17721311</guid></item><item><title><![CDATA[New comment by tfb in "SPAs are harder and always will be (2013)"]]></title><description><![CDATA[
<p>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.<p>I love this architecture so much that I brought it into the world of React and Redux a couple years ago (see <a href="https://github.com/loggur/react-redux-provide" rel="nofollow">https://github.com/loggur/react-redux-provide</a> and <a href="https://github.com/loggur/redux-replicate" rel="nofollow">https://github.com/loggur/redux-replicate</a>).  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.<p>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.  :)</p>
]]></description><pubDate>Wed, 17 Jan 2018 17:02:35 +0000</pubDate><link>https://news.ycombinator.com/item?id=16169566</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=16169566</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=16169566</guid></item><item><title><![CDATA[New comment by tfb in "Ask HN: Freelancer? Seeking freelancer? (September 2016)"]]></title><description><![CDATA[
<p>SEEKING WORK - Remote; I'm in Colorado.<p>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.<p>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!<p>Résumé/CV: <a href="https://drive.google.com/open?id=0B-zisSYSW820cXB3OWZVWDBKTVE" rel="nofollow">https://drive.google.com/open?id=0B-zisSYSW820cXB3OWZVWDBKTV...</a><p>Email: See Résumé :)<p><a href="https://github.com/timbur" rel="nofollow">https://github.com/timbur</a></p>
]]></description><pubDate>Fri, 02 Sep 2016 04:30:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=12410844</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=12410844</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=12410844</guid></item><item><title><![CDATA[New comment by tfb in "Ask HN: Who wants to be hired? (September 2016)"]]></title><description><![CDATA[
<p>SEEKING WORK<p>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.<p>Location: Colorado<p>Remote: Yes<p>Willing to relocate: No<p>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!<p>Résumé/CV: <a href="https://drive.google.com/open?id=0B-zisSYSW820cXB3OWZVWDBKTVE" rel="nofollow">https://drive.google.com/open?id=0B-zisSYSW820cXB3OWZVWDBKTV...</a><p>Email: See Résumé :)<p><a href="https://github.com/timbur" rel="nofollow">https://github.com/timbur</a></p>
]]></description><pubDate>Fri, 02 Sep 2016 04:27:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=12410833</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=12410833</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=12410833</guid></item><item><title><![CDATA[New comment by tfb in "Tesla Autopilot Crash: Why We Should Worry About a Single Death"]]></title><description><![CDATA[
<p>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.</p>
]]></description><pubDate>Mon, 11 Jul 2016 20:54:27 +0000</pubDate><link>https://news.ycombinator.com/item?id=12074509</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=12074509</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=12074509</guid></item><item><title><![CDATA[Making Redux as declarative as Relay/GraphQL (tutorial)]]></title><description><![CDATA[
<p>Article URL: <a href="https://medium.com/@timbur/bridging-the-gap-between-redux-and-the-declarative-nature-of-relay-graphql-tutorial-45a0bf5bd13a">https://medium.com/@timbur/bridging-the-gap-between-redux-and-the-declarative-nature-of-relay-graphql-tutorial-45a0bf5bd13a</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=11997892">https://news.ycombinator.com/item?id=11997892</a></p>
<p>Points: 2</p>
<p># Comments: 0</p>
]]></description><pubDate>Tue, 28 Jun 2016 21:54:50 +0000</pubDate><link>https://medium.com/@timbur/bridging-the-gap-between-redux-and-the-declarative-nature-of-relay-graphql-tutorial-45a0bf5bd13a</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=11997892</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11997892</guid></item><item><title><![CDATA[New comment by tfb in "The Fathers of the Internet Urge Today’s Software Engineers to Reinvent the Web"]]></title><description><![CDATA[
<p>And a lot of determination!  :)</p>
]]></description><pubDate>Sun, 19 Jun 2016 19:45:00 +0000</pubDate><link>https://news.ycombinator.com/item?id=11934358</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=11934358</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11934358</guid></item><item><title><![CDATA[New comment by tfb in "A SoundCloud client in React and Redux"]]></title><description><![CDATA[
<p><a href="https://github.com/loggur/react-redux-provide" rel="nofollow">https://github.com/loggur/react-redux-provide</a><p>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.</p>
]]></description><pubDate>Mon, 13 Jun 2016 00:09:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=11890973</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=11890973</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11890973</guid></item><item><title><![CDATA[New comment by tfb in "Ask HN: Freelancer? Seeking freelancer? (June 2016)"]]></title><description><![CDATA[
<p>SEEKING WORK<p>Location: Boulder, Colorado<p>Remote: Yes<p>Willing to relocate: Yes<p>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!<p>Résumé/CV: <a href="https://drive.google.com/file/d/0B-zisSYSW820cXB3OWZVWDBKTVE/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/0B-zisSYSW820cXB3OWZVWDBKTVE...</a><p>Email: See Résumé :)<p><a href="https://github.com/timbur" rel="nofollow">https://github.com/timbur</a></p>
]]></description><pubDate>Wed, 01 Jun 2016 16:49:23 +0000</pubDate><link>https://news.ycombinator.com/item?id=11815960</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=11815960</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11815960</guid></item><item><title><![CDATA[New comment by tfb in "Ask HN: Who wants to be hired? (June 2016)"]]></title><description><![CDATA[
<p>Location: Boulder, Colorado<p>Remote: Yes<p>Willing to relocate: Yes<p>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!<p>Résumé/CV: <a href="https://drive.google.com/file/d/0B-zisSYSW820cXB3OWZVWDBKTVE/view?usp=sharing" rel="nofollow">https://drive.google.com/file/d/0B-zisSYSW820cXB3OWZVWDBKTVE...</a><p>Email: See Résumé :)<p><a href="https://github.com/timbur" rel="nofollow">https://github.com/timbur</a></p>
]]></description><pubDate>Wed, 01 Jun 2016 16:46:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=11815929</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=11815929</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11815929</guid></item><item><title><![CDATA[Provide Redux Actions and Reducers to React Components Automatically]]></title><description><![CDATA[
<p>Article URL: <a href="https://medium.com/@timbur/provide-redux-actions-and-reducers-to-react-components-automatically-1edc257eed11">https://medium.com/@timbur/provide-redux-actions-and-reducers-to-react-components-automatically-1edc257eed11</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=11134348">https://news.ycombinator.com/item?id=11134348</a></p>
<p>Points: 1</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 19 Feb 2016 16:14:39 +0000</pubDate><link>https://medium.com/@timbur/provide-redux-actions-and-reducers-to-react-components-automatically-1edc257eed11</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=11134348</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11134348</guid></item><item><title><![CDATA[New comment by tfb in "React, Automatic Redux Providers, and Replicators"]]></title><description><![CDATA[
<p>I believe most of what it's doing under the hood is explained in the article.  Sorry if it isn't 100% clear.<p>Short version:<p>- A provider has its own store (or it can share a store with other providers if you need it to).<p>- 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())`.<p>- And when you have a `propType` matching a provider's `reducers`, that component will always have the latest state of that reducer.<p>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.</p>
]]></description><pubDate>Sun, 14 Feb 2016 18:08:32 +0000</pubDate><link>https://news.ycombinator.com/item?id=11099222</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=11099222</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11099222</guid></item><item><title><![CDATA[New comment by tfb in "React, Automatic Redux Providers, and Replicators"]]></title><description><![CDATA[
<p>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.<p>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!</p>
]]></description><pubDate>Sun, 14 Feb 2016 14:14:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=11098310</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=11098310</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11098310</guid></item><item><title><![CDATA[React, Automatic Redux Providers, and Replicators]]></title><description><![CDATA[
<p>Article URL: <a href="https://medium.com/@timbur/react-automatic-redux-providers-and-replicators-c4e35a39f1">https://medium.com/@timbur/react-automatic-redux-providers-and-replicators-c4e35a39f1</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=11098269">https://news.ycombinator.com/item?id=11098269</a></p>
<p>Points: 5</p>
<p># Comments: 4</p>
]]></description><pubDate>Sun, 14 Feb 2016 13:57:29 +0000</pubDate><link>https://medium.com/@timbur/react-automatic-redux-providers-and-replicators-c4e35a39f1</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=11098269</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=11098269</guid></item><item><title><![CDATA[React v0.14.1 released]]></title><description><![CDATA[
<p>Article URL: <a href="http://facebook.github.io/react/blog/2015/10/28/react-v0.14.1.html">http://facebook.github.io/react/blog/2015/10/28/react-v0.14.1.html</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=10477153">https://news.ycombinator.com/item?id=10477153</a></p>
<p>Points: 4</p>
<p># Comments: 0</p>
]]></description><pubDate>Fri, 30 Oct 2015 11:10:20 +0000</pubDate><link>http://facebook.github.io/react/blog/2015/10/28/react-v0.14.1.html</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=10477153</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10477153</guid></item><item><title><![CDATA[New comment by tfb in "CSS Modules"]]></title><description><![CDATA[
<p>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.<p><a href="https://github.com/jsstyles/jss" rel="nofollow">https://github.com/jsstyles/jss</a></p>
]]></description><pubDate>Wed, 19 Aug 2015 18:02:34 +0000</pubDate><link>https://news.ycombinator.com/item?id=10087295</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=10087295</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10087295</guid></item><item><title><![CDATA[New comment by tfb in "Apes may be closer to speaking than many scientists think"]]></title><description><![CDATA[
<p>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.<p>He was never formally trained to do this.  :)</p>
]]></description><pubDate>Fri, 14 Aug 2015 23:15:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=10063559</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=10063559</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10063559</guid></item><item><title><![CDATA[New comment by tfb in "GitHub Puts Open Code of Conduct on Pause"]]></title><description><![CDATA[
<p>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.<p>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.</p>
]]></description><pubDate>Sat, 08 Aug 2015 16:39:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=10027801</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=10027801</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10027801</guid></item><item><title><![CDATA[New comment by tfb in "Ask HN: Best libraries for converting JavaScript comments to both docs and tests?"]]></title><description><![CDATA[
<p>The comment block I provided was just an example.  It can be changed to anything that would make the most sense for generating tests.</p>
]]></description><pubDate>Wed, 05 Aug 2015 17:09:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=10011221</link><dc:creator>tfb</dc:creator><comments>https://news.ycombinator.com/item?id=10011221</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=10011221</guid></item></channel></rss>