All Posts

Making Privy Campaigns ADA Compliant

David Seifried

ADA Compliance Product Upgrades - by Dave Seifried

Over the last few months the Privy engineering team has been hard at work making all of our campaign displays ADA compliant. This is a high-level overview of what ADA compliance is, how this changes campaigns authored in Privy, and what type of functionality you can expect in the future.

Continue Reading »

Engineering Spotlight - Peter Cai

Anyone who works at a tech company will tell you the same thing: the cogs in the SaaS machine don’t turn without a fleet of talented and devoted software engineers. And Privy’s Engineering team is certainly no exception. Our engineers are the architects behind Privy’s product, which millions of people interact with on the daily (no pressure, guys), from onsite displays to our admin dashboard.

The functionality and health of our software are in their hands, so naturally, a kick-ass Engineering leader is key. Fortunately for us, we’ve had our VP of Engineering (and Ruby on Rails guru), Peter Cai on the squad since early 2015.

We sat down with Peter to crack the surface of our growing Engineering team (we’re hiring!), why they love developing Privy’s software, the challenges they face, and their motivation to keep on keeping on.

Continue Reading »

What It’s Like to Be a Privy Engineering Intern

Nivi Nath

Nivi joined the Privy team as an Engineering Intern who goes to Tufts University. She really enjoyed her computer science class the first semester of college (shout out to an amazing professor) and has continued coding since. Nivi loves exploring the city of Boston, finding new restaurants, painting, playing with puppies, and is quite the chocoholic. She really can’t sing but one of her favorite pastimes include belting lyrics in the car with the windows down.


How I Got Here

Hi! My name is Nivi (yes, Nivi at Privy), and I am a junior at Tufts University studying Computer Science and Economics. I found out about Privy’s engineering internships through Handshake, the platform Tufts uses for job and internship postings, incidentally while working at the Tufts Career Center to update Handshake postings (meta, I know).

I interviewed during my winter break, and I worked at Privy full-time as one of two Software Engineering Interns from June through August 2019. Before Privy, I was a newbie with zero Software Engineering internships under my belt, so I recently took some time to reflect on what I’ve learned during this pivotal summer, to share my experiences for others who may be interested in joining the Privy team.



Continue Reading »

Migrating from Backbone to React - Lessons Learned

Amanda Beiner

I joined Privy in the summer of 2017, when the team was exploring what it might mean to migrate off of our Backbone/CoffeeScript frontend and onto a more modern JavaScript framework. A year and a half later, we’re reflecting on this undertaking and the lessons learned along the way.

Why We Chose Backbone

The current iteration of the Privy web app came to be in 2012, as Backbone.js rose in popularity as a front-end JavaScript framework. At the time, the ability to define different views within a single page app offered a level of code organization and data handling that vanilla JS and jQuery couldn’t. Until 2016, our front end stack consisted of Backbone with Backbone.Relational, Marionette, and CoffeeScript.

Backbone.Relational mirrored ActiveRecord in the backend, and CoffeeScript syntax nicely complemented Ruby, addressed the verbosity of ES5, and shipped with Rails—a great value proposition for a small team of full stack developers.

Continue Reading »

An Engineer's Week One Report

Reef Loretto

Reef Loretto joined the Privy engineering team in August. We ask for a new engineer’s observations as part of their onboarding process, and Reef submitted his in essay format, so we decided to post it here. It has been lightly edited for the audience.

This week I started a new job at Privy. Already, there are lots of things I’ve noticed which make me incredibly excited to work, learn, and grow with the team. First among these is the clear and visible value placed upon a smooth and enjoyable onboarding process. On day one, I came to my desk and was able to go from “zero” to “functional dev environment” before lunch. The team maintains carefully-written onboarding documentation, which includes a very useful bash script to get a docker environment up and running. The script ran with no issues, and then all it took was a simple docker-compose up to get the entire application running locally. I learned immediately that the docker configuration greatly reduces the pains of trying to create a local environment resembling those of staging and deployment (which was a significant cause of stress in previous projects/teams).

Continue Reading »

Fixer Currency Gem

Emily Wilson

Emily Wilson is an engineering intern with Privy for the summer of 2018. She is part of the Georgia Institute of Technology's class of 2021.

Earlier this month we published a new Ruby Gem that handles fetching updated currency conversion rates. We previously used the GoogleCurrency gem to fetch the exchange rates, but the Google endpoint that the gem relies on is no longer supported. This caused errors when we attempted to exchange currencies. After looking at replacements for the gem, we decided it would be best to fork the GoogleCurrency gem and modify it to meet our needs.

