Skip to content

Instantly share code, notes, and snippets.

@cahlan
Last active November 12, 2015 22:54
Show Gist options
  • Save cahlan/4a7f3e6145eab2c80b7f to your computer and use it in GitHub Desktop.
Save cahlan/4a7f3e6145eab2c80b7f to your computer and use it in GitHub Desktop.

Firebase: Flipped

Description

For the next two days, we're "flipping" the classroom. Flipped classrooms are a very recent technique used by educators to maximize the effectiveness of an in-person class experience. If you use the time effectively, you'll get farther in the next two days during the flipped portion than you would have in a normal setting.

The basic philosophy behind the flipped classroom is that you'll take time on your own to review the lecture before class. This will allow us to spend classtime answering questions, resolving confusion, and expanding what was learned during the lecture. Ultimately, you'll be better prepared for your day's projects and further along as a developer.

For the next two days, you'll be watching two lectures by Chris Esplin, a Firebase expert. He's a part of the Google Developer Experts program and a guest instructor at DevMountain.

Use the time reviewing the video lecture very carefully. Do not let the temptation to "multi-task" or be distracted (watching other videos/tv, working on other things, etc.). Pay full attention to the video and take notes. Follow along with the demonstrations, if applicable. If you don't engage with the videos, you won't get the benefit of the flipped classroom and you'll be behind the rest of the class.

After reviewing the lecture outside of class, we'll start the next day (after the Toy Problem) with a review of the lecture with your groups. The mentors will go through your questions and test your understanding.

Then we'll have a larger class review, where the instructor will test your understanding and answer questions. We'll then move into a project we build together. That will be a great opportunity to get more questions answered and achieve more understanding of the topic.

Finally, you'll continue on to the normal day's project.

Day I

  1. Watch video (only until 1:26:00)
  2. Take notes and especially record questions that you have.
  3. Seek to understand and answer the following questions, to the best of your ability:
  • What is Firebase? (How would you describe Firebase to newbie developer?)
  • What problems does Firebase solve?
  • Where does Firebase "fit" in the web landscape? (front-end, Javascript, Angular, back-end, servers, APIs, databases)
  • What data structure does Firebase use to store data?
  • How does Firebase's data structure "translate" into the URLs we use for Firebase references (refs)?
  • Chris mentions that we should try to structure our data as "shallow" as possible. What does that mean? Why would we want this?
  • What is AngularFire? How would we classify it? (language? library? SDK? framework? API?)
  • What are these AngularFire services and what is the difference between them?
    • $firebaseObject
    • $firebaseArray
  • Why are arrays problematic for Firebase?
    • How does Firebase track arrays? What does it use for indices or "keys?"
    • How do we add data to a Firebase array?
  • How do we convert a Firebase ref to data we can use (arrays or objects)?
  • What is "Three-Way Data Binding" as Firebase defines it (read up on this)
  • What is the purpose of $bindTo?

Make sure that you've done the following before class:

  • Create a Firebase account and a new Firebase app
  • Install the AngularFire SDK in a test project you create
  • Created a reference/ref to a Firebase node from your Firebase app
  • Play with creating a $firebaseArray from a ref, add data to it and remove data from it

Day II

  1. Watch video
  2. Take notes and especially record questions that you have.
  3. Seek to understand and answer the following questions, to the best of your ability:
  • How is authentication (auth) managed in Firebase?
    • What auth options are available and what are their differences?
  • How does the $firebaseAuth service differ from the other $firebaseArray and $firebaseObject services?
  • How does the email/password auth option work in Firebase?
  • What is an ACL and what is its purpose? How might you implement a rudimentary ACL in Firebase?

Make sure that you've done the following before class:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment