Path

Blog

Friday Finds

Summer has officially turned, and back to school season is upon us. While New Year’s is still months away, fall, bringing crisp air and new coats, always feels like the true time to make resolutions and start fresh. We hope you have a fantastic weekend!

Mom allows her 4-year-old to finish her drawings, quirky masterpieces ensue

The ultimate way to blast off into sleep

Creativity according to icons 

This makes HDTV look old school

Not your grandma’s potato salad 

Beautifully illustrated untranslatable words from other cultures

The power of the meaningless

Magical flying nannies?

How to optimize those zzz’s

image

(Illustration by Ella Frances Sanders, via Maptia)

Stickers: NFL Players Inc.

September means football and everything that goes with it. Tailgating, shouting at the TV, drafting fantasy squads, wearing your team colors. And we see pigskin fever on Path, too, when friends transform into fans. They suddenly band together to root as one, or turn on each other in a momentary burst of friendly rivalry.

To celebrate the beginning of the season, and to make it easier to express your fandom, we’re kicking off a new sticker pack in partnership with the NFL Players Inc. From Peyton Manning’s winning smile to JJ Watt’s salute, or from the flowing locks of Troy Polamalu to the triumphant belt buckling of Aaron Rodgers, you’ll recognize the signature moves of some of the best players in the game.  You’ll even find Colin Kaepernick Kaepernicking and Tim Tebow Tebowing in the pack.

Show your team pride with the help of the best players in football. It’s time for kickoff, so download the NFL Players Inc. sticker pack today in the Path Shop.

image

 

Willkommen, Deutsche Telekom!

Today, we’re honored to announce a global partnership with Deutsche Telekom, our biggest carrier partner to date. DT is at the forefront of bringing quality broadband internet, digital television, fixed and mobile telephony, and more to its customers, in Germany and worldwide.

We’re thrilled to bring Path to over 37 million mobile and 22 million fixed network DT customers in Germany, by now being preloaded on HTC G3, LG G2, Samsung Galaxy Note 3 and X Cover 2 devices sold there. With just a quick tap, DT customers will be on their way to capturing and sharing life with the people who matter most. We’re so excited to be able to easily and quickly become the personal network for so many families and friends.

“Deutsche Telekom is focusing on partnerships to drive forward innovations,” says Michael Hagspihl, Managing Director of Marketing at Telekom Deutschland GmbH. “Our aim is to make access to innovative services such as Path as simple as possible for our customers. This partnership shows how two companies are combining their strengths for their customers’ benefit.”

To commemorate our new partnership, DT is giving its German customers a free year of our just-announced Path Premium (a $14.99 value), with free and unlimited access to our sticker packs and camera filters. This announcement comes as the first step to our deepening relationship with Deutsche Telekom, and we can’t wait to see what’s next.

image

Danke. And stay tuned!

 

Introducing Path 3.2: Private Sharing, Inner Circle, and Premium

Our team is proud to announce Path 3.2 and with it, Private Sharing, Inner Circle, and Premium. A lot of thought and iteration went in to these features, during which we constantly asked ourselves—will this help bring you and your friends and family closer together? Will this give you more control over what you share, and who you choose to share with? Will this encourage you to be yourself, and be more open with those who matter most?

We hope Path 3.2 helps you to share even more of those little, everyday, unassuming “just between us” moments. The karaoke dive you can’t wait to take your roommates to. The bad haircuts in the yellowed family photo you found from the 90’s. The thousandth video of your parents’ first grandbaby. That song that made me miss you.

In addition, Path 3.2 delivers a Premium model for total access to everything we have to offer in the Shop. In return, with your support, we’ll be able to continue to build the personal network, which to us, means no advertisements. The Path community is now over 20 million members in 163 countries, giving you the opportunity to become closer to more people in your life than ever before. With that, we’d like to introduce Path 3.2 to you, available today.

Private Sharing

Some moments are important simply because of who you’re with, or who they remind you of. Private sharing allows you to share with one or any number of friends on an ad hoc, moment by moment basis. Private sharing has been a top feature request of our users since the beginning of Path, and we’re so excited to enable you to share inside jokes and old memories with those who would appreciate them most.

image

After capturing a moment, tap the lock on the sharing screen. Keep the moment private for your eyes only, or tap the prompt to select friends to share it with. Your friends will know if they have been shared in a private moment by the lock in place of the usual seen-it smile. By looking at the moment’s seen-its, your friends will also be able to tell who else has been included.

Inner Circle

Inner Circle makes it easy to share instantly with those closest to you. And it’s completely unique to you. You may define it as your immediate family. Your oldest childhood friends. Your teammates. Your inseparable coworkers. Just the two of you.

