August 22, 2017

Apollo interns on GraphQL Radio

Sashko Stubailo

Sashko Stubailo

One of my favorite times of year at the office is when the interns join us for the summer. This summer was the biggest group of interns yet, with 6 interns working on open source and commercial products at MDG. Three of the interns — ShadajRamya, and Evans — were working on Apollo open source technology, and so Abhi and Nikolas from GraphQL Radio suggested they come on the show to round out the summer. Watch the episode below or listen on Soundcloud!

Here are the details and links talked about in this episode, sorted in the order they were sitting from left to right:

Shadaj Laddad

Shadaj is a senior at Lynbrook High School, and has been programming for a long time. He’s been historically interested in Scala, but was working mostly in JavaScript during his internship. Here’s what he worked on:

  • Subscriptions tutorial: Shadaj continued the Full-stack GraphQL tutorial with two steps about subscriptions: Server-side and client-side.
  • Apollo Cache API: He refactored Apollo Client internals to separate out the internal GraphQL cache implementation behind a clean API. In Apollo Client 2.0, the cache will be completely pluggable, so that people can integrate caches based on different technologies like MobX, and build new features like offline support. Check out his PRs to add this support here. There are already people in the community working on alternative cache implementations that will be compatible with Apollo Client 2.0, such as apollo-cache-hermes!
  • Scala.js and codegen: In his spare time, Shadaj implemented a typed wrapper and even GraphQL query code generation for Scala for Apollo Client, which can be used with React and Scala.js. Read the post here.

Shadaj’s pick at the end of the podcast was Scala Native, an ahead-of-time compiler for Scala.

Ramya Nagarajan

Ramya is a sophomore at MIT studying Electrical Engineering and Computer Science. She joined the Apollo team for the summer to work on tools that could help people be more productive in their work, and boy was she successful! Here’s what she worked on:

  • Apollo Client Devtools: First, Ramya started out by learning about Apollo and writing a post about different use cases for the devtools. The Apollo Client Devtools allow you to send queries to your server, inspect the queries and mutations on your page, and look at the current state of the cache. Since they were built in a hack week, the original implementation relied on a brittle polling approach that used a lot of resources and even had the potential to lock up your browser. Ramya rewrote the architecture to use a message-passing approach instead, which was infinitely more efficient and also made the tools more reliable.
  • New features for Launchpad: Apollo Launchpad is the open source platform for GraphQL server demos. It’s got a ton of GraphQL server examples with complete working code that you can edit and download. Ramya dove into the complicated world of modern UI development to refactor the code to use modern libraries like React Router 4, add meta tags with React Helmet for social sharing, and a button to use Prettier to format the code. See her work here.

Ramya’s pick at the end of the podcast was Go, a programming language she’s started to learn.

Evans Hauser

Evans is a Master’s degree student at Carnegie Mellon University, studying Electrical and Computer Engineering. He got interested in interning at MDG because of his excitement about the Meteor platform, and got to work on the most futuristic feature of Apollo Client: Apollo Link. Here’s more detail about his projects:

  • Tutorial about input types and custom resolvers: Evans added another step to the full-stack GraphQL and React tutorial.
  • Apollo Fetch: Apollo Fetch is a simple GraphQL query fetcher that you can use anywhere you need to retrieve a result from a GraphQL server. It sends the result and returns a promise, and has a simple way to set options like headers.
  • Apollo Link: Apollo link is the first completely modular GraphQL network stack, and is one of the core parts of Apollo Client 2.0. It allows you to create your own “links”, which encapsulate a bit of GraphQL client functionality like polling, retrying, subscriptions, or something else. Read Evans’ newest blog post to learn how to make your own links. With Apollo Link, we hope to make Apollo Client 2.0 smaller and more customizable than ever!

Evans’ pick at the end of the podcast was apollo-fetch-upload, an extension to Apollo Fetch written by Jayden Seric to enable file upload support!

Join us!

Thanks so much to Shadaj, Ramya, and Evans for joining us this summer, and to Nikolas and Abhi for hosting the podcast! If you or someone you know would like to be an intern at Meteor Development Group, (or want to apply for a full-time position) please apply at meteor.io/jobs!

Written by

Sashko Stubailo

Sashko Stubailo

Read more by Sashko Stubailo