{"action":"created","issue":{"url":"https://api.github.com/repos/SwerveRobotics/ftc_app/issues/41","labels_url":"https://api.github.com/repos/SwerveRobotics/ftc_app/issues/41/labels{/name}","comments_url":"https://api.github.com/repos/SwerveRobotics/ftc_app/issues/41/comments","events_url":"https://api.github.com/repos/SwerveRobotics/ftc_app/issues/41/events","html_url":"https://github.com/SwerveRobotics/ftc_app/issues/41","id":113239503,"number":41,"title":"Better introductory documentation","user":{"login":"helenarobotics","id":990181,"avatar_url":"https://avatars.githubusercontent.com/u/990181?v=3","gravatar_id":"","url":"https://api.github.com/users/helenarobotics","html_url":"https://github.com/helenarobotics","followers_url":"https://api.github.com/users/helenarobotics/followers","following_url":"https://api.github.com/users/helenarobotics/following{/other_user}","gists_url":"https://api.github.com/users/helenarobotics/gists{/gist_id}","starred_url":"https://api.github.com/users/helenarobotics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/helenarobotics/subscriptions","organizations_url":"https://api.github.com/users/helenarobotics/orgs","repos_url":"https://api.github.com/users/helenarobotics/repos","events_url":"https://api.github.com/users/helenarobotics/events{/privacy}","received_events_url":"https://api.github.com/users/helenarobotics/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-10-25T17:50:31Z","updated_at":"2015-10-27T03:20:30Z","closed_at":null,"body":"I've seen the video, but it assumes that the user will be using the same directory structure/package\r\norg.usfirst.ftc.exampleteam.yourcodehere\r\n\r\nWe have multiple teams, and since we can, it would be nice if we could use multiple packages to separate out each teams code.  However, attempts to create a new structure fail to compile.\r\n```\r\n@OnRobotRunning\r\npublic static void playSoundOnRobotRunning(Context context) {\r\n    SwerveUtil.playSound(context, R.raw.nxtstartup);\r\n}\r\n```\r\nwith\r\n```\r\nError:(55, 40) error: cannot find symbol variable raw\r\n```\r\n\r\n(I could find no reference to 'raw' anywhere in the entire project using 'git grep raw').\r\n\r\nSecond, the documentation at the top of the file 'MyRobotControllerAdministration' contains references to cloning and such, but it's not obvious what changes would need to be made as a team who cloned the repository recently.  Are those instructions still relevant?  Also, is the name of the class or package name important, or can the class be renamed (there is no inheritance or interface definitions on the class to infer behavior, so it's not obvious how the library is determining how the methods are to be called).\r\n"},"comment":{"url":"https://api.github.com/repos/SwerveRobotics/ftc_app/issues/comments/151360577","html_url":"https://github.com/SwerveRobotics/ftc_app/issues/41#issuecomment-151360577","issue_url":"https://api.github.com/repos/SwerveRobotics/ftc_app/issues/41","id":151360577,"user":{"login":"helenarobotics","id":990181,"avatar_url":"https://avatars.githubusercontent.com/u/990181?v=3","gravatar_id":"","url":"https://api.github.com/users/helenarobotics","html_url":"https://github.com/helenarobotics","followers_url":"https://api.github.com/users/helenarobotics/followers","following_url":"https://api.github.com/users/helenarobotics/following{/other_user}","gists_url":"https://api.github.com/users/helenarobotics/gists{/gist_id}","starred_url":"https://api.github.com/users/helenarobotics/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/helenarobotics/subscriptions","organizations_url":"https://api.github.com/users/helenarobotics/orgs","repos_url":"https://api.github.com/users/helenarobotics/repos","events_url":"https://api.github.com/users/helenarobotics/events{/privacy}","received_events_url":"https://api.github.com/users/helenarobotics/received_events","type":"User","site_admin":false},"created_at":"2015-10-27T03:20:30Z","updated_at":"2015-10-27T03:20:30Z","body":"Sure, I've just uploaded my version of your cloned repo.  The file in question is:\r\n\r\nhttps://github.com/helenarobotics/swerve_ftc_app/blob/team4309/YourCodeHere/src/main/java/org/helenarobotics/ftc/team4309/RobotRegistration.java\r\n\r\nRe: expensive, scanning the entire classpath is crazy expensive.  Both the Spring and Guice folks avoid doing it due to expense.  Both frameworks require you to either specify the classes and/or package being scanned due to expense of reflection on every class.  It gets even more expensive when additional libraries and frameworks are brought in.  (For example, we're considering bringing in the OpenCV classes, which would potentially be scanned for annotations that will never be used).\r\n\r\nIn a past life, I wrote an ORM library that made heavy use of reflection, and we also limited the classes we scanned to a limited subset (specific package) to avoid the cost of reflection startup due to significant startup/spinup time. However, hardware is much faster than it used to be, so the costs may be inconsequential now as compared to where they once were.  Although even in our environment, the cost of scanning a large number of classes is significant (can adds seconds to the start time of our application when we do deployments), although we have literally hundreds or thousands of classes that make up our application (including dependant classes in jars).\r\n\r\nBackground: I'm a professional SW developer with > 30 years experience, who has been doing Java programming since before version 1.0 was released, and currently write WebApps in Java in my day job."}}