Select friends for your Inner Circle by tapping the stars next to their names in the Friends List. While in the sharing screen, tap the star to share with those most important, instantly. Your friends will know that they are in your Inner Circle by the star in the top corner of the moment.

image

Premium

We introduced stickers to messaging and then to comments for you to use to express yourself, with characters that instantly say a thousand words. We designed all of our photo filters in-house to give you some of the coolest effects available. Path Premium users will have immediate and unlimited access to everything in the Shop, while supporting our vision to remain a completely ad-free network.

image

Along with unlimited access to all Path-exclusive filters and stickers in the Shop, Premium users will also get early access to new Shop items. Premium is available for purchase as an annual subscription on iOS and Android for $14.99; a 1-month subscription is available for $1.99 on Android or a 3-month subscription on iOS for $4.99.

This is only the beginning of our Premium model.  Please stay tuned as we add additional features to Premium that will allow you to further customize and personalize your Path.  In the meantime, we so appreciate your support in our commitment to provide a safe and private place for you to share.

We believe that we gain true happiness from meaningful relationships. Honest connections that are accepting of us as we are. With Path 3.2, we hope to filter the Path experience to fit you, giving you the chance to share more in a simple, beautiful, and joyful place with Private Sharing and Inner Circle. Built for Android, iPhone, and iPad.

Samsung + Path: Gearing Up

Part of our goal in creating the network for your personal life is to make capturing and sharing moments as seamless as possible. We decided to focus on building for mobile specifically because of the platform’s inherent ubiquity—our phone is usually never further than our pocket. This means less time sharing, and more time spent in the moment with those that matter most. This is why we’re so excited to elevate the ease and portability of the Path experience by building for the wearable device.

We’re honored to announce today that we have been exclusively chosen by Samsung to integrate into the new Samsung Galaxy Gear. Capturing and sharing meaningful moments has never been easier. The device is no bigger than a typical watch and worn like one, and is equipped with a touchscreen and a powerful camera that captures photos with a single tap. The Galaxy Gear is set to work alongside the Note 3 phone, and uses NFC technology to load Path from the wearable to the phone if the user does not yet have Path downloaded.

Path on the Samsung Galaxy Gear enables users to share photos, give feedback to their friends and family, and post their location in seconds. Path users on the wearable can also receive notifications from the most important people in their lives, instantly.

"Like building for Google Glass, we had the privilege to build Path on Samsung’s Galaxy Gear from the ground up. Starting with a blank slate is one of the best parts of product development," said Ray Ho, senior Android engineer at Path. "Working with the new form factor and screen dimensions proved challenging, but we think the conscious decisions we made about what features to include will set Path apart."

We believe that we couldn’t have found a better partner than Samsung, a company that has stood at the forefront of the global technology market for more than 40 years. We’re so excited to provide our Android users with the ability to share life with the most innovative technology available.

Note: The Samsung Galaxy Gear will be announced today, and available for purchase at a later date. Stay tuned.

image

image

image

Path+Threadless: Mr. Viking Stickers

image

Earlier this summer we hosted a sticker design challenge with Threadless, the creative community that makes and supports great art. The response was incredible, with over 230 submissions of all kinds of unique, lovable and otherworldly characters from artists from all over the world. Today, we are excited to announce the crowned winner of the challenge, Maya Rahmat with “Mr. Viking”. 

Mr. Viking, most distinguishable by his red beard and round belly, is a Scandinavian seafaring pirate with zest for life. Don’t be fooled by his burly appearance, this captain has a real sensitive side. Join him in his triumphs (finding buried treasure) and his losses (dropping his ice cream cone). 

image

About the artist

Maya Rahmat lives in Malaysia and works at Codemasters as a 3D visual artist. Though her career path has led her to a different type of art, her true love will always be illustration. Congratulations, Maya!

Anatomy of a Sticker: The Jake

Jake Mix, our resident graphic designer and creator of the Jake and Jake-O-Rama sticker packs, talks a bit about what goes on behind the scenes in creating our favorite everyman.
 
For each of our stickers, we attempt to provide a visually fun and clever way of communicating an idea in messaging. Keeping them simple means the viewer can more easily project themselves onto the character, enhancing the expression rather than limiting it. The style of our in house packs is a natural extension of our five basic emotions from the feed: clean, flat shapes with a bit of shading to bring them to life. A sticker’s open, pure expressive nature really makes them the ultimate illustration playground.

image

Stickers: Everyday Hero

Sure, you may not be caped, super-powered, and fighting intergalactic crime, but each time you complete the crossword, take the dog out, or beat a bad hair day, remember, you, are a hero too. Feel the power with our first sticker pack by David Soames, now available in the Path Shop.

