<?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:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[RisingStack Engineering - Node.js Tutorials & Resources]]></title><description><![CDATA[Learn about Node.js, JavaScript & Mircoservices from the experts of RisingStack.]]></description><link>https://blog.risingstack.com/</link><image><url>https://blog.risingstack.com/favicon.png</url><title>RisingStack Engineering - Node.js Tutorials &amp; Resources</title><link>https://blog.risingstack.com/</link></image><generator>Ghost 1.21</generator><lastBuildDate>Tue, 26 Jun 2018 10:23:28 GMT</lastBuildDate><atom:link href="https://blog.risingstack.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[The History of Kubernetes on a Timeline]]></title><description><![CDATA[To tell the story of how Kubernetes evolved into the great tool that we know today, we visualized the major milestones on an interactive timeline!]]></description><link>https://blog.risingstack.com/the-history-of-kubernetes/</link><guid isPermaLink="false">5b1e2f39c3bc2800011bb55d</guid><category><![CDATA[Docker & Kubernetes]]></category><dc:creator><![CDATA[Andrea Papp]]></dc:creator><pubDate>Wed, 20 Jun 2018 14:42:21 GMT</pubDate><media:content url="https://blog.risingstack.com/content/images/2018/06/kubernetes-history-timeline.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog.risingstack.com/content/images/2018/06/kubernetes-history-timeline.png" alt="The History of Kubernetes on a Timeline"><p>When a client asks us to create a highly available distributed system, we usually recommend/use Kubernetes. Kubernetes is a container orchestration / portable cloud platform that is becoming the de-facto standard for running microservices infrastructures in the cloud. Even though there are <a href="https://aws.amazon.com/ecs/">several</a> <a href="https://docs.docker.com/engine/swarm/">competing</a> <a href="https://mesos.apache.org">technologies</a> by now, most of the bigger cloud providers offer managed Kubernetes clusters, making it even easier to adopt it as the foundation of distributed infrastructures.</p>
<p><strong>To tell the story of how Kubernetes evolved from an internal container orchestration solution at Google to the tool that we know today, we dug into the history of it, collected the significant milestones &amp; visualized them on an interactive timeline.</strong></p>
<h2 id="aboutkubernetes">About Kubernetes</h2>
<p>Kubernetes can speed up the development process by making easy, automated deployments, updates (rolling-update) and by managing our apps and services with almost zero downtime. Kubernetes is originally developed by Google, it is open-sourced since its launch and managed by a large community of contributors.</p>
<blockquote>
<p>If you'd like to learn more about Kubernetes, check out our previous post:<br>
<a href="https://blog.risingstack.com/what-is-kubernetes-how-to-get-started/">What is Kubernetes &amp; How to Get Started With It</a></p>
</blockquote>
<p>Enjoy the timeline below! For more in-depth explanation &amp; links scroll down a little bit.</p>
<br>
<h2 id="thehistoryofkubernetes">The History of Kubernetes</h2>
<iframe src="https://cdn.knightlab.com/libs/timeline3/latest/embed/index.html?source=1dsPW23Jn2tQe2yEfUXHDK9osTd_GSAJ_SC2OsB7nbZA&font=Default&lang=en&initial_zoom=2&height=650" width="100%" height="650" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen frameborder="0"></iframe>
<br>
<h3 id="20032004birthoftheborgsystem">2003-2004: Birth of the Borg System</h3>
<ul>
<li>Google introduced the <a href="https://ai.google/research/pubs/pub43438">Borg System</a> around 2003-2004. It started off as a small-scale project, with about 3-4 people initially in collaboration with a new version of Google’s new search engine. Borg was a large-scale internal cluster management system, which ran hundreds of thousands of jobs, from many thousands of different applications, across many clusters, each with up to tens of thousands of machines.</li>
</ul>
<br>
<h3 id="2013fromborgtoomega">2013: From Borg to Omega</h3>
<ul>
<li>Following Borg, Google introduced the Omega cluster management system, a flexible, scalable scheduler for large compute clusters. (<a href="https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/41684.pdf">whitepaper</a> and <a href="https://cloudplatform.googleblog.com/2014/06/an-update-on-container-support-on-google-cloud-platform.html">announcement</a>)</li>
</ul>
<br>
<h3 id="2014googleintroduceskubernetes">2014: Google Introduces Kubernetes</h3>
<ul>
<li><strong>mid-2014:</strong> Google introduced Kubernetes <a href="https://www.youtube.com/watch?v=0W49z8hVn0k">as an open source version of Borg</a></li>
<li><strong>June 7:</strong> Initial release - <a href="https://github.com/kubernetes/kubernetes/commit/2c4b3a562ce34cddc3f8218a2c4d11c7310e6d56">first github commit for Kubernetes</a></li>
<li><strong>July 10:</strong> Microsoft, RedHat, IBM, Docker joins the <a href="https://cloudplatform.googleblog.com/2014/07/welcome-microsoft-redhat-ibm-docker-and-more-to-the-kubernetes-community.html">Kubernetes community</a>.</li>
</ul>
<br>
<h3 id="2015theyearofkubev10cncf">2015: The year of Kube v1.0 &amp; CNCF</h3>
<ul>
<li><strong>July 21:</strong> <a href="http://kuberneteslaunch.com/">Kubernetes v1.0</a> gets released. <a href="https://techcrunch.com/2015/07/21/as-kubernetes-hits-1-0-google-donates-technology-to-newly-formed-cloud-native-computing-foundation-with-ibm-intel-twitter-and-others/?guccounter=1">Along with the release</a>, Google partnered with the Linux Foundation to form the <a href="https://www.cncf.io/">Cloud Native Computing Foundation (CNCF)</a>. The CNFC aims to build sustainable ecosystems and to foster a community around a constellation of high-quality projects that orchestrate containers as part of a microservices architecture.</li>
<li><strong>November 3:</strong> <a href="https://kubernetes.io/blog/2015/11/kubernetes-as-foundation-for-cloud-native-paas/">The Kubernetes ecosystem continues to grow</a>! Companies who joined: Deis, OpenShift, Huawei, and Gondor.</li>
<li><strong>November 9:</strong> <a href="https://kubernetes.io/blog/2015/11/kubernetes-1-1-performance-upgrades-improved-tooling-and-a-growing-community/">Kubernetes 1.1</a> brings major performance upgrades, improved tooling, and new features that make applications even easier to build and deploy.</li>
<li><strong>November 9-11:</strong> KubeCon 2015 is the first inaugural community Kubernetes conference in San Fransisco. Its goal was to deliver expert technical talks designed to spark creativity and promote Kubernetes education. You can watch the presentations here on <a href="https://deis.com/blog/2015/kubecon-day-1/">day 1</a> and <a href="https://deis.com/blog/2015/kubecon-day-2/">day 2</a>.</li>
</ul>
<br>
<h3 id="2016theyearkubernetesgoesmainstream">2016: The Year Kubernetes Goes Mainstream!</h3>
<ul>
<li><strong>February 23:</strong> First release of <a href="https://helm.sh/">Helm</a>, the package manager of Kubernetes.</li>
<li><strong>February 24:</strong> <a href="https://www.youtube.com/playlist?list=PLosInM-8doqcBy3BirmLM4S_pmox6qTw3">KubeCon EU 2016</a> is the inaugural European Kubernetes conference with almost 500 attendees, following the American launch in November 2015. Read a recap of the conference <a href="https://www.appsembler.com/blog/kubecon-europe-2016-recap/">here</a>.</li>
<li><strong>March 16:</strong> <a href="https://kubernetes.io/blog/2016/04/using-deployment-objects-with/">Kubernetes 1.2 released</a> - Improvements include scaling, simplified application deployment, &amp; automated cluster management.</li>
<li><strong>July 1:</strong> <a href="https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.3.md">Kubernetes 1.3</a>: Bridging Cloud Native and Enterprise Workloads. v1.3 introduces Rktnetes 1.0, and a new alpha ‘PetSet’ object, and makes it possible to discover services running in multiple clusters.</li>
<li><strong>July 11:</strong> Official release of <a href="https://kubernetes.io/docs/setup/minikube/">Minikube</a>: a tool that makes it easy to run Kubernetes locally.</li>
<li><strong>September 8:</strong> Introducing <a href="https://github.com/kubernetes/kops">Kops</a>, an official Kubernetes project for managing production-grade Kubernetes clusters.</li>
<li><strong>September 19:</strong> Monzo released a <a href="https://monzo.com/blog/2016/09/19/building-a-modern-bank-backend/">case study</a> on how they used Kubernetes to build a banking system from scratch.</li>
<li><strong>Septmeber 26:</strong> <a href="https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.4.md">Kubernetes 1.4</a> introduces a new tool, <code>kubeadm</code>, that helps improve Kubernetes' installability. This release provides easier setup, stateful application support with integrated Helm, and new cross-cluster federation features.</li>
<li><strong>September 29:</strong> <a href="https://cloudplatform.googleblog.com/2016/09/bringing-Pokemon-GO-to-life-on-Google-Cloud.html">Pokemon GO! Kubernetes Case Study Released!</a> Pokémon GO was the largest Kubernetes deployment on Google Container Engine ever. Luckily, it's creators released a case study about how they did it.</li>
<li><strong>November 8-9:</strong> <a href="https://www.cncf.io/event/cloudnativecon-2016/">CloudNativeCon + KubeCon 2016</a> North America, in Seattle.<br>
More than 1,000 end users, leading contributors and developers from around the world came together to exchange knowledge about Fluentd, Kubernetes, Prometheus, OpenTracing and other cloud-native technologies. Check out the presentation on <a href="https://www.youtube.com/playlist?list=PLj6h78yzYM2PqgIGU1Qmi8nY7dqn9PCr4">this channel</a>.</li>
<li><strong>December 7:</strong> <a href="https://github.com/kubernetes-incubator/node-feature-discovery">Node feature discovery for Kubernetes Arrives</a> - This package enables node feature discovery for Kubernetes. It detects hardware features available on each node in a Kubernetes cluster, and advertises those features using node labels.</li>
<li><strong>December 21:</strong> Kubernetes 1.5 - <a href="https://kubernetes.io/blog/2016/12/windows-server-support-kubernetes/">Windows Server Support Comes to Kubernetes</a>. The new features include containerized multiplatform applications, support for Windows server containers and hyper-V containers, an expanded ecosystem of applications, coverage for heterogeneous data centers, &amp; more..</li>
<li><strong>December 23:</strong> <a href="https://kubernetes.io/blog/2016/12/kubernetes-supports-openapi/">Kubernetes supports OpenAPI</a>, which allows API providers to define their operations &amp; models, and enables developers to automate their tools.</li>
</ul>
<br>
<h3 id="2017theyearofenterpriseadoptionsupport">2017: The Year of Enterprise Adoption &amp; Support</h3>
<ul>
<li><strong>March 28:</strong> <a href="https://coreos.com/blog/kubernetes-1-6.html">Kubernetes 1.6</a> is a stabilization release. Specific updates: etcdv3 enabled by default, direct dependency on a single container runtime removed, RBAC in beta, automatic provisioning of StorageClass objects.</li>
<li><strong>March 29-30:</strong> CloudNativeCon + KubeCon Europe, Berlin. 1,500 end users, leading contributors and developers attended from around the world to exchange Cloud Native knowledge. You can find the presentations on <a href="https://www.youtube.com/playlist?list=PLj6h78yzYM2PAavlbv0iZkod4IVh_iGqV">this channel</a>.</li>
<li><strong>May 24:</strong> Google and IBM announce <a href="https://developer.ibm.com/dwblog/2017/istio/">Istio</a>, an open technology that provides a way to seamlessly connect, manage &amp; secure networks of different microservices — regardless of platform, source or vendor.</li>
<li><strong>June 30:</strong> Kubernetes 1.7: <a href="https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.7.md">The container orchestration standard adds local storage, encryption for secrets, and extensibility</a> i.e.: API aggregation, third-party resource, container runtime interface, and more.</li>
<li><strong>August 16:</strong> <a href="https://githubengineering.com/kubernetes-at-github/">Github runs on Kubernetes</a>: all web and API requests are served by containers running in Kubernetes clusters deployed on <a href="https://githubengineering.com/githubs-metal-cloud/">metal cloud</a>.</li>
<li><strong>August 31:</strong> Kelsey Hightower released <a href="https://github.com/kelseyhightower/kubernetes-the-hard-way">Kubernetes the Hard Way</a>. Kubernetes The Hard Way is optimized for learning, which means taking the long route to ensure you understand each task required to bootstrap a Kubernetes cluster.</li>
<li><strong>September 11:</strong> The Cloud Native Computing Foundation Announces the <a href="http://news.sys-con.com/node/4155238">First Kubernetes Certified Service Providers</a>, the founding class of more than 22 Kubernetes Certified Service Providers (KCSPs), pre-qualified organizations that have deep experience helping enterprises successfully adopt Kubernetes.</li>
<li><strong>September 13:</strong> <a href="https://www.cncf.io/announcement/2017/09/13/oracle-joins-cloud-native-computing-foundation-platinum-member/">Oracle joined</a> the Cloud Native Computing Foundation as a platinum member. Oracle open sourced a Kubernetes installer for Oracle Cloud Infrastructure and released Kubernetes on Oracle Linux.</li>
<li><strong>September 29:</strong> Kubernetes 1.8: <a href="https://kubernetes.io/blog/2017/10/using-rbac-generally-available-18/">This release</a> was a milestone for the role-based access control (RBAC) authorizer, a mechanism for controlling access to the Kubernetes API, which would be a fundamental building block for securing Kubernetes clusters.</li>
<li><strong>October:</strong> <a href="https://www.docker.com/kubernetes">Docker Fully Embraces Kubernetes</a> - developers and operators can build apps with Docker and seamlessly test &amp; deploy them using both Docker Swarm and Kubernetes.</li>
<li><strong>October 17:</strong> <a href="https://blog.docker.com/2017/10/kubernetes-docker-platform-and-moby-project/">Docker Platform and Moby Projekt add Kubernetes</a>: customers and developers have the option to use both Kubernetes and Swarm to orchestrate container workloads.</li>
<li><strong>October 24:</strong> <a href="https://azure.microsoft.com/en-us/blog/introducing-azure-container-service-aks-managed-kubernetes-and-azure-container-registry-geo-replication/">Microsoft Introduces the preview of AKS</a> - AKS features an Azure-hosted control plane, automated upgrades, self-healing, easy scaling, and a simple user experience for developers &amp; cluster operators. Customers get open source Kubernetes without operational overhead.</li>
<li><strong>November 29:</strong> <a href="https://aws.amazon.com/blogs/aws/amazon-elastic-container-service-for-kubernetes/">Amazon Announces Elastic Container Service for Kubernetes</a>. Deploy, manage, and scale containerized applications using Kubernetes on AWS.</li>
<li><strong>December 6-8:</strong> KubeCon + CloudNativeCon North America, Austin - gathered more than 4,100 end users, vendors, leading contributors and developers from around the world. 289 sessions, keynotes, lightning talks, all available on <a href="https://www.youtube.com/watch?v=Z3aBWkNXnhw&amp;list=PLj6h78yzYM2P-3-xqvmWaZbbI1sW-ulZb">this channel</a>.</li>
<li><strong>December 15:</strong> Kubernetes 1.9 released: <a href="https://kubernetes.io/blog/2017/12/kubernetes-19-workloads-expanded-ecosystem/">Apps Workloads GA and Expanded Ecosystem</a>. New features: general availability of the apps/v1 Workloads API, windows support (beta), storage enhancements, and more.</li>
<li><strong>December 21:</strong> <a href="https://kubernetes.io/blog/2017/12/introducing-kubeflow-composable/">Introducing Kubeflow</a> - A Composable, Portable, Scalable Machine Learning Stack Built for Kubernetes</li>
</ul>
<br>
<h3 id="2018">2018:</h3>
<ul>
<li><strong>March 2:</strong> First Beta Version of <a href="https://kubernetes.io/blog/2018/03/first-beta-version-of-kubernetes-1-10/">Kubernetes 1.10</a> announced. Users could test the production-ready versions of Kubelet TLS Bootstrapping, API aggregation, and more detailed storage metrics.</li>
<li><strong>May 1:</strong> <a href="https://cloudplatform.googleblog.com/2018/05/introducing-kubernetes-podcast-from-google.html">Google launches the Kubernetes Podcast</a>, hosted by Craig Box.</li>
<li><strong>May 2-4:</strong> <a href="https://events.linuxfoundation.org/events/kubecon-cloudnativecon-europe-2018/">KubeCon + CloudNativeCon Europe 2018</a>, hosted in Copenhagen. More than 4,300 developers gathered, including Risingstack at the Node Foundation booth:</li>
</ul>
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">We just arrived, and super excited for <a href="https://twitter.com/hashtag/KubeCon?src=hash&amp;ref_src=twsrc%5Etfw">#KubeCon</a> / <a href="https://twitter.com/hashtag/CloudNativeCon?src=hash&amp;ref_src=twsrc%5Etfw">#CloudNativeCon</a>. 🛫🤗 Meet us at the <a href="https://twitter.com/nodejs?ref_src=twsrc%5Etfw">@nodejs</a> booth in hall C! <a href="https://t.co/IK7GKYg8Pn">pic.twitter.com/IK7GKYg8Pn</a></p>&mdash; RisingStack 🍻 Node.js, K8S &amp; Microservices (@RisingStack) <a href="https://twitter.com/RisingStack/status/991586148702187520?ref_src=twsrc%5Etfw">May 2, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<ul>
<li><strong>May 2:</strong> <a href="https://thenewstack.io/digitalocean-dives-into-kubernetes/">DigitalOcean</a> dives into Kubernetes, announces a new hosted Kubernetes product. DigitalOcean Kubernetes will provide the container management and orchestration platform as a free service on top of its existing cloud compute and storage options.</li>
<li><strong>May 4:</strong> <a href="https://kubernetes.io/blog/2018/05/04/announcing-kubeflow-0.1/">Kubeflow 0.1 announced</a>, which provides a minimal set of packages to begin developing, training and deploying ML.</li>
<li><strong>May 21:</strong> <a href="https://cloudplatform.googleblog.com/2018/05/Google-Kubernetes-Engine-1-10-is-generally-available-and-ready-for-the-enterprise.html">Google Kubernetes Engine 1.10 is generally available</a> and ready for the enterprise, featuring Shared Virtual Private Cloud, Regional Persistent Disks &amp; Regional Clusters, Node Auto-Repair GA, and Custom Horizontal Pod Autoscaler for greater automation.</li>
<li><strong>May 24:</strong> <a href="https://kubernetes.io/blog/2018/05/24/kubernetes-containerd-integration-goes-ga/">Kubernetes Containerd Integration Goes GA</a>. Containerd 1.1 works with Kubernetes 1.10 and above, and supports all Kubernetes features. The test coverage of containerd integration on Google Cloud Platform in Kubernetes test infrastructure is now equivalent to the Docker integration.</li>
<li><strong>June 5:</strong> <a href="https://aws.amazon.com/blogs/aws/amazon-eks-now-generally-available/">Amazon EKS Becomes Generally Available</a>. Amazon EKS simplifies the process of building, securing, operating, and maintaining Kubernetes clusters, and brings the benefits of container-based computing to organizations that want to focus on building applications instead of setting up a Kubernetes cluster from scratch.</li>
<li><strong>Juni 13:</strong> <a href="https://azure.microsoft.com/nl-nl/blog/azure-kubernetes-service-aks-ga-new-regions-new-features-new-productivity/">The Azure Kubernetes Service (AKS) is generally available</a>. With AKS users can deploy and manage their production Kubernetes apps with the confidence that Azure's engineers are providing constant monitoring, operations, and support for our customers’ fully managed Kubernetes clusters.</li>
</ul>
<h2 id="futureofkubernetes">Future of Kubernetes</h2>
<br>
<p>We are looking forward to see where Kubernetes is heading to. Nowadays, there is a growing excitement about ‘serverless’ technologies, and Kubernetes is going in the opposite direction. However, Kubernetes has it’s place in our ‘increasingly serverless’ world. Tools like Kubeless and Fission providing equivalents to functions-as-a-service but running within Kubernetes. These won’t replace the power of Lambda, but show us that there are solutions on the spectrum between serverless and cluster of servers. <a href="https://www.thoughtworks.com/insights/blog/kubernetes-exciting-future-developers-and-infrastructure-engineering-0">Read more about the future of k8s on the ThoughtWorks blog.</a></p>
<br>
<h3 id="whatsnext">What's next?</h3>
<p>Collecting the history of Kubernetes was fun, but there is a lot more to know about our favorite orchestration engine. Check out the <a href="https://blog.risingstack.com/tag/docker-kubernetes/">Kubernetes-related articles</a> on our blog, or if you need help, don't hesitate to <a href="hhttps://risingstack.com/kubernetes-consulting-training?utm_source=rsblog&amp;utm_medium=header">contact us</a>.</p>
<p>Did I miss anything from the list? Or did you find any inaccuracies? Leave a comment below or find us on Twitter and let us know.</p>
</div>]]></content:encoded></item><item><title><![CDATA[Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)]]></title><description><![CDATA[What conferences should we look forward to in 2018? We collected the best ones focusing on Node.js & Javascript, in Americas & Europe.]]></description><link>https://blog.risingstack.com/node-js-javascript-conferences-to-attend-in-2018/</link><guid isPermaLink="false">5b167322c3bc2800011bb554</guid><category><![CDATA[The Node.js Community]]></category><dc:creator><![CDATA[Ferenc Hámori]]></dc:creator><pubDate>Wed, 06 Jun 2018 15:28:03 GMT</pubDate><media:content url="https://blog.risingstack.com/content/images/2018/06/node-js-javascript-conference-guide-2018-europe-usa--1-.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog.risingstack.com/content/images/2018/06/node-js-javascript-conference-guide-2018-europe-usa--1-.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"><p>The first half of 2018 is almost over, and you might think..</p>
<blockquote>
<p>Did I attend enough conferences this year? I don't want to miss the best ones.</p>
</blockquote>
<p>To help you a little bit, we collected the best conferences focusing on Node.js &amp; Javascript. We separated them into Americas &amp; Europe, so you'll find the closest one to you easily. We also included link when you can send a proposal of your talks! :) Happy browsing:</p>
<br>
<h3 id="nodejsjavascriptconferencesinamerica">Node.js &amp; JavaScript Conferences in America</h3>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-Nodeconf_ADventure.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>NodeConf Adventure:</strong> A conference in the woods for Node.js developers.<br>
July 20-22 - Walker Creek Ranch, CA</p>
</blockquote>
<p>Adventure is an un-conference. Attendees build a schedule of discussions at the event. There are not traditional &quot;talks&quot; and &quot;speakers.&quot;</p>
<p>More info: <a href="http://nodeconf.com/" target="_blank">nodeconf.com</a></p>
<br> 
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-nodesummit_sf.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>Node Summit:</strong> an event focusing exclusively on the Ecosystem of Node.<br>
July 23-27 - San Francisco, CA</p>
</blockquote>
<p>Workshops, presentations, and keynotes covering everything from technical talks to case studies detailing Node.js enterprise implementation at some of the world’s largest companies. Dive deeper and roll up your sleeves for hands-on, skill-building courses at Node Summit Training Days.</p>
<p>More info: <a href="http://www.nodesummit.com/" target="_blank">nodesummit.com</a> / <a href="https://twitter.com/@NodeSummit" target="_blank">@NodeSummit</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-NejsConf.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>NEJS CONF:</strong> a single day, single track conf dedicated to WebDev and JavaScript.<br>
July 27 - Omaha, NE</p>
</blockquote>
<p>There will be 9 amazing speakers at this conference, talking about the bits and pieces of Javascript, so all enthusiasts can learn in a safe and inclusive environment. An informal pre-, and after-party will give a great opportunity to mingle, network and to relax a little.</p>
<p>More info: <a href="https://2018.nejsconf.com/" target="_blank">2018.nejsconf.com</a> / <a href="https://twitter.com/nejsconf" target="_blank">@nejsconf</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-MidwestJS.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>Midwest JS 2018:</strong> A premier technology conference focused on the JS ecosystem.<br>
August, 8-10 - Minneapolis, MN</p>
</blockquote>
<p>There will be a variety of talks from well known speakers in the community in a typical presentation format. Talks are categorized and structured based on the following tracks: Frameworks, Observables / RX, React, IoT, Testing</p>
<p>More info: <a href="http://www.midwestjs.com/#/main" target="_blank">midwestjs.com</a> / <a href="https://twitter.com/midwest_js" target="_blank">@midwest_js</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-JSCONFUS.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>JSCONF US 2018:</strong> One of the greatest JS conferences<br>
August 21-23 - Carlsbad, CA</p>
</blockquote>
<p>Over the last ten years, JSConf US has pushed the language outside of its comfort zone, the web browser, and into the forefront of drones, robots, and video games. Which idea will change the world?</p>
<p>More info: <a href="https://2018.jsconf.us/" target="_blank">2018.jsconf.us</a> / <a href="https://twitter.com/@jsconfus" target="_blank">@JSConfUS</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-brazilJS.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>BrazilJS:</strong> The Biggest Freaking Javascript Conference of the Universe<br>
August 24-25 - Porto Alegre, Brazil</p>
</blockquote>
<p>The biggest Javascript conference held in Brazil, bringing together the JS experts to talk about what they know the best.</p>
<p>More info: <a href="https://braziljs.org/conf/" target="_blank">braziljs.org</a> / <a href="https://twitter.com/@braziljs" target="_blank">@braziljs</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-UtahJS.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>UtahJS:</strong> 7th Annual UtahJS Conference<br>
September 14 - Sandy, UT</p>
</blockquote>
<p>The 2018 UtahJS Conference will be a one-day event with dozens of great presentations. This year will be their biggest yet!</p>
<p>More info: <a href="https://conf.utahjs.com/" target="_blank">conf.utahjs.com</a></p>
<p>CFP <a href="https://sessionize.com/utahjs-conf-2018/" target="_blank">open</a> until 17, June.</p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conferenceempireJS.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>EmpireJS:</strong> Find out what makes NYC an amazing place to git push origin master in.<br>
September 20-21 - New York, NY</p>
</blockquote>
<p>EmpireJS is committed to creating inclusive, and diverse conference, where ideas are exchanged, old friends get together, and new friends meet. Anyone is more than welcome to submit a speach, so if you've never given a talk before that's even more reason to submit a proposal.</p>
<p>More info: <a href="http://2018.empirejs.org/" target="_blank">2018.empirejs.org</a> / <a href="https://twitter.com/@empirejs" target="_blank">@empirejs</a></p>
<p>CFP is open <a href="https://sessionize.com/empirejs-2018/" target="_blank">open</a> until 15, June.</p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-frameworksummit.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>Framework Summit:</strong> Frameworks, Experts, and You<br>
October 2-3 - Park City, UT</p>
</blockquote>
<p>Check out this conference if you'd like to stay on top of the latest developments and trends across all the front end frameworks.</p>
<p>More info: <a href="https://www.frameworksummit.com/" target="_blank">frameworksummit.com</a> / <a href="https://twitter.com/@FrameworkSummit" target="_blank">@FrameworkSummit</a></p>
<p>CFP is <a href="https://docs.google.com/forms/d/e/1FAIpQLSc_sWRfsyNsq7CRdHqjLaSM_bgL_z-WoEHAltQr8a-2y4yKmg/viewform" target="_blank">open</a> until June 17.</p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-jsinteractive.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>JS Interactive:</strong> Learn how to improve your skills with JS<br>
October 10-12 - Vancouver, BC, Canada</p>
</blockquote>
<p>At JS Interactive, attendees collaborate face-to-face, network, and learn how to better their skills with JS in serverless, IoT, backend, and frontend. The program will cover a broad spectrum of the JavaScript ecosystem including Node.js, frameworks, best practices and stories from successful end-users.</p>
<p>More info: <a href="https://events.linuxfoundation.org/events/js-interactive-2018" target="_blank">events.linuxfoundation.org</a> / <a href="https://twitter.com/@nodejs" target="_blank">@nodejs</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-connect_tech.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>Connect.Tech:</strong> The southeast's premier front-end dev conference<br>
October 17-19 - Atlanta, GA</p>
</blockquote>
<p>Southeast’s premier annual conference dedicated to JavaScript, Web and Mobile related technologies, tools, and frameworks.</p>
<p>More info: <a href="http://connect.tech/" target="_blank">connect.tech</a> / <a href="https://twitter.com/@connect_js" target="_blank">@connect_js</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-nodeconf_ar.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>NodeConf Argentina:</strong> A 3-day event with internationally acclaimed speakers.<br>
October 18-20 - Buenos Aires, Argentina</p>
</blockquote>
<p>This one is among the first international Node.js conferences taking place in Latin American territory, and a not-for-profit community effort to push Node.js forward in Argentina and Latin America as a whole.</p>
<p>More info: <a href="https://2018.nodeconf.com.ar/" target="_blank">2018.nodeconf.com.ar</a> / <a href="https://twitter.com/@nodeconfar" target="_blank">@nodeconfar</a></p>
<p>CFP is open until <a href="https://2018.nodeconf.com.ar/cfp.html" target="_blank">June 19</a>.<br>
<br></p>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-jsconf_colombia.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>JSConf Colombia:</strong> Javascript Conference in Medellin<br>
November 16-17 - Medellin, Colombia</p>
</blockquote>
<p>JSCONF.CO returns for its fourth event in Medellin, Colombia on<br>
November 16-17, 2018.</p>
<p>More info: <a href="https://jsconf.co/" target="_blank">jsconf.co</a> / <a href="https://twitter.com/@jsconfco" target="_blank">@jsconfco</a></p>
<br>
<h3 id="nodejsjavascriptconferencesineurope">Node.js &amp; JavaScript Conferences in Europe</h3>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-odessa.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>OdessaJS:</strong> Conference on Javascript Best Practices for a truly enthusiastic community<br>
July 6-8 - Odessa, Ukraine</p>
</blockquote>
<p>Conference is full of strong technical talks and workshops, carefully selected by the Program Committee.</p>
<p>More info: <a href="http://odessajs.org/" target="_blank">odessajs.org</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-fullstackcon.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>FullStack:</strong> The Conference on JavaScript, Node &amp; Internet of Things<br>
July 11-13 - London, U.K.</p>
</blockquote>
<p>FullStack 2018 conference returns to London in its fifth edition during July. Hosted at the Business Design Centre for the first time ever, FullStack has grown bigger and better and we look forward to another set of intensive 3 days of learning and sharing!</p>
<p>More info: <a href="https://skillsmatter.com/conferences/9815-fullstack-2018-the-conference-on-javascript-node-and-internet-of-things" target="_blank">FullStack Conference</a> / <a href="https://twitter.com/@FullStackCon" target="_blank">@FullStackCon</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-scotlandJS.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>ScotlandJS:</strong> The Scottish JavaScript Conference in Edinburgh<br>
July 19-20 - Edinburgh, U.K.</p>
</blockquote>
<p>A Javascript Conference held in Edinburgh, providing a great event for Javascript enthusiasts to gather and learn together.</p>
<p>More info: <a href="http://scotlandjs.com/" target="_blank">scotlandjs.com</a> / <a href="https://twitter.com/ScotlandJS" target="_blank">@ScotlandJS</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-fullstackfest-barcelona.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>Full Stack Fest:</strong> The web is back<br>
Sept 3-7 - Barcelona, Spain</p>
</blockquote>
<p>Full Stack Fest is a week-long, language-agnostic conference for curious developers that want to gaze into the future.</p>
<p>More info: <a href="https://2018.fullstackfest.com/" target="_blank">2018.fullstackfest.com</a> / <a href="https://twitter.com/@fullstackfest" target="_blank">@fullstackfest</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-nordicJS.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>Nordic.js:</strong> A Javascript conference in the heart of Sweden<br>
Sept 6-7 - Stockholm, Sweden</p>
</blockquote>
<p>Nordic.js is a single track conference with talks by internationally renowned speakers and rising stars in the JavaScript community.</p>
<p>More info: <a href="http://nordicjs.com/" target="_blank">nordicjs.com</a> / <a href="https://twitter.com/@nordicjs" target="_blank">@nordicjs</a></p>
<p>CFP is <a href="http://cfp.nordicjs.com/" target="_blank">open!</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-ruhrJS.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>RuhrJS:</strong> A Javascript conference in Ruhr Valley<br>
October 13-14 - Bochum, Germany</p>
</blockquote>
<p>The RuhrJS is an annual, community-driven JavaScript conference and the first of its kind in the metropolitan Ruhr Area in Germany, fostering a vibrant developer community in the area.</p>
<p>More info: <a href="https://ruhrjs.de/" target="_blank">ruhrjs.de</a> / <a href="https://twitter.com/@ruhrjs" target="_blank">@ruhrjs</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-javascriptconference.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>International JavaScript Conference:</strong> Angular, React, Node.js &amp; Architecture..<br>
October 15-19 - Munich, Germany</p>
</blockquote>
<p>The International JavaScript Conference is the place where renowned JavaScript experts from around the world meet. Join us and master your JS skills.</p>
<p>More info: <a href="https://javascript-conference.com/en" target="_blank">javascript-conference.com</a> / <a href="https://twitter.com/@JavaScriptCon" target="_blank">@JavaScriptCon</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-nodeconfEU.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>NodeConf EU:</strong> A key Nodej.js event in Europe.<br>
November 4-7 - Kilkenny, Ireland</p>
</blockquote>
<p>This annual conference is first and foremost about the community. It also provides a learning environment like no other, with many great conference speakers.</p>
<p>More info: <a href="https://www.nodeconf.eu/" target="_blank">nodeconf.eu</a> / <a href="https://twitter.com/@NodeConfEU" target="_blank">@NodeConfEU</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-performancenow.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>performance.now():</strong> The web performance conference<br>
November 8-9 - Amsterdam, Netherlands</p>
</blockquote>
<p>On 8th and 9th of November the inaugural performance.now() conference is happening in Amsterdam, a single track conference with sixteen world-class speakers covering today’s most important web performance insights.</p>
<p>More info: <a href="https://perfnow.nl/" target="_blank">perfnow.nl</a> / <a href="https://twitter.com/@perfnowconf" target="_blank">@perfnowconf</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-dotJS.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>dotJS:</strong> The largest JavaScript conference in Europe<br>
November 9 - Paris, France</p>
</blockquote>
<p>A massive Javascript Conference in Europe held in paris, bringing an unheard-of, TED-like level of quality to tech conferences, by having the best speakers in their fields.</p>
<p>More info: <a href="https://www.dotjs.io/" target="_blank">dotjs.io</a> / <a href="https://twitter.com/@dotJS" target="_blank">@dotJS</a></p>
<p>CFP is <a href="https://www.dotconferences.com/blog/new-call-for-papers-for-all-our-conferences" target="_blank">open!</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-coldfront.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>ColdFront:</strong> The future of front-end and interfaces<br>
November 13-14 - Copenhagen, Denmark</p>
</blockquote>
<p>A holistic conference about the future outlook for front-end and interfaces in Copenhagen, Denmark. Will contain 2 full conference days and a 3rd community day with  free workshops &amp; meetups.</p>
<p>More info: <a href="https://2018.coldfront.co/" target="_blank">2018.coldfront.co</a> / <a href="https://twitter.com/@coldfrontconf" target="_blank">@coldfrontconf</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-halfstack.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>HalfStack:</strong> A one-day, single track, UI-centric, fun JS conf in a Shoreditch pub.<br>
November 16 - London, U.K.</p>
</blockquote>
<p>The conference focuses on UI-centric topics such as audio/video, data visualization and graphics, WebGL, speech recognition, Web AR/VR/XR, devices, games, and other inspiring talks.</p>
<p>More info: <a href="http://halfstackconf.com/" target="_blank">halfstackconf.com</a> / <a href="https://twitter.com/@london_ajax" target="_blank">@london_ajax</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-JsPOland.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>JS Poland:</strong> Javascript Conference<br>
November 16 - Warsaw, Poland</p>
</blockquote>
<p>JS Poland is a premier technology conference in CEE, focused on JavaScript ecosystem.</p>
<p>More info: <a href="http://js-poland.pl/" target="_blank">js-poland.pl</a></p>
<p>CFP is <a href="https://docs.google.com/forms/d/e/1FAIpQLSeVsK-OA9HudBjk7CpkKNCK8M_DD4_DF-AsFLAP8wdHeZ3O-g/viewform" target="_blank">open!</a></p>
<br>
<p><img src="https://blog.risingstack.com/content/images/2018/06/nodejs-javascript-conference-holyJS.png" alt="Node.js & JavaScript Conferences to Attend in 2018 (Q3 & Q4)"></p>
<blockquote>
<p><strong>HolyJS:</strong> The only JavaScript conference in Russia<br>
November 24-25 - Moscow, Russia</p>
</blockquote>
<p>HolyJS 2018 Moscow will be the fifth in a row JS conference held by JUG.ru Group. More than 500 JS developers will be brought together to discuss the present and future of JavaScript community.</p>
<p>More info: <a href="https://holyjs-moscow.ru/en/" target="_blank">holyjs-moscow.ru/en</a> / <a href="https://twitter.com/@HolyJSconf" target="_blank">@HolyJSconf</a></p>
<p>CFP is open until <a href="https://holyjs-moscow.ru/en/callforpapers/" target="_blank">September 15, 2018</a></p>
<br>
<h3 id="didwemisssomething">Did we Miss Something?</h3>
<p>Please let us know if we missed a major event in the comments section below!<br>
Want more? Head over to <a href="https://confs.tech/">https://confs.tech/</a>, which is  agreat place to browse events - we used it a lot to create this article!</p>
</div>]]></content:encoded></item><item><title><![CDATA[8 Key Takeaways from the Node.js Survey of 1,600 Engineers (2018)]]></title><description><![CDATA[The Node Foundation just released it's latest annual survey on Node.js usage and development. We collected the most important takeaways for you!]]></description><link>https://blog.risingstack.com/takeaways-node-js-survey-2018/</link><guid isPermaLink="false">5b0ef984c3bc2800011bb545</guid><category><![CDATA[Node.js Tutorials for Beginners]]></category><category><![CDATA[The Node.js Community]]></category><dc:creator><![CDATA[Ferenc Hámori]]></dc:creator><pubDate>Thu, 31 May 2018 13:00:05 GMT</pubDate><media:content url="https://blog.risingstack.com/content/images/2018/05/node-foundation-survey-2018.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog.risingstack.com/content/images/2018/05/node-foundation-survey-2018.png" alt="8 Key Takeaways from the Node.js Survey of 1,600 Engineers (2018)"><p>The Node Foundation just released its latest annual survey on Node.js usage and development. The <a href="https://s3-eu-west-1.amazonaws.com/risingstack-resources/2018+Node+User+Study+Report_Final_5_25.pdf">full report</a> spans over 60 pages, so we decided to go through it and pick the most interesting facts for you!</p>
<p><em>Disclaimer: RisingStack is a silver member of the Node Foundation</em></p>
<p>Jump to Section:</p>
<ol>
<li><a href="#Q1">Node.js &amp; Productivity</a></li>
<li><a href="#Q2">What is Node.js used for?</a></li>
<li><a href="#Q3">Most used tools &amp; tech with Node.</a></li>
<li><a href="#Q4">Node compared to other langauges.</a></li>
<li><a href="#Q5">npm vs Yarn</a></li>
<li><a href="#Q6">Deployment Platforms</a></li>
<li><a href="#Q7">How developers Learn Node</a></li>
<li><a href="#Q8">Node.js Security</a></li>
</ol>
<h3 id="whatisnodejs">What is Node.js?</h3>
<p>In case you're new to the topic let's just make things clear first:</p>
<blockquote>
<p>Node.js is a JavaScript runtime built on Chrome’s V8 JavaScript engine which is used to build enterprise, mobile, web and IoT applications, robotics, API engines and so on.. But mainly webapps.</p>
</blockquote>
<p>Okay, but what makes it great?</p>
<blockquote>
<p>Node.js uses an event-driven, non-blocking I/O model that makes it extremely performant and easy to use. Furthermore, you can use npm or yarn to build software using open-source modules that you can use to speed up development.</p>
</blockquote>
<p>That's it. Let's see the key takeaways!</p>
<br>
<h2 id="Q1">#1 - Node.js is KING when it comes to productivity and developer satisfaction!</h2>
<p>Reduced development costs and increased application performance are also important outcomes tied to Node.js.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/node-js-business-impact.png" alt="8 Key Takeaways from the Node.js Survey of 1,600 Engineers (2018)"></p>
<p>This is 100% true. We spent the past 4 years with <a href="https://risingstack.com/nodejs-development-consulting-services">building Node apps</a>, and the number one reason for using Node is the blazing development speed one can achieve.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/02/what-do-you-like-about-developing-with-node-js--4.jpg" alt="8 Key Takeaways from the Node.js Survey of 1,600 Engineers (2018)"></p>
<p>Our own survey from 4 months ago also corroborates this. Read more: <a href="https://blog.risingstack.com/why-developers-love-node-js-2018-survey/"><br>
Why Developers Love Node.js &amp; what's their main issue with it?</a></p>
<br>
<h2 id="Q2">#2 - Node.js is the go-to choice for Building Webapps</h2>
<p>Also, the long-awaited enterprise adoption is happening!</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/what-do-you-build-with-nodejs.png" alt="8 Key Takeaways from the Node.js Survey of 1,600 Engineers (2018)"></p>
<p>The majority uses Node on both the back and front-end, which is clearly a key strenght of the framework. It allows developers to understand the whole codebase and make adjustments whenever necessary.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/primary-nodejs-development-focus.png" alt="8 Key Takeaways from the Node.js Survey of 1,600 Engineers (2018)"></p>
<br>
<h2 id="Q3">#3 - React, Express, Docker and AWS dominate the Node.js Landscape</h2>
<p>Angular 2, Vue, GraphQL, Docker and Kubernetes rised significantly compared to last year's survey data.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/nodejs-tools-used.png" alt="8 Key Takeaways from the Node.js Survey of 1,600 Engineers (2018)"></p>
<p>When it comes to messaging systems RabbitMQ is the clear winner, while on the CI front Jenkins and Travis are head-to-head.</p>
<br>
<h2 id="Q4">#4 - Node.js, Rust and Go are the most hyped languages right now.</h2>
<p>The Node Foundation asked developers about the languages they use alongside Node.js. The answer is no surprise, Python, Java and PHP still have a strong presence in the Node community.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/languages-used-with-node.png" alt="8 Key Takeaways from the Node.js Survey of 1,600 Engineers (2018)"></p>
<p>The interesting part comes when the developers let us know what languages they expect to use more in the next year. According to the survey's results, Node, Rust and Go usage will go up singificantly.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/expected-node-usage-next-year.png" alt="8 Key Takeaways from the Node.js Survey of 1,600 Engineers (2018)"></p>
<p>It's amazing to see how .Net, PHP and Java lose their influence over time and get replaced with modern solutions.</p>
<br>
<h2 id="Q5">#5 - npm still beats Yarn</h2>
<p>npm is the bundled, default package manager for Node.js. This didn't stop the Facebook team to release their own package manager solution, called Yarn - which aims to tackle some of the problems npm has.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/node-package-manager-usage-2018.png" alt="8 Key Takeaways from the Node.js Survey of 1,600 Engineers (2018)"></p>
<p>It looks like Yarn adoption is already around 10% in the Node community, but it's still far from npm's popularity.</p>
<p>In case you're interested in how they compare, read our post: <a href="https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/">Yarn vs npm - which Node package manager to use in 2018?</a></p>
<br>
<h2 id="Q6">#6 - AWS is the No.1 Node.js Deployment Platform</h2>
<p>AWS is the primary place where respondents deploy code for production, and it seems to be growing for use in development.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/where-deploy-nodejs-apps.png" alt="8 Key Takeaways from the Node.js Survey of 1,600 Engineers (2018)"></p>
<p>Heroku grabbed the second place, but DigitalOcean is also a major player.</p>
<br>
<h2 id="Q7">#7 - Documentation and StackOverflow are the primary source of Learning</h2>
<p>While documentation and StackOverflow are still top, newer Node users are more likely than others to also use free &amp; paid online courses and tutorial videos.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/nodejs-learning-resources-used.png" alt="8 Key Takeaways from the Node.js Survey of 1,600 Engineers (2018)"></p>
<p>At RisingStack we've been blogging on a weekly basis about Node.js and it's ecosystem in the past 4 years. In case you'd like to learn more about our favorite platform I recommend you to check out our free tutorial series:</p>
<ul>
<li><a href="https://blog.risingstack.com/node-hero-tutorial-getting-started-with-node-js/">Node Hero - Getting Started with Node.js [13 chapters]</a></li>
</ul>
<blockquote>
<p>Learn how to get started with Node.js and deliver software products using it. Topics include: basics, project structuring, deploying, debugging, and so on..</p>
</blockquote>
<ul>
<li><a href="https://blog.risingstack.com/nodejs-at-scale-npm-best-practices/">Node.js at Scale [18 chapters]</a></li>
</ul>
<blockquote>
<p>Node.js at scale is a collection of articles focusing on the needs of companies with bigger Node.js installations, and developers who already learned the basics of Node.</p>
</blockquote>
<br>
<h2 id="Q8">#8 - Node.js Security is Still Hard to Learn</h2>
<p>There have been significant improvements in the quality of learning resources, but Node.js Security is still a pain-point for the majority of developers.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/nodejs-learning-results-availability-and-quality.png" alt="8 Key Takeaways from the Node.js Survey of 1,600 Engineers (2018)"></p>
<p>We've shared a bit of knowledge on the topic, start here:</p>
<ul>
<li><a href="https://blog.risingstack.com/node-js-security-checklist/">Node.js Security Checklist</a></li>
<li><a href="https://blog.risingstack.com/node-js-security-tips/">Node.js Security Tips</a></li>
<li><a href="https://blog.risingstack.com/node-hero-node-js-security-tutorial/">Node Hero - Node.js Security Tutorial</a></li>
<li><a href="https://community.risingstack.com/writing-secure-node-js-code-danny-grander/">Writing Secure Node.js Code</a></li>
</ul>
<br>
<h2 id="thatsallfolks">That's All Folks</h2>
<p>The crew of the Node Foundation worked hard on making this survey happen. If you'd like to support them or you're in the mood to evangelize Node a little bit, please share the results of the survey!</p>
<p>Cheers,<br>
Feri</p>
</div>]]></content:encoded></item><item><title><![CDATA[The Best Node.js & Microservices Articles we Ever Wrote]]></title><description><![CDATA[We collected the best Node.js & Microservices articles written by RisingStack's engineers in the past 4 years. ]]></description><link>https://blog.risingstack.com/top-nodejs-microservices-articles-risingstack/</link><guid isPermaLink="false">5af9a3b4e96eb000010707fe</guid><category><![CDATA[Advanced Node.js Tutorials]]></category><dc:creator><![CDATA[Andrea Papp]]></dc:creator><pubDate>Wed, 16 May 2018 14:53:54 GMT</pubDate><media:content url="https://blog.risingstack.com/content/images/2018/05/best-nodejs-microservices-articles.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog.risingstack.com/content/images/2018/05/best-nodejs-microservices-articles.png" alt="The Best Node.js & Microservices Articles we Ever Wrote"><p>Since the inception of RisingStack, our engineers have published almost 200 articles to show off our coding/architectural skills and <a href="https://risingstack.com/nodejs-development-consulting-services">convince future clients</a> that we have the expertise to build &amp; scale software effectively, and to prove that <a href="https://blog.risingstack.com/risingstack-training-feedbacks/">we're great educators</a>!</p>
<p>As a result, our Blog brought together a huge community of enthusiastic engineers in the past 4 years - so far we've reached more than 3.5 million devs &amp; gained around 50K subscribers.</p>
<p>Sometimes it's great to look back &amp; be nostalgic about our successes, so we dived deep into our data and listed our most-read and most-shared articles!</p>
<p><strong>Also, we'd like to know what topics you'd love to learn about. Please leave a comment &amp; help us decide what should we write about next!</strong></p>
<br>
<h2 id="top10mostreadpostsofrisingstack">Top 10 Most-Read Posts of RisingStack:</h2>
<br>
<h4 id="1thereactjswaygettingstartedtutorial">1. <a href="https://blog.risingstack.com/the-react-way-getting-started-tutorial/"><strong>The React.js Way: Getting Started Tutorial</strong></a></h4>
<p>This article helps you to get started with React.js and gives insights on thinking the 'React way.' We wrote it at the beginning of the React hype, which means that it's a little bit outdated. We hate to disappoint, so we created a few follow-up <a href="https://blog.risingstack.com/tag/react-js-tutorials/">React.js tutorials</a> including our latest:</p>
<ul>
<li><a href="https://blog.risingstack.com/8-tips-to-build-better-react-apps-in-2018/">8 Tips to Build Awesome React.js Apps in 2018</a></li>
</ul>
<br>
<h4 id="2nodeherogettingstartedwithnodejstutorial">2. <a href="https://blog.risingstack.com/node-hero-tutorial-getting-started-with-node-js/"><strong>Node Hero - Getting Started With Node.js Tutorial</strong></a></h4>
<p>This article is the first part of our fan-favorite <a href="https://blog.risingstack.com/tag/node-hero-getting-started-with-node-js/">&quot;Getting Started with Node.js&quot;</a> series which helps beginners to grasp the main concepts behind Node.js and teaches how to write software effectively!</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/risingstack-node-js-microservices-consulting.jpg" alt="The Best Node.js & Microservices Articles we Ever Wrote"></p>
<p>We even created stickers for this series! :)</p>
<br>
<h4 id="3yourfirstnodejshttpserver">3. <a href="https://blog.risingstack.com/your-first-node-js-http-server/"><strong>Your First Node.js HTTP Server</strong></a></h4>
<p>From this article, you can learn how to fire up a simple Node.js HTTP server and start serving requests from scratch! We discuss Express, Middlewares, Error Handling &amp; Debugging as well!</p>
<p><img src="https://blog-assets.risingstack.com/2016/Apr/express_middlewares_for_building_a_nodejs_http_server-1461068080929.png" alt="The Best Node.js & Microservices Articles we Ever Wrote"><br>
<br></p>
<h4 id="4reactjsbestpracticesfor2016">4. <a href="https://blog.risingstack.com/react-js-best-practices-for-2016/"><strong>React.js Best Practices for 2016</strong></a></h4>
<p>This article is a collection of React.js best practices, with special attention to data handling. Although it was written in 2016 - it still holds value &amp; it's being read constantly.</p>
<p>We discuss flux, redux, immutable states, observables, routing, components, testing &amp; so on..</p>
<br>
<h4 id="5understandingasyncprogramminginnodejs">5. <a href="https://blog.risingstack.com/node-hero-async-programming-in-node-js/"><strong>Understanding Async Programming in Node.js</strong></a></h4>
<p>This article helps you to learn the principles of async programming, and to do async in JavaScript and Node.js. If you're a Node developer, you MUST get this part right - so no wonder that it's one of our best performing post.</p>
<p><img src="https://blog-assets.risingstack.com/2016/Apr/non_async_blocking_operations_example_in_node_hero-1459856858194.png" alt="The Best Node.js & Microservices Articles we Ever Wrote"></p>
<br>
<h4 id="6nodejsprojectstructuretutorial">6. <a href="https://blog.risingstack.com/node-hero-node-js-project-structure-tutorial/"><strong>Node.js Project Structure Tutorial</strong></a></h4>
<p>This article teaches readers how to structure a Node.js project properly to avoid confusion when applications start to grow. We talk about the 5 fundamental rules of structuring a project, which are:</p>
<ul>
<li>Organize your Files Around Features, Not Roles</li>
<li>Don't Put Logic in index.js Files</li>
<li>Place Your Test Files Next to The Implementation</li>
<li>Use a config Directory</li>
<li>Put Your Long npm Scripts in a scripts Directory</li>
</ul>
<br>
<h4 id="7nodejsauthenticationusingpassportjs">7. <a href="https://blog.risingstack.com/node-hero-node-js-authentication-passport-js/"><strong>Node.js Authentication using Passport.js</strong></a></h4>
<p>This Passport.js tutorial walks you through the steps of setting up a local Node.js authentication strategy using Redis.</p>
<p><img src="https://blog-assets.risingstack.com/2016/May/Node_js_authentication_using_passport_js-1464012308586.gif" alt="The Best Node.js & Microservices Articles we Ever Wrote"></p>
<br>
<h4 id="8masteringasyncawaitinnodejs">8. <a href="https://blog.risingstack.com/mastering-async-await-in-nodejs/"><strong>Mastering Async-Await in Node.js</strong></a></h4>
<p>From this article, you can learn how you can simplify your callback or Promise based Node.js application with async functions (async/await).</p>
<blockquote>
<p>Asynchronous language constructs have been around in other languages for a while, like async/await in C#, coroutines in Kotlin and goroutines in Go. With the release of Node.js 8, the long-awaited async functions have landed in Node.js as well.</p>
</blockquote>
<br>
<h4 id="9howtogetnodejsloggingright">9. <a href="https://blog.risingstack.com/node-js-logging-tutorial/"><strong>How to Get Node.js Logging Right</strong></a></h4>
<p>Get some help with logging in Node.js modules, applications and distributed systems. To do so, check out the tools, methods, rules and best practices we use at RisingStack for developing enterprise Node projects.</p>
<p>Some takeways:</p>
<ul>
<li>Always log to stdout. It is not the applications responsibility to route logs.</li>
<li>Never, ever log credentials, passwords or any sensitive information.</li>
</ul>
<br>
<h4 id="1010bestpracticesforwritingnodejsrestapis">10. <a href="https://blog.risingstack.com/10-best-practices-for-writing-node-js-rest-apis/"><strong>10 Best Practices for Writing Node.js REST APIs</strong></a></h4>
<p>In this article, we wrote about best practices for writing Node.js REST APIs, including topics like naming your routes, authentication, black-box testing &amp; using proper cache headers for these resources.</p>
<ul>
<li>1 - Use HTTP Methods &amp; API Routes</li>
<li>2 - Use HTTP Status Codes Correctly</li>
<li>3 - Use HTTP headers to Send Metadata</li>
<li>4 - Pick the right framework for your Node.js REST API</li>
<li>5 - Black-Box Test your Node.js REST APIs</li>
<li>6 - Do JWT-Based, Stateless Authentication</li>
<li>7 - Use Conditional Requests</li>
<li>8 - Embrace Rate Limiting</li>
<li>9 - Create a Proper API Documentation</li>
<li>10 - Don't Miss The Future of APIs</li>
</ul>
<br>
<h2 id="top10mostsharedpostsofrisingstack">Top 10 Most-Shared Posts of RisingStack</h2>
<br>
<h4 id="1nodejsbestpracticesbecomeabetterdeveloper">1. <a href="https://blog.risingstack.com/node-js-best-practices-2017/"><strong>Node.js Best Practices - Become a Better Developer</strong></a></h4>
<p>This article collects the most important Node.js best practices that you should implement to become a better developer. Although this article was written for 2017, you can still find some evergreen pieces of advice in there.</p>
<p>To make sure that you keep up with the trends, we published a 2018 version of this article too, which you can find here:</p>
<ul>
<li><a href="https://blog.risingstack.com/node-js-development-tips-2018/">8 Tips to Build Better Node.js Apps in 2018</a></li>
</ul>
<br>
<h4 id="2javascriptcleancodingbestpractices">2. <a href="https://blog.risingstack.com/javascript-clean-coding-best-practices-node-js-at-scale/"><strong>JavaScript Clean Coding Best Practices</strong></a></h4>
<p>There is no reasonable excuse for doing anything less than your best, especially when it comes to coding.</p>
<blockquote>
<p>“Even bad code can function. But if the code isn’t clean, it can bring a development organization to its knees.” — Robert C. Martin (Uncle Bob)</p>
</blockquote>
<p>Clean coding is a key skill when it comes to software development. In this post, we collected the basic clean coding principles for naming and using variables &amp; functions, as well as some JavaScript specific clean coding best practices. In doubt? This image shows another way to tell whether your code is good enough.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/javascript-clean-coding-best-practices-code-review.jpg" alt="The Best Node.js & Microservices Articles we Ever Wrote"></p>
<br>
<h4 id="3nodejssecuritychecklist">3. <a href="https://blog.risingstack.com/node-js-security-checklist/"><strong>Node.js Security Checklist</strong></a></h4>
<blockquote>
<p><strong>Security - the elephant in the room.</strong> Everyone agrees that it is very important, but few takes it seriously.</p>
</blockquote>
<p>This hands-on checklist helps you to have all the security checks before your application is enabled to thousands of users/customers. Make sure not to miss any of them!</p>
<br>
<h4 id="4advancednodejsprojectstructuretutorial">4. <a href="https://blog.risingstack.com/node-js-project-structure-tutorial-node-js-at-scale/"><strong>Advanced Node.js Project Structure Tutorial</strong></a></h4>
<p>In this article, we give a solution for the most common pain-points of structuring advanced Node applications and help you with structuring a complex project.</p>
<p><strong>What to aim for in project structuring?</strong></p>
<ul>
<li>Writing an easily scalable and maintainable application</li>
<li>The config is well separated from the business logic.</li>
<li>Our application can consist of multiple process types.</li>
</ul>
<p>It's important to get these aspects right as the way you bootstrap your apps will determine your whole project.</p>
<br>
<h4 id="5nodev10isherefeaturebreakdown">5. <a href="https://blog.risingstack.com/node-js-10-lts-feature-breakdown/"><strong>Node v10 is Here - Feature Breakdown!</strong></a></h4>
<p>Node v10 was recently announced, and we were super excited about its new features and the possible changes it would bring in the way we develop Node.js apps. To introduce it in depths to our reader, Tamas wrote a neat post about it. He included:</p>
<ul>
<li>Stable HTTP 2</li>
<li>ESM Modules</li>
<li>Error Codes</li>
<li>Fs Promises</li>
<li>N-Api</li>
<li>V8 6.6</li>
</ul>
<br>
<h4 id="6howdevelopersusenodejssurveyresults">6. <a href="https://blog.risingstack.com/node-js-developer-survey-results-2016/"><strong>How Developers use Node.js - Survey Results</strong></a></h4>
<p>We conducted a survey in 2016 about how developers use Node.js and to find out various aspects of developing Node.js and choices for async control flow, debugging, continuous integration or finding packages. We concluded that one of the most significant pain-point of Node.js developers was Debugging, among others:</p>
<ul>
<li>Debugging / Profiling / Performance Monitoring</li>
<li>Callbacks and Callback hell</li>
<li>Understanding Async programming</li>
<li>Dependency management</li>
<li>Lack of conventions/best practices</li>
<li>Structuring</li>
<li>Bad documentation</li>
<li>Finding the right packages</li>
</ul>
<p>To keep track with the changes of the community, we surveyed Node developers in 2018 too. You can see the most up-to-date results in this post:</p>
<ul>
<li><a href="https://blog.risingstack.com/why-developers-love-node-js-2018-survey/">Why Developers Love Node.js &amp; what's their main issue with it?</a></li>
</ul>
<br>
<h4 id="7nodejsinterviewquestionsandanswers2017edition">7. <a href="https://blog.risingstack.com/node-js-interview-questions-and-answers-2017/"><strong>Node.js Interview Questions and Answers (2017 Edition)</strong></a></h4>
<p>In this post, we collected 10 interview questions and answers that would help you get an overview of a person's experience in Node.js. This article is not only useful from the interviewers' viewpoint but from the interviewee as well.</p>
<p>It's important to note though, that these questions do not give you the big picture of someone's mindset and thinking, so we encourage you to do pair programming with the developers you are going to hire.</p>
<p>We have also written a similar post recently about getting ready for a React interview, which you can find here:</p>
<ul>
<li><a href="https://blog.risingstack.com/8-react-interview-questions-for-2018/">8 React Interview Questions for 2018</a></li>
</ul>
<br>
<h4 id="8fundamentalnodejsdesignpatterns">8. <a href="https://blog.risingstack.com/fundamental-node-js-design-patterns/"><strong>Fundamental Node.js Design Patterns</strong></a></h4>
<p>What are design patterns?</p>
<blockquote>
<p>A design pattern is a general, reusable solution to a commonly occurring problem.</p>
</blockquote>
<p>When we talk about design patterns, we might think of singletons, observers, or factories. Besides these, this article also deals with other, super useful pattern as well, such as:</p>
<ul>
<li>dependency injection</li>
<li>middlewares<br>
<br></li>
</ul>
<h4 id="9concurrencyandparallelismunderstandingio">9. <a href="https://blog.risingstack.com/concurrency-and-parallelism-understanding-i-o/">Concurrency and Parallelism: Understanding I/O</a></h4>
<p>This article focuses on understanding the principles of operating systems, since they handle our applications' I/O. Let's dive into concurrency and paralellism, and understand the main differences between them.</p>
<p>We'll go the following takeaways:</p>
<ul>
<li>Intro to Concurrency and Parallelism</li>
<li>Processes and threads</li>
<li>CPU vs. I/O</li>
<li>I/O flavors: Blocking vs. non-blocking, sync vs. async</li>
<li>Busy-waiting, polling and the event loop</li>
</ul>
<p>Then, see a hands-on example that illustrates the differences between working with synchronous, blocking and asynchronous, non-blocking network I/O.</p>
<br>
<h4 id="10historyofnodejsonatimeline">10. <a href="https://blog.risingstack.com/history-of-node-js/">History of Node.js on a Timeline</a></h4>
<p>Our favourite framework has a rich history since it's emerged in 2009.In this post we go through the history of Node.js; we see how it got started and how did it become the framework that we know now.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/history-of-node-js.png" alt="The Best Node.js & Microservices Articles we Ever Wrote"></p>
<br>
<h2 id="risingstacksengineerfavorites">RisingStack's Engineer Favorites:</h2>
<p>We also asked our engineers about which articles <em>they</em> enjoyed <em>writing</em> the most:</p>
<br>
<p><img src="https://risingstack.com/static/images/team/tamas_kadlecsik.png" alt="The Best Node.js & Microservices Articles we Ever Wrote" style="float:left;width:120px;height:120px;padding-right:20px; padding-bottom:15px;"> <strong>Tamas Kadlecsik:</strong> <a href="https://blog.risingstack.com/consumer-driven-contract-testing-with-pact/"><strong>Consumer-Driven Contract Testing</strong></a></p>
<p>In this article, Tamas walks you through the steps of performing consumer-driven contract testing in a microservices architecture with Pact.</p>
<p>After you got the fundamental consumer-driven contract testing right, you should check out the 2nd, more advanced part of it:</p>
<ul>
<li><a href="https://blog.risingstack.com/advanced-contract-testing-pact-verification-with-pattern-matching/">Advanced Contract Testing - Pact Verification with Pattern Matching</a></li>
</ul>
<br>
<p><img src="https://risingstack.com/static/images/team/peter_czibik.png" alt="The Best Node.js & Microservices Articles we Ever Wrote" style="float:left;width:120px;height:120px;padding-right:20px; padding-bottom:15px;"> <strong>Peter Czibik:</strong> <a href="https://blog.risingstack.com/getting-node-js-testing-and-tdd-right-node-js-at-scale/"><strong>Getting Node.js Testing and TDD Right</strong></a></p>
<p>Making sure that the changes we make in a large codebase actually work is of utmost importance.</p>
<p>It can be tedious to have proper test coverage when you have to focus on pushing out all the new features, but think about your future self, would you like to work on code that's not tested properly? If not, read this guide on getting testing and test-driven development right.</p>
<blockquote>
<p>&quot;Remember, you don't write tests for yourself! You write them for those who make changes later.&quot; - RisingStack</p>
</blockquote>
<br>
<p><img src="https://risingstack.com/static/images/team/tamas_hodi.png" alt="The Best Node.js & Microservices Articles we Ever Wrote" style="float:left;width:120px;height:120px;padding-right:20px; padding-bottom:15px;"> <strong>Tamas Hodi:</strong> <a href="https://blog.risingstack.com/node-js-async-best-practices-avoiding-callback-hell-node-js-at-scale/"><strong>Node.js Async Best Practices</strong></a></p>
<p>In this post, Tamas covers the tools and techniques you have at your disposal when handling Node.js asynchronous operations: async.js, promises, generators and async functions.</p>
<p>He discusses:</p>
<ul>
<li>Asynchronous programming in Node.js</li>
<li>The Problem with Node.js Async</li>
<li>The Classical Approach of Callbacks</li>
<li>How to avoid a Callback Hell with Control Flow Managers</li>
</ul>
<br>
<p><img src="https://risingstack.com/static/images/team/miklos_bertalan.png" alt="The Best Node.js & Microservices Articles we Ever Wrote" style="float:left;width:120px;height:120px;padding-right:20px; padding-bottom:15px;"> <strong>Bertalan Miklos:</strong> <a href="https://blog.risingstack.com/introducing-react-easy-state/"><strong>Introducing React Easy State</strong></a></p>
<p>React Easy State is a state management library for React. This article introduces the fruition of Bertalan's two years long journey with ES6 Proxies and meta programming.</p>
<p>Bertalan guides you through creating a stopwatch with his newly announced <a href="https://github.com/solkimicreb/react-easy-state">library</a>. It's very cool:</p>
<p><img src="https://blog.risingstack.com/content/images/2018/05/clock-2.gif" alt="The Best Node.js & Microservices Articles we Ever Wrote"></p>
<br>
<p><img src="https://risingstack.com/static/images/team/robert_czinege.png" alt="The Best Node.js & Microservices Articles we Ever Wrote" style="float:left;width:120px;height:120px;padding-right:20px; padding-bottom:15px;"> <strong>Robert Czinege:</strong> <a href="https://blog.risingstack.com/node-js-bootcamp/"><strong>How I Survived RisingStacks Bootcamp</strong></a></p>
<p>This article captures the journey of how Robert became an engineer at RisingStack; how he utilized what he learned in our <a href="https://github.com/RisingStack/risingstack-bootcamp">Node.js coding bootcamp</a> and beat his imposter syndrome.</p>
<p>Robert's story can be an inspiration for anyone who is seeking a career shift in their life. If you'd like to learn more Node, check out our <a href="https://risingstack.com/resources">resources</a> page.</p>
<br>
<p><img src="https://risingstack.com/static/images/team/kristof.jpg" alt="The Best Node.js & Microservices Articles we Ever Wrote" style="float:left;width:120px;height:120px;padding-right:20px; padding-bottom:15px;"> <strong>Kristof Ivancza:</strong> <a href="https://blog.risingstack.com/what-is-kubernetes-how-to-get-started/"><strong>How to Get Started With Kubernetes</strong></a></p>
<p>When our clients ask us to create a distributed system, we usually recommend Kubernetes, because it's great, and in the same time a lot more simple than other competing orchestration engines.</p>
<p>You can get started with Kubernetes with this article where Kristof collected everything you need to know about our favorite orchestration engine.</p>
<br>
<p><img src="https://risingstack.com/static/images/team/mate.jpg" alt="The Best Node.js & Microservices Articles we Ever Wrote" style="float:left;width:120px;height:120px;padding-right:20px; padding-bottom:15px;"> <strong>Mate Huszarik:</strong> <a href="https://blog.risingstack.com/angularjs-to-angular-history-and-tips-to-get-started/"><strong>AngularJS to Angular - a brief history</strong></a></p>
<p>Mate dived deep into the history Angular to see where it came from and what might happen with it in the future. Read more about the pillars of Angular to have a better understanding of what it has to offer.</p>
<blockquote>
<p>&quot;Indeed, Angular might have a longer learning period compared to other front-end libraries but in return it enhances the developer experience with built-in solutions that come by importing modules.&quot;</p>
</blockquote>
<br>
<h2 id="whatshouldwewriteaboutnext">What should we write about Next?</h2>
<p>Let us know if there's anything you're missing from our repertoire in the comment section below!</p>
</div>]]></content:encoded></item><item><title><![CDATA[RisingStack Training Feedbacks]]></title><description><![CDATA[We believe in transparency & accountability and we're very proud of our results, so we decided to share the feedbacks we received for our trainings so far.]]></description><link>https://blog.risingstack.com/risingstack-training-feedbacks/</link><guid isPermaLink="false">5adde6ab9ceaf30001d3e7e5</guid><category><![CDATA[Node.js with Microservices]]></category><dc:creator><![CDATA[Andrea Papp]]></dc:creator><pubDate>Tue, 08 May 2018 12:13:20 GMT</pubDate><media:content url="https://blog.risingstack.com/content/images/2018/04/risingstack-training-feedbacks.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog.risingstack.com/content/images/2018/04/risingstack-training-feedbacks.png" alt="RisingStack Training Feedbacks"><p>If you follow the Risingstack blog, you're probably aware that we have been publishing Node.js, Kubernetes, and Microservices materials in the past 4 years. Our team has written almost 200 articles and <a href="https://risingstack.com/resources">several e-books</a> so far, but we didn't stop there. Since the Fall of 2017, we expanded our <a href="https://risingstack.com/">Full-stack JS consulting</a> business, and <a href="https://risingstack.com/trainings">started hosting training sessions</a> / workshops throughout Europe regularly.</p>
<p>We strongly believe in transparency and accountability - even in the private sector - and <strong>we're very proud of our results, so we decided to share the feedbacks and scores we received for our trainings so far.</strong></p>
<p>Please use these links for navigation:</p>
<ul>
<li><a href="#jump1">Microservices Training, Barcelona</a> - 2017 November - 4.3/5 ★</li>
<li><a href="#jump2">Microservices Training, Bourdeaux</a> - 2017 November - 4.8/5 ★</li>
<li><a href="#jump3">Microservices Training, Berlin</a> - 2017 October - 4.5/5 ★</li>
<li><a href="#jump4">Microservices Training, Vienna</a> - 2017 October - 4.0/5 ★</li>
<li><a href="#jump5">Microservices Training, Los Angeles</a> - 2017 June - 5.0/5 ★</li>
<li><a href="#jump6">Microservices Training, Budapest</a> - 2017 June - 5.0/5 ★</li>
</ul>
<h2 id="upcomingrisingstacktrainings">Upcoming RisingStack Trainings</h2>
<p>At RisingStack, we provide several training programmes, namely:</p>
<ul>
<li><a href="https://risingstack.com/trainings#designingmicroservicesarchitectures">Designing Microservices Architectures</a></li>
<li><a href="https://risingstack.com/trainings#handlingmicroserviceswithkubernetes">Handling Microservices with Kubernetes</a></li>
<li><a href="https://risingstack.com/trainings#modernfrontendwithreact">Modern Front-End with React</a></li>
<li><a href="https://risingstack.com/trainings#buildingcomplexappswithangular">Building Complex Apps with Angular</a></li>
<li><a href="https://risingstack.com/trainings#nodejsfundamentals">Node.js Fundamentals</a></li>
</ul>
<p>Read our <a href="https://risingstack.com/trainings">training page</a> to check out the detailed agendas!</p>
<p>These trainings are available as an in-house opportunity (ping us at <code>info [at] risingstack.com</code> to discuss the details) and there are a few upcoming trainings you can attend in Major cities:</p>
<ul>
<li><a href="https://ti.to/risingstack/designing-microservice-architectures-berlin-2018">Designing Microservice Architectures - Berlin</a> (June 14-15)</li>
<li><a href="https://ti.to/risingstack/modern-front-end-with-react-warsaw-2018">Modern Front-End with React - Warwas</a> (June 21-22)</li>
</ul>
<h2 id="risingstacktrainingscoresfeedbacks">RisingStack Training Scores &amp; Feedbacks</h2>
<p id="jump1"> </p>
<p>You can find screenshots from our surveying system about the trainings we provided so far below!</p>
<h4 id="1microservicestrainingbarcelona2017november">1, Microservices Training - Barcelona - 2017 November</h4>
<p><img src="https://blog.risingstack.com/content/images/2018/05/EZ-1-BARCELONA-recommend-RS-MS-training.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/EZ-2-BARCELONA-rate-usefulness-copy-copy.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/3-barcelona-satisfied-with-the-instructor-copy.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/4-barcelona-help-in-your-job2.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/4-barcelona-3-things-you-particularly-appreciate2.png" alt="RisingStack Training Feedbacks"></p>
<p id="jump2"> </p>
<h4 id="2microservicestrainingbourdeaux2017november">2, Microservices Training - Bourdeaux - 2017 November</h4>
<p><img src="https://blog.risingstack.com/content/images/2018/05/EZ-1-Bordeaux-recommend.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/EZ-2-bordeaux-usefulness-copy.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/EZ-3-bordeux-how-satisfied-are-you-with-the-isntructor-copy.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/EZ-5-bordeaux-help-in-your-job.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/EZ-4-bordeaux-3-thing-you-particulartly-appreciated.png" alt="RisingStack Training Feedbacks"></p>
<p id="jump3"> </p>
<h4 id="3microservicestrainingberlin2017october">3, Microservices Training - Berlin - 2017 October</h4>
<p><img src="https://blog.risingstack.com/content/images/2018/05/1-berlin-recommend.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/2-berlin-usefulness.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/3-berlin-how-satisfied-are-you-with-the-instructor.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/4-berlin-was-the-instructor-easy-to-understand.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/5-berlin-summarize.png" alt="RisingStack Training Feedbacks"></p>
<p id="jump4"> </p>
<h4 id="4microservicestrainingvienna2017october">4, Microservices Training - Vienna - 2017 October</h4>
<p><img src="https://blog.risingstack.com/content/images/2018/05/1-vienna-recommend.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/2-vienna-usefulness.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/3-vienna-satisfied-with-the-instructor.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/4-summarize.png" alt="RisingStack Training Feedbacks"></p>
<p id="jump5"> </p>
<h4 id="5microservicestraininglosangeles2017june">5, Microservices Training - Los Angeles - 2017 June</h4>
<p><img src="https://blog.risingstack.com/content/images/2018/05/1-LA-recommen.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/2-LA-useful-things.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/5-LA-hands-on.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/3-LA-how-satisfied-w-the-instructor.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/4-LA-how-well-could-you-follow-the-instructor.png" alt="RisingStack Training Feedbacks"></p>
<p id="jump6"> </p>
<h4 id="6microservicestrainingbudapest2017june">6, Microservices Training - Budapest - 2017 June</h4>
<p><img src="https://blog.risingstack.com/content/images/2018/05/1-Budapest-recommend.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/2-budapest-we-learned-useful-things.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/3-BP-enough-hands-on.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/4-BP-satisfied-w-the-intructor.png" alt="RisingStack Training Feedbacks"><br>
<img src="https://blog.risingstack.com/content/images/2018/05/5-BP-follow-the-instructor.png" alt="RisingStack Training Feedbacks"></p>
<h2 id="whatsnext">What's Next?</h2>
<p>In case your interested in any of our upcoming trainings, you can reach us at <code>info [at] risingstack.com</code>.</p>
<p>You can get your seats for our upcoming trainings here:</p>
<ul>
<li><a href="https://ti.to/risingstack/designing-microservice-architectures-berlin-2018">Designing Microservice Architectures - Berlin</a> (June 14-15)</li>
<li><a href="https://ti.to/risingstack/modern-front-end-with-react-warsaw-2018">Modern Front-end with React - Warsaw</a> (June 21-22)</li>
</ul>
</div>]]></content:encoded></item><item><title><![CDATA[What is Kubernetes & How to Get Started With It]]></title><description><![CDATA[This article helps you to learn the basic concepts of Kubernetes, so you can  have a modern, safe and reliable production infcrastructure in the cloud.
]]></description><link>https://blog.risingstack.com/what-is-kubernetes-how-to-get-started/</link><guid isPermaLink="false">5ae847589ceaf30001d3e7f9</guid><category><![CDATA[Docker & Kubernetes]]></category><dc:creator><![CDATA[Kristof Ivancza]]></dc:creator><pubDate>Tue, 08 May 2018 12:13:01 GMT</pubDate><media:content url="https://blog.risingstack.com/content/images/2018/05/what-is-kubernetes-getting-started-with-it.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog.risingstack.com/content/images/2018/05/what-is-kubernetes-getting-started-with-it.png" alt="What is Kubernetes & How to Get Started With It"><p>From this article, you will learn the basic concepts of Kubernetes so you can have a modern, safe and reliable production infrastructure in the cloud without handling all the hassle of old DevOps solutions.</p>
<h2 id="whyweusekubernetesatrisingstackandwhyyoushouldstartlearningit">Why we use Kubernetes at RisingStack, and why you should start learning it?</h2>
<p>When our clients ask us to create a highly available distributed system, we usually recommend Kubernetes, because it's easy to use and even though it has a steep initial learning curve, it's still a lot more simple than other competing orchestration engines.</p>
<p><em>(FYI, you can reach out to us if your company needs help with Kubernetes at <code>info@risingstack.com</code>)</em></p>
<p>Kubernetes works perfectly with Node apps because it's based on Docker, so you can run any kind of application with it.</p>
<h2 id="whatiskubernetes">What is Kubernetes?</h2>
<p>Kubernetes (commonly referred to as K8s) is an orchestration engine for container technologies such as <code>Docker</code> and <code>rkt</code> that is taking over the DevOps scene in the last couple of years. It is already available on <a href="https://azure.microsoft.com/en-us/services/container-service/kubernetes/">Azure</a> and <a href="https://cloud.google.com/kubernetes-engine/">Google Cloud</a> as a managed service.</p>
<p>Kubernetes can speed up the development process by making easy, automated deployments, updates (rolling-update) and by managing our apps and services with almost zero downtime. It also provides self-healing. Kubernetes can detect and restart services when a process crashes inside the container. Kubernetes is originally developed by Google, it is open-sourced since its launch and managed by a large community of contributors.</p>
<p>Any developer can package up applications and deploy them on Kubernetes with basic Docker knowledge.</p>
<h2 id="wordsyouneedtoknowgetstartedwithkubernetes">Words you need to know get started with Kubernetes</h2>
<p><strong>Kubectl:</strong></p>
<ul>
<li>a CLI tool for Kubernetes</li>
</ul>
<p><img src="https://blog.risingstack.com/content/images/2018/05/kubernetes-kubectl.png" alt="What is Kubernetes & How to Get Started With It"></p>
<p><strong>Master Node:</strong></p>
<ul>
<li>The main machine that controls the nodes</li>
<li>Main entrypoint for all administrative tasks</li>
<li>It handles the orchestration of the worker nodes</li>
</ul>
<p><img src="https://blog.risingstack.com/content/images/2018/05/kubernetes-master-node.png" alt="What is Kubernetes & How to Get Started With It"></p>
<p><strong>Worker Node:</strong></p>
<ul>
<li>It is a worker machine in Kubernetes (used to be known as minion)</li>
<li>This machine performs the requested tasks. Each Node is controlled by the Master Node</li>
<li>Runs containers inside pods</li>
<li>This is where the Docker engine runs and takes care of downloading images and starting containers</li>
</ul>
<p><img src="https://blog.risingstack.com/content/images/2018/05/kubernetes-worker-node.png" alt="What is Kubernetes & How to Get Started With It"></p>
<p><strong>Kubelet:</strong></p>
<ul>
<li>Primary node agent</li>
<li>Ensures that containers are running and healthy</li>
</ul>
<p><img src="https://blog.risingstack.com/content/images/2018/05/kubernetes-kubelet.png" alt="What is Kubernetes & How to Get Started With It"></p>
<p>So far our explanatory figures were not entirely correct. Kubernetes does not schedule containers directly, but Pods which describes how to run one or multiple containers simultaneously.</p>
<p><strong>Kubernetes Pod:</strong></p>
<ul>
<li>A Pod can host multiple containers and storage volumes</li>
<li>Pods are instances of Deployments (see Deployment)</li>
<li>One Deployment can have multiple pods</li>
<li>With Horizontal Pod Autoscaling, Pods of a Deployment can be automatically started and halted based on CPU usage</li>
<li>Containers within the same pod have access to shared volumes</li>
<li>Each Pod has its unique IP Address within the cluster</li>
<li>Pods are up and running until someone (or a controller) destroys them</li>
<li>Any data saved inside the Pod will disappear without a persistent storage</li>
</ul>
<p><img src="https://blog.risingstack.com/content/images/2018/05/kubernetes-pod-new.png" alt="What is Kubernetes & How to Get Started With It"></p>
<p><strong>Deployment:</strong></p>
<ul>
<li>A deployment is a blueprint for the Pods to be create (see Pod)</li>
<li>Handles update of its respective Pods.</li>
<li>A deployment will create a Pod by it’s spec from the template.</li>
<li>Their target is to keep the Pods running and update them (with rolling-update) in a more controlled way.</li>
<li>Pod(s) resource usage can be specified in the deployment.</li>
<li>Deployment can scale up replicas of Pods.</li>
</ul>
<p><img src="https://blog.risingstack.com/content/images/2018/05/kubernetes-deployment.png" alt="What is Kubernetes & How to Get Started With It"></p>
<p><strong>Secret:</strong></p>
<ul>
<li>A Secret is an object, where we can store sensitive informations like usernames and passwords.</li>
<li>In the secret files, values are base64 encoded.</li>
<li>To use a secret, we need to refer to the secret in our Pod.</li>
<li>Or we can put it inside a volume and mount that to the container.</li>
<li>Secrets are not encrypted by default. For encryption we need to create an <code>EncryptionConfig</code>.</li>
</ul>
<p>You can read more about encryption <a href="https://kubernetes.io/docs/tasks/administer-cluster/encrypt-data/">here</a></p>
<p><strong>Service:</strong></p>
<ul>
<li>A service is responsible for making our Pods discoverable inside the network or exposing them to the internet</li>
<li>A Service identifies Pods by its LabelSelector</li>
</ul>
<p>There are 3 types of services:</p>
<p>ClusterIP:<br>
- The deployment is only visible inside the cluster<br>
- The deployment gets an internal ClusterIP assigned to it<br>
- Traffic is load balanced between the Pods of the deployment</p>
<p>Node Port:<br>
- The deployment is visible inside the cluster<br>
- The deployment is bound to a port of the Master Node<br>
- Each Node will proxy that port to your Service<br>
- The service is available at http(s)://<public ip="" of="" the="" cluster="">:<nodeport>/<br>
- Traffic is load balanced between the Pods of the deployment</nodeport></public></p>
<p>Load Balancer:<br>
- The deployment gets a Public IP address assigned<br>
- The service is available at http(s)://<public ip="" of="" the="" cluster="">:&lt;80||42&gt;/<br>
- Traffic is load balanced between the Pods of the deployment</public></p>
<h2 id="whatdoweneedtogetstartedwithkubernetes">What do we need to get started with Kubernetes?</h2>
<h3 id="kuberneteswithdocker">Kubernetes with Docker</h3>
<p>We will need <code>Docker</code>. You can download it <a href="https://docs.docker.com/docker-for-mac/install/">here</a>. I recommend installing the <code>Stable</code> version. With the following commands you can make sure Docker is working correctly:</p>
<pre><code class="language-sh">$ docker --version
$ docker run hello-world
</code></pre>
<h3 id="setupazuretoworkwithkubernetesonosx">Set up Azure to work with Kubernetes on OSX:</h3>
<ol start="0">
<li>If you don't have homebrew, install it first</li>
</ol>
<pre><code class="language-sh"> $ /usr/bin/ruby -e &quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)&quot;
</code></pre>
<ol>
<li>Make sure <code>Python 3</code> or later is installed</li>
</ol>
<pre><code class="language-sh"> $ python -v
</code></pre>
<p>If Python is not installed on your system you can download it from their <a href="https://www.python.org/downloads/">website</a>.</p>
<ol start="2">
<li>Install Azure-CLI</li>
</ol>
<pre><code class="language-sh"> $ brew update &amp;&amp; brew install azure-cli
 # if the installer is unable to find Python packages
 $ brew link --overwrite python3
