<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Sergio Xalambrí on Medium]]></title>
        <description><![CDATA[Stories by Sergio Xalambrí on Medium]]></description>
        <link>https://medium.com/@sergiodxa?source=rss-3ab83ddfd089------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*GGQ3toPYeOI9esjOJ-tZfw.jpeg</url>
            <title>Stories by Sergio Xalambrí on Medium</title>
            <link>https://medium.com/@sergiodxa?source=rss-3ab83ddfd089------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Sun, 24 May 2026 02:23:18 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@sergiodxa/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[Documentación, Lecciones Aprendidas]]></title>
            <link>https://medium.com/@sergiodxa/documentacion-62cbf4eebeb0?source=rss-3ab83ddfd089------2</link>
            <guid isPermaLink="false">https://medium.com/p/62cbf4eebeb0</guid>
            <category><![CDATA[now]]></category>
            <category><![CDATA[zeit]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <category><![CDATA[documentation]]></category>
            <category><![CDATA[spanish]]></category>
            <dc:creator><![CDATA[Sergio Xalambrí]]></dc:creator>
            <pubDate>Mon, 22 Jan 2018 18:21:20 GMT</pubDate>
            <atom:updated>2018-01-22T18:21:20.613Z</atom:updated>
            <content:encoded><![CDATA[<p>En ▲ZEIT <a href="https://zeit.co/blog/api-2">lanzamos</a> nuestra nueva y renovada <a href="https://zeit.co/api">documentación del API</a>, estuve trabajando en ella desde ZDB a cargo de escribir la documentación y código relacionado con la documentación. Documentar nuestra API pública por completo me ayudó a aprender y entender más sobre nuestra infrastructura y cómo funciona Now internamente.</p><p>Después de meses de trabajar en eso quiero compartir algunas cosas que aprendí.</p><p><a href="https://sergiodxa.com/essays/documentacion">Terminar de leer!</a></p><p><em>Originally published at </em><a href="https://sergiodxa.com/essays/documentacion"><em>sergiodxa.com</em></a><em>.</em></p><figure><a href="https://sdx.im/subscribe"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7AKRKcU3V7i143uNvNd67A.png" /></a></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=62cbf4eebeb0" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Documentation, Lessons Learned]]></title>
            <link>https://medium.com/@sergiodxa/documentation-366d462876bd?source=rss-3ab83ddfd089------2</link>
            <guid isPermaLink="false">https://medium.com/p/366d462876bd</guid>
            <category><![CDATA[now]]></category>
            <category><![CDATA[lessons-learned]]></category>
            <category><![CDATA[zeit]]></category>
            <category><![CDATA[documentation]]></category>
            <category><![CDATA[api]]></category>
            <dc:creator><![CDATA[Sergio Xalambrí]]></dc:creator>
            <pubDate>Mon, 22 Jan 2018 18:18:48 GMT</pubDate>
            <atom:updated>2018-01-22T18:18:48.040Z</atom:updated>
            <content:encoded><![CDATA[<p>At ▲ZEIT <a href="https://zeit.co/blog/api-2">we are launching</a> our newly renewed <a href="https://zeit.co/api">API documentation</a>, I’ve been working on that project since the ZDB in charge of writing the documentation plus some code related to it. Documenting our whole public API help me learn and understand more about our infrastructure and how Now works internally.</p><p>And after months working on it I want to share some thinks I learned.</p><p><a href="https://sergiodxa.com/essays/documentation">Read more!</a></p><p><em>Originally published at </em><a href="https://sergiodxa.com/essays/documentation"><em>sergiodxa.com</em></a><em>.</em></p><figure><a href="https://sdx.im/subscribe"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7AKRKcU3V7i143uNvNd67A.png" /></a></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=366d462876bd" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Renderizando Markdown en React.js]]></title>
            <link>https://medium.com/react-redux/markdown-react-3ea7e6428853?source=rss-3ab83ddfd089------2</link>
            <guid isPermaLink="false">https://medium.com/p/3ea7e6428853</guid>
            <category><![CDATA[react]]></category>
            <category><![CDATA[markdown]]></category>
            <category><![CDATA[spanish]]></category>
            <category><![CDATA[react-native]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Sergio Xalambrí]]></dc:creator>
            <pubDate>Sat, 06 Jan 2018 20:54:34 GMT</pubDate>
            <atom:updated>2018-01-12T19:01:22.255Z</atom:updated>
            <content:encoded><![CDATA[<p>Markdown es una tecnología genial para poder escribir fácilmente contenido de texto, una de las mejores cosas es que si bien está pensado para ser transformado en HTML es posible usarlo para transformarlo en cualquier otra tecnología, por ejemplo componentes de React.</p><p>En este artículo vamos a ver como se puede crear un parser que transforme Markdown en componentes de React, pasando por HTML y JSON en el proceso</p><p><a href="https://sergiodxa.com/essays/markdown-react">Terminar de leer</a></p><p><em>Originally published at </em><a href="https://sergiodxa.com/essays/markdown-react"><em>sergiodxa.com</em></a><em>.</em></p><figure><a href="https://sergiodxa.com/subscribe/"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7AKRKcU3V7i143uNvNd67A.png" /></a></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=3ea7e6428853" width="1" height="1" alt=""><hr><p><a href="https://medium.com/react-redux/markdown-react-3ea7e6428853">Renderizando Markdown en React.js</a> was originally published in <a href="https://medium.com/react-redux">React &amp; Redux</a> on Medium, where people are continuing the conversation by highlighting and responding to this story.</p>]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[An accessible approach to Frontend testing]]></title>
            <link>https://medium.com/@sergiodxa/an-accessible-approach-to-frontend-testing-e110d26708ec?source=rss-3ab83ddfd089------2</link>
            <guid isPermaLink="false">https://medium.com/p/e110d26708ec</guid>
            <category><![CDATA[testing]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[front-end-development]]></category>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[software-testing]]></category>
            <dc:creator><![CDATA[Sergio Xalambrí]]></dc:creator>
            <pubDate>Sat, 30 Sep 2017 22:10:31 GMT</pubDate>
            <atom:updated>2018-01-12T19:02:33.978Z</atom:updated>
            <content:encoded><![CDATA[<blockquote>Testing is hard. Testing Frontend is harder. But you should do it anyways.</blockquote><p>Being realistic tests are usually avoided and this happens even often in Frontend codebases because testing a UI is harder than just doing a unit test or a HTTP request to check the response of an API (<em>I’m not saying testing backend is easy</em>).</p><p>The problem here is that doing tests is important and avoiding them is just irresponsible, they allow the early detection of bugs before reaching the users.</p><p>Here I’m going to list and review some useful techniques when testing Frontend code that can be gradually implemented.</p><p><a href="https://sergio.now.sh/essays/an-accessible-approach-to-frontend-testing/">Read more!</a></p><figure><a href="https://sergiodxa.com/subscribe/"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7AKRKcU3V7i143uNvNd67A.png" /></a></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=e110d26708ec" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[How to keep updated with the JavaScript ecosystem?]]></title>
            <link>https://medium.com/@sergiodxa/how-to-keep-updated-with-the-javascript-ecosystem-97c8e36c2c3f?source=rss-3ab83ddfd089------2</link>
            <guid isPermaLink="false">https://medium.com/p/97c8e36c2c3f</guid>
            <category><![CDATA[frontend]]></category>
            <category><![CDATA[ecosystem]]></category>
            <category><![CDATA[tech]]></category>
            <category><![CDATA[javascript]]></category>
            <dc:creator><![CDATA[Sergio Xalambrí]]></dc:creator>
            <pubDate>Sun, 06 Aug 2017 17:26:03 GMT</pubDate>
            <atom:updated>2018-01-12T19:03:14.439Z</atom:updated>
            <content:encoded><![CDATA[<p>Many people asked me how I keep updated with all the new JavaScript stuffs, how I know what to learn and where I find information. I found that this questions are common between people starting to learn how to code, Frontend or JavaScript. Basically people starting in the industry.</p><p>That’s why I want to share how you can learn what to learn and where you can find information.</p><h3>Find information</h3><p>There’s a lot of places to find information. I found there are some places I always visit to get more info.</p><h4><a href="https://developer.mozilla.org/en/">Mozilla Developer Network</a></h4><p>Also known as MDN. This site is basically the documentation of web technologies. If you want to read about a HTML tag, a CSS attribute or a any JS related thing you must go there.</p><h4><a href="http://caniuse.com/">CanIUse</a></h4><p>A really nice place to check the support of a feature in multiple browsers. It also gives you information about the usage of that browser (personal recommendation: if a browser doesn’t have more than 5% of usage don’t support it)</p><h4>Specific documentations</h4><p>Usually you use only a certain technologies, your personal stack. always check the documentation of that technologies to learn more, usually they have a blog, twitter accounts, a Github organization, etc. you can use to get more knowledge.</p><h4><a href="https://github.com/sindresorhus/awesome">Awesome lists</a></h4><p>Awesome is an idea started by <a href="https://github.com/sindresorhus">sindresorhus</a>. They are list of useful links about any technology. The main list (linked in the title) is a list of other awesome lists like <a href="https://github.com/sorrycc/awesome-javascript">awesome-javascript</a>, <a href="https://github.com/enaqx/awesome-react">awesome-react</a>, <a href="https://github.com/xgrommx/awesome-redux">awesome-redux</a>, and more. This lists are really useful to find libraries, articles, talks, videos, etc. etc. about any specific technology.</p><h3>Follow developers</h3><p>Almost every developer have a Twitter account and they share a lot of interesting projects they’re working on or follow. And most important, they share ideas and have discussions you can read to learn a lot.</p><p>Because of that I created a Twitter List with many people, and of course follow them.</p><p><a href="https://twitter.com/sergiodxa/lists/developers-designers">@sergiodxa/Developers/Designers on Twitter</a></p><p>☝️ That’s the list, I always have a column in Tweetdeck with that list open. Try following that list of some members. They’re really awesome.</p><h3>Read a lot</h3><p>I’m always reading about the technologies I’m interested.</p><h4>Medium</h4><p>Medium it’s a great place to read, personally I like to follow tags so I can get articles from many authors and publications. The tags I follow are</p><ul><li><a href="https://medium.com/tag/api?source=homepage_followed">API</a></li><li><a href="https://medium.com/tag/apollo-client?source=homepage_followed">Apollo Client</a></li><li><a href="https://medium.com/tag/apollostack?source=homepage_followed">Apollostack</a></li><li><a href="https://medium.com/tag/authentication?source=homepage_followed">Authentication</a></li><li><a href="https://medium.com/tag/aws?source=homepage_followed">AWS</a></li><li><a href="https://medium.com/tag/babeljs?source=homepage_followed">Babeljs</a></li><li><a href="https://medium.com/tag/cloud-computing?source=homepage_followed">Cloud Computing</a></li><li><a href="https://medium.com/tag/components?source=homepage_followed">Components</a></li><li><a href="https://medium.com/tag/css-in-js?source=homepage_followed">Css in Js</a></li><li><a href="https://medium.com/tag/css-modules?source=homepage_followed">Css Modules</a></li><li><a href="https://medium.com/tag/desktop-app?source=homepage_followed">Desktop App</a></li><li><a href="https://medium.com/tag/devops?source=homepage_followed">DevOps</a></li><li><a href="https://medium.com/tag/django?source=homepage_followed">Django</a></li><li><a href="https://medium.com/tag/docker?source=homepage_followed">Docker</a></li><li><a href="https://medium.com/tag/electrode?source=homepage_followed">Electrode</a></li><li><a href="https://medium.com/tag/electron?source=homepage_followed">Electron</a></li><li><a href="https://medium.com/tag/electronjs?source=homepage_followed">Electronjs</a></li><li><a href="https://medium.com/tag/elm?source=homepage_followed">Elm</a></li><li><a href="https://medium.com/tag/erlang?source=homepage_followed">Erlang</a></li><li><a href="https://medium.com/tag/es6?source=homepage_followed">ES6</a></li><li><a href="https://medium.com/tag/flux?source=homepage_followed">Flux</a></li><li><a href="https://medium.com/tag/functional-programming?source=homepage_followed">Functional Programming</a></li><li><a href="https://medium.com/tag/graphql?source=homepage_followed">GraphQL</a></li><li><a href="https://medium.com/tag/high-order-component?source=homepage_followed">High Order Component</a></li><li><a href="https://medium.com/tag/iaas?source=homepage_followed">Iaas</a></li><li><a href="https://medium.com/tag/immutablejs?source=homepage_followed">Immutablejs</a></li><li><a href="https://medium.com/tag/isomorphic-applications?source=homepage_followed">Isomorphic Applications</a></li><li><a href="https://medium.com/tag/javascript?source=homepage_followed">JavaScript</a></li><li><a href="https://medium.com/tag/json-web-token?source=homepage_followed">Json Web Token</a></li><li><a href="https://medium.com/tag/kubernetes?source=homepage_followed">Kubernetes</a></li><li><a href="https://medium.com/tag/meteor?source=homepage_followed">Meteor</a></li><li><a href="https://medium.com/tag/microservices?source=homepage_followed">Microservices</a></li><li><a href="https://medium.com/tag/monads?source=homepage_followed">Monads</a></li><li><a href="https://medium.com/tag/nextjs?source=homepage_followed">Nextjs</a></li><li><a href="https://medium.com/tag/nodejs?source=homepage_followed">Nodejs</a></li><li><a href="https://medium.com/tag/npm?source=homepage_followed">NPM</a></li><li><a href="https://medium.com/tag/observables?source=homepage_followed">Observables</a></li><li><a href="https://medium.com/tag/orchestration?source=homepage_followed">Orchestation</a></li><li><a href="https://medium.com/tag/paas?source=homepage_followed">Paas</a></li><li><a href="https://medium.com/tag/progressive-web-app?source=homepage_followed">Progressive Web App</a></li><li><a href="https://medium.com/tag/react?source=homepage_followed">React</a></li><li><a href="https://medium.com/tag/react-native?source=homepage_followed">React Native</a></li><li><a href="https://medium.com/tag/react-router?source=homepage_followed">React Router</a></li><li><a href="https://medium.com/tag/reactjs?source=homepage_followed">Reactjs</a></li><li><a href="https://medium.com/tag/recompose?source=homepage_followed">Recompose</a></li><li><a href="https://medium.com/tag/redux?source=homepage_followed">Redux</a></li><li><a href="https://medium.com/tag/redux-saga?source=homepage_followed">Redux Saga</a></li><li><a href="https://medium.com/tag/relay?source=homepage_followed">Relay</a></li><li><a href="https://medium.com/tag/reselect?source=homepage_followed">Reselect</a></li><li><a href="https://medium.com/tag/rest-api?source=homepage_followed">Rest Api</a></li><li><a href="https://medium.com/tag/rxjs?source=homepage_followed">Rxjs</a></li><li><a href="https://medium.com/tag/saas?source=homepage_followed">SaaS</a></li><li><a href="https://medium.com/tag/server-rendering?source=homepage_followed">Server Rendering</a></li><li><a href="https://medium.com/tag/serverless?source=homepage_followed">Serverless</a></li><li><a href="https://medium.com/tag/service-worker?source=homepage_followed">Service Worker</a></li><li><a href="https://medium.com/tag/single-page-applications?source=homepage_followed">Single Page Applications</a></li><li><a href="https://medium.com/tag/styled-components?source=homepage_followed">Styled Components</a></li><li><a href="https://medium.com/tag/ui?source=homepage_followed">UI</a></li><li><a href="https://medium.com/tag/ux?source=homepage_followed">UX</a></li><li><a href="https://medium.com/tag/web-apps?source=homepage_followed">Web Apps</a></li><li><a href="https://medium.com/tag/webpack?source=homepage_followed">Webpack</a></li><li><a href="https://medium.com/tag/websocket?source=homepage_followed">Websocket</a></li></ul><p>I also <a href="https://medium.com/@sergiodxa/following">follow some folks</a> and publications like:</p><ul><li><a href="https://medium.com/react-redux">React Redux</a> (spanish)</li><li><a href="https://medium.com/learning-react-js">Learning React.js</a></li><li><a href="https://engineering.udacity.com/">Udacity Eng &amp; Data</a></li><li><a href="https://medium.com/netflix-techblog">Netflix TechBlog</a></li><li><a href="https://blog.reactiveconf.com/">Reactive Conf</a></li><li><a href="https://dev-blog.apollodata.com/">Apollo GraphQL</a></li><li><a href="https://blog.zeplin.io/">Zeplin Gazette</a></li><li><a href="https://medium.com/airbnb-engineering">Airbnb Engineering &amp; Data Science</a></li><li><a href="https://slack.engineering/">Several People Are Coding</a></li><li><a href="https://getputpost.co/">GET PUT POST</a></li><li><a href="https://medium.com/making-meetup">Making Meetup</a></li><li><a href="https://code-cartoons.com/">Code Cartoons</a></li><li><a href="https://medium.com/walmartlabs">WalmartLabs</a></li><li><a href="https://serverless.zone/">Serverless Zone</a></li><li><a href="https://medium.com/aerolab-stories">Aerolab Stories</a></li><li><a href="https://medium.com/entendiendo-javascript">Entendiendo JavaScript</a> (spanish)</li><li><a href="https://medium.com/webpack">webpack</a></li><li><a href="https://medium.com/meetupjs">MeetupJS</a> (spanish)</li><li><a href="https://medium.com/javascript-scene">JavaScript Scene</a></li><li><a href="https://read.acloud.guru/">A Cloud Guru</a></li><li><a href="https://medium.com/slack-developer-blog">Slack Platform Blog</a></li><li><a href="https://blog.scaleapi.com/">Scale API</a></li></ul><h4>Engineering blogs</h4><p>Many startups have engineering related blogs. In this kind of blogs they tell why they choose their stack or introduce technologies they create. Some of the publications I listed above are engineering blogs like the <a href="https://medium.com/slack-developer-blog">Slack Platform Blog</a>, <a href="https://medium.com/walmartlabs">WalmartLabs</a> and one of my favorites <a href="https://medium.com/netflix-techblog">Netflix TechBlog</a>. Other blogs:</p><ul><li><a href="https://githubengineering.com/">GitHub Engineering</a></li><li><a href="https://dev.opera.com/">Dev.Opera</a></li><li><a href="https://code.facebook.com/">Facebook Code</a></li></ul><h4><a href="http://dev.to/">Dev.to</a></h4><p>Dev.to is a developer oriented community and blogging platform. It’s similar to Medium but only for development articles. Here you can follow tags or people and read a lot of articles and opinions about technology and development.</p><h4>Personal blogs</h4><p>I used to read a lot personal blogs, I still follow and read some blogs like <a href="https://ponyfoo.com/">PonyFoo</a> or <a href="http://2ality.com/">2ality</a>. Most of them migrated to Medium or dev.to so you can get more articles in that platforms.</p><h4>Development blogs</h4><p>Aside of Medium and Dev.to there are more blogs with many authors like <a href="https://css-tricks.com/">CSSTricks</a>, <a href="https://tympanus.net/codrops">Codrops</a>, <a href="http://blog.teamtreehouse.com/">Treehouse Blog</a>, <a href="http://blog.npmjs.org/">The npm Blog</a>, <a href="https://github.com/blog">The GitHub Blog</a>, <a href="http://survivejs.com/">SurviveJS</a>, <a href="https://www.smashingmagazine.com/">Smashing Magazine</a>, <a href="https://scotch.io/">Scotch</a>, <a href="https://facebook.github.io/react">React blog</a> or <a href="https://hacks.mozilla.org/">Mozilla Hacks</a>.</p><h4><a href="http://echojs.com/">EchoJS</a></h4><p>EchoJS is a website with the same idea of HackerNews, anyone can post interesting links, the only rules are they need to be JS related and in english. You can follow his <a href="https://twitter.com/echojs">Twitter account</a>, access the <a href="http://www.echojs.com/">website</a> or follow the <a href="http://www.echojs.com/rss">RSS feed</a> to get all the links shared.</p><p>I found this site to be one of my biggest sources of links and articles about JS and related technologies. Instead of following a lot of blogs you can have a single curated list of articles.</p><h4><a href="https://www.reddit.com/">Reddit</a></h4><p>Particularly the <a href="https://www.reddit.com/r/javascript/">JS subreddit</a>, and other specific subreddit like <a href="https://www.reddit.com/r/reactjs/">React</a>, <a href="https://www.reddit.com/r/Frontend/">Frontend</a>, <a href="https://www.reddit.com/r/reactnative/">React Native</a>, <a href="https://www.reddit.com/r/reduxjs/">Redux</a>, <a href="https://www.reddit.com/r/graphql/">GraphQL</a>, etc. It’s basically the same idea as EchoJS, a curated feed of links.</p><h3>Watch talks</h3><p>I mentioned talks many times above. Watch talks and conferences about JS, the community is huge and we have many conferences about JS. The <a href="http://jsconf.com/">JSConf</a>, alongside the country specific JSConf always have amazing talks.</p><p>Not only <a href="https://www.youtube.com/user/jsconfeu">watch the talks in Youtube</a> assist to them! There’re JSConf in many countries like <a href="https://www.jsconfar.com/">JSConf AR</a>, <a href="https://jsconf.uy/">JSConf UY</a>, <a href="https://jsconf.co/">JSConf CO</a>, <a href="http://lastcall.jsconf.us/">JSConf US</a>, <a href="http://2015.jsconf.eu/">JSConf EU</a> and more! And not only JSConf, <a href="http://nodeconf.com/">NodeConf</a>, <a href="http://www.nodesummit.com/">NodeSummit</a>, <a href="http://conf.reactjs.org/">ReactConf</a>, <a href="http://zeit.co/day">▲ZEIT Day</a>, etc.</p><h4>Assist to meetups</h4><p>Usually conferences are yearly. And only in capital cities. But meetups about any technology can be monthly, assist to meetups. A lot of cities have meetups and if your city doesn’t have one you can start it! Bring other developers and start doing meetups in your city.</p><h3>Participate in communities</h3><p>There exists many communities, they usually have a free Slack team you can join. <a href="https://zeit.chat/">▲ZEIT community</a>, <a href="https://elmlang.herokuapp.com/">ElmLang community</a>, <a href="https://www.reactiflux.com/">Reactiflux (react, RN, redux, GraphQL, Jest, Relay, etc.) community</a> and more. Many development communities have their own Slacks, Discord or Gitter chats you can join.</p><p>Start participating can help you talk to the people who created the libraries and frameworks you use and with others in your same position.</p><h3>Found useful Youtube channels</h3><p>In Youtube exists a lot of channels, and some of them are related to development. Some cool channels you can follow are <a href="https://www.youtube.com/channel/UCO1cgjhGzsSYb1rsB4bFe4Q">FunFunFunction</a>, <a href="https://www.youtube.com/channel/UCP_lo1MFyx5IXDeD9s_6nUw">Facebook Developers</a>, <a href="https://www.youtube.com/channel/UCGGRRqAjPm6sL3-WGBDnKJA">Netflix UI Engineering</a>, <a href="https://www.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttw">Google Developers</a> and <a href="https://www.youtube.com/channel/UCQPYJluYC_sn_Qz_XE-YbTQ">node.js</a>.</p><p>Many of them upload conferences videos, but other like FunFunFunction or Netflix UI Engineering upload videos specific for Youtube that are useful to learn more or watch different opinions about development.</p><h3>Follow (and participate) in Github repositories</h3><p>There’re many Github repositories you can follow and participate, that will let you know about the future of technologies you use daily. You can even participate sending Pull Requests, report or find bugs (and hopefully solutions to bugs) in their issues so they are awesome places to get more insights about frameworks or libraries you use.</p><h3>Conclusion</h3><p>There’re many ways to keep updated with technologies. Remember, development (and specially JavaScript and Frontend) is an always learning path. You’ll always be learning more and more and this has no end. <strong>So embrace that and keep learning!</strong></p><figure><a href="https://sergiodxa.com/subscribe/"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7AKRKcU3V7i143uNvNd67A.png" /></a></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=97c8e36c2c3f" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Introducing Grial]]></title>
            <link>https://medium.com/@sergiodxa/introducing-grial-js-6c414d6dc947?source=rss-3ab83ddfd089------2</link>
            <guid isPermaLink="false">https://medium.com/p/6c414d6dc947</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[graphql]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[apollostack]]></category>
            <category><![CDATA[nodejs]]></category>
            <dc:creator><![CDATA[Sergio Xalambrí]]></dc:creator>
            <pubDate>Wed, 26 Jul 2017 04:10:07 GMT</pubDate>
            <atom:updated>2018-01-12T19:03:41.317Z</atom:updated>
            <content:encoded><![CDATA[<h3>Creating a GraphQL API with Node.js easily</h3><blockquote>A Node.js framework for creating GraphQL API servers easily and without a lot of boilerplate.</blockquote><p>The core server code of any GraphQL API it’s always basically the same, create the HTTP server, get your resolvers and schema, set the /graphql endpoint, in development set the endpoint for GraphiQL and if you are going to use subscriptions also create a subscription server and attach it to your HTTP server.</p><p><strong>That’s a lot of boilerplate code!</strong> And <a href="https://github.com/sergiodxa/grial">Grial</a> will handle all of that for you and let you only think about your application business logic and API layer. How? Grial it’s a serie of many little libraries, the core are <a href="https://www.npmjs.com/package/@grial/cli">@grial/cli</a> and <a href="https://www.npmjs.com/package/@grial/server">@grial/server</a> which would create your API server and run it with a single command.</p><p>Grial also <a href="https://www.npmjs.com/package/@grial/connector-rest">have</a> <a href="https://www.npmjs.com/package/@grial/connector-faker">many</a> <a href="https://www.npmjs.com/package/@grial/connector-fs">connectors</a> <a href="https://www.npmjs.com/package/@grial/connector-mongodb">little</a> <a href="https://www.npmjs.com/package/@grial/connector-redis">libraries</a> that allow you to easily connect your API to different data sources and enable the creation of a big API that consumes data from Redis, MongoDB, Rest APIs, file disk, etc.</p><h3>Let’s code an API!</h3><p>Time to code, we’ll create a directory for the API and install this modules.</p><pre>yarn add @grial/cli @grial/server @grial/connector-faker</pre><p>The last one it’s a connector for the <a href="https://www.npmjs.com/package/faker">faker</a> module and we are going to use it to fake our API data. Then we are going to add the following script to our package.json file.</p><pre>{<br>  &quot;scripts&quot;: {<br>    &quot;start&quot;: &quot;grial start&quot;<br>  }<br>}</pre><p>That script will use @grial/cli to run our @grial/server, it’ll also try to read our environment variables from a .env file, we can then create one with this basic variables.</p><pre>PORT=8000</pre><p>By default it will set PORT=3000, every Grial module have the required and possible environment variables in the readme.</p><h4>Define the schema</h4><p>After that we are ready to write our API code, let’s define our schema, Grial let us write it inside a schema.gql or a schema.graphql file, so we’re going to define something like this in one of them.</p><pre>type User {<br>  id: Int!<br>  username: String!<br>  firstName: String!<br>  lastName: String!<br>  fullName: String!<br>  bio: String!<br>}</pre><pre>type Query {<br>  me: User!<br>}</pre><pre>schema {<br>  query: Query<br>}</pre><h4>Write the resolvers</h4><p>Now we need to create a resolvers.js files. Along with the schema these are the only required files.</p><pre>// main resolvers<br>exports.Query = {<br>  me(rootQuery, args, context) {<br>    return context.models.User.me();<br>  }<br>};</pre><pre>// type resolvers<br>exports.User = {<br>  fullName(user) {<br>    return `${user.firstName} ${user.lastName}`;<br>  }<br>};</pre><p>We exported many keys but we could also use module.exports and just export a single object with the keys Query and User.</p><blockquote>My own personal recommendation is to use many exports, also as your resolvers grow create a resolvers directory with a file Query.js, Mutation.js, Subscription.js and one file for each type we need a custom resolver.</blockquote><h4>Create the models</h4><p>As we saw we received the model User from our context object, Grial automatically will read our models.js file and instantiate each one. We will create this file now.</p><pre>exports.User = async function User({ faker }) {<br>  return {<br>    me() {<br>      return {<br>        id: faker.random.number(),<br>        username: faker.internet.userName(),<br>        firstName: faker.name.firstName(),<br>        lastName: faker.name.lastName(),<br>        bio: faker.name.title()<br>      };<br>    }<br>  };<br>};</pre><p>That’s our User model, again we used a name export but we could have done a single export with an object. If you check we are creating an <em>async function</em> for our model, that’s because we could require to run asynchronous code before creating our resolvers (<em>maybe to synchronize the model with a database</em>).</p><h4>Import the connectors</h4><p>We also received faker in our <strong>model</strong>, that’s our <strong>connector</strong>, each model receive a single parameter with <em>each environment variable and connector</em> that of course allow a single model to get data using multiple connectors.</p><p>So, we receive the connector, but how Grial knows that? Simple, just create a connectors.js object and export each connector you want to use.</p><pre>exports.faker = require(&#39;@grial/connector-faker&#39;);</pre><p>Those are our API connectors, we can use this file to also define custom connectors, maybe using third-party APIs clients. Every connector will receive every environment variable and it’s going to use some of them, the Faker connector use FAKER_LOCALE and FAKER_SEED and have default values.</p><p>If you want to use the same connector multiple times you can wrap them with a high order function which receive the environment variables and pass new ones.</p><pre>exports.faker = env =&gt; require(&#39;@grial/connector-faker&#39;)({<br>  FAKER_LOCALE: env.DATA_LOCALE,<br>  FAKER_SEED: env.DATA_SEED<br>})</pre><h4>Running the app</h4><p>With that done we have our API code ready, just run yarn start or npm start and you will see something like this in your terminal.</p><pre>$ grial start<br>Grial server running<br>&gt; GraphiQL Endpoint      = <a href="http://localhost:3000/ide">http://localhost:3000/ide</a><br>&gt; API Endpoint           = <a href="http://localhost:3000/graphql">http://localhost:3000/graphql</a><br>&gt; Subscriptions Endpoint = <a href="http://localhost:3000/subscriptions">http://localhost:3000/subscriptions</a></pre><p>We can then access to http://localhost:3000/ide and try the API. As you can see Grial also set you a subscriptions endpoint by default, if you create a PubSub instance and add subscriptions to your schema and resolvers you can start using them without worries.</p><p>You can also try this application running in production accessing to <a href="https://grial-example-basic.now.sh/ide">https://grial-example-basic.now.sh/ide</a> and another API built with Grial fetching data from a Rest API <a href="https://grial-example-rest-wrapper.now.sh/ide">https://grial-example-rest-wrapper.now.sh/ide</a></p><p>The second example wrap the <a href="http://jsonplaceholder.typicode.com">JSONPlaceholder</a> API into a GraphQL one and add tests for the models and resolvers.</p><h4>Final word</h4><p>Grial allow to <a href="https://github.com/sergiodxa/grial/wiki/Custom-config-with-grial.config.js">customize its behavior</a> using a grial.config.js file with the keys graphqlConfig, graphiqlConfig and subscriptionConfig, they let you customize GraphQL, GraphiQL and the subscription server configurations, useful to include some token based authentication and other features.</p><p>It’s also pluggable, you can use the <a href="https://github.com/sergiodxa/grial/wiki/Programmatically-usage">programmatically API</a> to integrate it inside any HTTP server or application, it can be <a href="https://github.com/sergiodxa/grial/wiki/Integration-with-Next.js">Next.js</a>, <a href="https://github.com/sergiodxa/grial/wiki/Integration-with-Express">Express.js</a>, etc.</p><p>You can <a href="https://github.com/sergiodxa/grial">contribute</a> to Grial and help create an awesome GraphQL framework with more <a href="https://github.com/sergiodxa/grial/wiki/Creating-a-connector">connectors</a>, features, tools, <a href="https://github.com/sergiodxa/grial/tree/master/examples">examples</a> and a <a href="https://github.com/sergiodxa/grial/wiki">completed docs</a>.</p><figure><a href="https://sergiodxa.com/subscribe/"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7AKRKcU3V7i143uNvNd67A.png" /></a></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=6c414d6dc947" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Bye Platzi, hi ▲ZEIT]]></title>
            <link>https://medium.com/@sergiodxa/bye-platzi-hi-zeit-2d1604a0b7b7?source=rss-3ab83ddfd089------2</link>
            <guid isPermaLink="false">https://medium.com/p/2d1604a0b7b7</guid>
            <category><![CDATA[now]]></category>
            <category><![CDATA[platzi]]></category>
            <category><![CDATA[zeit]]></category>
            <category><![CDATA[career-change]]></category>
            <dc:creator><![CDATA[Sergio Xalambrí]]></dc:creator>
            <pubDate>Fri, 07 Jul 2017 04:50:53 GMT</pubDate>
            <atom:updated>2018-01-12T19:04:18.866Z</atom:updated>
            <content:encoded><![CDATA[<p>Today I leave my job as Frontend Developer at <a href="https://platzi.com/">Platzi</a> to start working as Support Engineer at <a href="https://zeit.co">▲<strong>ZEIT</strong></a>.</p><h4>Platzi</h4><p>I worked at Platzi for almost 2 years, it was a really cool job, I knew some amazing people who worked with me or were teachers in our courses. Some of them I now consider them as good friends.</p><p>I also learned a lot about Frontend, Backend, video streaming, DevOps, etc. I worked in many awesome projects for the platform like our live system, the discussion system, the React-Django server render implementation, our video player, etc.</p><p>I had the opportunity to open source some JS libraries, one of the most important is the Platzi’s markdown text editor <a href="https://github.com/PlatziDev/pulse-editor">Pulse Editor</a> and a desktop application, made with Electron.js, <a href="https://github.com/PlatziDev/pulse">Pulse</a>.</p><h4>▲ZEIT</h4><p>After knowing ▲<strong>ZEIT</strong> and using their products and services I’m in love with that company and it’s mission.</p><blockquote>Make Cloud Computing as Easy and Accessible as Mobile computing.</blockquote><p>Deploy an app to production it’s the last most important step in any software development, you can code the best app but it means nothing if it’s not online and available for your users.</p><p>The ▲<strong>ZEIT</strong> mission it’s to make easy that step that is sometimes too complicated, specially when working with a microservices architecture.</p><h4>My new job</h4><p>I’m going to be a Support Engineer, what does that means? My job is help you use ▲<strong>ZEIT</strong> products and services without problem and guide you in the process if necessary.</p><p>It’s a really big career shift, I’m going to keep developing but in a different way. I need to develop to understand our products and services.</p><p>I need to know how to use <a href="https://github.com/zeit/next.js">Next.js</a> in many ways and integrate it with other tools. I <strong>must</strong> know how use <a href="https://zeit.co/now">Now</a> to deploy your applications and setup a deployment pipeline using it for any kind of application.</p><p>That means I will learn a lot, I will teach a lot of people and I will develop many applications to test different possible use cases of our products and services.</p><p>I also need to document a lot, since my primary job is teach how to use Now I must document it completely, and create a really good documentation so anyone can easily learn how to use it.</p><h4>Why English?</h4><p>Until now, I had the rule of only writing in Spanish, that was because I wanted to give more knowledge to the Spanish development community. But starting today I need to teach Now to any people in the world.</p><p>That’s way I decided to start writing in English today. I’m going to keep learning a lot and writing as far as I can but I’ll do it exclusively in English.</p><figure><a href="https://sergiodxa.com/subscribe/"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7AKRKcU3V7i143uNvNd67A.png" /></a></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=2d1604a0b7b7" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Usando socket.io en aplicaciones de Next.js]]></title>
            <link>https://medium.com/@sergiodxa/usando-socket-io-en-aplicaciones-de-next-js-129fcf29b395?source=rss-3ab83ddfd089------2</link>
            <guid isPermaLink="false">https://medium.com/p/129fcf29b395</guid>
            <category><![CDATA[socketio]]></category>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[spanish]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[react]]></category>
            <dc:creator><![CDATA[Sergio Xalambrí]]></dc:creator>
            <pubDate>Thu, 06 Jul 2017 15:01:01 GMT</pubDate>
            <atom:updated>2018-01-12T19:04:48.552Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*34XEjSN0PJUVgbNy2YGVFw.jpeg" /></figure><p><a href="https://platzi.com/blog/nextjs-el-futuro-de-las-aplicaciones-con-react/">Next.js</a> nos permite crear aplicaciones de <a href="https://platzi.com/clases/react">React</a> fácilmente y <a href="http://socket.io/">socket.io</a> nos permite crear aplicaciones en tiempo real fácilmente <strong>¿Qué mejor que combinarlos para crear aplicaciones de React en tiempo real fácilmente?</strong></p><p>En este artículo vamos a ver como combinarlos para crear una aplicación que use ambas tecnologías para crear una app de chat simple, que muestre los mensajes antiguos al entrar a la página y luego mediante <a href="http://socket.io/">socket.io</a> nos permita enviar y recibir mensajes.</p><p><a href="https://platzi.com/blog/usando-socketio-en-aplicaciones-de-nextjs/">Terminar de leer</a></p><figure><a href="https://sergiodxa.com/subscribe/"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7AKRKcU3V7i143uNvNd67A.png" /></a></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=129fcf29b395" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Personalizando Babel.js en aplicaciones de Next.js]]></title>
            <link>https://medium.com/@sergiodxa/personalizando-babel-js-en-aplicaciones-de-next-js-93b409dc6a45?source=rss-3ab83ddfd089------2</link>
            <guid isPermaLink="false">https://medium.com/p/93b409dc6a45</guid>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[babeljs]]></category>
            <category><![CDATA[spanish]]></category>
            <dc:creator><![CDATA[Sergio Xalambrí]]></dc:creator>
            <pubDate>Wed, 05 Jul 2017 15:01:00 GMT</pubDate>
            <atom:updated>2018-01-12T19:05:09.439Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*-kKTKnFEXqU45Cy81or0lg.png" /></figure><p><a href="https://platzi.com/blog/nextjs-el-futuro-de-las-aplicaciones-con-react/">Next.js</a> nos deja crear aplicaciones de <a href="https://platzi.com/clases/react/">React</a> con server render y sin configurar nada (entre otras cosas). Pero hay ocasiones en las que es necesario configurar algunas cosas, por ejemplo <a href="https://platzi.com/blog/que-es-babel/">Babel.js</a>, capaz para cambiar algo o agregar algún plugin.</p><p>Por esa razón Next.js nos permite modificar su configuración de Babel interna. Es muy simple, vamos a suponer que queremos configurar un alias usando Babel para que en vez de importar componentes usando ../components/header.js podamos hacer components/header.js desde cualquier parte de nuestra aplicación.</p><p><a href="https://platzi.com/blog/personalizando-babeljs-en-aplicaciones-de-nextjs/">Terminar de leer</a></p><figure><a href="https://sergiodxa.com/subscribe/"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7AKRKcU3V7i143uNvNd67A.png" /></a></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=93b409dc6a45" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[Creando sitios estáticos con Next.js]]></title>
            <link>https://medium.com/@sergiodxa/creando-sitios-est%C3%A1ticos-con-next-js-db2aca433cd6?source=rss-3ab83ddfd089------2</link>
            <guid isPermaLink="false">https://medium.com/p/db2aca433cd6</guid>
            <category><![CDATA[nextjs]]></category>
            <category><![CDATA[static-site]]></category>
            <category><![CDATA[react]]></category>
            <category><![CDATA[javascript]]></category>
            <category><![CDATA[spanish]]></category>
            <dc:creator><![CDATA[Sergio Xalambrí]]></dc:creator>
            <pubDate>Tue, 27 Jun 2017 17:01:01 GMT</pubDate>
            <atom:updated>2018-01-12T19:06:30.073Z</atom:updated>
            <content:encoded><![CDATA[<figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*awsYZsBY9FggAWVhQDYuuw.jpeg" /></figure><p><a href="https://platzi.com/blog/nextjs-el-futuro-de-las-aplicaciones-con-react/">Next.js</a> nos permite crear aplicaciones de React fácilmente con server render y sin configuración. En su versión 3 (<em>actualmente beta</em>) incluyen una nueva característica y es poder crear sitios estáticos.</p><p><strong>¿Qué es un sitio estático?</strong> Básicamente poder generar archivos .html en disco y que podamos luego <a href="https://platzi.com/cursos/deploy-now/">llevar a producción</a> fácilmente con <a href="https://pages.github.com/">Github Pages</a>, <a href="https://surge.sh/">Surge</a>, <a href="https://zeit.co/now">Now</a>, AWS S3, etc. Una ventaja de los sitios estáticos es que al ser un simple archivo en disco entrar a una página es super rápido, a comparación de un sitio dinámico que requiere hacer peticiones a un API o a una BD y luego generar el HTML dinámicamente con los datos obtenidos y a diferencia de una típica SPA no enviamos un HTML vacío, si no que el HTML que tenemos en disco ya tiene el contenido que necesitamos.</p><p><a href="https://platzi.com/blog/creando-sitios-estaticos-con-nextjs/">Terminar de leer</a></p><figure><a href="https://sergiodxa.com/subscribe/"><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*7AKRKcU3V7i143uNvNd67A.png" /></a></figure><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=db2aca433cd6" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>