image

Friday Finds

Happy weekend! We officially have one more week of summer left, so we hope you’re soaking up as much time beachside and eating as much fresh corn on the cob as possible. Here are some links from around the web to get you in the sunshiny state of mind: 

50 excellent rules of summer vacations 

To-do lists that really matter

The value of authenticity 

5 no-cook delicious summer dishes 

Beautifully simple interviews 

21 gushworthy City Hall weddings

DIY your cellphone

image

Stickers: Baby Talk

Welcome little one. Birds, bees, and a visit from the stork were all it took to make ten fingers, ten toes, and one total perfection. Our newest sticker pack Baby Talk created by Jayde Cardinalli is now available in the Path Shop.

image

Path Stories: A Constant Companion

"I’ve been a Path user for over two years, with over 3000 moments. I’ve shared many happy and not so happy moments with my inner circle over that time. On December 24, 2012, I was diagnosed with Acute Myelogenous Leukaemia (AML). The doctors said I was days away from death. It was a shock to me, especially considering 3-4 weeks earlier my wife and I were celebrating the news of our first pregnancy. Not the best timing. I had two induction chemotherapy treatments, one a fail and one much stronger round achieving temporary remission. I spent a total of 65 days in hospital. During that time my brother, John, documented moments of what I was going through on Path - the treatments, what I got up to (sleeping mostly), the visitors, and of course the hospital food. He set these as private moments so I could look over them after.

image

The path to recovery is not yet complete and hasn’t come without more challenges. A hematoma on my brain caused a seizure and required 10 radiotherapy sessions, and I had a relapse at the end of May. Now I’m hoping an experimental drug will put me into remission so I can move forward with a bone marrow transplant. Unfortunately, nothing is certain, and all we can do is hope.

I’ve since taken back to using my Path to share with my closest friends day-to-day, highlights and lowlights, and general inane things I come across. I also use my Path to collect personal private thoughts, almost like a diary, in order to remember how I’ve been feeling throughout this challenge. Over the past 6-7 months, it hasn’t been all gloom and doom. I’ve been able to document the progress of our unborn baby (3 weeks to go!), short trips out of the city away from the monotony of hospital life, treatments and transfusions, and continue with my penchant for photographing obscure things.

image

Someday, not far from today, I hope to look back on it all as faraway memories, healthy and happy, with my son or daughter by my side.” -Philip, Toronto

Path API: Expanding the API and Helping Users Share Even More

In our quest to be the social network for your personal life, we’re always looking for ways to help our users make Path feel more like home. Part of this means enabling folks to share content that is unique and true to their daily lives. We began with allowing for moment types such as photos, videos, thoughts, and music. We continued this by letting our users frame their days by waking up and going to sleep, and by building messaging to give your personal conversations a space on Path.

We were so excited last year to partner with Nike to give Path users the power to share their daily workouts, and in turn get support from their family and friends. Today, we’re announcing that our users can personalize their Path even more by expanding access to the Path API, and integrating with a number of applications we love such as Strava, WordPress, Over, and others.

To start, we have hand-selected developers we admire for their innovation and quality, as well as a few that have been most requested by our users. From more workout moments, to photo moments, to thought moments, we have worked closely with these developers to ensure that sharing to Path is a seamless and beautiful experience.

Moving forward, we will continue to work with developers with whom we share values. In addition, we’ll continue to work closely with each developer to guarantee an integration that truly delights the user. Our current list of developers that will be able to share to Path are:

Photos & Video

  • Over
  • Viddy
  • PicMix
  • PicFrame
  • Pic Stitch
  • Pic Collage
  • papelook
  • Manga-Camera
  • Otaku Camera
  • Miil

Thoughts

  • WordPress
  • The Bible App

Workouts

  • Strava Cycling
  • Nike+ Running
  • Nike+ FuelBand

Some of these are available today, others in the coming weeks. We invite you to download them and start sharing to Path!

Interested in connecting your app to Path? Apply here: http://path.com/developers

image

image

image

Friday Roundup

Wishing you a fantastic summer weekend. Here is some of what has captured our eye this week. 

What happy people do differently 

A comprehensive startup toolkit 

Where can we sign up?

A beautiful meditation on kindness 

The 50 best things to eat and drink right now

A lifetime of unspoken love. Get the tissues ready 

The art of conversation 

Some of the narrowest homes in the world

image

Photo by Nick Kane, via Pitman Tozer Architects 

Stickers: Breaking Bad

