Parse Command Line Gets a Power Up

As more people use Cloud Code, we strive to improve the tool that directly supports it, the Parse Command Line Tool. Today, we’re announcing three new features we’ve added to our command line tool: parse updateparse default, and parse jssdk.

parse update

As the name implies, this command helps you update the tool to its latest version. If you’ve previously updated the tool, you had to revisit the Parse docs and copy/paste this script to your terminal:

curl -s https://www.parse.com/downloads/cloud_code/installer.sh | sudo /bin/bash

This is where parse update comes to the rescue! Now, you can update directly from version 1.3.0 or later. This feature is currently only available for Unix-based operating systems, but we’re hard at work getting it added to Windows.

parse default

This command returns the default app that will be targeted with our existing features, such as parse deploy, parse log, parse releases and parse rollback, when an app is not explicitly provided. Before this patch, you had to edit your config file and the _default‘s link to your desired app if you wanted to leverage the default app behavior. Now, you can use parse default [app name] to set your default app.

parse jssdk

This feature returns the current Parse JavaScript SDK used on your Cloud Code. You can also explicitly set your current JavaScript SDK by using parse jssdk [version]. This allows you to have control over the Parse JavaScript SDK on your Cloud Code. You can see all available Parse JavaScript SDK versions by running parse jssdk -a.

$ parse jssdk -a
  1.2.17
  1.2.16
  1.2.15
  1.2.14
* 1.2.13
  1.2.12
  1.2.11
  ...

You’ll find the full docs here. Now, go update your command line tool and let us know what you think!

Listiarso Wastuargo
April 9, 2014

A Toast to Windows Phone Users

Did you know that our Push Notifications product supports Windows devices? As developers, we know how important it is to maximize the ability to reach out to your users, regardless of which phone they might be using. For a rapidly growing subset of mobile phone owners, those devices are running Windows, and we wanted to make sure that sending notifications to those users was as easy and powerful as our existing offerings for iOS and Android.

With Windows Phone on our list of supported platforms, you can leverage our API to gain thorough control of when and where you send Windows Toast Notifications. Of course, if you’ve used us for Push before, you know that the simplest method for scheduling notifications has always been through our Push Console – don’t worry, you’ll find an option for Windows Phone there as well.

Windows Phone Push Console

You can configure your Windows Phone app to accept Push Notifications by following the instructions in our Docs. Once you have registered installations of your app, you’ll be able to select the Windows Phone checkbox in the Push Console and see a preview of the Toast Notification that will appear on your users’ devices. Selecting the times and recipients of your notifications is as easy as it always was with the Push Console – the query builder allows you to choose specific subsets of your users, making sure your message gets to exactly the right people.

As always, you can read about all of our Push Notification services in our Docs, including how to track app opens through notifications.

Andrew Imm
April 3, 2014

f8 2014 Schedule Now Available

The schedule for f8 is now available! Mark Zuckerberg will kick it off with a keynote in the morning and then we’ll have more than 20 technical sessions in the afternoon.

We’ll also be live streaming all the keynotes and tracks from f8. If you can’t join us in person, be sure and tune in to the live stream of all the keynotes and tracks to catch all the new stuff and great content. Register here to learn more and be notified when the live stream begins.

Everyone at Parse is really excited to be part of f8 this year and we hope to see you there!

Ashley Smith
April 2, 2014

Production vs Development Apps

prodapps

It’s a very common use-case to have apps built on Parse that are both still in development and already in production. To help you make a clear distinction between Development Apps and Production Apps, we’re adding a switch in your app’s settings that lets you mark an app as a Production App. This will not only allow you to visually differentiate between your production apps and those still in development mode, but will in the future allow us to add security features that prevent you from accidentally editing content that is in production, or sending test push notifications to actual users (“Whoops!”).

We’re pretty excited about this, and hope you’ll find it useful!

Christophe Tauziet
March 31, 2014

A New Way to Report Bugs

If the way to a developer’s heart is great documentation, the way to stay there is through great support. Here at Parse we’ve always been happy to help through our community forums as well as through face to face conversations at one of our many developer meetups. As our community has grown, it has become increasingly important to provide a way to surface sensitive issues in a timely manner. Today, I’d like to introduce a new addition to our Help portal, the Report a Bug button:

reportbug
This will allow you to create a new bug report which can be associated with one of your Parse apps. You will also be able to tag your bug report with one of the top level product categories. This will help us triage bug reports as well as help other Parse developers discover related issues.

Let’s take for example a simple messaging app that allows people to send photos to their friends. These are stored in an Attachments class and I have set up an array of pointers through a Pointer field, attachments, in my Message class. Imagine for a second that the query I am using is suddenly not working and I’ve decided to submit a bug report. This sounds like a great fit for the iOS/OS X SDK > Queries category.

bugtoolreportflow
The above is a great example of a simple but concise bug report. It describes the unexpected behavior and provides all the code needed for our engineers to reproduce the issue. Once submitted, the report will be assigned to one of our engineers, and you will receive notifications on status updates for this specific report, such as “Fixed” or “Needs More Info”.

