Welcome to YLD Software Engineering Blog!
From software engineering expertise to Node.js news, events and company updates.
A problem that arises in some applications, mainly in data intensive ones, is how to properly keep track of distinct elements in a finite set (e.g.: keeping track of unique visitors of a website or generating KPIs from realtime data) and is of particular importance in database systems. A
I went to Barcelona for just the second time to attend to Orchestrate 2017 and speak at NodeConf Barcelona. It was really nice to be in such an amazing city again with all this mix of tech content, great environment, nice “tapas” food and beach nearby. Orchestrate is a 1-day
Last week we got to go to React London which was the first large conference organised in London focusing exclusively in React. As we've been working extensively with React @ YLD, we took some time to attend and explore. We'll quickly go over the main talks of the day: The day
On the first weekend of March, the YLD engineering team headed southwest for a really nice training/get together weekend at the lovely Bickleigh Castle in Devon. We had been wanting to do a training weekend for a while, as the team keeps growing and we wanted a chance for
HTTP/2 is being used in ~12% of the websites in the World Wide Web, but certainly the number is higher in the websites we visit the most. If you want to understand better how HTTP/2 works and how to debug it, take a look at our latest blogposts:
In one of our latest posts we introduced and debugged HTTP/2. However we'll be exploring some other alternatives to the HTTP protocol in this post. These alternative protocols are quite interesting when we start to investigate them, since it allows us to understand how the Internet is evolving; with
What is NodeConf Budapest? NodeConf Budapest was a one-day, single-track conference with a focus on what people need to know about Node. It was the first such event organised by Gergely Nemeth of RisingStack, a Node consultancy and development company. Around 100 people attended from all over Europe and the
We are excited to announce that today marks the first day of the strategic alliance of two of the leading London-based professional services organisations, ANDigital and YLD. The alliance will enable us to serve our clients better, as well as provide a greater source of expertise and learning for our
This article aims to be theoretical and practical, not only giving an overview about the HTTP/2 protocol, but also giving and explaining how to dig in with some tools. HTTP/2 is the next version of the HTTP protocol and aims to be more performant in comparison with the
Web Summit is said to be one of the biggest tech conferences. With over 50,000 attendees, this year was Lisbon's turn to host the event from the 7th to the 10th of November. First and foremost, what you're about to read expresses my views on what I perceived and
The React library is still evolving and Facebook's React team is working on a set of features to improve it, both internally (e.g the new reconciler algorithm) and to upgrade developer experience. In this quick blogpost we're going to take a look at a feature that was presented in
Much like the previous two databases we presented here, CouchDB is an open-source key-value store. But it's also a bit more than that. Each record is not an opaque string: it's a JSON document that the engine understands. By default, CouchDB does not impose any specific schema to the documents
Redis is an open-source database server that has been gaining popularity recently. It's an in-memory key-value store. It keeps all the data in-memory for fast access, but also keeps the data in-disk if you tell it to. It's a basic key-value store where the keys and values are strings, but
Node.js has been designed to do quick and efficient network I/O. Its event-driven streams make it ideal to be used as a kind of smart proxy, often working as the glue between back-end systems and clients. Node was originally designed with that intention in mind, but meanwhile it
This is the last article in the Work Queue Patterns series. In the past article, we examined how to manage distributed work queues using Redis as a queue service. In this article I now explain how you can replace this Redis implementation with a RabbitMQ one. Besides Redis, Rabbit-MQ is
Innovation in a fast-growing environment YLD Innovate is a series of events covering relevant business topics for the CIO. The first event in this series covered the lessons learnt by Joe Steel when setting up Virgin Mobile. In particular, some of the challenges they faced and how the company managed
I recently attended the first Offline Camp, a gathering of a very diverse group of people that were interested and invested in the Offline-first subject. Thanks to organisers (and to YLD, IBM Cloud Data Services, Meetup, Hoodie, Bocoup and Make&Model's sponsorship), for three days we convened in this
So far, we've seen that creating a local queue can be very useful for streamlining the workload and persisting the work throughout process restarts. However, depending on the type of work that you're doing, this approach could still present some issues: if this work is somehow CPU-intensive you may need
Introduction At YLD we have been doing some work with offline-first applications and, with the release of Service Workers, a major step has been taken in building these kind of applications in the browser. We have also been using CouchDB and PouchDB to access data while the Application is offline.
I had the pleasure of attending NodeConf Oslo, a one day event on June 4th. As this was my first JS/Node conference ever, I didn’t quite know what to expect, but I was really looking forward to it! In the end I can honestly say it was an
...by using replicated transaction documents and a clerk TL;DR HTTP RESTful APIs are the wrong level of abstraction to deliver complex transactions. Proposed solution: The client app puts all the data in a document and saves it locally The client app continuously syncs it with a remote replica The
React-Europe was an amazing 2-day conference held in Paris on June, 2 and 3. On this second edition, there were a lot of talks about React, React Native, Redux, performance optimisations, and data fetching using GraphQL or Falcor. The conference started with Dan Abramov explaining how Redux has grown in
As we've seen in the previous article of this series, an in-memory queue can be useful in streamlining a work load and retrying by recovering from errors, but it's subject to some problems. If, for a period of time, the production of messages exceeds the worker capacity, the queue may
This is the first of a series of articles that will be diving into using work queues to manage asynchronous work in Node.js, extracted from the Node Patterns series. Enjoy! It is common for applications to have workloads that can be processed asynchronously from application flows. A common example
The fourth incarnation of Container Camp, and the second in San Francisco, took place on Friday April 15th. YLD were in attendance and we've put together this follow-up blog post for those who couldn't be there. One of the great things about Container Camp has always been the broad representation
In the previous post of this series we saw how we could perform RPC on top of a multiplexed duplex stream. In this article we're going to show you how you increase the security of the client and the server applications by encrypting your communication channel and adding authentication. Enjoy!
I got in touch with YLD for a 6 month marketing internship position and was interviewed in September 2015. After an initial Skype call, I was invited to the YLD office for an one-to-one interview with Head of Marketing, Laura Plaga. A week afterwards, I was offered a position and
On the evening before Container Camp we attended the Joyent-sponsored "Day Zero" event at New Relic - an evening of demo-focused presentations around containers. Masterfully emceed by New Relic's Jacob Groundwater and boasting speakers from Mesosphere, Hashicorp and Joyent, I knew we'd be in for a treat. Building Containers in
Further developing our refrigerator project, you may want to add not only new sensors, but also some new functions like changing the fridge target temperature, starting a defrost cycle, or even turning it on or off. We could expose some of these functions as events to be sent by the
Container Camp number 4 is just around the corner on the 15th of April 2016 at Bespoke in downtown San Francisco. As proud supporters of Container Camp, keen Linux Container enthusiasts, and early adopters, we thought we'd take the opportunity to put together a Linux Container ecosystem overview as your
In the previous article of this series "Using a Remote Emitter", we showed you how we can easily propagate events between Node.js processes. This next article builds on this, showing you how you to apply a duplex stream to it, inside it, transport several streams, and create independent channels
On March 7-9 in London I attended my first QCon. Organised by InfoQ, QCon is now in its tenth year and appears to be going from strength to strength. QCon is a developer conference that aims to appeal to a broad range of developers; from enterprise Java developers to cutting-edge
In a previous article we covered the Event Emitter pattern, which allows you to somewhat detach the producer of events from the consumer. This pattern may also be useful for providing a means of communication between two processes: process A connects to process B, and they can both send events
This February, CoreOS announced that their rkt container runtime had graduated to version 1.0. rkt has come a long way since its initial announcement in December 2014, so now’s a good time to take a closer look and consider how it fits into the rapidly changing container ecosystem.
This is the eighth article from a new series about Node.js. In the previous article we talked about how we can use CouchDB to deliver configuration changes without needing to restart your processes. In this one we'll build a simple TCP service. Building a Web application using a framework
This is the seventh article from a new series about Node.js. In the previous article we started talking about how you can deliver configuration data to your Node.js processes. In this one we'll see how we can use CouchDB to deliver configuration changes without needing to restart your
This is the sixth article from a new series about Node.js. In the previous articles we talked about flow control: how to use callbacks, event emitters and streams. In this article we'll start covering a new subject: configuration. Enjoy! - Pedro Teixeira, CTO @ YLD! (Some of the code samples
Overview The hapi.js (HTTP API) framework provides a RESTful API that is a perfect match for projects with large teams working on different parts of the application. It was created by Walmart back in 2011, and right now it's used by a large group of companies. hapi.js recommends
If DevOps means anything, it's that developers don't just write code anymore for the sole purpose of chucking it over the wall to Ops. In modern teams, developers often manage a lot of infrastructure for their applications themselves. This is thanks to the combination of platforms like AWS and Azure
This is the fifth article from a new series about Node.js. In the past article we covered the Event Emitter, which is a convenient pattern for getting notifications of complex state changes in a decoupled manner. But some objects may be simpler than that: they're a source of data
This is the fourth article from a new series about Node.js. In the last few chapters we covered some ways of controlling the flow of asynchrnous operations: the callback pattern, using the async package to orchestrate them and using an in-memory work queue. In this article we'll cover a
PRESS RELEASE London, 9th December 2015 London-based software engineering consulting firm, YLD, has announced that entrepreneur and former Axon Director, Stuart Hamilton, along with PayPal’s VP of Next Gen Commerce Bill Scott, have joined the company’s Board of Advisors. Stuart Hamilton was a Director of Axon from startup
As Lennart Poettering of systemd fame put it: Last week our first systemd.conf conference took place at betahaus, in Berlin, Germany. With almost 100 attendees, a dense schedule of 23 high-quality talks stuffed into a single track on just two days, a productive hackfest and numerous consumed Club-Mates I
21st November 2015 marked the Barcelona edition of the longest running community-driven Node.js conference. As part of the conference - the day after - Tom Gallacher, Hassy Veldstra and Igor Soarez from YLD delivered a hand-on Node.js Performance workshop. Many thanks to the organizers, had a great weekend!
November 5th was quite an exciting night for the YLD family. Joined by colleagues from both London and Lisbon, as well as clients and friends, we celebrated our second birthday in style. The festivities took place on the 28th floor of the Milbank tower, in an open warehouse-sque space offering
This is the third article from a new series about Node.js. In the last article we saw how we can use the async package to control the asychronous callback flow. In this article we'll also be using async, this time to provide a queue, which will allow us to
With the advent of Docker 1.9 comes a number of ecosystem milestones. The team has now released production-ready Swarm (to orchestrate container deployment) and multi-host networking (to facilitate communication between containers, even as they move between hosts). Dockerfile Perhaps the most interesting update for Node users is the addition
There is no denying that the era of digital innovation is upon us. But what exactly is it? This phenomena is roughly defined as "increasing applications of digital technology into the various fields of business and enterprise"*. Not only does it boost the efficiency of a company overall, but increases
It's this time of year again, Node.js 5.0.0 has been released and it the next stable release of Node.js. Now, Node.js 4.x.x is still the goto release if you have large roll outs of Node.js within your organisation. 4.x.x will
This is the second article from a new series about Node.js. We began by covering by covering the fundamental pattern for controlling flow in Node.js: the callback. In this new article we'll discuss how we can further use this basic pattern to coordinate asynchronous operations. I hope you
This is the first article from a new series about Node.js. We begin by covering some basics like asynchronous flow control, modules, event emitters and streams. We then proceed to some more elaborate patterns for providing configuration, networking, asynchronous work distribution and data persistence. In this first article we
The time has come, a new stable version of Node.js is upon us! (We have also had a minor release since this article has been written). Version 4 is special release for the Node community as it is the first stable release since the reunification of Node.js and
YLD are happy to announce a new partnership with Weaveworks. Weaveworks is the software company that develops Weave, the most productive way for developers to connect, observe and control Docker containers. This partnership reflects YLD’s early embrace of Docker as a key part of our approach to continuous deployment
Memory leaks are quite common in production applications. Fortunately, they usually aren't difficult to find. What follows is a walkthrough of an exercise that was part of the curriculum of a Node.js performance workshop that Igor Soarez and I taught at WDCNZ recently. Edits: - 23/11/2015 -
YLD! just donated Nano to the Apache Software Foundation. Nano is a minimalistic http client for CouchDB that was mostly developed by Nuno Job and Pedro Teixeira. Currently it is maintained by Johannes J. Schmidt. The Nano client donation further strengthens commitment to Open Source and to technological innovation, following
While building client-side apps, a team at Facebook reached a conclusion that a lot of web-developers had already noticed: the DOM is slow. They did, however, tackle this problem in an interesting way. To make it faster, React implements a virtual DOM that is basically a DOM tree representation in
Node International Day was a global event, aimed at providing educational web events around the globe. The main goal is to learn Node.js and have fun with it. That’s why I started to look at the event and, quickly, more people got involved. Organizing Fábio was excited to
For those who do not know Container Camp is a community conference on software virtualization geared towards the infrastructure and deployment of containerized applications. After Container Camp's first success in London, Container Camp is back in action, hosted in San Fransisco and better than ever. First up was Bryan Cantrill,
In this post we'll take a brief look at JSCS and take a peak at jscs-fixer, an Atom.io package that allows you to automatically apply JSCS code-style rules to your scripts. Enter JSCS If you don't know JSCS and decide to visit it's website, jscs.info, you are greeted
When I first started developing in Node (back in version 0.1) there weren't many resources around that you could learn from. I had to learn mostly by myself, experimenting and reading the node source code. I was then challenged by a friend to produce some screencasts on the subject.
tl;dr: New mini-book series about Node-based code and networking patterns here: http://nodepatternsbooks.com I first started playing around with Node back in 2009, shortly after version 0.1 was released. A lot of things have changed insince then: some API changes, NPM happened and grew, the community grew
The problem At YLD we are building some new customer-facing products, and every now and then we need to decide on which persistent storage mechanism to use for implementing a particular service. We are fans and have used several, ranging from LevelDB, Redis, CouchDB, PostgreSQL, Riak and others. The problems
I’ve seen an app that has terrible performance. It's written in Node. Ergo Node doesn't scale. Q.E.D. Something like this happens frequently on Twitter and Hacker News — mostly because performance is usually an after-thought: often code gets deployed without being properly benchmarked (or tested for security). When
On the weekend of 27-29th of June I had the pleasure of attending LXJS 2014, my first LXJS. The Venue The conference was held in Estufa Fria, which I think translates to something like "The Cold Greenhouse". It's beautiful: The conference hall is inside Estufa Fria; you can see it
Conference season is heating up! We already had Nuno speak at WebRebels about the performance work we often do for our customers Now we are very excited to announce our upcoming events. If you are attending make sure you come and say Hi! LXJS Pedro and Nuno are part of
On May 15th we are coming to now sunny shoreditch to deliver a training course about using Node.js with Angular. If you care to join us, you can buy your tickets here: https://ti.to/yldio/may-16-london-node-js-angular-workshop See you there!
Serving a static website in Node.js is simple: mkdir wtfjs npm init mkdir public touch public/index.html touch index.js Install the node-static dependency npm install node-static --save If you want to use the npm start command you need to replace the script property in your package.json
tl;dr Step by step how to install couchdb in ubuntu. But really, you should use iriscouch for your production couchdb needs. If you need help don’t forget to go to #couchdb on irc.freenode.org, these guys are incredibly helpful If you love node.js don’t forget
DigitalOcean is a really nice cloud hosting company that offers excellent performance at affordable rates Docker is an abstraction on top of LXC Containers. Docker introduces a workflow that makes operating containers straightforward and lots of fun. Dokku is a tiny program that allows you to easily deploy your applications.