Welcome to YLD Software Engineering Blog!
From software engineering expertise to Node.js news, events and company updates.
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
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
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
— 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/
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
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
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
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
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 -
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
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
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
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
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 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
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
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
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
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
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.