</code></pre>
<ol start="3">
<li>Login to Azure</li>
</ol>
<p>Run the following command and you will get an URL and Authentication code.</p>
<pre><code class="language-sh"> $ az login
</code></pre>
<p>The URL will direct you to a page in your browser where you’ll need to enter the code you got. If the login process is successful, you will see a JSON object in your terminal with information of your account.</p>
<ol start="4">
<li>Enable service providers</li>
</ol>
<p>You need to enable Azure Service providers to create a cluster.</p>
<pre><code class="language-sh"> $ az provider register -n Microsoft.Network
 $ az provider register -n Microsoft.Storage
 $ az provider register -n Microsoft.Compute
 $ az provider register -n Microsoft.ContainerService
</code></pre>
<ol start="5">
<li>Create a resource group</li>
</ol>
<p>Azure resources are deployed and managed by resource groups. When you create a new resource group, you need to give it a name and specify the resource group’s location.</p>
<pre><code class="language-sh"> $ az group create --name &lt;resource_group_name&gt; --location &lt;location&gt;
 # locations: eastus, westeurope, centralus, canadacentral, canadaeast
</code></pre>
<ol start="6">
<li>Create AKS cluster</li>
</ol>
<p>The following command will create a cluster with one node.</p>
<pre><code class="language-sh"> $ az aks create --resource-group resource_group_name --name cluster_name --node-count 1 --generate-ssh-keys
 # this process could take several minutes
 # the command will return with a JSON containing information of the cluster