Walt’s certainly found himself in quite the quagmire since turning to meth as a means of income. Since tearing through the New Mexican desertscape in nothing but tighty whities and a gas mask, we’ve watched him navigate through the most outrageous midlife crisis ever, and transform from the repressed Walter White into the hell-bent Heisenberg.

In Breaking Bad, the wildly acclaimed AMC series by creator Vince Gilligan, Walt tries to strong-arm a world that is something sinister indeed, while we’re left wondering who the bad guys really are.

Join Walt, Jesse, Hank, Mike and Gus as they cook up something volatile, in our new Breaking Bad sticker pack, created by illustrator Henrique Athayde. Now available in the Path Shop.

image

Engineering: How We Built Path Messaging

This blog post by Path server engineer Neil Chintomby is part of a series in which our engineers discuss how we build some of our favorite features.

We wanted to build messaging to allow folks to communicate directly, either with a friend or family member or with a group of people.  And we wanted them to be able to share the same creative content through messaging that they can share elsewhere in Path.

To build the feature, we took the four people who were working on messaging — one each from iOS, Android, server, and design — and put them in a room together until the feature shipped.  It was really helpful to have everyone working in the same place because messaging was such a large cross-functional effort.

Server

On the backend, we started out with a stock ejabberd server, which is an open source Erlang-based XMPP server, using the publish-subscribe XMPP extension (XEP-0060) and then customized this configuration to fit our feature and performance needs.

Datastore Optimizations

Out of the box, ejabberd comes with an mnesia database.  We replaced mnesia with a Python-based API service which then talks to MongoDB.  We had three main reasons for implementing this API service.  First, we wanted to decouple the ejabberd servers from the datastore, giving us a layer of technical flexibility.  We had learned from previous experience that having servers talking directly to MongoDB led to difficulties in scaling so we wanted to avoid those pitfalls when bringing up messaging.  The second reason was for the API service to provide a layer of caching between ejabberd and MongoDB and give us more consistent timings when fetching data.  The third reason was because we could cache many more items for a node with our own API service, instead of relying on ejabberd with mnesia which limits the number of items maintained for each node.  Although this limit is configurable, being able to control our caching layer was likely to be less problematic.


The main purpose of the API layer is to provide a layer of caching on top of MongoDB.  Instead of querying the database repeatedly for potentially unchanged data, the API layer enabled us to do the caching of nodes for which a given user is subscribed, and also caches items for a given node.  When an item is published, it is written to the write-through cache on the API layer.  The item is written to the items database, and then the corresponding node in the nodes database is updated with the new item information.  The nodes database maintains a last modified timestamp per node as well as a cache of the most recent items in a node, stored as a blob of data to reduce unnecessary queries.

It was important to make sure that the API layer operated as efficiently as possible because one of our requirements was to be able to use messaging from multiple devices.  If we only supported messaging on one device at any given time, it wouldn’t be as crucial to have a performant retrieval system or long-term message store.  Because we decided to allow users to message from as many devices as they wanted, we had to make sure that we would be able to scale our long-term storage system and aggressively optimize message retrieval to access those messages.

Client Feature Requirements

One of the features we implemented in the client was the ability to scroll back through earlier messages, as it doesn’t make sense to store all of the messages in the history of the conversation locally on the client, especially for chatty conversations.  The result set management XMPP extension (XEP-0059) didn’t quite meet our requirements because that was quantity-based and our implementation for pulling older messages was time-based.  We decided to modify the items request to take `before` and `since` attributes.  The client then uses these date attributes to specify the range of items to request, giving the client the flexibility to ask only for items that are necessary for display.

Another feature we implemented on the client was the ability for a user to set user-specific settings on a conversation.  One example is muting, or suppressing notifications, for a conversation.  To support this on the server side, we created a new type of request that the client could call specifically for getting and setting these user node settings, and then added new handlers on the ejabberd side to handle these new stanzas.  Per-user per-node settings conceptually sound similar to subscription statuses in that there is a specific state for each user on each node, and in fact internally that information is actually stored in the same database document.  However, overloading the subscribe request to get these client-specific settings did not sound ideal, so that’s why we decided to make a new set of requests to handle the application level features.

Performance

To minimize the number of calls the client makes to the messaging servers, we added last modified timestamps to subscriptions responses.  First, we wanted to minimize get items requests so that we didn’t request items for subscriptions which hadn’t changed in months.  We added a new last modified attribute to each subscription in the subscriptions response, indicating when an item was last published to that node, which the client then stores locally.  The next time the client asks for subscriptions, if a last published timestamp for a node is newer than the timestamp that the client has, then the client will request new items from that node, which is another request where we can use the `since` attribute that we added to get items requests.  This way we optimized the client to only make get items requests for nodes that actually have new content and reduced get items calls to the server.