bugtoolstatus
You can also search for existing bug reports and known issues through the Bug Tool. You may subscribe to existing bug reports should you find that you’re running into a similar issue.

subscribe
I’m really excited about the launch of this new support channel, which will allow us to provide faster turnaround times for your bug reports. As always, feel free to leave any feedback on our community forums!

Héctor Ramos
March 25, 2014

MongoDB 2.6 Production Release Highlights

The Parse platform relies heavily on MongoDB. We use MongoDB for a variety of workloads, such as routing and storing application data, monitoring, real-time API request performance analysis, and billing and backend platform analytics. We love the flexibility and richness of the feature set that MongoDB provides, as well as the rock-solid high availability and primary elections.

So we are incredibly excited about the upcoming MongoDB 2.6.0 production release. You can read the full release notes here, but I’d like to highlight a few of the changes and features we are most excited about.

First and foremost, the index build enhancements. You will now be able to build background indexes on secondaries! For those who are unfamiliar with the way mongo performs indexing, the default behavior is to build indexes in the foreground on both primaries and secondaries. Foreground indexing means the index op will grab the global lock and no other database operations will be able to execute until the index has finished building (this includes killing the index build). Obviously this is not a reasonable option for those of us who ensure indexes are built in the normal request path. You can instruct the primary to build indexes in the background, which lets the indexing operation yield to other ops, but until now there has been no similar functionality on the secondaries. Parse makes extensive use of read queries to secondaries for things like our push services, and we have had to implement a complicated set of health checks to verify that secondaries are not locked and indexing while we try to read from them. Background indexes on secondaries will make this process much simpler and more robust.

Another terrific indexing improvement is the ability to resume interrupted index builds.

We are also very excited about a number of query planner improvements. The query planner has been substantially rewritten in 2.6.0, and we are eager to take it for a test drive. Mongo has also now implemented index intersection, which allows the query planner to use more than one index when planning a query.

The explain() function has been beefed up and they have added a whole suite of methods for introspecting your query plan cache. In the past we have often been somewhat frustrated trying to infer which query plan is being used and why there are execution differences between replica set members so it is great to have these decisions exposed directly.

Another interesting change is that PowerOf2Sizes is now the default storage allocation strategy. I imagine this is somewhat controversial, but I think it’s the right call. PowerOf2 uses more disk space, but is far more resistant to fragmentation.  An ancillary benefit is that padding factors are no longer relevant. One issue we have had at Parse (that no one else in the world seems to have, to be fair) is that we cannot do initial syncs or repairDatabase() because it resets all the padding factors to 1.0. This causes all updates or writes to move bits around disk for weeks to come as the padding factors are relearned, which in turn hoses performance. The inability to do initial sync or repair means we have had no way of reclaiming space from the database.

The hard-coded maxConns limit is also being lifted. Previously your connection limit was set to 70% of ulimit or 20k connections, whichever is lower, but the hard cap is now gone.  This totally makes sense and I am glad it has been lifted. However you should still be wary of piling on tens of thousands of connections, because each connection uses 1mb of memory and you do not want to starve your working set of RAM.

Here’s another thing I missed the first dozen or so times I read through the release notes: QUERY RUNTIME LIMITS! MongoDB now lets you tag a cursor or a command with the maxTimeMS() method to limit the length of time a query is allowed to run. This is a thrilling change. Parse (and basically everyone else who runs mongo at scale) has a cron job that runs every minute and kills certain types of queries that have been running past their useful lifespan (e.g. their querying connection has vanished) or are grabbing a certain type of lock and not yielding. If maxTimeMS() works as advertised, the days of the kill script may be gloriously numbered.

Ok, so those are the delicious goodie bits. Lastly let’s take a look at a painful but necessary change that I am afraid is going to take a lot of people by surprise: stricter enforcement of index key length. In all previous versions of mongo, it would allow you to insert a key with an indexed value larger than 1024 bytes, and it would simply warn you that the document would not be indexed. In 2.6 it will start rejecting those writes or updates by default. This is unquestionably the correct behavior, but will probably be very disruptive for a lot of mongo users when previously accepted writes start to break. They have added a flag to optionally preserve the old behavior, but all mongo users should be thinking about how to move their data sets to a place where this restriction is acceptable. The right answer here is probably some sort of prefix index or hashed index, depending on the individual workload.

There is a lot of exceptionally rich feature development and operational enhancements in this 2.6 release. We have been smoke testing the secondaries in production for some time now and we’re very much looking forward to upgrading our fleet. Be sure to check out the rest of the 2.6 release notes for more great stuff!

Charity Majors
March 25, 2014

Announcing f8 on April 30th, 2014

10012313_10101561081881268_356313840_oIt’s an exciting day for the Parse team as our CEO, Ilya Sukhar, just announced at SXSW that Facebook will be hosting an f8 this year. We’re excited to be a big part of this event, and to invite you, the members of our community, to join us on April 30th, 2014 in San Francisco. Held at the San Francisco Design Concourse, f8 will be a full day of technical talks and hands-on sessions for more than 1,500 mobile and web developers from around the world. There will also be a live stream of the full event for those of you who won’t be able to join in person.

