Engineering Newsletter, July 2019

Hi all, welcome to the first engineering newsletter! We know it can be hectic around here—between email, slack, and meetings, it's easy to miss cool ideas or important updates. This newsletter aims to capture many of the noteworthy things that have come up over (roughly) the past month.

If you like this newsletter and find it valuable, please let us know! If you'd like to help keep it going, please come talk with us in #newsletter. You can also help out by using the :newsletter: (newsletter) react on interesting posts and comments—this helps us find useful content!

Announcements & Updates

The July all hands slide deck is available here.

:bank: Self Serve Vault :bank:

Self Serve Vault is live! You can now check your secret configurations and add non-DB secrets. Please talk to #jarvis for any questions or feedback.

:lock: Quarterly Certifications :lock:

For compliance, engineers will be required to confirm each quarter that, to their knowledge, our compliance-related policies have been followed. These include policies relating to change management (all changes get reviewed), deployments (go through TeamCity), how security incidents are handled, etc. For more information, see the all hands slides or talk to @smacisaac.

:developers: M4 Platform Program :developers:

@tdixon introduced a high-level architecture and roadmap for the M4 (multi-cloud, multi-region, multi-service, multi-tenant) Platform. As a pilot, we're aiming to create a solution that delivers custom Live API-like indexes to support a review generation solution for Hibu to be built by Consulting. If this is successful, the platform will be productionized for use in helping to build and support Reviews Live API, Pages generation, Answers indexing, and Listings delivery. [Slides]

:question: Answers :question:

For many of our current products, our customers need to do very little administration to keep their e.g. listings up to date. The Answers-Ready Platform (Knowledge Graph + Answers + Self-Serve Pages), however, will require much more active administration. Yext could do this for our customers as we do today, but that would involve a lot of internal support and effort.

Another approach is to make this self-serve. In particular, we want to focus on optimizing self-serve for "Yext Administrators"—people who are excited to use the Yext platform and have, or can develop, enough technical ability to configure and use our platform as a power user. This model, popularized by Salesforce, would enable Yext to create an ecosystem around using and integrating with our product—which would then hopefully make our platform easier and more popular to use. [Slides]

:bus: Tour of Engineering :bus:

We hosted our first Tour of Engineering, where new engineers got to hear about our systems and teams! There's plenty of good content, even if you've been around for a while. You can find all of the presentations and videos here.

:handshake: #engineeringhelp :handshake:

Tired of asking questions in #bazel only to discover that they've been answered in #intellij? Ask instead in #engineeringhelp, intended to be the go-to place for widely applicable engineering questions.


New Faces

  • Chen Wang (@Chen) —Aether
  • Manny Mengistab (@mmengistab)—Buffalo
  • Yi Jiang (@yi)—Buffalo
  • Heesun Jun (@hjun)—PET
  • Eric Hong (@ehong)—Slater
  • Noah Kim (@nkim)—Spruce
  • Nik Bramblett (@nbramblett)—Sumo
  • Ria Galanos (@Ria G)—Sumo, Learning & Development
  • Hasan Atay (@hasan)—T-Bone
  • Yi Zhang (@yzhang)—Thundersnow
  • Lisa Liu (@lliu)—UX-Eng

Team Moves

  • Adrian Mullings –> Watson

Quick Hits

  • DocMD now has breadcrumbs! [Screenshot]
  • Please remember to ensure your entire project builds with bazel build, especially if you have targets that aren't built in your .srv files! [Thread]
  • Several of the collector-providing methods in Collectors2 , such as toImmutableList(), are now deprecated! Please use the corresponding methods in ImmutableList, ImmutableSet, etc. instead. [Thread]

Tips & Tricks

  • You can now start the employee authenticator with edward start yea!
  • http://goto/ lists all of the Goto Redirector links!
  • You can use <details> to make collapsible markdown sections!
  • TagLogger allows you to easily add tags to your Sentry errors!

Food For Thought

Patterns of Extraction

Do you find yourself needing to use production-like data in your tests? @mdunn's lightning talk discussed how you can use dependency injection and replicated data to easily and safely configure your application's tests. [Slides]


Need to do something more complex with RabbitMQ? Check out this discussion for ideas, such as using a priority queue, using multi-queues to bucket by user type, the "shunter" pattern, and designing for multiple consumers.


There was a lot of discussion on immutables—their engineering value, implementation considerations, and how to get them to work with gson. There's also some new documentation.

Articles & Resources

Bookshelf Additions




We love feedback and want to make this newsletter as valuable as we can. Please join us in #newsletter to offer feedback, suggestions, or to help with future newsletter issues!

This month's newsletter editors are @jdelerme and @vple.