Surprise, your data warehouse can RAG How to use your data warehouse's built-in features to simplify and potentially improve your RAG pipeline.
By
Maciej Gryka
July 2, 2024
Building reliable systems out of unreliable agents This is the process our engineering team uses to create reliable AI systems out of unreliable AI agents.
By
Maciej Gryka
April 3, 2024
Three ways to draw pie charts without any JavaScript In this post, we share three different approaches to drawing pie charts using only HTML and CSS.
By
Travis Lin
August 30, 2022
The engineering hiring process at Rainforest QA Here's the exact hiring process we use to evaluate candidates for the engineering team here at Rainforest QA.
By
Adrian Prayogo
August 2, 2022
Hunting a race condition in the Android 10 Emulator How we found a race condition in the AOSP with the Android emulator that affected the amount of heap space available to apps. Rainforest supports testing native mobile applications on Android using the official android emulator from Google. Using emulators instead of real physical devices provides a bunch of benefits such as being able to […]
By
Keith Johnson
April 16, 2021
Discrete optimization for on-call scheduling The engineering team of RainforestQA (YC S12) is remote and distributed around the globe, with developers in America, Europe, and Asia. We’re using PagerDuty to assign developers on-call and for contacting/escalating people in case of incidents. Our working hours cover almost all time-zones, about 22 hours from full time-zone coverage. Yet for distributing our on-call […]
By
Roman Khomenko
March 5, 2021
A deep dive into macOS TCC.db A deep dive into what the TCC database contains and the meaning of the various fields present in it. What is TCC? TCC (Transparency, Consent, and Control) is a mechanism in macOS to limit and control application access to certain features, usually from a privacy perspective. This can include things such as location services, contacts, […]
By
Keith Johnson
February 9, 2021
Selecting a finite state machine library for React This article is going to look at different libraries providing finite state machine abstractions that can be used in React applications. I have used state machines on the backend in the past but I have never used one in a React application. I’m also going to share why I believe our codebase could benefit from […]
By
Jiri Kaipr
February 2, 2021
Upgrading our SaaS application to Rails 6 A sustainable Rails upgrade workflow that slowly but surely brought us to the point when all our apps run on latest Rails. Rainforest main application is a Rails monolith with 160k lines of code and tests. Bumping a major version of rails in a project this big has overwhelming results, in fact no rails command […]
By
Jan Grodowski
January 29, 2021
Zero downtime database migrations In this post we explain the basics of how to handle database migrations properly and show some real world examples. Learn how to achieve zero downtime database migrations.
By
Russell Smith
October 27, 2020
How to remove Recompose and replace with Hooks In our last post, we explored the pros and cons of Recompose and why we decided to remove it from our codebase. This post includes the strategy we used to approach the large task of implementing that refactor.
By
AJ Funk
March 9, 2020
Why we decided to replace Recompose with React Hooks We recently made the decision to remove Recompose entirely – which was a large endeavor. It touched over 200 files, and in some places was deeply coupled to core functionality of our app.This post covers why we decided to replace Recompose.
By
AJ Funk
March 9, 2020
How and why we migrated from Heroku to Kubernetes Here's how Rainforest QA made the decision to upgrade our DevOps teck stack and move from Heroku to Google Cloud Platform (GCP) and Google Kubernetes Engine (GKE).
By
Emanuel Evans
April 2, 2019
How to Estimate a Software Project Timeline In this post we explore how to develop a project timeline and some general best practices for smoother project management.
By
Jonathan Barber
March 1, 2019