Topics

Featured in Development

Alex Bradbury gives an overview of the status and development of RISC-V as it relates to modern operating systems, highlighting major research strands, controversies, and opportunities to get involved.

Featured in Architecture & Design

Will Jones talks about how Habito, the leading digital mortgage broker, benefited from using Haskell, some of the wins and trade-offs that have brought it to where it is today and where it's going next. He also talks about why functional programming is beneficial for large projects, and how it helps especially with migrating the data store.

Featured in AI, ML & Data Engineering

Katharine Jarmul discusses research related to fair-and-private ML algorithms and privacy-preserving models, showing that caring about privacy can help ensure a better model overall and support ethics.

Featured in Culture & Methods

This personal experience report shows that political in-house games and bad corporate culture are not only annoying and a waste of time, but also harm a lot of initiatives for improvement. Whenever we become aware of the blame game, we should address it! DevOps wants to deliver high quality. The willingness to make things better - products, processes, collaboration, and more - is vital.

Featured in DevOps

Service mesh architectures enable a control and observability loop. At the moment, service mesh implementations vary in regard to API and technology, and this shows no signs of slowing down. Building on top of volatile APIs can be hazardous. Here we suggest to use a simplified, workflow-friendly API to shield organization platform code from specific service-mesh implementation details.

Pinterest's Switch to Universal JavaScript and React

In 2015, Pinterest made the decision to switch to React, but that was easier said than done on a site with millions of active users. The story of Pinterest's switch to React is really the story about Pinterest's switch to universal JavaScript.

Pinterest software engineer Imad Elyafi wrote that the decision to move to React was partially because React is "a golden standard", with "a large developer community and enables excellent engineering velocity and performance." React is often used in universal JavaScript scenarios, where the same templates are used on the server and in the browser.

Pinterest's server side engine is Django, using the Jinja templating engine while their client side JavaScript used Nunjucks, which is similar to and inspired by Jinja. This caused code duplication, requiring a Python version and a JavaScript version. But they couldn't drop everything and switch to React, says Pinterest software engineer Jessica Chan:

We needed a solution that would allow us to iteratively convert the hundreds of Pinterest components without interrupting the work of product teams or the experience of Pinners. The first step was to consolidate to a single template rendering engine between client and server before we could replace that engine with something else. If the server could interpret JavaScript, use Nunjucks to render templates and share our client-side code, we could then move forward with an iterative migration to React.

Before they even touched React, the team re-architected the server renderer to use the existing Nunjucks templates. Instead of rendering the Jinja templates inside of Django, they built a side process used Node to render templates, says Chan. "In the end, we went with standing up Node processes behind an Nginx proxy layer and architected the interface in such a way that each network request would be a stateless render. This allowed us to farm requests out to the process group and scale the number of processes as needed."

Once this system was in place, they could slowly switch to React-based component rendering. Elyafi says they extended the Nunjucks template language to render React where possible: