Memo Writing Practice

For my last assignment of this quarter, I was “hired” as a lead mobile developer and had to provide recommendations on BuySell Inc’s buying and selling application, research market competitors (LetGo, Mercari, and OfferUp) and choose a Cloud Service Provider and recommend at least three MBaaS services for the new application. I had to also list the requirements and scope of the work. It seems persuasive, yet professional.

BuySell, Inc.

To:      Chief Technology Officer

From:  Elyse Segebart

Date:   December 13, 2019

Re: MBaaS Services for BuySell Application

Chief Technology Officer,

After careful research and consideration, I have determined BuySell, Inc.’s BuySell application will benefit from using a Cloud Service Provider (CSP) and Mobile Backend as a Service (MBaaS) services to compete with other applications in the market. This will allow BuySell Inc. to get the application running quickly while reducing cost of implementing a mobile backend infrastructure. The business problem lies in which CSP to choose and what MBaaS services will be necessary for the application. After outlining the scope and requirements of the application, I will provide the MBaaS services I recommend and their necessity.

BuySell requirements scope includes:

  1. Advertise and browse products and services
    • a. Sellers advertise products and services using a variety of media
    • b. Buyers browse a catalog of advertised products and services grouped into common categories and subcategories such as clothing, electronics, household, handmade, etc.
  2. Connect buyers and sellers
    • 2.a.Buyers interested in purchasing an item from a seller will be able to communicate with each other about said item
  3. Transactions to buy an item will be completed in an easy and secure environment
  4. Shipping options provided for buyer to include shipping or offer Free shipping by paying the shipping out of purchase amount
    • 4.a. Prepaid label will be provided for all shipped transactions
  5. Users will be able to provide feedback on the buying and selling experience

Scope does not include:

  1. Methods to verify sellers (such as ID check, phone number, or badges indicating factors such as fast shipper, member since, or quick responder)
  2. Other payment methods such as PayPal or Stripe integration
  3. Moneyback guarantee or Purchase Protection on items bought and sold within the application
  4. Targeted ads within application

In reviewing different CSPs such as Amazon AWS, Google Firebase, and Microsoft Azure App Service, I have determined Google Firebase will be the best option since it is designed to be scalable and user-centric while aiding in creating the best user experience. Firebase provides a real-time database platform and a real-time database management API so there is no need for a backend server, the ability to sync real time data in the application, authentication, cloud storage, analytics, and crash reports.

The MBaaS services I would recommend for this application are:

  1. Firebase Authentication. Signing up and signing in are an integral part of the user experience and should be made as simple as possible with security being a forefront consideration. Firebase makes this easy to integrate different methods of signing up and signing in using phone authentication, email and password, or social media authentications in 10 lines of code or less.
  2. Firebase Real-Time Database. The application will include messaging between users and listings that include a variety of media that will need to be stored. The Real-Time Database is a good choice since it stored in a NoSQL database using JSON and is hosted on the cloud. It integrates with Firebase Authentication making the security model very intuitive.
  3. Firebase Cloud Storage. Photos and messaging will be hosted on the cloud and storing it in the cloud would be a logical option. Using cloud storage will improve the user experience by making data efficient and accurate while improving bandwidth.
  4. Google Analytics for Firebase SDK. Metrics are a very useful and integral part of improving business and optimizing applications. Metrics may include user demographics, app engagement, or user retention. There is unlimited reporting for up to 500 unique events for free and across all devices for web, iOS, and Android.
  5. Firebase Crashlytics. Making a quality application will enhance user experience. This service will help identify and categorize errors at runtime and determine which bugs require immediate attention. This will also enhance productivity by using resources efficiently.

If you have any questions or concerns regarding my recommendations, I encourage you to contact me and we can review them together.

Sincerely,

Elyse Segebart

Lead Mobile Application Engineer

Cell: (555) 222-3333

PhoneGap Tips: Beginner Guide to Creating and Testing Your First App

Recently, I took a Cross-Platform Mobile Application Development class and worked with PhoneGap for the past five weeks. PhoneGap was developed by Nitobi Systems, but was acquired by Apache so it’s actually Apache Cordova now, but you can still download it as PhoneGap and use the PhoneGap commands in your terminal. I will refer to it as PhoneGap throughout the rest of this article.

So PhoneGap allows developers to create mobile applications without having to write the mobile application in its native language. Cool, right? The application can be developed in HTML5, CSS3, and JavaScript and PhoneGap does all the under the hood stuff to make your application run on the platform you desire. I used PhoneGap to create Android applications and used the PhoneGap application on Play Store to run my PhoneGap application on my physical device.

Before you get started, you will need to install the PhoneGap CLI and node.js for your JavaScript to run in your application. The documentation is very easy to follow and you can find it here:

Documentation for PhoneGap CLI is located here -> http://docs.phonegap.com/getting-started/1-install-phonegap/cli/ (*make sure you click the CLI tab and not the Desktop App tab above the documentation)

Once you have done that, we are ready to get started! Woo!

To create your PhoneGap application, navigate to the directory you want to save your application. For me, I am navigating to my phoneGapApps folder I created to store my projects.

Navigating to the folder to save my application.

We are now ready to create our first application! The photo below shows the command to create an new PhoneGap project.

Creating your first application from command line.

To use the phonegap commands, you want to change directory to the www folder in your application. Of course, your file directory may be different than mine. SO, if you go into File Explorer, click on your project (I am using my airport info project, use your myFirstApp project), and click into the “www” folder, right click the text box that says what folder you are in, and copy address as text:

Copy address as text from file explorer.

Now we can go into our terminal and cd (change directory) to this directory. Don’t forget to add quotation marks around your file location.

I used the Brackets.io editor because it has live preview for Chrome. If you are in Chrome browser, press CTRL + SHIFT + I and it will open the Chrome Developer Tools. There is a little symbol at the top of the developer tools that looks like a little phone and tablet, click that and BOOM you have Device Mode. Okay? Okay. Now above your device in your browser, you can see you can select different devices with different screen resolutions and add/edit the screens you want to test on. To the right of the tool bar, you will see a little rotation button so you can change the view of the screen to test on that as well. WOW. Pretty cool, right?

Okay, but I want to know how to test from terminal. Yes, testing from the terminal is pretty sweet. So, in order to do this without getting an error, we need to remove the browser platform installed and update it with the new browser. You have to do this on EVERY project. While we can combine these commands together using &&, it has failed me before, so I prefer to do them one at a time. In your terminal, while in the “www” folder of your app in command line (which you still should be) type this:

Removing current browser platform.
Response to removing browser platform.

[PRO TIP: Whenever you see a $ sign in examples on stackoverflow or other sites, it just means you are typing a command like it shows on MacOS when you are in the terminal. I use Windows and this would have been a GREAT thing to have learned about a year into coding. I probably typed so many commands that would’ve worked, had I known that I didn’t need to type the $ sign! BAM, saved you a ton of time and tears.]

Now, we add in the most current browser platform.

Adding the current browser platform.

Now we are all set to run our application from our terminal. The command to run the PhoneGap application is:

Executing PhoneGap application in browser from CLI.
PhoneGap application result from using run command.

This is one way to get it to run in the browser. You can also use the Live Preview mode in Brackets.io. The third way to try it is to type:

phonegap serve –browser

Using server to serve application to browser.

Then switch to your browser window and type localhost:3000 in the URL box. Your application should open and you can CTRL + SHIFT + I to get it to device mode.

Opening application after serve command using localhost:3000.

When you want to get out the application running in command line, just hit CTRL+C a couple of times and it will ask you if you want to end it. Type Y. Boom, you’re out.

So there you have it! You can now create a PhoneGap application from command line, add and remove the browser platform, use Chrome Device Mode in your browser, and test your app in your browser three different ways.

In future posts, I will show you what to remove from your project, how to edit your project using Brackets.io, how to create a barebones template, and how to test on a physical device.

You can download the Brackets editor here -> http://brackets.io/

I hope you enjoyed this post, let me know your thoughts or if this helped you in any way. I love feedback!