</code></pre>
<ol start="7">
<li>Connect to the cluster</li>
</ol>
<p>First you need to install the kubernetes CLI tool, then pass your cluster’s credentials to kubectl.</p>
<pre><code class="language-sh"> # install the kubectl CLI
 $ az aks install-cli
 # pass your AKS Cluster credentials to kubectl
 $ az aks get-credentials --resource-group resource_group_name --name cluster_name
</code></pre>
<p>To test whether kubectl has successfully connected to the cluster, run:</p>
<pre><code class="language-sh"> $ kubectl get nodes
</code></pre>
<p>If it’s okay, the response should be something like this:</p>
<pre><code class="language-sh">NAME              STATUS    ROLES     AGE       VERSION
aks-nodepool1-0   Ready     agent     1m       v1.7.9
</code></pre>
<h3 id="usingkubernetesongooglecloudplatformgcponosx">Using Kubernetes on Google Cloud Platform (GCP) on OSX:</h3>
<ol>
<li>Make sure <code>Python 2.7</code> or later is installed</li>
</ol>
<pre><code class="language-sh">  $ python -v
</code></pre>
<p>If Python is not installed on your system you can download it from their <a href="https://www.python.org/downloads/">website</a>.</p>
<ol start="2">
<li>
<p>Download the desired <code>Cloud SDK</code> for your OS from <a href="https://cloud.google.com/sdk/docs/quickstarts">here</a>.</p>
</li>
<li>
<p>Run the <code>install.sh</code> script from the extracted archive.</p>
</li>
<li>
<p>Restart your terminal.</p>
</li>
<li>
<p>Install <code>kubectl</code> with the following command:</p>
</li>
</ol>
<pre><code class="language-sh">$ gcloud components install kubectl
</code></pre>
<ol start="6">
<li>
<p>If it's the first time you use <code>kubectl</code> on GCP, please complete the setup process with <code>gcloud init</code>. This will guide you through the setup of your user locally, so you can use Google Cloud Platform via your local shell.</p>
</li>
<li>
<p>To start working with Kubernetes, you need to create a cluster and set the default cluster for <code>gcloud</code> and pass your cluster credentials to kubectl.</p>
</li>
</ol>
<pre><code class="language-sh"># creating the cluster
$ gcloud container clusters create CLUSTER_NAME
# setting the default cluster
$ gcloud config set container/cluster CLUSTER_NAME
# pass cluster credentials to kubectl
$ gcloud container clusters get-credentials CLUSTER_NAME
</code></pre>
<p>Test if it's successfully connected to the cluster:</p>
<pre><code class="language-sh"> $ kubectl get nodes
</code></pre>
<h2 id="handykubectlcommandsyoumightneedinthefuture">Handy kubectl commands you might need in the future</h2>
<h3 id="switchbetweengkeaks">Switch between GKE &amp; AKS</h3>
<p>Whenever you set up a connection to a cluster, <code>context</code> is created. Therefore, it doesn’t matter which cloud provider these clusters reside at. You can easily switch from one cluster to another and you don’t need to bother whether it is your local minikube, an azure, gcp, openshift, or any other cluster.</p>
<pre><code class="language-sh"># get available contexts
$ kubectl config get-contexts
# switch to one
$ kubectl config use-context CONTEXT_NAME
# get the current context
$ kubectl config view
# display the current context
$ kubectl config current-context
</code></pre>
<p>If don’t use zsh yet, I really recommend downloading it, and setting up one of the <a href="http://ohmyz.sh/">oh-my-zsh</a> themes. My personal favorite is the <a href="https://github.com/denysdovhan/spaceship-prompt">spaceship theme</a>. It is one of the themes that gives you information about the python/node/go version you are currently using, and the k8s context you are currently connected to. It looks something like this:</p>
<pre><code class="language-sh">14:40:29 in folder on  git_branch [?] on 🐳 docker_version at ☸️ kube_current_context
</code></pre>
<h2 id="moreongettingstartedwithkubernetes">More on getting started with Kubernetes</h2>
<p>That’s it for the first step of using Kubernetes. Feel free to reach out to me in the comment section in case you don’t understand something.</p>
<p>To learn more on how to handle services properly stay tuned for the next episode of our series, which will be about managing your cluster as a demilitarized zone, by having an API gatweay in front of it.</p>
<p><em>(PS: Feel free to ping us if your company needs help with Kubernetes at <code>info@risingstack.com</code>)</em></p>
</div>]]></content:encoded></item><item><title><![CDATA[Node v10 is Here - Feature Breakdown!]]></title><description><![CDATA[Let's take a look at the new features of Node.js v10, such as: HTTP2, ESM Modules, Error Codes, Fs Promises, the N-API & V8 6.6]]></description><link>https://blog.risingstack.com/node-js-10-lts-feature-breakdown/</link><guid isPermaLink="false">5adf19699ceaf30001d3e7e8</guid><category><![CDATA[The Node.js Community]]></category><category><![CDATA[Node.js Tutorials for Beginners]]></category><dc:creator><![CDATA[Tamas Kadlecsik]]></dc:creator><pubDate>Tue, 24 Apr 2018 13:00:42 GMT</pubDate><media:content url="https://blog.risingstack.com/content/images/2018/04/node-js-v10-feature-breakdown.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog.risingstack.com/content/images/2018/04/node-js-v10-feature-breakdown.png" alt="Node v10 is Here - Feature Breakdown!"><p>Node.js follows a release plan where every major release is cut from the master branch in every 6 months. In every October, new odd-numbered versions are cut and the latest even-numbered release transitions to the LTS plan. Each year’s April marks the date of the new even numbered release and today is the day when Node v10 is cut from the master.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/04/whats-new-in-node-js-10-risingstack.png" alt="Node v10 is Here - Feature Breakdown!"></p>
<p>Let’s take a look at the new features Node 10 brings!</p>
<h2 id="stablehttp2innode10">Stable HTTP/2 in Node 10</h2>
<p>The support for <a href="https://en.wikipedia.org/wiki/HTTP/2">HTTP/2</a> has landed in Node v8.4.0 as an experimental feature. With Node v10 the http2 module has become a stable addition to the Node core. You can use it on its own - see our post on <a href="https://blog.risingstack.com/node-js-http-2-push/">Node.js &amp; HTTP/2 Push here</a>.</p>
<p>HTTP/2 is a binary protocol that supports TCP multiplexing, which means that TCP handshakes have to be handled only once and the server can reuse an already existing connection to send the response of multiple requests through the same connection. It also supports server push, so when the browser requests an HTML file, you can send along the necessary JavaScript scripts and CSS stylesheets before the page is loaded and parsed. The browser realizes that it will need more round trips to requests all the necessary information to properly render the site.</p>
<p>There’s a catch, however, as browsers only support HTTP/2 over SSL. SSL termination is a CPU intensive task so it should be handled by the edge proxy. Nginx supports all the functionality HTTP/2 provides since its <a href="https://www.nginx.com/blog/nginx-1-13-9-http2-server-push/">1.13.9</a> release. It is a best practice to have an edge proxy in front of your Node server, so you can expose port 80 and 443 as you don’t want your Node process to run as superuser and this way you can setup HTTP push and TLS termination outside your server code.</p>
<p>If you use HTTP/2 in a microservices environment in a properly secured DMZ, you can expose your Node server directly - so you can enjoy all the benefits of HTTP/2 without any hassle straight from your Node process.</p>
<p>As of right now, you can use the HTTP2 module with hapi and koa out of the box. According to this <a href="https://github.com/expressjs/express/issues/2364">github issue</a> the <code>spdy</code> module has full HTTP/2 support so you can use that with express, or you can use the <a href="https://www.npmjs.com/package/express-http2-workaround"><code>express-http2-workaround</code></a> module if you feel adventurous.</p>
<p>Most of the examples you’ll find will tell you that you should use <code>http2.createSecureServer</code> but as we discussed above, you should let your edge proxy handle that.</p>
<h3 id="http2andexpress">HTTP/2 and express</h3>
<pre><code class="language-js">const express = require('express')
const spdy = require('spdy')

const app = express()

app.get('/', function (req, res) {
 res.send('Hello, World!')
})

spdy.createServer(options, app).listen(3000, err =&gt; {
 if (err) {
   throw new Error(err)
 }

 console.log('Listening on port: 3000.')
})
</code></pre>
<h3 id="http2andkoa">HTTP/2 and koa</h3>
<pre><code class="language-js">const http2 = require('http2');
const koa = require('koa');
const router = require('koa-route');
const fs = require('fs');

const app = koa();

app.use(router.get('/', async function (ctx, next) {
 ctx.body = 'Hello, World!';
 await next();
}));

http2
 .createServer({}, app.callback())
 .listen(3000, (err) =&gt; {
   if (err) {
     throw new Error(err);
   }

   console.log('Listening on port: 3000.');
});
</code></pre>
<h3 id="http2andhapi">HTTP/2 and Hapi</h3>
<pre><code class="language-js">const fs = require('fs')
const Hapi = require('hapi')
const http2 = require('http2')

const server = new Hapi.Server()
server.connection({
 listener: http2.createServer(),
 host: 'localhost',
 port: 3000
})

server.route({
 method: 'GET',
 path:'/hello',
 handler: function (request, reply) {
   return reply('Hello, World!')
 }
})

server.start((err) =&gt; {
 if (err) console.error(err)
 console.log(`Started ${server.connections.length} connections`)
})
</code></pre>
<h2 id="esmmodulesinnodejsv10">ESM Modules in Node.js v10</h2>
<p>While browsers were plagued by the fact that even though you can load multiple script files from HTML, those could not be considered as modules because all your objects lived in the global namespace. You could work this around using the <a href="https://addyosmani.com/resources/essentialjsdesignpatterns/book/#modulepatternjavascript">module pattern</a>, but it still wasn’t really convenient. With the advent of bundlers and ECMAScript Modules (ES Modules or ESM for short) this problem is somewhat mitigated, but not yet fully solved.</p>
<p>On the other hand, Node.js - being a server framework - came with a module system called CommonJS baked in from the very beginning.</p>
<p>The problem is that the two module systems are not compatible so the <a href="https://github.com/nodejs/modules">Modules Team</a> had to find a proper solution so JavaScript modules could be built in a platform agnostic way and could be used both in Node and in browsers.</p>
<p>Node.js v10 does not bring the full implementation of ESMs, but we will definitely see rapid iterations regarding the topic. To learn more about ES Modules read Dr. Axel Rauschmayer’s <a href="http://2ality.com/2014/09/es6-modules-final.html">excellent post</a>.</p>
<h2 id="errorcodes">Error Codes</h2>
<p>Before Node v10 the only way to match errors in <code>catch</code> clauses was to check for the error message.</p>
<pre><code class="language-js">try {
 // do stuff
} catch (err) {
 if (err.message === 'Expected error message') {
   // handle specific error
 } else {
   // general error handler
 }
}
</code></pre>
<p>The problem with this approach is that users can only match for the error message when handling errors. If there’s a typo in the error message, or you decide that it’s not descriptive enough, you need a major version bump as others depend on the exact string in your error message.</p>
<p>In Node.js v10 all errors thrown by the Node.js APIs have an error code as well, meaning you don’t need to match the error message that should be readable for humans to begin with.</p>
<p>So you can change your code to the following when you migrate to Node v10:</p>
<pre><code class="language-js">try {
 // do stuff
} catch (err) {
 if (err.code === 'ERR_ERROR_CODE') {
   // handle specific error
 } else {
   // general error handler
 }
}
</code></pre>
<p>To find out which specific error code you need to use, check the <a href="https://nodejs.org/dist/latest/docs/api/errors.html#errors_node_js_error_codes">documentation</a></p>
<p>You can read more about error codes <a href="https://medium.com/the-node-js-collection/node-js-errors-changes-you-need-to-know-about-dc8c82417f65">here</a></p>
<h2 id="experimentalfspromises">Experimental Fs promises</h2>
<p>Node.js v8 introduced <code>util.promisify</code> to easily wrap functions that provide a callback API. In the latest release functions of the <code>fs</code> return promises directly, eliminating the extra step and overhead of the old way.</p>
<h2 id="napiinnode10">N-API in Node 10</h2>
<p>Native modules have always been a pain point in Node.js, especially when switching versions. Before Node v8, native modules had to directly depend on the V8 / <a href="https://github.com/nodejs/nan">NAN</a> Apis. That caused a lack of API / ABI stability guarantees and forced native addon developers to update or at least recompile their code with every major release.</p>
<p>The N-API provides an abstraction layer over the V8 / NAN APIs so changes in those can be handled in a higher level layer, resulting in a more stable surface that native addon developers can use. So far it was an experimental feature, but it has been promoted to stable in Node v10, so it might be time to start experimenting and maybe migrating to it if you haven’t already done so.</p>
<p>The N-API is also a major stepping stone towards VM-diversity. Node.js originally ran only on Chrome’s V8, but lately it’s implementation on Microsoft’s <a href="https://github.com/Microsoft/ChakraCore">ChakraCore</a> is under development. By using the N-API, it is easier to create bindings for different VMs, so porting Node.js to other runtimes will be a lot easier than it is now. It will especially be useful for IoT developers, so soon you might be actually able to run Node.js on your fridge.</p>
<h2 id="v866sayhellotoasyncgeneratorsarrayperformanceimprovements">V8 6.6: Say hello to async generators &amp; array performance improvements</h2>
<p>Node.js is shipped with the V8 v6.6 that brings async generators and array performance improvements. <code>Array.reduce</code> has become 10 times faster for holey double arrays. The performance of async generators and async iteration has also been increased by a great margin.</p>
<p>The new release provides new JavaScript language features as well. The full list can be found <a href="https://v8project.blogspot.hu/">here</a></p>
<h2 id="whatsnextfornodejs">What’s next for Node.js?</h2>
<p>One thing is for sure, Node will keep on improving and the fine people behind it’s development are going to add even more features. If you’d like to keep track on what’s going to happen with Node 11.0.0 - I recommend to follow <a href="https://github.com/nodejs/Release/issues/328">this thread</a>.</p>
</div>]]></content:encoded></item><item><title><![CDATA[Yarn vs npm - which Node package manager to use in 2018?]]></title><description><![CDATA[Yarn vs npm : Let's take a look at the state of Node.js package managers in 2018. What's the difference? Should you use yarn or npm? What's the alternative?]]></description><link>https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers/</link><guid isPermaLink="false">5aa169b3678f76000103f096</guid><category><![CDATA[Node.js Tutorials for Beginners]]></category><category><![CDATA[npm & Node.js]]></category><dc:creator><![CDATA[Gergely Nemeth]]></dc:creator><pubDate>Tue, 17 Apr 2018 13:26:00 GMT</pubDate><media:content url="https://blog-assets.risingstack.com/2017/04/yarn-npm-node-js-package-managers.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog-assets.risingstack.com/2017/04/yarn-npm-node-js-package-managers.png" alt="Yarn vs npm - which Node package manager to use in 2018?"><p>With the v7.4 release, npm 4 became the bundled, default package manager for Node.js. In the meantime, Facebook released their own package manager solution, called Yarn. In this article we dive into what these package managers offer, what's the difference between them, and how they evolved.</p>
<p><strong>Let's take a look at the state of Node.js package managers and what they can do for you! I'll also try to help you to pick one between npm and yarn!</strong></p>
<h2 id="yarnornpmin2018whatsthedifference">Yarn or npm in 2018? What's the difference?</h2>
<p>Since the original publish date of the article (January, 2017), a lot has changed for npm and yarn too. Most importantly, with the <a href="http://blog.npmjs.org/post/161081169345/v500">release of npm 5</a>, <a href="https://docs.npmjs.com/files/package-lock.json">package-lock.json</a> was added to npm.</p>
<p>package-lock.json is automatically generated and updated for any operations where the npm cli modifies the node_modules directory, or the package.json file. In addition to that, every <code>npm install</code> automatically adds installed modules to both <code>package.json</code> and <code>package-lock.json</code> This file is meant to be committed into the version control you are using. With this feature, npm got feature parity with yarn, when it comes to lock file support.</p>
<p>At the same time, yarn started to address issues that companies using <a href="https://medium.com/@maoberlehner/monorepos-in-the-wild-33c6eb246cb9">mono repositories</a> ran into. Namingly, monorepos with multiple packages, each containing a <code>package.json</code> file. If you’d like to install dependencies for all of them with npm, that would include going over each directory and issuing <code>npm install</code> in all of them.</p>
<p>To help with this process, yarn introduced <a href="https://yarnpkg.com/blog/2017/08/02/introducing-workspaces/">workspaces</a>. In combination with <a href="https://github.com/lerna/lerna">Lerna</a>, it gives package authors a powerful toolset to manage the dependencies and of projects and also enables publishing to be a lot easier.</p>
<h3 id="whichpackagemanagertousein2018">Which package manager to use in 2018?</h3>
<p>If I’d start a project tomorrow, I would pick npm to manage dependencies, because:</p>
<ul>
<li>now it comes with lock file support,</li>
<li>it does not send package usage information to Facebook (yarn uses Facebook’s npm registry mirror)</li>
</ul>
<h4 id="updateregardingtheyarnregistry">Update regarding the Yarn registry</h4>
<p>We got contacted on Twitter by Burak Yiğit Kaya, working on the Yarn, adding relevant information to the registry Yarn uses. Here comes his tweet:</p>
<blockquote class="twitter-tweet" data-lang="en"><p lang="en" dir="ltr">This information is never shared with any <a href="https://twitter.com/facebook?ref_src=twsrc%5Etfw">@facebook</a> service since <a href="https://twitter.com/yarnpkg?ref_src=twsrc%5Etfw">@yarnpkg</a> is detached from Facebook and is under its own multi-company &amp; community org on GitHub.</p>&mdash; Burak Yiğit Kaya (@madbyk) <a href="https://twitter.com/madbyk/status/988795520805203969?ref_src=twsrc%5Etfw">April 24, 2018</a></blockquote>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
<p>Essentially, it means that Yarn does not maintain their registry, they are just pointing their domain to the original npm registry using Cloudflare. On Cloudflare, they can see usage statistics, and the Yarn client leverages Cloudflare's caches.</p>
<p>To clarify this, Yarn will add an FAQ section to their page.</p>
<h2 id="meettheyarnpackagemanageranewnpmalternative">Meet the Yarn package manager - a new npm alternative</h2>
<p>Fast, reliable and secure dependency management - this is the promise of Yarn, the new dependency manager created by the engineers of Facebook.</p>
<p>But can Yarn live up to the expectations?</p>
<img alt="Yarn vs npm - which Node package manager to use in 2018?" src="https://blog-assets.risingstack.com/2017/01/yarn-node-js-package-manager.png" width="300" style="width:300px; margin: 0 auto;">
<h3 id="installingyarn">Installing Yarn</h3>
<p>There are several ways of installing Yarn. If you have <code>npm</code> installed, you can just install Yarn with npm:</p>
<pre><code class="language-bash">npm install yarn --global
</code></pre>
<p>However, the recommended way by the Yarn team is to install it via your native OS package manager - if you are on a Mac, probably it will be <code>brew</code>:</p>
<pre><code class="language-bash">brew update
brew install yarn
</code></pre>
<h3 id="yarnunderthehood">Yarn Under the Hood</h3>
<p>Yarn has a lot of performance and security improvements under the hood. Let's see what these are!</p>
<h4 id="offlinecache">Offline cache</h4>
<p>When you install a package using Yarn (using <code>yarn add packagename</code>), it places the package on your disk. During the next install, this package will be used instead of sending an HTTP request to get the tarball from the registry.</p>
<p>Your cached module will be put into <code>~/.yarn-cache</code>, and will be prefixed with the registry name, and postfixed with the modules version.</p>
<p>This means that if you install the <code>4.4.5</code> version of <code>express</code> with Yarn, it will be put into <code>~/.yarn-cache/npm-express-4.4.5</code>.</p>
<h4 id="deterministicinstalls">Deterministic Installs</h4>
<p>Yarn uses <code>lockfiles</code> <em>(yarn.lock)</em> and a deterministic install algorithm. We can say goodbye to the &quot;but it works on my machine&quot; bugs.</p>
<p>The lockfile looks like something like this:</p>
<p><img src="https://blog-assets.risingstack.com/2017/01/yarn-lockfile-2.png" alt="Yarn vs npm - which Node package manager to use in 2018?"></p>
<p>It contains the exact version numbers of all your dependencies - just like with an npm shrinkwrap file.</p>
<div class="click-to-tweet">
    <p class="click-to-tweet-text">
        <a href="https://twitter.com/share?text=Yarn%20uses%20lockfiles%20%26%20deterministic%20install%20algorithm.%20Say%20goodbye%20to%20%E2%80%9Cbut%20it%20works%20on%20my%20machine%E2%80%9D%20bugs!%20%23nodejs;url=https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers" target="_blank">Yarn uses lockfiles & deterministic install algorithm. Say goodbye to “but it works on my machine” bugs! #nodejs</a>
    </p>
    <p class="click-to-tweet-button">
        <a href="https://twitter.com/share?text=Yarn%20uses%20lockfiles%20%26%20deterministic%20install%20algorithm.%20Say%20goodbye%20to%20%E2%80%9Cbut%20it%20works%20on%20my%20machine%E2%80%9D%20bugs!%20%23nodejs;url=https://blog.risingstack.com/yarn-vs-npm-node-js-package-managers" target="_blank" c="">Click To Tweet</a>
    </p>
</div>
<h4 id="licensechecks">License checks</h4>
<p>Yarn comes with a handy license checker, which can become really powerful in case you have to check the licenses of all the modules you depend on.</p>
<p><img src="https://blog-assets.risingstack.com/2017/01/yarn-license-ls-1.png" alt="Yarn vs npm - which Node package manager to use in 2018?"></p>
<h4 id="potentialissuesquestions">Potential issues/questions</h4>
<p>Yarn is still in its early days, so it’s no surprise that there are some questions arising when you start using it.</p>
<h5 id="whatsgoingonwiththedefaultregistry">What’s going on with the default registry?</h5>
<p>By default, the Yarn CLI uses a different registry, and not the original one: <code>https://registry.yarnpkg.com</code>. So far there is no explanation on why it does not use the same registry.</p>
<p>Does Facebook have plans to make incompatible API changes and split the community?</p>
<h5 id="contributingbacktonpm">Contributing back to npm?</h5>
<p>One the most logical questions that can come up when talking about Yarn is: Why don’t you talk with the CLI team at npm, and work together?</p>
<p>If the problem is speed, I am sure all npm users would like to get those improvements as well.</p>
<p>When we talk about deterministic installs, instead of coming up with a lockfile, the <code>npm-shrinkwrap.json</code> should have been fixed.</p>
<h2 id="npmthenodepackagemanagerweallknow">npm, the Node package manager we all know</h2>
<p>npm is the default package manager we all know, and it is bundled with each Node.js release since v7.4.</p>
<h3 id="updatingnpm">Updating npm</h3>
<p>To start using npm version 4, you just have to update your current CLI version:</p>
<pre><code class="language-bash">npm install npm -g
</code></pre>
<p>At the time of writing this article, this command will install <a href="https://github.com/npm/npm/blob/latest/CHANGELOG.md">npm version 4.1.1</a>, which was released on 12/11/2016. Let's see what changed in this version!</p>
<h4 id="changessinceversion3">Changes since version 3</h4>
<ul>
<li><code>npm search</code> is now reimplemented to stream results, and sorting is no longer supported,</li>
<li><code>npm scripts</code> no longer prepend the path of the node executable used to run npm before running scripts,</li>
<li><code>prepublish</code> has been deprecated - you should use <code>prepare</code> from now on,</li>
<li><code>npm outdated</code> returns 1 if it finds outdated packages,</li>
<li>partial shrinkwraps are no longer supported - the <code>npm-shrinkwrap.json</code> is considered a complete manifest,</li>
<li>Node.js 0.10 and 0.12 are no longer supported,</li>
<li><code>npm doctor</code>, which diagnose user's environment and let the user know some recommended solutions if they potentially have any problems related to npm</li>
</ul>
<h4 id="keychangesinnpm5">Key changes in npm 5!</h4>
<ul>
<li>With the <a href="http://blog.npmjs.org/post/161081169345/v500">release of npm 5</a>, <a href="https://docs.npmjs.com/files/package-lock.json">package-lock.json</a> was added to npm.</li>
</ul>
<p>As you can see, the team at npm was quite busy as well - both npm and Yarn made great progress in the past years.</p>
<h2 id="conclusionyarnornpm">Conclusion: Yarn or npm?</h2>
<p>It is great to see a new, open-source npm client - no doubt, a lot of effort went into making Yarn great!</p>
<p>Hopefully, we will see the improvements of Yarn incorporated into npm as well, so both users will benefit from the improvements of the others.</p>
<h4 id="yarnvsnpmwhichonetopick">Yarn vs. npm - Which one to pick?</h4>
<p>I would recommend to use npm to manage dependencies in 2018, because<br>
it has comes with lock file support &amp; does not send package usage information to Facebook (yarn uses Facebook’s npm registry mirror)</p>
<br>
</div>]]></content:encoded></item><item><title><![CDATA[RisingStack's Microservices & Kubernetes Trainings in New York!]]></title><description><![CDATA[RisingStack's Microservices & Kubernetes trainings will be organized in New York! Save the date: June 4-5 & June 7-8.]]></description><link>https://blog.risingstack.com/training-microservices-kubernetes-new-york/</link><guid isPermaLink="false">5ad07f049ceaf30001d3e7d2</guid><category><![CDATA[Node.js with Microservices]]></category><dc:creator><![CDATA[Ferenc Hámori]]></dc:creator><pubDate>Fri, 13 Apr 2018 10:37:47 GMT</pubDate><media:content url="https://blog.risingstack.com/content/images/2018/04/microservices-kubernetes-training-new-york.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog.risingstack.com/content/images/2018/04/microservices-kubernetes-training-new-york.png" alt="RisingStack's Microservices & Kubernetes Trainings in New York!"><p><strong>Hello folks, this is going to be a super-short announcement blogpost, so let's cut to the chase!</strong></p>
<p>The majority of our readers are from the USA, and lately we got a few emails about offering the <a href="https://risingstack.com/trainings">trainings we provide</a> in the States as well.</p>
<p>We decided to give it a go, so I'm glad to announce that on June 4-5 we're going to deliver our Microservices training, and on June 7-8, we're going to organize a Kubernetes training as well.</p>
<p>You can read more about these events here:</p>
<ul>
<li><a href="https://ti.to/risingstack/designing-microservice-architectures-new-york-2018">Designing Microservice Architectures (June 4-5)</a></li>
<li><a href="https://ti.to/risingstack/handling-microservices-with-kubernetes-new-york-2018">Handling Microservices with Kubernetes (June 7-8)</a></li>
</ul>
<p>In case you have questions, please ping us on <code>info@risingstack.com</code>.<br>
<em>We can also send you a document that contains the feedbacks from our previous trainings.</em></p>
<h2 id="aboutthemicroservicestraining">About the Microservices Training</h2>
<p><strong>Two days of training to master microservices.</strong></p>
<p>During the course of these two days we will cover a high level architectural overview of what is needed to design, develop and maintain an application built with microservices.</p>
<p>We will take an actual monolithic application and redesign it into a set of small, independent processes for better scaling and faster development.</p>
<p>As there are many pitfalls one might be led to following a naïve approach we will cover a lot of design principles.</p>
<h2 id="aboutthekubernetestraining">About the Kubernetes Training</h2>
<p><strong>Two days of training to master the usage one of the most popular container management platform, Kubernetes.</strong></p>
<p>During this two-day long course, we will cover the fundamentals needed to understand the open source Kubernetes ecosystem. You'll learn to operate scalable, fault-tolerant, distributed applications while keeping the infrastructure management easy.</p>
<p>During the training, we'll work with a microservices architecture and deploy the dockerized services into a Kubernetes cluster, set up application secrets, use load balancers, rate-limiters, take a look at some popular management tools and apply several design principles and best practices coming with microservices.</p>
<h2 id="inhousetrainingopportunity">In-house training opportunity!</h2>
<p>In case the dates we proposed won't work for you, or you'd like us to train your team and modify the workshops according to your needs, we're ready to work with you. Please contact us at <code>info@risingstack.com</code>!</p>
<p>Cheers,<br>
Ferenc</p>
</div>]]></content:encoded></item><item><title><![CDATA[Consumer Driven Contract Testing with Node.js & Pact]]></title><description><![CDATA[Become familiar with the concepts of contract testing and a small library called Pact to properly test your Node.js applications.]]></description><link>https://blog.risingstack.com/consumer-driven-contract-testing-with-node-js-pact/</link><guid isPermaLink="false">5acb4f969ceaf30001d3e7c9</guid><category><![CDATA[Advanced Node.js Tutorials]]></category><dc:creator><![CDATA[Andrea Papp]]></dc:creator><pubDate>Tue, 10 Apr 2018 14:04:38 GMT</pubDate><media:content url="https://blog.risingstack.com/content/images/2018/04/consumer-driven-contract-testing.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog.risingstack.com/content/images/2018/04/consumer-driven-contract-testing.png" alt="Consumer Driven Contract Testing with Node.js & Pact"><p><code>a.k.a. verification across service boundaries</code></p>
<p>Making sure that we're not breaking our clients' code is a real challenge in the world of APIs. As a full-stack software consultant working with growing microservice architectures I have to feel the pain of both the server and client. I'd like to present a clean way to make sure everyone stays happy, and things don't break (or at least we know ahead of time if they are). Those who watch my keynote will be familiar with the concepts of contract testing and will get to know a small library called Pact that can help integrating it into their current software development workflow.</p>
<iframe width="640" height="400" src="https://www.youtube.com/embed/1-PPN4IzluM" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<p>You can download Peter's presentation <a href="https://s3-eu-west-1.amazonaws.com/risingstack-resources/Peter-Czibik-RisingStack-Consumer-Driven-Contract-Testing-Node-Js-Pact.pdf">here</a>.</p>
<h3 id="topicsdiscussed">Topics discussed:</h3>
<ul>
<li>What <strong>types of tests</strong> can you use?</li>
<li>What are the pros and cons of each of them?</li>
<li>The importance of <strong>testing beyong borders</strong> (a.k.a. testing multiple codebases).
<ul>
<li><strong>Mocking</strong>: creating a mock object for testing for a single test case. Recommended library: Nock.</li>
<li>Using an <strong>instance of the upstream service</strong> - using other team's code to test different elements. It is trustworthy, however, it's often difficult to work with other team's code.</li>
</ul>
</li>
<li>Extra solution: <strong>Contract testing</strong> - by contract we are defining an interface. Both parties use the interface to test. Quick, stable, reliable.</li>
<li><strong>Consumer-driven contract testing</strong> with Pact with a Node.js code example. Peter goes through the steps of implementation with the clients.</li>
<li><strong>Pact</strong> - Implementation of a consumer driven contract test suite.</li>
</ul>
<p><img src="https://blog.risingstack.com/content/images/2018/04/node-js-budapest-meetup-risingstack.png" alt="Consumer Driven Contract Testing with Node.js & Pact"></p>
<h2 id="aboutnodebp">About NodeBP</h2>
<p>With the first rays of the spring sun, we thought it was about time to organize the <strong>first Node.js Meetup of 2018 in Budapest!</strong></p>
<p>The meetup took place on the 27th of March at the LogMeIn office space - with over 80 attendees. There were two presentations; one by our <em>senior engineer</em>, <strong>Peter Czibik</strong>, <a href="https://community.risingstack.com/node-js-devops-101/">the other  by <strong>Szabolcs Szabolcsi-Tóth</strong>, <em>Senior engineer at IBM</em>.</a></p>
<p>There was a friendly get-together in Anker Club after the meetup, where attendees could network, and discuss any topics next to a beer.  Nice atmosphere, nice people, nice beer - could we ask for more?</p>
<h3 id="checkoutthephotosofthemeetup">Check out the photos of the meetup</h3>
<p><img src="https://blog.risingstack.com/content/images/2018/04/IMG_3175.jpg" alt="Consumer Driven Contract Testing with Node.js & Pact"></p>
<p><img src="https://blog.risingstack.com/content/images/2018/04/IMG_3184.jpg" alt="Consumer Driven Contract Testing with Node.js & Pact"></p>
<p><img src="https://blog.risingstack.com/content/images/2018/04/IMG_3183.jpg" alt="Consumer Driven Contract Testing with Node.js & Pact"></p>
<p><img src="https://blog.risingstack.com/content/images/2018/04/IMG_3181.jpg" alt="Consumer Driven Contract Testing with Node.js & Pact"></p>
<p><img src="https://blog.risingstack.com/content/images/2018/04/IMG_3178.jpg" alt="Consumer Driven Contract Testing with Node.js & Pact"></p>
<p><img src="https://blog.risingstack.com/content/images/2018/04/IMG_3172.jpg" alt="Consumer Driven Contract Testing with Node.js & Pact"></p>
<p>Do you have any questions? Let Peter know in the comment section below.</p>
</div>]]></content:encoded></item><item><title><![CDATA[The History of React.js on a Timeline]]></title><description><![CDATA[The History of React.js on a timeline: 2010-2018.
The most significant milestones of its creation and development over the past 8 years.]]></description><link>https://blog.risingstack.com/the-history-of-react-js-on-a-timeline/</link><guid isPermaLink="false">5ab92f049ceaf30001d3e7a9</guid><category><![CDATA[react.js]]></category><dc:creator><![CDATA[Andrea Papp]]></dc:creator><pubDate>Wed, 04 Apr 2018 13:19:57 GMT</pubDate><media:content url="https://blog.risingstack.com/content/images/2018/04/the-history-of-reactjs-on-a-timeline.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog.risingstack.com/content/images/2018/04/the-history-of-reactjs-on-a-timeline.png" alt="The History of React.js on a Timeline"><p>The appearance of React.js dramatically widened the opportunities for front-end developers in creating user-friendly interfaces.</p>
<p>To show its unique features, we’ve been publishing a lot about React.js. Moreover, our excellent front-end expert, Miklos Bertalan has started a <a href="https://blog.risingstack.com/building-react-app-from-scratch-live-stream/">series of live streams</a> where he shows how to build React apps on a <a href="https://blog.risingstack.com/free-local-api-server-nodejs/">free, locally hosted server</a> - created by another brilliant engineer at Risingstack, Robert Czinege.</p>
<p>To have a better understanding of React, let’s have a sneak peek at how everything started. I have collected the most significant milestones in the history of React, which you’ll be able to see in this timeline below.</p>
<h2 id="theneedforabettercode">The need for a better code</h2>
<p>Back in 2011, the developers at Facebook started to face some issues with code maintenance. As the Facebook Ads app got an increasing number of features, the team needed more people to keep it running flawlessly. The growing number of team-members and app-features slowed them down as a company. Over time, their app became difficult to handle, as they faced a lot of cascading updates.</p>
<p>After a while, engineers at Facebook couldn’t keep up with these cascading updates. Their code demanded an urgent upgrade to become more efficient.</p>
<p>They had the model right, but they needed to do something about user experience. So, Jordan Walke built a prototype that made the process more efficient, and this marks the birth of React.js.<br>
(<a href="https://www.youtube.com/watch?v=KVZ-P-ZI6W4&amp;t=0s&amp;list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr&amp;index=1">source</a>)</p>
<h2 id="letslookatthehistoryofreactjsonatimeline">Let's look at the history of React.js on a timeline</h2>
<p>From 2010 until now (March 2018):</p>
<iframe src="https://cdn.knightlab.com/libs/timeline3/latest/embed/index.html?source=16Khs43YDBSpoiq23SFEExAA2kzOsa7hri-MWw2QC940&font=Default&lang=en&initial_zoom=2&height=650" width="100%" height="650" webkitallowfullscreen="" mozallowfullscreen="" allowfullscreen frameborder="0"></iframe>
<p><em>We got a feedback that certain dates were incorrect in our timeline: React was open sourced in May, during the JS ConfUS 2013, and React London 2014 was held on April 7-9. Now, we have updated our timeline. Please, if you find any other inaccuracies, do let us know in the comment section below or on Twitter.</em></p>
<p><strong>2010 - The first signs of React</strong></p>
<ul>
<li><a href="https://www.facebook.com/notes/facebook-engineering/xhp-a-new-way-to-write-php/294003943919/">Facebook introduced xhp into its php stack</a> and open sourced it.<br>
Xhp allowed creating composite components. They introduced this syntax later in React.</li>
</ul>
<p><strong>2011 - An early prototype of React</strong></p>
<ul>
<li>Jordan Walke created <a href="https://github.com/jordwalke/FaxJs">FaxJS</a>, the early prototype of React - shipped a search element on Facebook.</li>
</ul>
<p><strong>2012 - Something new had started at Facebook</strong></p>
<ul>
<li>Facebook Ads became hard to manage, so Facebook needed to come up with a good solution for it. Jordan Walke worked on the prototype and created React.</li>
<li>April 9: <a href="http://money.cnn.com/2012/04/09/technology/facebook_acquires_instagram/index.htm">Instagram was acquired by Facebook.</a><br>
Instagram wanted to adopt Facebook’s new technology. By this, Facebook had a pressure to decouple React from Facebook and make it open-sourceable. Most of this was done by Pete Hunt.</li>
<li>Sept 8-12: <a href="https://techcrunch.com/2012/09/11/mark-zuckerberg-our-biggest-mistake-with-mobile-was-betting-too-much-on-html5/">TechCrunch Disrupt San Francisco</a>, Mark Zuckerberg: &quot;Our Biggest Mistake Was Betting Too Much On HTML5&quot;. He promised that Facebook would deliver better mobile experiences very soon.</li>
</ul>
<p><strong>2013 - The year of the Big Launch</strong></p>
<ul>
<li>May 29-31: JS ConfUS. <a href="https://www.youtube.com/watch?v=GW0rj4sNH2w">Jordan Walke introduced React</a>. <strong>React gets open sourced</strong>. <br><em>Fun Fact: The audience was skeptical. Most people thought React was a huge step backward. This happened as mostly 'early adopters' attended this conference, however, React targeted 'innovators.' The creators of React realized this mistake on time, and decided to start a 'React tour' later on to turn haters into advocates.</em></li>
<li>June 2: React (by Facebook) <a href="https://twitter.com/jsfiddle/status/341114115781177344?ref_src=twsrc%5Etfw&amp;ref_url=https%3A%2F%2Freactjs.org%2Fblog%2F2013%2F06%2F02%2Fjsfiddle-integration.html">is available on JSFiddle</a></li>
<li>July 30: <a href="https://reactjs.org/blog/2013/07/30/use-react-and-jsx-in-ruby-on-rails.html">React and JSX in available in Ruby on Rails</a></li>
<li>August 19: <a href="https://reactjs.org/blog/2013/08/19/use-react-and-jsx-in-python-applications.html">React and JSX available in Python Applications</a></li>
<li>Sept 14-15: JSConfEU 2013. Pete Hunt's speech of <a href="https://www.youtube.com/watch?v=x7cQ3mrcKaY">rethinking best practices</a>.</li>
<li>Dec 17: David Nolen <a href="http://swannodette.github.io/2013/12/17/the-future-of-javascript-mvcs">Introduces OM, based on React</a>. Explains how React is awesome - which reached early adopters. This article showed how React is better than the other alternatives out there, which boosted the acknowledgement of React.</li>
</ul>
<p><strong>2014 - The year of Expansion</strong></p>
<p>React had gradually gained its reputation and started to go through to 'early majority' of its potential users. At this point, they needed a new message instead of solely relying on its technical benefits, and it is: how is React stable? By focusing on this, they aimed to appeal to enterprises, like Netflix.</p>
<ul>
<li>Early 2014: #reactjsworldtour conferences started, to build community and to 'turn haters into advocates'.</li>
<li>Jan 2: <a href="https://reactjs.org/blog/2014/01/02/react-chrome-developer-tools.html">React Developer Tools</a> becomes an extension of the Chrome Developer Tools.</li>
<li>February: Atom was introduced - A hackable text editor for the 21st Century</li>
<li>April 7-9: <a href="http://reactconf.org/2014/london/">React London 2014</a></li>
<li>June: <a href="http://reactivex.io/intro.html">ReactiveX.io</a> emerged.</li>
<li>July 13: The Release of <a href="https://github.com/gaearon/react-hot-loader">React Hot Loader</a>. React Hot Loader is a plugin that allows React components to be live reloaded without the loss of state.</li>
<li>Dec 12: <a href="https://facebook.github.io/planout/blog/planout-language.html">PlanOut</a>: A language for online experiments. The release of PlanOut 0.5, which includes a React-based PlanOut language editor, and brings the interpreter into feature-parity with the latest version of PlanOut used internally at Facebook.</li>
</ul>
<p><strong>2015 - React is Stable</strong></p>
<ul>
<li>Early 2015: Flipboard releases <a href="https://github.com/Flipboard/react-canvas">React Canvas</a>.</li>
<li>January: <a href="https://medium.com/netflix-techblog/netflix-likes-react-509675426db">Netflix likes React</a></li>
<li>Early 2015: Airbnb uses React</li>
<li>January 28-29: React.js Conf 2015 - Facebook released the <a href="https://www.youtube.com/watch?v=KVZ-P-ZI6W4&amp;t=0s&amp;list=PLb0IAmt7-GS1cbw4qonlQztYV1TAW0sCr&amp;index=1">first version of React Native </a>for the React.js Conf 2015 during a technical talk.</li>
<li>February: <a href="https://reactjs.org/blog/2015/02/20/introducing-relay-and-graphql.html">Introducing Relay and GraphQL</a> at React.js Conf.</li>
<li>March 25: Facebook announced that <a href="https://code.facebook.com/posts/754869551286944/f8-big-technology-bets-and-open-source-announcements/">React Native for iOS is open and available on GitHub</a>.</li>
<li>June 2: Redux was released by Dan Abramov and Andrew Clark.</li>
<li>Sept 2: The first stable version of the new <a href="https://reactjs.org/blog/2015/09/02/new-react-developer-tools.html">React Developer Tools</a> launched.</li>
<li>Sept 14: <a href="https://code.facebook.com/posts/1189117404435352/">React Native for Android</a> was released.</li>
</ul>
<p><strong>2016 - React gets mainstream</strong></p>
<ul>
<li>March: The introduction of <a href="https://mobx.js.org/index.html">Mobx</a></li>
<li>February 22-23: <a href="https://www.youtube.com/watch?v=MGuKhcnrqGA&amp;list=PLb0IAmt7-GS0M8Q95RIc2lOM6nc77q1IY&amp;t=0s&amp;index=1">React.js Conf 2016</a>, San Francisco</li>
<li><a href="https://www.youtube.com/watch?time_continue=3&amp;v=feUYwoLhE_4">Draft.js was introduced</a> at React.js Conf by Isaac Salier-Hellendag</li>
<li>March: The introduction of <a href="https://storybook.js.org/">React Storybook</a></li>
<li>June 2-3: <a href="https://2016.react-europe.org/">ReactEurope 2016</a></li>
<li>July 11: Introducing React's <a href="https://reactjs.org/blog/2016/07/11/introducing-reacts-error-code-system.html">Error Code System</a>.</li>
<li>November: the introduction of <a href="http://blueprintjs.com/">Blueprint</a> – A React UI toolkit for the web</li>
</ul>
<p><strong>2017 - The year of further improvements</strong></p>
<ul>
<li>Early 2017: Airbnb introduces their new open source library <a href="https://airbnb.design/painting-with-code/">React Sketch.app</a></li>
<li>Apr 19: <a href="https://code.facebook.com/posts/1005990452878946/facebook-open-source-at-f8-2017/">React Fiber</a> gets open sourced at F8 2017.</li>
<li>Sept: <a href="https://code.facebook.com/posts/300798627056246/relicensing-react-jest-flow-and-immutable-js/">Relicensing React, Jest, Flow, and Immutable.js</a></li>
<li>Sept 26: <a href="https://reactjs.org/blog/2017/09/26/react-v16.0.html">React 16: error boundaries, portals, fragments and the Fiber architecture</a></li>
<li>October: <a href="https://twitter.com/NetflixUIE/status/923374215041912833">Netflix removes client-side React.js</a></li>
<li>November 28: React v16.2.0: <a href="https://github.com/facebook/react/releases/tag/v16.2.0">Improved Support for Fragments</a></li>
</ul>
<p><strong>2018 - What is now?</strong></p>
<ul>
<li>March 1-2: <a href="https://2018.jsconf.is/">JSConf Iceland</a> - <a href="https://reactjs.org/blog/2018/03/01/sneak-peek-beyond-react-16.html">Beyond React 16 by Dan Abramov</a></li>
<li>2018 March 29: <a href="https://reactjs.org/blog/2018/03/29/react-v-16-3.html">React 16.3.0</a> was released.</li>
</ul>
<h2 id="whatsnext">What's next?</h2>
<p>This journey has been fun so far, but there is certainly a lot more to learn about React. With this in mind, we decided to host a <a href="https://ti.to/risingstack/modern-front-end-with-react-warsaw-2018">React Training in Warsaw, on June 21-22</a>. If you are considering to deepen your React knowledge, don't hesitate to join us there.</p>
<p>Did I miss anything from the list? Or did you find any inaccuracies? Leave a comment below or find us on Twitter and let us know.</p>
</div>]]></content:encoded></item><item><title><![CDATA[Building a React App from Scratch]]></title><description><![CDATA[I bootstrapped the app with Create React App and made a few pages with Material-UI and my own React stack, which will be open-sourced soon.]]></description><link>https://blog.risingstack.com/building-react-app-from-scratch-live-stream/</link><guid isPermaLink="false">5aa169f9678f76000103f2b7</guid><category><![CDATA[React.js Tutorials]]></category><dc:creator><![CDATA[Bertalan Miklos]]></dc:creator><pubDate>Wed, 04 Apr 2018 11:40:00 GMT</pubDate><media:content url="https://blog.risingstack.com/content/images/2018/04/building-a-reactjs-app-from-scratch.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog.risingstack.com/content/images/2018/04/building-a-reactjs-app-from-scratch.png" alt="Building a React App from Scratch"><p>My colleague - Robert - made a <a href="https://blog.risingstack.com/free-local-api-server-nodejs/">super simple local API server</a> for front-end junkies. You can fire it up with a single command and use it to learn client-side frameworks by building apps with them. The server has several endpoints, authentication and an <a href="https://freebieapiserver.docs.apiary.io/#reference/user-registration-and-login/log-in">awesome docs page</a> to let you really focus on the client-side.</p>
<p><strong>I decided to build a React app for the API and live stream the process.</strong></p>
<p>In the first episode I bootstrapped the app with <a href="https://github.com/facebook/create-react-app">Create React App</a> and made a few pages with <a href="http://www.material-ui.com/#/">Material-UI</a> and my own React stack, which will be open-sourced soon.</p>
<p>You can watch the video here:</p>
<iframe width="640" height="400" src="https://www.youtube.com/embed/1A2kOyey6x8?rel=0" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<p>(It was my first stream so the audio wasn't perfect - I know. :) The next ones were shot with a better gear!)</p>
<p><strong>In the second episode, I continued with authentication, UX and offline optimization.:</strong></p>
<iframe width="640" height="400" src="https://www.youtube.com/embed/2LKHVyaYVp4?start=1608" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<p>I also got inspired by <a href="https://www.youtube.com/watch?v=v6iR3Zk4oDY">Dan Abramov's suspense demo</a> to do something similar in the following stream</p>
<p><strong>In the third episode I covered form handling and authentication.</strong></p>
<iframe width="640" height="400" src="https://www.youtube.com/embed/-IiIz8HwRME" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<p><strong>Then, in the fourth episode I revisited protected routes, implemented snackbar notifications and made some subtle UX optimizations.</strong></p>
<iframe width="640" height="400" src="https://www.youtube.com/embed/DOnvYCpaZ4k" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<p><strong>In the fifth episode I added the final touches to turn the app into an offline-first mobile friendly Progressive Web App.</strong> Check it out:</p>
<iframe width="640" height="400" src="https://www.youtube.com/embed/OLKHzPSInTA" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
<p>Would you like to know more about React? We will host a <strong>'Modern Front-End with React'</strong> training in Warsaw, on June 21-22. If you are considering to deepen your React knowledge, don't hesitate to join us there.</p>
<p>Bests,<br>
Berci</p>
</div>]]></content:encoded></item><item><title><![CDATA[EU Citizens - Let's Save Code Share!]]></title><description><![CDATA[The European Parliament is getting ready to vote a "Copyright Reform" package which undermines the foundations of Free, Open-Source-Software.]]></description><link>https://blog.risingstack.com/eu-citizens-lets-save-code-share/</link><guid isPermaLink="false">5aba25309ceaf30001d3e7ab</guid><category><![CDATA[The Node.js Community]]></category><dc:creator><![CDATA[Tamas Kadlecsik]]></dc:creator><pubDate>Tue, 27 Mar 2018 13:14:34 GMT</pubDate><media:content url="https://blog.risingstack.com/content/images/2018/03/save-code-share-risingstack.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog.risingstack.com/content/images/2018/03/save-code-share-risingstack.png" alt="EU Citizens - Let's Save Code Share!"><p>Listen up EU citizens!</p>
<p>Copyright laws are ambivalent, often abused constructs (just think about <a href="https://en.wikipedia.org/wiki/Copyright_troll">copyright-trolling</a>) that have crippled creativity and the general progress of humanity in the past ~150 years.</p>
<p><strong>You should know that the European Parliament is getting ready to vote a &quot;Copyright Reform&quot; package which fundamentally undermines the foundations upon which Free, Open-Source-Software is built.</strong></p>
<p>It’s time that we take action in the form of <a href="https://savecodeshare.eu/">signing an open-letter</a> &amp; alerting our own <a href="http://www.europarl.europa.eu/committees/en/juri/members.html">EP representatives</a>!</p>
<p><img src="https://blog.risingstack.com/content/images/2018/03/save-code-share-signers-risingstack.png" alt="EU Citizens - Let's Save Code Share!"></p>
<h2 id="theharmfullegislationinshort">The harmful legislation in short:</h2>
<p>All materials that are uploaded to media sharing sites (including code) will have to go through <a href="https://re-publica.com/en/session/stop-censorship-machines-how-can-we-prevent-mandatory-upload-filters-eu">“censorship machines”</a>. If these filters detect any copyright infringement, the upload has to be denied. These filters are usually flawed, generating lots of false positives, not to mention that <strong>upload filtering</strong> is a form of surveillance and restricts the right to free speech.</p>
<p>All in all, <strong>this would make the use of code sharing platforms such as GitHub and Bitbucket so cumbersome that quite possibly most users would need to stop coordinating and hosting their codebase at these sites.</strong></p>
<p>If the legislation gets passed, developers might have to manage their own code sharing platform, while always being on guard so no-one can use any copyrighted, or not properly licensed material while working on the software.</p>
<p><strong>This could potentially mean the end of Free, Open-Source-Software in Europe.</strong></p>
<p>You can read more about how this legislation would affect code sharing on <a href="https://blog.github.com/2018-03-14-eu-proposal-upload-filters-code/">GitHub</a>. Moreover, it also <a href="https://juliareda.eu/eu-copyright-reform/">harms the scientific community</a>.</p>
<h2 id="whatcanyoudo">What can you do?</h2>
<ul>
<li>Sign the <a href="https://savecodeshare.eu/">open letter</a> of the Free Software Foundation Europe!</li>
<li>Get in touch with your <a href="http://www.europarl.europa.eu/committees/en/juri/members.html">EP representative</a>, and try to explain them how badly this legislation can effect the Economy and freedom of the EU and your country alike. You can use a tool to call your EP representative such as Mozilla’s <a href="https://changecopyright.org/en-US/">ChangeCopyright.org</a>.</li>
</ul>
<div class="click-to-tweet">
    <p class="click-to-tweet-text">
        <a href="https://twitter.com/share?text=Let%60s%20save%20free%20speech%2C%20save%20privacy%2C%20save%20Code%20Share!%20%23SaveCodeShare;url=https://blog.risingstack.com/eu-citizens-lets-save-code-share" target="_blank">Let`s save free speech, save privacy, save Code Share! #SaveCodeShare</a>
    </p>
    <p class="click-to-tweet-button">
        <a href="https://twitter.com/share?text=Let%60s%20save%20free%20speech%2C%20save%20privacy%2C%20save%20Code%20Share!%20%23SaveCodeShare;url=https://blog.risingstack.com/eu-citizens-lets-save-code-share" target="_blank" c="">Click To Tweet</a>
    </p>
</div>
<p>Cheers,<br>
Tamas - CEO of RisingStack</p>
</div>]]></content:encoded></item><item><title><![CDATA[History of Node.js on a Timeline]]></title><description><![CDATA[A look back at what exactly happened to Node.js so far, from the point where it was born. The history of Node.js on a timeline: 2009-2018]]></description><link>https://blog.risingstack.com/history-of-node-js/</link><guid isPermaLink="false">5aa169ee678f76000103f252</guid><category><![CDATA[Node.js Tutorials for Beginners]]></category><category><![CDATA[The Node.js Community]]></category><dc:creator><![CDATA[Gergely Nemeth]]></dc:creator><pubDate>Wed, 21 Mar 2018 14:00:00 GMT</pubDate><media:content url="https://risingstack-blog.s3.amazonaws.com/2016/Jul/node_js_timeline-1467979684014.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://risingstack-blog.s3.amazonaws.com/2016/Jul/node_js_timeline-1467979684014.png" alt="History of Node.js on a Timeline"><p>We’ve been publishing <a href="https://blog.risingstack.com/">articles on Node.js</a> for over 4 years now, so we thought it’d be interesting to look back at what exactly happened to Node.js so far, from the point where it was born until Today.</p>
<p>In case we missed something significant, please let us know in the comments section!</p>
<p><strong>This is the history of Node.js on a timeline, from 2009 until now (March 2018)</strong>:</p>
<iframe src="https://cdn.knightlab.com/libs/timeline3/latest/embed/index.html?source=1rt8Xqpno-s7oNFCEKMYHoJexw24DIUcSkTABx2avcV8&font=Default&lang=en&initial_zoom=2&height=650" width="100%" height="650" frameborder="0"></iframe>
<h2 id="nodejsmilestones">Node.js milestones:</h2>
<h3 id="nodejsin2009">Node.js in 2009</h3>
<ul>
<li><a href="https://github.com/nodejs/node-v0.x-archive/commit/19478ed4b14263c489e872156ca55ff16a07ebe0">Node.js now has a name</a></li>
<li><a href="https://groups.google.com/forum/?hl=en#!topic/nodejs/erDWyS4xPw8">First very early preview of npm, the Node package manager</a></li>
<li><a href="https://www.youtube.com/watch?v=ztspvPYybIY">Ryan Dahl's  (Creator of Node.js) Original Node.js Talk</a></li>
<li>The first presentation on Node.js from Ryan Dahl at JSConf</li>
</ul>
<hr>
<h3 id="nodejsin2010">Node.js in 2010</h3>
<ul>
<li><a href="http://expressjs.com/">Express: A Node.js web development framework</a></li>
<li><a href="http://socket.io/">Socket.io initial release</a></li>
<li><a href="https://blog.heroku.com/archives/2010/4/28/node_js_support_experimental">Experimental Node.js Support on Heroku</a></li>
<li><a href="https://www.youtube.com/watch?v=F6k8lTrAE2g">Ryan Dahl's Google Tech Talk on Node.js</a></li>
<li><a href="https://groups.google.com/forum/#!topic/nodejs/wEDF_X12HVc">Node.js 0.2.0 released</a></li>
</ul>
<hr>
<h3 id="nodejsin2011">Node.js in 2011</h3>
<ul>
<li><a href="http://nodeguide.com/">Node.js Guide</a></li>
<li><a href="https://www.reddit.com/r/node/comments/h1m2o/i_am_ryan_dahl_creator_of_nodejs_ama/">Ryan Dahl's AMA on Reddit</a></li>
<li><a href="https://nodejs.org/en/blog/npm/npm-1-0-released/"><a href="https://nodejs.org/en/blog/npm/npm-1-0-released/">npm 1.0: Released</a></a></li>
<li><a href="http://nodebeginner.org/index.html">The Node Beginner Book, an introduction to Node.js, is now complete</a></li>
<li>A comprehensive Node.js tutorial for beginners.</li>
<li><a href="http://venturebeat.com/2011/08/16/linkedin-node/">LinkedIn uses Node.js</a></li>
<li>LinkedIn launched its completely overhauled mobile app with new features and new parts under the hood.</li>
<li><a href="https://www.youtube.com/watch?v=SAc0vQCC6UQ">Ryan Dahl talks about the history of Node.js and why he created it</a></li>
<li><a href="https://www.joyent.com/developers/videos/node-js-office-hours-curtis-chambers-uber">Node.js in production at Uber</a></li>
<li>Uber Engineering Manager Curtis Chambers explains why his company<br>
completely re-engineered their application using Node.js to increase<br>
efficiency and improve the partner and customer experience.</li>
</ul>
<hr>
<h3 id="nodejsin2012">Node.js in 2012</h3>
<ul>
<li><a href="https://groups.google.com/forum/#!topic/nodejs/hfajgpvGTLY">Node.js creator Ryan Dahl steps away from Node’s day-to-day</a></li>
<li><a href="https://nodejs.org/en/blog/release/v0.8.0/">Node.js v0.8.0 [stable] is out</a></li>
<li><a href="http://hueniverse.com/2012/12/20/hapi-a-prologue/">Hapi, a Node.js framework</a></li>
</ul>
<hr>
<h3 id="nodejsin2013">Node.js in 2013</h3>
<ul>
<li><a href="https://ghost.org/">Ghost: Blogging with Node.js</a></li>
<li>Ghost is an open source publishing platform which is beautifully designed,<br>
easy to use, and free for everyone.</li>
<li><a href="http://blog.mongodb.org/post/49262866911/the-mean-stack-mongodb-expressjs-angularjs-and">The MEAN Stack: MongoDB, ExpressJS, AngularJS and Node.js</a></li>
<li><a href="http://www.ebaytechblog.com/2013/05/17/how-we-built-ebays-first-node-js-application/">How We Built eBay’s First Node.js Application</a></li>
<li><a href="http://www.joyent.com/blog/walmart-node-js-memory-leak">Node.js Memory Leak at Walmart</a></li>
<li>Eran Hammer of Wal-Mart labs came to the Node.js core team<br>
complaining of a memory leak he had been tracking down for months.</li>
<li><a href="http://krakenjs.com/">PayPal releases Kraken, a Node.js framework</a></li>
<li>&quot;Gives your Node.js express apps some extra arms&quot;</li>
<li><a href="http://koajs.com/">Koa - Web framework for Node.js</a></li>
</ul>
<hr>
<h3 id="nodejsin2014">Node.js in 2014</h3>
<ul>
<li><a href="https://nodejs.org/en/blog/uncategorized/tj-fontaine-new-node-lead/">TJ Fontaine takes over Node project</a></li>
<li><a href="https://www.joyent.com/blog/node-js-advisory-board">Node.js Advisory Board</a></li>
<li>Joyent and several members of the Node.js community announced a<br>
proposal for a Node.js Advisory Board as a next step towards a fully open<br>
governance model for the Node.js open source project.</li>
<li><a href="http://techblog.netflix.com/2014/11/nodejs-in-flames.html">Node.js in Flame Graphs - Netflix</a></li>
<li><a href="https://iojs.org">IO.js – Evented I/O for V8 Javascript</a></li>
</ul>
<hr>
<h3 id="nodejsin2015">Node.js in 2015</h3>
<blockquote>
<p><strong>Q1</strong></p>
</blockquote>
<ul>
<li><a href="https://github.com/nodejs/node/commit/b82bb600370db7207a39e53329af228f6af3ffa1">IO.js 1.0.0</a></li>
<li><a href="http://www.joyent.com/about/press/joyent-moves-to-establish-nodejs-foundation">Joyent Moves to Establish Node.js Foundation</a></li>
<li>Joyent, IBM, Microsoft, PayPal, Fidelity, SAP and The Linux Foundation Join<br>
Forces to Support Node.js Community With Neutral and Open Governance</li>
<li><a href="https://github.com/nodejs/node/issues/978">IO.js and Node.js reconciliation proposal</a></li>
</ul>
<blockquote>
<p><strong>Q2</strong></p>
</blockquote>
<ul>
<li><a href="https://www.npmjs.com/private-modules">npm Private Modules</a></li>
<li><a href="http://venturebeat.com/2015/05/08/node-lead-tj-fontaine-is-stepping-down-and-leaving-joyent-too/">Node lead TJ Fontaine is stepping down and leaving Joyent</a></li>
<li>A changing of the guard in Nodeland.</li>
<li><a href="https://github.com/nodejs/node/issues/1664#issuecomment-101828384">Node.js and io.js are merging under the Node Foundation</a></li>
</ul>
<blockquote>
<p><strong>Q3</strong></p>
</blockquote>
<ul>
<li><a href="https://medium.com/node-js-javascript/4-0-is-the-new-1-0-386597a3436d#.pjnzem4ar">4.0 is the new 1.0</a></li>
</ul>
<blockquote>
<p><strong>Q4</strong></p>
</blockquote>
<ul>
<li><a href="https://nodejs.org/en/blog/release/v4.2.0/">Node v4.2.0, first Long Term Support release</a></li>
<li><a href="https://finance.yahoo.com/news/apigee-risingstack-yahoo-join-node-170000939.html">Apigee, RisingStack and Yahoo</a>  join the Node.js Foundation</li>
<li><a href="http://events.linuxfoundation.org/events/node-interactive/">Node Interactive</a></li>
<li>The first annual Node.js conference by the Node.js Foundation</li>
</ul>
<h3 id="nodejsin2016">Node.js in 2016</h3>
<p>A.k.a. The year of Leftpad!</p>
<blockquote>
<p><strong>Q1</strong></p>
</blockquote>
<ul>
<li><a href="https://nodejs.org/en/blog/announcements/foundation-express-news/">Express becomes an incubated project</a></li>
<li><a href="http://blog.npmjs.org/post/141577284765/kik-left-pad-and-npm">The leftpad incident</a></li>
<li><a href="https://nodejs.org/en/blog/announcements/welcome-google/">Google Cloud Platform joins the Node.js Foundation </a></li>
</ul>
<blockquote>
<p><strong>Q2</strong></p>
</blockquote>
<ul>
<li><a href="http://blog.npmjs.org/post/143451680695/how-many-npm-users-are-there">npm has 210.000 users</a></li>
</ul>
<blockquote>
<p><strong>Q3</strong></p>
</blockquote>
<ul>
<li><a href="http://blog.npmjs.org/post/147604242320/npm-has-a-new-cto">CJ Silverio becomes the CTO of npm</a></li>
<li><a href="https://medium.com/@nodejs/news-from-the-node-js-ecosystem-6141bb3b2f10">The first Node Interactive in Europe</a></li>
</ul>
<blockquote>
<p><strong>Q4</strong></p>
</blockquote>
<ul>
<li><a href="https://code.facebook.com/posts/1840075619545360">The yarn package manager got released</a></li>
<li><a href="https://www.youtube.com/watch?v=HxGt_3F0ULg&amp;list=PLfMzBWSH11xYaaHMalNKqcEurBH8LstB8">Node Interactive North America in Austin, Texas</a></li>
<li><a href="https://hackernoon.com/node-js-v6-transitions-to-lts-be7f18c17159#.qxi5pfoss">Node.js 6 becomes the LTS version</a></li>
<li><a href="https://medium.com/the-node-js-collection/ibm-intel-microsoft-mozilla-and-nodesource-join-forces-on-node-js-48e21ffb697d">IBM, Intel, Microsoft, Mozilla and NodeSource Join Forces on Node.js API; Node.js Build System will Start Producing Nightly node-chakracore Builds</a></li>
</ul>
<h2 id="nodejsin2017theyearofmainstreamadoption">Node.js in 2017 - the year of mainstream adoption</h2>
<div class="click-to-tweet">
    <p class="click-to-tweet-text">
        <a href="https://twitter.com/share?text=2017%20was%20a%20huge%20year%20for%20Node.js%20and%20it%E2%80%99s%20users.%20The%20number%20of%20online%20Node%20instances%20reached%208.8%20million%2C%20with%203%20billion%20npm%20package%20downloads%20a%20week.;url=https://blog.risingstack.com/history-of-node-js" target="_blank">2017 was a huge year for Node.js and it’s users. The number of online Node instances reached 8.8 million, with 3 billion npm package downloads a week.</a>
    </p>
    <p class="click-to-tweet-button">
        <a href="https://twitter.com/share?text=2017%20was%20a%20huge%20year%20for%20Node.js%20and%20it%E2%80%99s%20users.%20The%20number%20of%20online%20Node%20instances%20reached%208.8%20million%2C%20with%203%20billion%20npm%20package%20downloads%20a%20week.;url=https://blog.risingstack.com/history-of-node-js" target="_blank" c="">Click To Tweet</a>
    </p>
</div>
<p>The number of contributors grew to 1500, and Node reached more than 40,000 stars on GitHub.</p>
<p><img src="https://blog.risingstack.com/content/images/2018/03/node-js-in-2017.png" alt="History of Node.js on a Timeline"></p>
<p>According to the <a href="https://techcrunch.com/2017/04/07/tracking-the-explosive-growth-of-open-source-software/">The Battery Ventures Open Source Software Index</a>, Node is the 4th most important open-source project!</p>
<p><img src="https://blog.risingstack.com/content/images/2018/03/node-js-is-4th-open-source-risingstack.png" alt="History of Node.js on a Timeline"></p>
<blockquote>
<p><strong>Q1</strong></p>
</blockquote>
<ul>
<li><a href="https://nodejs.org/en/blog/announcements/nodejs-certified-developer-program/">Node.js Certification Program to be launched by the Node Foundation</a></li>
<li><a href="https://foundation.nodejs.org/wp-content/uploads/sites/50/2017/09/Node_CaseStudy_Nasa_FNL.pdf">NASA’s Node.js Case Study Released</a></li>
</ul>
<blockquote>
<p><strong>Q2</strong></p>
</blockquote>
<ul>
<li><a href="https://levelup.gitconnected.com/whats-new-in-node-8-e1cce6539a71">What’s new in Node 8</a></li>
<li><a href="https://medium.com/the-node-js-collection/n-api-next-generation-node-js-apis-for-native-modules-169af5235b06">N-API: Next generation Node.js APIs for native modules</a></li>
<li><a href="https://medium.com/@nodejs/hello-im-mark-hinkle-the-new-executive-director-of-the-node-js-foundation-ask-me-anything-86a5f5417619">Mark Hinkle becomes the new executive director of the Node Foundation</a></li>
</ul>
<blockquote>
<p><strong>Q3</strong></p>
</blockquote>
<ul>
<li><a href="https://medium.com/the-node-js-collection/say-hello-to-http-2-for-node-js-core-261ba493846e">HTTP2 Arrives into the Node.js Core</a></li>
<li><a href="https://hackernoon.com/node-js-emerging-as-the-universal-development-framework-for-a-diversity-of-applications-c2e788290f5f">The Node.js Survey of 2017 Released</a></li>
<li><a href="https://medium.com/the-node-js-collection/get-ready-a-new-v8-is-coming-node-js-performance-is-changing-46a63d6da4de">A new V8 is coming, Node.js Performance is Changing</a></li>
<li><a href="https://medium.com/the-node-js-collection/node-js-8-3-0-is-now-available-shipping-with-the-ignition-turbofan-execution-pipeline-aa5875ad3367">Node.js 8.3.0 is now available shipping with the Ignition + TurboFan execution pipeline</a></li>
<li><a href="https://thenewstack.io/node-js-forked-complaints-repeated-harassment/">Node.js Forked Again Over Complaints of Unresponsive Leadership</a></li>
</ul>
<blockquote>
<p><strong>Q4</strong></p>
</blockquote>
<ul>
<li><a href="https://medium.com/the-node-js-collection/node-js-state-of-the-union-blog-2017-ed86640ec451">Node.js State of the Union 2017</a></li>
<li><a href="https://medium.com/the-node-js-collection/news-node-js-8-moves-into-long-term-support-and-node-js-9-becomes-the-new-current-release-line-74cf754a10a0">Node.js 8 Moves into Long-Term Support and Node.js 9 Becomes the New Current Release Line</a></li>
<li><a href="https://www.youtube.com/playlist?list=PLfMzBWSH11xa-iNnQG2555lgi4574nZOh">Node.js Interactive 2017 Vancouver</a></li>
<li><a href="http://blog.npmjs.org/post/166039777883/protect-your-npm-account-with-two-factor">Two-factor authentication &amp; read-only tokens arrive to npm</a></li>
</ul>
<h3 id="nodejsin2018">Node.js in 2018</h3>
<blockquote>
<p><strong>Q1</strong></p>
</blockquote>
<ul>
<li><a href="https://medium.com/@nodejs/announcing-the-node-js-application-showcase-9fbaaa3e4824">Announcing The Node.js Application Showcase</a></li>
<li><a href="https://medium.com/@nodejs/introducing-js-interactive-an-event-for-the-javascript-ecosystem-a60811194b54">Introducing JS Interactive: An Event for the JavaScript Ecosystem</a></li>
</ul>
</div>]]></content:encoded></item><item><title><![CDATA[AngularJS to Angular - a brief history with some tips to get started!]]></title><description><![CDATA[How to get started with Angular? What are the core libraries? Read our tips & tricks to kickstart your Angular projects, and become a front-end ninja!]]></description><link>https://blog.risingstack.com/angularjs-to-angular-history-and-tips-to-get-started/</link><guid isPermaLink="false">5aaf8ac7ba25630001fab3eb</guid><category><![CDATA[angular]]></category><dc:creator><![CDATA[Máté Huszárik]]></dc:creator><pubDate>Tue, 13 Mar 2018 14:07:00 GMT</pubDate><media:content url="https://blog.risingstack.com/content/images/2018/03/angularjs-to-angular-history-get-started.png" medium="image"/><content:encoded><![CDATA[<div class="kg-card-markdown"><img src="https://blog.risingstack.com/content/images/2018/03/angularjs-to-angular-history-get-started.png" alt="AngularJS to Angular - a brief history with some tips to get started!"><p><strong>In this article, I’m going to introduce the core libraries of Angular and help you to get started with the framework itself.</strong></p>
<p>Are you familiar with AngularJS? Have you ever tried out Angular 2 or would you like to pick up one of the top front-end frameworks? This is the perfect time to dive into Angular and I’m here to give you some tips to start!</p>
<h2 id="angularjstoangularabriefhistory">AngularJS to Angular - a brief history</h2>
<p>Angular is one of the most well-known solutions for SPA (single-page application) development besides React and Vue.js. It has been around for almost 10 years and it has gone through countless adjustments since then. The first version of the framework - AngularJS - started back in 2009 and laid the foundation of present-day front-end application development.</p>
<p>I remember trying it out myself, memorizing its unique syntax for templates, trying to understand its quirks like the two-way data binding, dependency injection and many further concepts that come with the framework. I had my ups and downs learning it - especially with its change detection system - but after a few sleepless nights, I was able to develop a high-quality web application which harnessed the power of the underlying engine.</p>
<p>It was not perfect due to its huge bundle size compared to other libraries, and I often bumped into performance issues, but I got a web app running that satisfied common software development criteria. I could write clean code thanks to <a href="https://github.com/johnpapa/angular-styleguide">John Papa's style guide</a> and develop a relatively fast running app in short time focusing on its functional requirements.</p>
<p>I was not the only one having issues with the framework. You can find a ton of deficiency too in the framework, that makes AngularJS half success, half failure. Its architecture and chaotic <a href="https://www.ng-book.com/p/The-Digest-Loop-and-apply/">digest loop</a> system set limitations to its performance, however its template syntax worked out so well that it was adopted by <a href="https://vuejs.org/v2/guide/comparison.html#AngularJS-Angular-1">Vue.js</a>. (<code>v-if</code> - <code>ng-if</code>, <code>v-model</code> - <code>ng-model</code>)</p>
<blockquote>
<p>AngularJS refers to the 1.x versions of the framework, from 2.x it is known as Angular.</p>
</blockquote>
<p>The imperfection of AngularJS was the motivation behind the complete rewrite of the framework. Due to its unpredictable change detection system and robustness, the developers at Google needed to rewrite the framework. They began using really powerful libraries. On top of the original features, they introduced approaches like AOT (Ahead-of-Time) compiling, tree-shaking and many more. AOT converts the HTML and TypeScript code into JavaScript during build time, while tree-shaking gets rid of the unused imports to achieve faster application bootstrapping and smaller footprint.</p>
<p>It also got a <a href="https://github.com/angular/angular-cli">fancy CLI</a> that can initialize new projects, generate skeletons, build and create a development application server so it’s became a pretty handy tool!</p>
<h2 id="thethreepillarsofangular">The three pillars of Angular</h2>
<p>Before jumping into Angular, let’s familiarize ourselves with the libraries that are used by the framework. In order to do that, take a look at the <code>dependencies</code> in the <code>package.json</code> file in their <a href="https://github.com/angular/angular">Github repository</a>.</p>
<ul>
<li>
<p><a href="https://www.typescriptlang.org/docs/handbook/typescript-in-5-minutes.html">TypeScript</a> is a superset of JavaScript providing type safety for your application. It is also really helpful for someone who has an object-oriented programming background - like me :) - because it extends JavaScript's functional approach with abstraction, encapsulation and inheritance. Angular itself is written using TypeScript.</p>
</li>
<li>
<p><a href="http://reactivex.io/rxjs/">RxJS</a> is a library for reactive programming using Observables, which represent an asynchronous stream of data which we can subscribe to. The library offers built-in operators to observe, transform and filter  streams or even combines multiple together to create more powerful dataflows at once. Angular handles all pieces of information as an observable stream from routing parameters to HTTP responses.</p>
<p>Observable has its formal specification by TC39 which is currently in <a href="https://tc39.github.io/proposal-observable/">Stage 1 proposal</a> for EcmaScript, meaning that it might even land in the JavaScript language itself.</p>
</li>
<li>
<p><a href="https://github.com/angular/zone.js">Zone.js</a> is an execution context for asynchronous operations. It monkey patches the standard APIs such as DOM event listeners and <code>XMLHttpRequest</code> to run them in a “zone”. Zone is a construct that provides hooks on the asynchronous operations so we are able to get notification of their states, cancel tasks, handle errors or extend execution with additional operations.</p>
</li>
</ul>
<h3 id="letsclearupamisconception">Let's clear up a misconception</h3>
<p>There is a common misunderstanding that Angular's change detection is the same thing as Zone.js. In fact, Angular forks Zone.js creating its own <code>NgZone</code> which emits an event when the <a href="https://blog.risingstack.com/writing-a-javascript-framework-execution-timing-beyond-settimeout/">microtasks</a> are executed in the browser’s event loop. This event notifies the component's change detector to run and update the components concerned.</p>
<p>Change detection is a really complicated topic on Angular but if you are interested getting to the bottom of it, check out this great <a href="https://blog.thoughtram.io/angular/2016/02/22/angular-2-change-detection-explained.html#who-notifies-angular">article</a>!</p>
<p>I have to admit, the dependencies of Angular might look overwhelming at first glance. All these libraries take time to master and we have not even started to learn the framework. Unfortunately, this is the point where many developers turn their back on it and start looking for another solution with a smaller learning curve.</p>
<div class="click-to-tweet">
    <p class="click-to-tweet-text">
        <a href="https://twitter.com/share?text=Tip%3A%20Search%20on%20google%20with%20%60-angularjs%60%20option%20to%20omit%20the%20search%20results%20with%20the%201.x%20version.%20-%20via%20%40RisingStack;url=https://blog.risingstack.com/angularjs-to-angular-history-and-tips-to-get-started" target="_blank">Tip: Search on google with `-angularjs` option to omit the search results with the 1.x version. - via @RisingStack</a>
    </p>
<p>But hey, don't give up! Take my advice and play around with the dependencies first to get an insight into the core libraries.</p>
<h3 id="resourcestoboostyourconfidence">Resources to boost your confidence</h3>
<p>Check out <a href="http://rxmarbles.com/">RxJS Marbles</a> for the built-in RxJS operators! The interactive visual diagrams are great but advance with caution, the operators can get deprecated and new ones are added from time to time. You might not find all of them in the latest version of RxJS and the library is in lack of up-to-date documentations. Go ahead and search in the <a href="https://github.com/ReactiveX/rxjs">source code</a> if you have any doubts!</p>
<p>I really love TypeScript because its static type check assures me I am not going to make any typos. If you are new to TS, check out its <a href="https://www.typescriptlang.org/docs/handbook/basic-types.html">type system</a>, and go through <a href="https://www.typescriptlang.org/docs/handbook/interfaces.html">interfaces</a> and <a href="https://www.typescriptlang.org/docs/handbook/classes.html">classes</a>. This is more than enough to figure out the basics of Angular but still, it is really interesting to see what is the output of a compiled TS file. Do files including only interfaces have any code compiled to JS? - I will just leave this question here.</p>
<p>Understanding what is under the hood will definitely boost your confidence when it comes to the framework itself!</p>
<div class="click-to-tweet">
    <p class="click-to-tweet-text">
        <a href="https://twitter.com/share?text=Indeed%2C%20%23Angular%20might%20have%20a%20longer%20learning%20period%20compared%20to%20other%20front-end%20libraries%20but%20in%20return%20it%20enhances%20the%20developer%20experience%20with%20built-in%20solutions%20that%20come%20by%20importing%20modules.%20;url=https://blog.risingstack.com/angularjs-to-angular-history-and-tips-to-get-started" target="_blank">Indeed, #Angular might have a longer learning period compared to other front-end libraries but in return it enhances the developer experience with built-in solutions that come by importing modules. </a>
    </p>
<p>Applications built on top of the framework are basically a tree of components that are organized into individual modules by their domain. Angular has quite a few core modules i.e.: <code>CommonModule</code>, <code>FormsModule</code>, <code>RouterModule</code>, etc. These modules contain custom attributes (directives), data transformation utilities (pipes), services and many other tools to speed up the process of application development. It actually lets you focus on the application logic of the product, ensuring that it runs flawlessly in the browser.</p>
<p>Of course, this framework is not a silver bullet for every scenario. Its true strength shines when it comes to developing data-driven, large-scale applications with complex logic.</p>
<h2 id="getstartedadoptangular">Get started &amp; adopt Angular</h2>
<p>AngularJS has been widely adopted and numerous projects have been built using the first version of the framework. There is also a <a href="https://angular.io/guide/upgrade">migration guide</a> to the newer versions but it is really hard to move all pieces of code without breaking the functionality of the app or freezing the code for a longer period. This is the reason why many projects are stuck at version 1.x and have not been migrated to the later versions yet.</p>
<p>AngularJS is officially supported and plans one more relevant release, version 1.7 which will have a 3-year LTS (Long Term Support) starting from the June 2018.</p>
<p>The current Angular version is 5.2.x and 6.0.0 is already in beta.</p>
<blockquote>
<p>Angular uses <a href="https://semver.org/">semantic versioning</a>, releasing a major version in every 6 months.</p>
</blockquote>
<p>I encourage everyone who has still not migrated their own application or is not familiar with the framework itself to start embracing the later versions of Angular. It really came a long way from its early state and keeps improving in every release.</p>
<h3 id="afewangulartips">A few Angular Tips:</h3>
<p>Here’s a few suggestions you should look up if you are interested in the topic. Keep in mind, these are just guidelines because you have to cover a lot of ground to get into the bottom of each of them.</p>
<ul>
<li>Follow the official <a href="https://angular.io/guide/styleguide">style guide</a> to have a project structure which is easy to extend and maintain;</li>
<li>Use the CLI to generate all the files;</li>
<li>Write common components and pipes that can be shared across feature modules;</li>
<li>Create services with a well-defined purpose and use them easily with dependency injection;</li>
<li>Lazy load modules that are not critical for app bootstrapping;</li>
<li>Guard routes to prevent unauthorized access;</li>
<li>Enhance bootstrapping experience with app shell.</li>
</ul>
<p>Also, the evolution of the framework has brought quite a few practical projects as well. One, that’s worth mentioning is <a href="https://material.angular.io/">Angular Material</a> which brings ready-made directives and components into your app. There are buttons, lists, form elements and a bunch of other UI components following the <a href="https://material.io/components/web/">Material Design</a>.</p>
<h3 id="upcomingangularfeaturesyoushouldbeawareof">Upcoming Angular features you should be aware of</h3>
<p>I would like to emphasize two of the upcoming features regarding Angular.</p>
<p>One of them is a new backward-compatible <a href="https://github.com/angular/angular/issues/21706">renderer</a> coming up in the next version of the framework called Ivy, which reduces the application bundle size by 90% which means it will be finally ready to pick up the race in bundle size against all the competitors on the market. A simple Hello World application is 3.2 kB gzipped! Give it a try in version 6 by adding the following flag in the <code>tsconfig.json</code> file, but do not forget it is still work in progress and not ready to be used in production environment.</p>
<pre><code>&quot;angularCompilerOptions&quot;: {
   &quot;enableIvy&quot;: true
}
</code></pre>
<p>The other change is in the CLI. So far, it was lacking an update command to upgrade the versions of the angular packages which finally got into version 1.7.x. After updating CLI to this version, you will be able to upgrade all the angular related packages with the <code>ng update</code> command preventing messed up dependency versions.</p>
<h2 id="upcomingangulararticlesfrommeotherlearningopportunities">Upcoming Angular articles from me &amp; other learning opportunities</h2>
<p>I hope, I could show you something new today or get a little excitement in picking up Angular.</p>
<p>Stay tuned, because I am planning to publish more resources on the tricky parts of the framework and help getting through the difficult topics. Do not hesitate to leave a comment below if you have any questions or suggestions!</p>
<p>My next topic will be on unidirectional data flow and how it differs from two-way binding but if you can not wait, take a look at my training called <a href="https://risingstack.com/trainings#buildingcomplexappswithangular">Building Complex Apps with Angular</a>, where I cover the following topics:</p>
<ol>
<li>AngularJS to Angular - a brief history</li>
<li>Angular CLI commands in action</li>
<li>Modules</li>
<li>Directives &amp; Components</li>
<li>Data binding</li>
<li>Services</li>
<li>Pipes</li>
<li>Routing</li>
<li>Component composition</li>
<li>Handling HTTP streams</li>
<li>Forms</li>
<li>Testing</li>
</ol>
<p><a href="https://s3-eu-west-1.amazonaws.com/risingstack-resources/RisingStack+Public+Trainings/Angular+Training+RisingStack.pdf">Read the more about the training here!</a></p>
<p>Keep on coding and see you next time! ;)</p>
</div></div></div>]]></content:encoded></item></channel></rss>