React Component Profiling

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

Node.js databases: Using CouchDB

Node.js databases: Using CouchDB

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

Node.js databases: Using Redis for fun and profit

Node.js databases: Using Redis for fun and profit

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 databases: an embedded database using LevelDB

Node.js databases: an embedded database using LevelDB

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

Using RabbitMQ and AMQP for Distributed Work Queues in Node.js

Using RabbitMQ and AMQP for Distributed Work Queues in Node.js

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

Lessons from YLD Innovate

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

Why your application needs to be offline-first — typical use cases

Why your application needs to be offline-first — typical use cases

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

A Distributed Work Queue

A Distributed Work Queue

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

Building a React Native offline-first application using PouchDB and CouchDB

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.

NodeConf Oslo 2016

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

How to build a reliable transaction experience for your customers

How to build a reliable transaction experience for your customers 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

On attending React-Europe 2016

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

Sharing code between native and web: React and Relay

Sharing code between native and web: React and Relay

Choosing React Native comes with a set of unique advantages, such as a single ecosystem (JavaScript vs. Java/Swift/Objective-C), faster feedback loops and code reuse. All of the above makes for happy developers and, when a fully native user experience can be achieved, we can see why more teams

Using a Persistent Local Queue in Node.js

Using a Persistent Local Queue in Node.js

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

Announcing the HospitalRun Lisbon hackathon

We are proud to announce that we're helping organise and participating in a very important event for us: the HospitalRun hackathon, on 18th June in Lisbon. HospitalRun is an open source, offline-first modern EMR/HIS platform built specifically for the developing world. The project aims to provide low-resource environments a

Introducing Queues in Node.js

Introducing Queues in Node.js

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

Container Camp San Francisco 2016: Wrap-Up

Container Camp San Francisco 2016: Wrap-Up

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

Encrypting Communication

Encrypting Communication

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!

My internship experience at YLD

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

Container Camp Day Zero

Container Camp Day Zero

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

Turning a stream into an RPC channel

Turning a stream into an RPC channel

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

The Linux Container Ecosystem - A pre Container Camp Primer

The Linux Container Ecosystem - A pre Container Camp Primer

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

Multiplexing Streams

Multiplexing Streams

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

QCon London 2016

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

Using a Remote Emitter

Using a Remote Emitter

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

Getting Started with rkt

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.

Building a TCP service using Node.js

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

Squeeze the juice out of Node

— an exploration of how Node.js handles HTTP connections — Why is this Node service only handling X requests per second but neither memory, CPU nor network usage is saturated? How does Node handle HTTP connections? Can it process more than one request at the same time for a single non-HTTP/

Using CouchDB to store and propagate configuration changes

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

Using a singleton module for config data

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

The hapi.js eco-system

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

Performance-Driven Development

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

Using Streams - Readable, Writable, Transform Streams and Flow Control

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

Enforcing cultural change does not work

Culture is all the rage nowadays. Everyone wants to be the cool kid on the block, and with software engineering talent becoming harder to come by, it makes sense that most companies now strive for this change in culture to provide them with a clear and present differentiator from their

Using an Event Emitter - Common Use and Edge Cases

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

YLD announces new appointments to Advisory Board

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

Post-systemd.conf Fest - videos and slides

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

Building realtime collaborative offline-first apps with React, Redux, PouchDB and WebSockets

tl;dr: remote HTTP APIs enabled the development of native web apps, but they're not really suited to the real world of mobile users. A sync-capable client-side database enables you to build offline-first applications. PouchDB is a JavaScript-based database that runs on the server and on the browser and that

NodeConf Barcelona 2015

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!

Happy Birthday, YLD!

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

Using a work queue

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

Docker 1.9

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

Embracing the Digital Transformation Revolution

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

Node.js 5!

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

Orchestrating Callbacks

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

The Callback Pattern

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

Node.js 4!

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

Announcing a React crash course in Lisbon

We're pleased to announce a React crash course at our YLD Lisbon office. This will be our second React crash course in Lisbon. It will also cover topics that go beyond the basics but anyone can join. Attendance is free but we're limited to 30 people. When: Oct 8th from

Weaveworks Partnership

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

Debugging memory leaks in Node.js - a walkthrough

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 -

WDCNZ 2015

WDCNZ is a conference for Web Developers in Wellington, New Zealand. The fifth edition took place on 22nd and 23rd July 2015. Day 1 was entirely dedicated to workshops. There were two all day workshops happening in parallel, one given by the incredible Estelle Weyl (check out her books) on

Get ready to Docker-up

YLD! loves containers, and we've been putting them to work since we exist. We've been leveraging them in real projects, in large teams, with mission-critical objectives. And it's about time we give back to the community. We took our experiences with Docker containers and we've put our best efforts designing

Nano client donation to the Apache Software Foundation

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

My Internship at YLD!

I met Charlotte, YLD’s Head of Operations, for the first time after being confirmed for the internship position. I can remember her having a certain relaxedness about her that I found particularly calming, which was great because at the time my nerves were anything but calm. She spoke to

require('lx') goes International

Require('lx') is a meetup group for Javascript developers, lovers, enthusiasts and explorers in Lisbon. Its community organises NodeSchool Lisbon as well as a monthly meetup with talks from the community to the community. Last month the date for the meetup coincided with the presence of most of our London

Getting started with React and Node.js

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

Nodeschool International Day

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

Container Camp SF 2015: What you missed

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,

Using JSCS and jscs-fixer for

In this post we'll take a brief look at JSCS and take a peak at jscs-fixer, an 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,, you are greeted

The return of Node Tuts

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.

Announcing the Node Patterns mini-book series

tl;dr: New mini-book series about Node-based code and networking patterns here: 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

Building a voucher site

The objective was to develop an HTML embedable widget to facilitate the purchase of voucher codes. The number of screens was under ten with pretty simple interactions. CouchDB was to be used as a UI settings and copy store, to be easily edited. Server-side rendering and just jQuery like old

nano 6 and the Coverage Contract

Coming with version 6 nano enforces 100% test coverage. It does so by including the pre-commit node module. This module automatically installs a pre-commit hook. The hook then runs all npm scripts defined in the pre-commit section of package.json: package.json: "pre-commit": [ "jshint", "codestyle", "mocked", "test", "checkcoverage" ] We see

Lisbon office and first meetup

This Wednesday to commemorate the new office we hosted a meetup for the Lisbon JavaScript community. We welcomed around 40 attendees, most of which RSVPed minutes after the event announcement. As the Lisbon JavaScript community expects, there was pizza and beer for everyone. We had Pedro Januário talking about using

Skiff: Raft Distributed Consensus in Node.js

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

A bit like this

Life and Times at

When I agreed to intern at YLD for a month, half a year ago, I didn't know what to expect. Would I be fetching coffee? Running errands? Making inconsequential phone calls? I am happy to report that I remember fetching many coffees, but almost all for myself, and spending the

Container Camp 2014

When we’re not consulting, building startups or eating tapas the team at YLD run a series of worldwide events, from community meetups and conferences to professional workshops and in house training. On September 12th we held the first ever Container Camp at Shoreditch Village Hall in London. We had

Node Performance and Security Training comes to London

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

LXJS 2014

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

YLD! Conference Season

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

Node + Angular

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: See you there!

Adding RSS to your Node.js app with Primus and feedparser

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

Migrating a Production CouchDB database with Joyent and Stud

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, these guys are incredibly helpful If you love node.js don’t forget

Digital Ocean Logo

Node.js Deployments with Docker, Dokku, & Digital Ocean

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.


    Recent Posts

    Recent tweets

    Tag Cloud