u-guru / uguru

College "Uber for Tutoring" app at texas universities
https://u.guru
0 stars 0 forks source link

Nick 10/27 #4035

Open sam1rm opened 8 years ago

sam1rm commented 8 years ago

Agenda

Fetching & storing at the right time & place

    • Read the spec below, meet, and ask any questions. No background threads, decrease risk.
    • Spend 15 minutes researching, learning, building stronger base, or even propose execution method than below
    • For each bullet-point, add a "best-case" & "worst-case" time-bound in the comments. (i.e. 1-2pm best time, 1-3pm worst case)
    • Ping me to meet -- if you're 100% confident & then don't need to, that's fine! Let me know when you start.
  1. Modularize the service for the rest of the task
    • Fetch all remote data asynchronously when there is a steady internet connection
    • If steady, use consecutive (back to back) timeouts
    • Think about the best naming, access methods, static variables (look it up to confirm) for this service.
    • Create all empty functions necessary -- modularity, do not implement anything until you are done with the entire process. See below for list of requirements. What are the main steps/functional components to successfully execute?
      • [ ] Fetch data w/o impacting UI Thread
      • [ ] Store data based on platform
      • [ ] Dump/decrease data payload (size)
      • [ ] How to effectively communicate with other services that are in the same controller -- without it getting in the GUI?
      • [ ] Failover case: what if we don't get the data in X seconds -- what if something happens where it has no idea when it's going to get the data?
    • Execute & apply to first the courses controller
  2. Rubric
    • Apply to courses (the hardest one)
    • &Requirements&
      1. Seamless transitions. Slider must be seamless from home --> major --> courses
      2. GUI Thread should not be impacted at the slightest bit (aside from loaders for that particular screen)
      3. Efficient storing based on usability. How frequent will this dataset be used for the user? Does it need to be local? What portions should be local?
      4. Must be able to dispatch & receive events from other entities without GUI thread
      5. Sensible modularity. (getting this right is hard)
        • University, Courses, and Majors should be passed into this service
        • Methods such as "fetchOnStart", "refetch", "notifyUser", "dispatchSuccessEvent" etc. All functionalities should be encapsulated with respective environments, no entity should not more than it has to, or know how to speak/communicate with other entities
      6. Bonus (only if you are around best case time intervals)
        • FetchOnControllerLoad
        • FetchBeforeStateTransitionMode
        • Look at events fired before state.go() transitions
  3. Apply
    • To the remainder controllers that have remote data.
  4. Track
    • Add analytics to this on localytics
    • Detect local vs production model (window.location.url is one way + look up other best way if you're still interested)
  5. Cleanup, refactor, teach
    • Go best practice
    • Schedule 10:30am tech-talk where you will go over this with the rest of the team
    • Schedule a tech-talk with everyone (5x5 slide)
    • don't spend more than 30m than this, very informal + you can even just pull out your code on stage

      Tast #2 List Views

  6. Create a list of all the reasons why the list view is not as seamless as me flicking my finger like that react app (reasonable to you). You can have different ones for different platforms.
    • Remember -- be efficient
    • if you can pull an ionic repo with a list view that is seamless, why not just fork it, copy it & add our shit to it?
  7. Do research until you understand it -- ask me questions if need a stronger foundation with any concepts. Happy to white board anything.
  8. Schedule & w/ me -- to make sure I don't add anything to the picture last second
  9. Based on the one's we agree on the most -- try to apply that methodology

    Tool setup / efficiency / etc

Apply shoot-your-self-in-the-foot-terminology Do these in order of impact, but of course, it's okay to indulge in something more exciting for a bit first Also, please add more to this as we go -- it's always good to keep someone on top of this on an ongoing basis.

f230536 commented 8 years ago

@nicknaky

67    470854   log      card.io scan complete
68    470856   log      Error in Success callbackId: CardIO674431826 : TypeError: null is not an object (evaluating 'response[field]')
69    470858   error    TypeError: null is not an object (evaluating 'response[field]'), http://192.168.0.109:8100/cordova.js, Line: 1114
74    073989   log      Setting badge count of 5 to the app icon.
75    074031   log      registrationId: 156210d032271880f82c04a8fa64f5375485b4f6341cde2e2a08eb37c4f20177
90    679942   log      filePath: file:///var/mobile/Containers/Data/Application/86E6CD56-53E7-43AA-ADC0-3EF7E49E578A/Library/NoCloud/
89    679940   log      testName: 
yaynick commented 8 years ago

@f230536

Please pull the latest branch Also check out the wiki for extra information on the device quirks: wiki

sam1rm commented 8 years ago

From last week
  1. Setup jason or make sure he is good to go until he has questions
  2. [Github]
    • It gets expensive after 10 repos --> please put all in one.
    • Check out github organizations pricing --> its ridiculous lol
    • Try googling it to see what other companies do for your use case
  3. Finalize plugins
    • Compile all of them with ug_build with no problem / create a hassle-free guide (i.e.wiki) for me and jason. Here is the list s(LMK if I am forgetting something)
    • [ ] [plugin] Referral --> Share
    • [ ] [plugin] Toasts Service-->
    • [ ] [plugin] Maps Service-->
    • [ ] [cardio] credit card card io
    • [ ] [plugin] Push notifications
    • [ ] [Samir] Share dialogs
  4. Replace homepage background map w/ origin/samir-dev. If this task is "CSS" heavy, then just show (a just-as-equal-if-not-more-important) an example of one modal with different size map-views (80% width 20% height + 20% width and 80% height)
  5. Assure that they work && that there are no curve balls from ionic/cordova/whatever else
  6. Verify plugins and use old issue #3953 as a template to track success
  7. Meet && go over the plugins 6, Desktop Version -- link Gabrielle's stuff (take a break lol)
  8. Bug-fixing
yaynick commented 8 years ago

2, 3 seem like the same thing? or if not, I don't really know how to do one or the other without any overlap of doing both.

  1. best case: 2pm, worse case: 3pm
  2. best case: 2pm, worse case: 3pm
  3. best case: 4pm, worse case: 4:30pm
  4. best case: 4:30pm, worse case: 5pm
  5. best case: 5:30pm, worse case: 6pm