Continue Reading »

Updates to our list of excluded security issues

Peter Cai

We've been excited to receive a number of vulnerability reports from security researchers all over the world since launching our security disclosure page earlier this year, and we've learned a lot about this process since we've published it. Privy is a more secure platform today because of the many reports we received.

Continue Reading »

Our Commitment to Candidates

Peter Cai

Interviewing for a startup job can be grueling, confusing, and demoralizing even when the process is going smoothly.

Continue Reading »

November 25, 2016 Outage Postmortem

Peter Cai

On Friday, November 25th, beginning at 1:32PM eastern US time, the Privy.com platform suffered an outage lasting roughly 3 hours.

Continue Reading »

Intercom Conversation Stats: an Open-Source Tool by Privy

Peter Cai

Andrew Knollmeyer is an engineering intern with Privy for summer 2016.

Introducing Intercom Conversation Stats, a tool developed by Privy which is free for anyone to use! This app allows you to gather information about your conversations in Intercom and store it in a Google Sheets document on a regular basis. The provided build aggregates data on conversation tags, but it can be customized to work with any other data from your conversations as well.

Continue Reading »

Building a BellBot

John Careaga

Ever feel like ringing a bell requires too much effort? Ever wish you could automate it to ring when something – like a sale – happens? If you responded "yes" to at least one of these questions, fret not. There is now a solution: BellBot.

Continue Reading »

Excuses not to Test

Peter Cai

At Privy, one of our values is pragmatism - so we don't require formal proofs of correctness and all-du-paths coverage to check in code, because it’s not cost effective (even if those things are valuable in the abstract). But this is such a widely accepted belief that it essentially conveys no information at all; outside of extraordinary operations (like NASA), no one requires 100% path coverage. So how do we determine the what and how much to test?

bridge

Continue Reading »

Understanding Design as an Engineer

Alex Miller

TL;DR

Engineers are great at understanding and building complex logical systems, but often fail when it comes to understanding the people that use them. Unlike logical systems, people often behave unpredictably. In order to help users behave as rationally as possible, we need design to show them something they recognize and understand. Implementing consistent design rules that utilize concepts like contrast, spacing, and alignment will help users focus on the right elements in your product, and will teach them to behave appropriately within the environment you’ve built for them.

 


 

As a member of Privy’s lean startup team, I have the unique honor of being both the lead engineer and the company’s only designer. You might find this curious, considering that engineers are often notoriously bad at design. Many can understand intricate and complex systems built with multiple tech stacks, but fail to understand one thing: the people that use the products they build. For this reason, I firmly believe that more engineers should learn the basic principles of design. Design soothes users into behaving rationally by showing them something they recognize, understand, and even love.

Continue Reading »

Database Concurrency, Part 2

Peter Cai

This is part two of a series on database concurrency. Read the introduction at Database Concurrency, Part 1 .

Last time, I talked about multi-version concurrency control, or MVCC, and how it enables highly concurrent database systems while still guaranteeing transaction isolation. This is because MVCC allows reality (from the perspective of two distinct transactions) to diverge, giving us the unique advantage that readers and writers don't have to block each other. But how does it achieve this in practice, and what are the caveats?

Continue Reading »

Reactive Systems - An Overview

Patrick McLaren

At Privy, many of our services are fundamentally event-driven. Indeed our core product value lies in helping merchants capture arbitrary user interaction and reacting to opportunities as they arise in a tangible and timely manner.

Continue Reading »

Database Concurrency, Part 1

Peter Cai

This is part one of a series I'll be writing about database concurrency. Since this first post is a broad overview, I have simplified many concepts here.

High performance databases must support concurrency. As in many other software systems, databases can use read/write locks to maintain consistency under concurrent use (MyISAM in MySQL does this, for example). Conceptually - this is pretty simple: 1) There can be multiple readers. 2) Readers block writers. 3) Writers block each other as well as readers.

Continue Reading »

How we sped up our background processing 150x

Peter Cai

Performance has always been an obsession of mine. I enjoy the challenge of understanding why things take as long as they do. In the process, I often discover that there's a way to make things faster by removing bottlenecks. Today I will go over some changes we recently made to Privy that resulted in our production application sending emails 150x faster per node!

Continue Reading »