Dev Blog

Summer Intern Recap

One of my favorite parts of working at Paperless Post is being involved in our internship program. Each summer for the past three years, we’ve brought on an increasing number of students who are at various points in their college careers, but have one important thing in common: they want to see how a startup works from the inside. We do everything we can to get these students in front of real work as soon as possible, starting off with a “bootcamp” that introduces them to our process and technology stack, and then immediately assigning them to one of our internal teams. We asked two of our interns to talk a bit about what they worked on. They were excited to share and so are we!

Caio Lima

My name is Caio Lima, and I recently finished a four month co-op placement here at Paperless Post. I study Mathematics at the University Waterloo in Canada (birthplace of the frail Blackberry) and I make mobile apps.

Besides learning various ways of making coffee, I have learned an astounding amount of new practices and concepts in software design, all while meeting really cool people and watching the company grow. I have had a few different roles as a member of the PP dev team. For the first month of my co-op term I learned about the architecture and internal workings of their large scale web application and was able to contribute to the project by fixing bugs, streamlining our administrative package creation tool, and ‘JSHint-ing’ part of the code base. For the remaining three months, I learned about design patterns for developing Cocoa applications. The main feature I worked on is the new activity page on the iOS app.

The activity page is where users can view an event’s ‘activity’ and acts as a centralized hub for media and interactivity with your Paperless Post invitation. The page layout differs depending if the viewer is a host or a guest. Hosts and guests can see up to four most recently replied guests, ordered by status, and post comments, but the guest’s view can be limited to the permissions set by the host.

The idea is that this page will eventually get more features or modules and that the layout could change as well, so one of the biggest challenges was setting up the page so that it dynamically generates the UITableView’s data source to make it more malleable and easier for future features to be added. When the UIViewController is loaded, there is a data source array that is constructed to hold the layout of the entire view. It holds arrays of the different data cell types that will go in each slot.

Now maybe this was already familiar to some of you, but to me this was new and I think it is pretty darn cool. This feature allows us to generate the structure of the table view with only an array of integers. It is modular, easy to reorganize, and doesn’t require as much data. When there are many simultaneous tasks, this feature could make a big difference in end user performance. Kudos to Paperless Post’s iOS Developer Sal Randazzo for helping me out. This design pattern has really motivated me to look for other ways of implementing designs in Cocoa and I have learned a bunch of cool features in Objective-C. You can also use the activity page feature to post comments to events, which has been successful so far.

Overall, I’m pretty satisfied with how it turned out, happy with how much I learned and pleased with the amount of ‘real stuff’ I accomplished during this co-op term. Time well spent.

Ryder Moody

Hey! I’m Ryder Moody, and I’m a rising junior at Columbia University in New York City. My work at Paperless Post is on the Accounts/Site Structure team, which means that I get to dig into vastly different parts of the codebase. My background is mostly in Rails and Ruby, but because of my position I’ve been able to play with tech like Sammy.js, Redis, our API, and Twitter/Facebook integration.

Much of what goes into making a successful web based company is knowing what the users want before they do. While user facing features often get all the attention, some of the most interesting projects I’ve undertaken at Paperless Post have been things that users would never see or even think about. How do we give them what they want before they ask? At Paperless Post we do lots of analytics, and the more we know about what every user does on the site, the better we can tailor the experience to them. For instance, we know that we need designers to create more cards for wine tastings, yet we’ve never received an email or phone call expressing this. We know this because I worked on an admin dashboard that gives us the ability to track and see what users are searching for, how many results they get, and when they ran the search. This ensures that our designers don’t waste their time making cards that nobody is looking for, and that existing cards get tagged with all the appropriate phrases that people search for.

I’ve also done a lot of work with Google Analytics. We have a robust system that makes it as easy as possible to add tracking to any element of the site. That’s cool, but figuring out exactly what is tracked and what isn’t would be cumbersome without a nice interface, so I created the “Admin Goggles.”

With one click of a bookmarklet, every tracked element of the site is outlined in red, and by rolling over a link you can see the information that is sent to Google. This removes the guessing from finding Google’s nice graphs for a particular button, and helps us in our goal of gaining more insight into what users do or don’t do around the site.

If you think you’d be a good fit for our Internship program, get in touch!