Because we support messaging on multiple devices, a user could update their settings from one device, and then we would need some way to keep the other devices in sync.  A basic approach would be to always ask for the user node settings for every subscription on every connect.  However, this is extremely chatty, especially for information that is not likely to change often.  To reduce these requests, we added a last modified timestamp for when the user last changed their settings for that node, to each subscription in the subscriptions response as well as both the get and set user node settings responses.  The client then stores this timestamp locally, and when it sees that a subscription has a newer settings timestamp, only then will it make a get user node settings request to update to the new node settings.

iOS Client

On the iOS client, we were already using Core Data as our local store, so we added new message and conversation entities to the model.  To handle the XMPP side of things, we used XMPPFramework (https://github.com/robbiehanson/XMPPFramework).  Choosing to use a readily-available XMPP framework allowed us to get up and running quickly and spend more time focusing on implementing features and making performance optimizations.

Optimizing Sent Message Display

We spent time thinking about how to increase the responsiveness of the message-sending experience and came up with the idea of pending messages.  Our initial implementation of sending messages used a straightforward fetched results controller approach, which watched for new messages added to a conversation and then displayed them.  So, if the user typed a message and pushed the send button, the message object would be created and saved on a separate serial queue used for writing to the database.  The main thread would then hear about the change, merge the changes in, and then finally the fetched results controller would get a callback about the new message object and the sent message would appear in the conversation’s table view.  Using this basic initial approach on an iPhone 4 running iOS 5.0.1, it took on average 350 milliseconds for a sent text message to appear in the sender’s thread.

We saw room for improvement here and experimented with the idea of having a “pending message” to display in the conversation.  Instead of waiting for the database write queue to create and save the message object, and then wait for it to propagate back to the fetched results controller, we create a message object on the main thread and add it directly to the conversation’s table view so that the message displays nearly immediately.  After that, the real version of the message object gets created and saved on the write queue, as expected.  Eventually when the fetched results controller hears about the new real message, it checks that message against the list of pending messages.  If it finds a real message match for a pending message, that message cell’s backing message gets transparently swapped out from the pending message to the real message.  With the pending message approach on an iPhone 4 running iOS 5.0.1, it took on average 35 milliseconds for a sent text message to appear in the sender’s thread, an order of magnitude faster than the initial approach.

Multi-step Photo Messaging

We took performance optimizations even further with photo messages.  There are multiple steps involved in sending photo messages.  When the user is at the photo editing screen, all of the edits, such as filters, are being previewed on a smaller sized version of the full image for performance.  Once the user presses the send button, we apply the edits to the full size image and generate two thumbnails, a colour thumbnail and a low resolution greyscale thumbnail.  The colour thumbnail is used for displaying the photo message on the sender’s side, and the greyscale thumbnail is attached to the message that gets sent to the recipient.  The greyscale thumbnail acts as a placeholder photo message-of-intent for the receiver, while the full size edited photo is processed by our servers and then broadcast back down to the recipients with a colour thumbnail as well as the full size photo.  Sending photos in many small steps means that the flow of conversation is not interrupted or held up by sending photos.

Optimizing Photo Sending

Our initial implementation of photo sending was as soon as the user pressed the send button for the photo, to create the colour and greyscale thumbnails, and also apply image edits onto the full size photo on a global queue.  Once all of the image processing was finished, we would come back to the database write queue and create the photo message object, attach the thumbnails, and then send the photo message.  However, even using pending messages, this basic approach took on average 4 seconds for a sent photo message to appear in the sender’s conversation on an iPhone 4 running iOS 5.0.1.

Almost all of that time was spent applying the image edits to the full size image, so it was clear we needed to defer the full size image processing.  The approach we ended up going with is as soon as the user pressed the send button for the photo, we immediately create the small colour thumbnail and the low-resolution greyscale thumbnail.  We then create the pending message as described earlier, using the colour thumbnail, and display the photo message immediately to the sender.  Then we send off the message to the recipient with the greyscale thumbnail attached.  Only after that do we dispatch the full size image processing to the global queue.  After the image processing is finished, we create the real message object and send up the photo to our servers to be broadcast back down to the receivers.  By deferring the full size image processing until after we create the message for the sender and fire off the low-res greyscale thumbnail to the receiver, it takes on average 250 milliseconds for a sent photo message to appear in the sender’s conversation on an iPhone 4 running iOS 5.0.1, again an order of magnitude in improvement, and almost all of that time being in creating the two thumbnails.

What’s Ahead

We are continuing to make messaging better, more performant, and more fun! 

Want to help build our next big feature? Apply now at path.com/jobs