Breaking out of silos

Authors: Stephanie Pirman and Kellie Spears What we’ve learned by building products on multiple platforms in the same squad A squad is comprised of multiple roles at Procore including software engineers, quality assurance engineers, UX engineers and product managers. We (Stephanie and Kellie) work on the Field Productivity Squad at Procore and sat down together to write this post with the intention of sharing what we’ve learned by developing a key feature set on multiple platforms within the same squad. Our squad also includes experts who code on multiple platforms including Web, iOS and Android. We didn’t... Read More

When Milliseconds Matter

Authors: Shayon Javadizadeh, Ishjot Walia Background Quota Minder is a microservice written in Elixir that enforces API Rate Limits on our third party integrators and internal applications. It is built with knowledge of the Procore domain which enables us to construct rate limits that make sense for Procore specifically, as opposed to an off-the-shelf rate limiting solution. Quota Minder also has the concept of “tiered buckets” which allow for several different types of rate limits to be counted against a client at any given time. We are then able to enforce both “spikes” and “count” rate limits, which protect against... Read More

Introducing Blueprinter

A new way to format and serialize APIs. Blueprinter is a declarative and fast Ruby object to JSON serializer, an alternative to solutions like Active Model Serializers. Why build another serializer? When we began writing Blueprinter, existing options at the time of writing were few, most suffered from poor performance and hard to read code. Procore has a very large API, with hundreds of endpoints representing hundreds more data structures. We needed a fast, simple option that we could use across our gamut of different needs. We noticed an opportunity to solve our needs as well as something we could... Read More

Twisted Tales

Making Redux Saga scalable with TDD, SOLID principles and the Narrator Design Pattern There and Back Again... Asynchronous code is hard. Talking to a server is one of the most critical parts of a modern web application, and being able to write tests around this communication layer is imperative. The JavaScript ecosystem has some excellent state management solutions, with Redux being probably the most popular flavor. This simple and intuitive library provides the best solution we've seen to a longstanding problem, and is built with testability in mind. However, we've found that the asynchronous libraries commonly used with Redux can... Read More

Procore Sponsors and Attends the Grace Hopper Conference

Last week, Procore sponsored the Grace Hopper Conference and gave developers from Research and Development the opportunity to attend. Twenty-five of them decided to go and promote Women in Construction, Women in Engineering, and Diversity & Inclusion. The Grace Hopper Conference is the world's largest gathering of women technologists featuring speakers like Melinda Gates, founder of the Bill & Melinda Gates foundation, as well as Dr. Fei-Fei Li, the Chief Scientist at Google Cloud. The event is designed to bring women together from across the globe who are involved in technology––a male-dominated industry––in order to encourage the sharing... Read More