Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nick 10/27 #4035

Open
10 tasks
sam1rm opened this issue Oct 23, 2015 · 4 comments
Open
10 tasks

Nick 10/27 #4035

sam1rm opened this issue Oct 23, 2015 · 4 comments

Comments

@sam1rm
Copy link
Collaborator

sam1rm commented Oct 23, 2015

Agenda

Task #1 Remote Data Service

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

  1. 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?
  2. Do research until you understand it -- ask me questions if need a stronger foundation with any concepts. Happy to white board anything.
  3. Schedule & w/ me -- to make sure I don't add anything to the picture last second
  4. 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.

  • This one has to be first - click why -- Once you find write workflow -- delegate jason to set itup
  • Install sublime plugins that enforce best practices (Take note of the things you wish you had)
  • How to best enforce javascript best style practices etc.
  • There are literally plugins that will not let you submit to github if you don't follow certain rules like "the comments must have full sentences.
  • .gitignore
@f230536
Copy link
Contributor

f230536 commented Oct 24, 2015

@nicknaky

  • IOS Check Facebook ->
    67 988510 log com.facebook.katana is not available
  • IOS Card reader -> scan -> successes -> cancel -> message ->
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
  • IOS Display Badge -> No notification receive
74    073989   log      Setting badge count of 5 to the app icon.
75    074031   log      registrationId: 156210d032271880f82c04a8fa64f5375485b4f6341cde2e2a08eb37c4f20177
  • IOS play audio -> App freeze
90    679942   log      filePath: file:///var/mobile/Containers/Data/Application/86E6CD56-53E7-43AA-ADC0-3EF7E49E578A/Library/NoCloud/
89    679940   log      testName: 
  • IOS Google map -> map showing up but it is behind side bar

@yaynick
Copy link
Contributor

yaynick commented Oct 24, 2015

@f230536

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

  • Check Facebook should work now
  • Canceling Card Reader should no longer throw error
  • IOS Display badge should work now
  • IOS play audio works but give it some time to fetch the URL
  • IOS Google map is fixed, but at the cost of the side bar setting width to 0. the work around for developing/testing is to just reopen the sidemenu again. it's currently set to change width to 0/80% every time it gets toggled.

@sam1rm
Copy link
Collaborator Author

sam1rm commented Oct 27, 2015


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 Nick 10/20/2015 - Today is Cordova Day #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

@sam1rm sam1rm changed the title Nick 10/23 Nick 10/27 Oct 27, 2015
@yaynick
Copy link
Contributor

yaynick commented Oct 27, 2015

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

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

No branches or pull requests

3 participants