We will have Parse engineers available throughout the day to provide one-on-one help and advice, and will close out the event with a celebration for attendees to unwind with drinks and entertainment.

After the success of Parse Developer Day and Facebook + Parse Mobile Developer Day, we’re excited to be a part of this larger Parse + Facebook event where we can come together to explore the opportunities available to developers building on the two platforms.

Visit fbf8.com to learn more and to sign up to be notified when registration opens. We’ll begin accepting applications to attend soon!

Ashley Smith
March 8, 2014

Free Your Data

Getting to your data is an important part of many application development flows. Whether you need to perform additional analysis on your data, back it up, or duplicate it in a different Parse app, exporting quickly becomes a crucial piece of your development toolkit.

Over the last few weeks, we’ve greatly improved the performance of exports, ensured that our export system could handle even the largest apps, and added some neat UI features to improve the overall experience. For larger apps, it’s not very convenient to export and download all of your data if you really just need one or two collections. To help with this, we’ve added a menu item in the data browser that will allow you to export a single collection.

Single collection import

Additionally, we added a progress bar in the main app export in the settings page. Since large apps could take several hours to export, this will give you more insight into what’s happening on our side.

App export progress

This is a first step toward improving some of the development flows that require extracting your app’s data. We have many exciting features in the pipeline but we’d love to hear your thoughts on how these flows could be improved. If you have a use case that is difficult to accomplish at the moment, reach out to us on Parse Help and let us know!

Mattieu Gamache-Asselin
March 5, 2014

Parse March 2014 Events

March is going to be a busy month for the Parse team. We’ll be attending and hosting several different events this month, and hope that you can join us at some of the following:

SXSW Interactive – March 7 – 11, 2014 – Austin, TX

Facebook, Parse, and Instagram will be hosting several events during the course of the SXSW festival this year, as well as several talks at the conference. Check out this blog post for a full listing of events.

Parse Austin Meetup – March 10, 2014 – Austin, TX
Join us for our first Parse Austin Meetup. This event does not require a SXSW badge and is open to anyone in the developer community who is interested in learning more about Parse. RSVP here to join us in Austin!

Game Developers Conference – March 19 – 21, 2014 – San Francisco, CA

Facebook and Parse are excited to be at the Game Developers Conference this year. Stop by booth 1838 to meet with members of both teams, and don’t miss the talk, “Facebook Unlocked: Trends & Growth Opportunities for Cross-Platform Games” which will include thoughts from Parse CEO, Ilya Sukhar.

BoxDev14 – March 26, 2014 – San Francisco, CA

Parse will be participating in BoxDev14, including an introduction to Parse talk. Visit our team on-site to chat and bring us your questions about developing on Parse. If you haven’t already registered to attend, you can do so here with the code parsedev for 50% off!

We hope to see you at some of the above events this month!

Courtney Witmer
March 3, 2014

Parse + Facebook at SXSW 2014

Parse and Facebook are excited to be participating in SXSW this year, and we have a great lineup of speakers and events for conference participants (and non-participants) to attend. Keep an eye out throughout the event for the Parse + Facebook ice cream truck and be sure to register for the events below:

  • Friday, March 7th: Parse + Facebook Welcome Party, The Parish, 8PM – 12AM
    Join us at The Parish to kick off a great week of events. We’ll have performances by Learning Secrets, The Black Angels, and Holiday Mountain, plus much more. RSVP here today!
  • Friday, March 7th & Monday, March 10th: The Facebook Counter, FB HQ at the Belmont, 11AM – 3PM
    Register for some one-on-one time with Parse and Facebook team members at “The Counter” at FB HQ during SXSW. Pop in, grab a drink, and get some tips from Facebook and Parse experts from the Marketing and Platform teams. You must RSVP for a spot.
  • Sunday, March 9th: FbStart, FB HQ at the Belmont, 10AM – 12PM
    Apply to join Parse + Facebook at FbStart Austin for a special mobile-focused event for top startups covering how to best use Parse + Facebook’s organic and paid channels to drive growth, engagement and re-engagement on mobile. Including a fireside chat and Q&A session with the co-founder and CEO of Parse, Ilya Sukhar, the event is geared towards those focused on marketing, growth, and user acquisition. Content will be non-technical in nature and will be most relevant for companies who currently have, or are building, a native mobile app. We can accommodate up to two people per company. Apply to attend here.
  • Monday, March 10th: Parse Austin Meetup, Capital Factory, 7PM – 10PM
    If you’ve never used Parse before and need an overview, or if you want to learn more about what Parse apps are doing in the wild, join us for this meetup. There will be three talks from the Parse team, our partners at SendGrid, and a customer, plus open Q&A and, of course, drinks and networking. You can register to join us here – no SXSW pass necessary!

In addition to the events we’re hosting, also be sure to check out the great talks from Facebook, Parse, and Instagram team members throughout the conference, especially Parse CEO Ilya Sukhar’s talk, “Bringing Sexy Back to Developers” on Saturday, March 8th at the Four Seasons Ballroom from 3:30 – 4:30 pm. Get more details about the talk and talk venue here.

Courtney Witmer
February 27, 2014