Categories
General

Let Parse handle the backend for you

parsecloud

It seems like everything is moving to the cloud these days. Microsoft Azure offers Mobile Services to handle authentication, notifications, storage, and many more services for your applications. One less thing to worry about since the cloud can handle login and storage for me. This speeds up development and time to market.

When I started writing android applications, I spend a lot of time finding tools and services to help me write these apps faster. That’s when I met Parse, a cloud-based platform that can handle login, storage, and push notifications.

Parse was acquired by Facebook in 2013 in a deal worth $85 million. Since the acquisition, Parse has open source their SDK. They currently have SDKs for iOs, Android, JavaScript, OS X, Unity, PHP, .Net, Xamarin, Arduino, and Embedded C.

Let’s take a look at the Anywall Android application to see how Parse handles our backend needs.

The Anywall Android app code is hosted at github and you can read the code with this link.

To keep things simple, I’m going to focus on the SignUpActivity.java file and see what it takes to register a new user with Parse.


ParseUser user = new ParseUser();
user.setUsername(username);
user.setPassword(password);

// Call the Parse signup method
user.signUpInBackground(new SignUpCallback() {
  @Override
  public void done(ParseException e) {
    dialog.dismiss();
    if (e != null) {

    // Show the error message
    Toast.makeText(SignUpActivity.this, e.getMessage(), Toast.LENGTH_LONG).show();
    } else {
      // Start an intent for the dispatch activity
      Intent intent = new Intent(SignUpActivity.this, DispatchActivity.class);
      intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
      startActivity(intent);
    }
  }
});

It is very simple. You first create a new instance of ParseUser and then call the signUpInBackground method. If we get an error message, we show the error message to the user. If the sign up process was successful, we send the user to the dispatch activity.

Very simple! I’m free to concentrate on my application code. For this example, I was not concern with the database setup and maintenance. And also the ParseUser handles all the authentication and user management for me. With all the time saved by not doing these things, I can focus on my application’s logic and user experience.

If you take a look at the Application.java file, you will see the setup needed by Parse to communicate with our app.


@Override
public void onCreate() {
super.onCreate();

ParseObject.registerSubclass(AnywallPost.class);
Parse.initialize(this, "YOUR_PARSE_APPLICATION_ID",
"YOUR_PARSE_CLIENT_KEY");

preferences = getSharedPreferences("com.parse.anywall", Context.MODE_PRIVATE);

configHelper = new ConfigHelper();
configHelper.fetchConfigIfNeeded();
}

The above code is calling the initialize method with our Parse application id and client key.

Now let’s create our own objects with Parse. Read the AnywallPost.java file.


package com.parse.anywall;
import com.parse.ParseClassName;
import com.parse.ParseGeoPoint;
import com.parse.ParseObject;
import com.parse.ParseQuery;
import com.parse.ParseUser;

/**
 * Data model for a post.
 */
@ParseClassName("Posts")
public class AnywallPost extends ParseObject {
  // properties for this class
}

At the beginning of this file, we import Parse’s packages to help us create our own data models. And then just add the things you need. Pretty neat!

As you can see from these examples, Parse is handling my backed needs by providing services that handle user management, and storage. I can spend my time worrying about the application’s killer features. Give Parse a try and let me know how you like it.

Categories
General

Knowledge Transfer for Software Developers

knowledge

A hard drive is effective at storing data. When there is a hard drive failure, we get a new one and transfer data from backup. It is a simple process to transfer data from one hard drive to another hard drive.

However, it is not a simple process to transfer knowledge. In my case, this knowledge relates to software development. How do we transfer all this knowledge to new software developers? In this post, I will share tools and tips for a successful knowledge transfer.

Wiki

To be able to share knowledge effectively, we need to store that information in an accessible space. If you have notes buried in your inbox, it is time to move them to a wiki. Having a wiki is essential in knowledge transfer.

Start with the most simple and obvious questions that a developer will need. If your wiki has the following questions documented, you are in the right path.

  • How do I get the tools I need?
  • How do I build the software?
  • How do I deploy?
  • Where do we host our applications?

By having these questions answered in a wiki, a new software developer should be able to setup his/her environment setup.

There are many open source wikis available for your use. If you prefer to buy a powerful wiki solution, I highly recommend Atlassian’s Confluence.

Start Coding

After the initial setup, a new software developer is anxious to start writing code. In my experience, this is the most challenging phase in knowledge transfer. In my current role, I’m working with 2 developers that have been with the company for more than 10 years. They have accumulated all these knowledge and now it’s my turn to help them maintain these applications.

In my experience, spending time to learn as much as you can in one application is important because it gives you the opportunity to become comfortable with that application. If you jump from one application to another, you are not going to learn in detail. You will only know the basics on that application.

Start with simple bug fixes and continue with more complex changes. If you start with small changes, you will know how the application is structure. You will have a better understanding of the application and with time you will have the chance to add more complex features.

To help you gain more knowledge, make changes to all layers in an application. For example, modify the user interface this week but next week make changes to the back-end or database.

As you gain more knowledge, don’t forget to update the wiki with important details. Try to document only the most important details.

Rotation

After spending 6 months or more in one application, it is time to gain more knowledge about other applications. Start with simple tasks and move to more complex ones. Sometimes this is not an option. But there is always turn-over and people leave for many reasons. That’s why having different developers know about many applications is important. If a developer leaves today, you will have others that can continue the work.

Conclusion

Knowledge transfer is a difficult process that takes time. By having a wiki, you can document your setup and environment. With the help of a wiki, new software developers can start producing new code or maintaining existing applications. And finally, rotating software developers from one application to another benefits everyone.