Go to Post No, nothing secret unless you include the following: will it work?, can it be driven and will it release the balls. - twolf [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Reply
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 02-05-2016, 12:41
JohnM's Avatar
JohnM JohnM is offline
Registered User
FRC #5854 (Glitch)
Team Role: Programmer
 
Join Date: Mar 2014
Rookie Year: 2013
Location: North Carolina
Posts: 53
JohnM has a spectacular aura aboutJohnM has a spectacular aura about
Organizing your programming

Hi all. I was wondering now that the Stronghold season is over how all of your organize your team's programming. I'm putting together teaching tools for my team for c++ and I want to organize an official document for my team to follow when organizing their programs. My team has attempted GitHub, nobody really liked it on my team. I see the value in it, but it did mess up some things and I don't see it as very reliable when not many know how to use it properly. Do any of you use a different way?

Right now my plan is basically to use Google Drive to store archives of different versions of a programming project so that we can backtrack if necessary and have the programmers of the team fill out forms for the lead programmer to read and approve of changed to the programming project being worked on.

I would love to hear your method though.
Reply With Quote
  #2   Spotlight this post!  
Unread 02-05-2016, 12:49
nickbrickmaster's Avatar
nickbrickmaster nickbrickmaster is offline
Not Allowed Near Power Tools
AKA: Nick Schatz
FRC #3184 (Blaze Robotics)
Team Role: Leadership
 
Join Date: Jan 2015
Rookie Year: 2014
Location: Eagan MN
Posts: 156
nickbrickmaster is an unknown quantity at this point
Re: Organizing your programming

Using version control is the way to go. You don't need to use GitHub specifically, but Git can be used offline or with some other server such as BitBucket. SVN is also an option.

Seriously, version control is what is used in the professional world. Git is one of the most widespread VCSs out there. Our team uses it. It's very convenient to be able to go home and code with the most up to date version. It becomes even simpler to use if you have a UI for it (EGit for Eclipse). It's worth spending a day or two to go over how it works.
__________________
I have approximate knowledge of many things.

FRC 3184: 2014-, FTC 10648: 2015-
Reply With Quote
  #3   Spotlight this post!  
Unread 02-05-2016, 12:54
virtuald's Avatar
virtuald virtuald is online now
RobotPy Guy
AKA: Dustin Spicuzza
FRC #1418 (), FRC #1973, FRC #4796, FRC #6367 ()
Team Role: Mentor
 
Join Date: Dec 2008
Rookie Year: 2003
Location: Boston, MA
Posts: 1,053
virtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant futurevirtuald has a brilliant future
Re: Organizing your programming

Quote:
Originally Posted by JohnM View Post
Right now my plan is basically to use Google Drive to store archives of different versions of a programming project so that we can backtrack if necessary and have the programmers of the team fill out forms for the lead programmer to read and approve of changed to the programming project being worked on.

I would love to hear your method though.
That sounds really annoying and is exactly what something like git is designed to solve for you, good luck with that.

I agree that git is a bit annoying to deal with at first, but once you get over the hump it's really quite delightful. What about the workflow did your team have trouble with (and did you use pull requests? they're really the best thing about github).
__________________
Maintainer of RobotPy - Python for FRC
Creator of pyfrc (Robot Simulator + utilities for Python) and pynetworktables/pynetworktables2js (NetworkTables for Python & Javascript)

2017 Season: Teams #1973, #4796, #6369
Team #1418 (remote mentor): Newton Quarterfinalists, 2016 Chesapeake District Champion, 2x Innovation in Control award, 2x district event winner
Team #1418: 2015 DC Regional Innovation In Control Award, #2 seed; 2014 VA Industrial Design Award; 2014 Finalists in DC & VA
Team #2423: 2012 & 2013 Boston Regional Innovation in Control Award


Resources: FIRSTWiki (relaunched!) | My Software Stuff
Reply With Quote
  #4   Spotlight this post!  
Unread 02-05-2016, 13:02
Carl C's Avatar
Carl C Carl C is offline
Custom User Title
AKA: Carl Colglazier
FRC #2059 (Alumnus)
Team Role: Alumni
 
Join Date: Jan 2011
Rookie Year: 2008
Location: Cary, NC
Posts: 136
Carl C is a splendid one to beholdCarl C is a splendid one to beholdCarl C is a splendid one to beholdCarl C is a splendid one to beholdCarl C is a splendid one to beholdCarl C is a splendid one to behold
Re: Organizing your programming

Git is terrible; use git.

The learning curve may be steep, but there is not much that you really need to know to use git effectively. Once you start using git for a bit, it becomes really useful. We started using git to organize all of our programs while I was a student on our and we have since been able to move a manage a lot of different projects using git. Our website is updated using git; our branding files are all managed by git; our robots are all version controlled in git. Git may not be perfect, but it works really well in facilitating collaborative development.
Reply With Quote
  #5   Spotlight this post!  
Unread 02-05-2016, 13:09
Philip Arola's Avatar
Philip Arola Philip Arola is offline
You can check out any time you like
AKA: KG7VAM
FRC #2898 (The Flying Hedgehogs), FRC #1510 (Wildcats)
Team Role: Alumni
 
Join Date: Feb 2012
Rookie Year: 2012
Location: Beaverton, Oregon
Posts: 82
Philip Arola is an unknown quantity at this point
Re: Organizing your programming

Quote:
Originally Posted by Carl C View Post
Git is terrible; use git.
This is a perfect summary of version control, right here.

The rest are worse than Git by a mile. SVN and other CVS is awful (we tried; it's slow, poor support, no offline commits which will kill you at competitions). We have not tried Mercurial, but that is due to how (relatively) unsupported it is. To paraphrase Linus Torvalds (inventor of Git and Linux), everyone uses Git, even Microsoft. It is worth learning because of the preparation for the professional world that it provides.

Last edited by Philip Arola : 02-05-2016 at 13:16.
Reply With Quote
  #6   Spotlight this post!  
Unread 06-05-2016, 13:16
GreyingJay GreyingJay is offline
Robonut
AKA: Mr. Lam
FRC #2706 (Merge Robotics)
Team Role: Mentor
 
Join Date: Mar 2015
Rookie Year: 2015
Location: Ottawa, Canada
Posts: 775
GreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond repute
Re: Organizing your programming

I know this thread is a few days old, but...

Quote:
Originally Posted by JohnM View Post
My team has attempted GitHub, nobody really liked it on my team. I see the value in it, but it did mess up some things and I don't see it as very reliable when not many know how to use it properly. Do any of you use a different way?

Right now my plan is basically to use Google Drive to store archives of different versions of a programming project so that we can backtrack if necessary and have the programmers of the team fill out forms for the lead programmer to read and approve of changed to the programming project being worked on.
NO. PLEASE DO NOT DO THIS.

This could work if there's like two people working on the code, and if your code is super simple. But honestly, if anyone plans to work in the software development world, you're going to need to learn how to use version control. Now is as good a time as any.

I agree with others - git and github are not the easiest thing to wrap your head around. If nobody really gets what's going on, it can be even more frustrating. Trust me, I've been there. What you need to do is find someone who understands this stuff and get them to work with you until you understand it too. Even if this takes a few days or a few weeks, this is absolutely worth the time investment.

There are different ways to use git and github. The easiest is to have one repository on github for your projects, add your students as contributors, and let them each develop code in their own branches. (No forking.) Use a variation on the Git Flow software development model.
__________________
"If I'm going to mentor someone, I'm going to be involved in their life as a positive force." -Mechvet
Reply With Quote
  #7   Spotlight this post!  
Unread 06-05-2016, 13:32
marshall's Avatar
marshall marshall is offline
My pants are louder than yours.
FRC #0900 (The Zebracorns)
Team Role: Mentor
 
Join Date: Jan 2012
Rookie Year: 2003
Location: North Carolina
Posts: 1,263
marshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond reputemarshall has a reputation beyond repute
Re: Organizing your programming

Use git.

https://try.github.io/

We'll be doing some workshops in the fall for NC teams and one of them will be about using git.
__________________
"La mejor salsa del mundo es la hambre" - Miguel de Cervantes
"The future is unwritten" - Joe Strummer
"Simplify, then add lightness" - Colin Chapman
Reply With Quote
  #8   Spotlight this post!  
Unread 06-05-2016, 13:34
techhelpbb's Avatar
techhelpbb techhelpbb is offline
Registered User
FRC #0011 (MORT - Team 11)
Team Role: Mentor
 
Join Date: Nov 2010
Rookie Year: 1997
Location: New Jersey
Posts: 1,620
techhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond repute
Re: Organizing your programming

You don't organize programmers.
You object(ive) orient them
Reply With Quote
  #9   Spotlight this post!  
Unread 06-05-2016, 14:25
remulasce remulasce is offline
Registered User
no team
 
Join Date: Jan 2010
Rookie Year: 2007
Location: Mtn View
Posts: 139
remulasce is a splendid one to beholdremulasce is a splendid one to beholdremulasce is a splendid one to beholdremulasce is a splendid one to beholdremulasce is a splendid one to beholdremulasce is a splendid one to beholdremulasce is a splendid one to behold
Re: Organizing your programming

Quote:
Originally Posted by Carl C View Post
Git is terrible; use git.
100%. It's a total pain both to teach new programmers, and for the programmers themselves. But it must be done.

Requirement: At least one person reachable by your team must be actually comfortable with git. That sounds like a good job for you!

relevant: xkcd.com/1597/

From experience, I can tell you the most helpful thing you can do now is make sure your programmers are programming OUTSIDE of robotics. Team teaching tools are nice when you need to onboard somebody during the 6 weeks, but you're going to end up reteaching the same material to the same people every year when they forget it all over summer.

It doesn't matter what they're programming. Games are a nice standby, python + pygame is well documented for newbies. But teaching basic programming only during robotics time is an endless battle.
__________________
Student 294: 2007-2011
Mentor 597: 2013-2015
Google SWE: 2015-
Reply With Quote
  #10   Spotlight this post!  
Unread 06-05-2016, 14:47
BrianAtlanta's Avatar
BrianAtlanta BrianAtlanta is offline
Registered User
FRC #1261
Team Role: Mentor
 
Join Date: Apr 2014
Rookie Year: 2012
Location: Atlanta, GA
Posts: 70
BrianAtlanta has a spectacular aura aboutBrianAtlanta has a spectacular aura about
Re: Organizing your programming

Here's a video that helps explain how git works, to make it easier to understand.


Git For Ages 4 And Up
__________________
Reply With Quote
  #11   Spotlight this post!  
Unread 06-05-2016, 14:58
Ether's Avatar
Ether Ether is offline
systems engineer (retired)
no team
 
Join Date: Nov 2009
Rookie Year: 1969
Location: US
Posts: 8,057
Ether has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond reputeEther has a reputation beyond repute
Re: Organizing your programming

Quote:
Originally Posted by BrianAtlanta View Post
Here's a video that helps explain how git works, to make it easier to understand.
FWIW: The speaker says right up front that the target audience is "one step beyond" people who have never used git before.


Reply With Quote
  #12   Spotlight this post!  
Unread 06-05-2016, 14:59
GreyingJay GreyingJay is offline
Robonut
AKA: Mr. Lam
FRC #2706 (Merge Robotics)
Team Role: Mentor
 
Join Date: Mar 2015
Rookie Year: 2015
Location: Ottawa, Canada
Posts: 775
GreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond reputeGreyingJay has a reputation beyond repute
Re: Organizing your programming

Quote:
Originally Posted by remulasce View Post
It doesn't matter what they're programming. Games are a nice standby, python + pygame is well documented for newbies. But teaching basic programming only during robotics time is an endless battle.
Not to mention the added confusion of writing robot code that is event-driven, sort of, by way of the Iterative or Command based patterns.

Our software students wanted to work together on a little video game, and some of them have also worked on our vision code and Android scouting app, and there will probably be other small projects to come. It's good to get used to the idea that different projects can be very different from each other, but have similar underlying fundamentals.
__________________
"If I'm going to mentor someone, I'm going to be involved in their life as a positive force." -Mechvet
Reply With Quote
  #13   Spotlight this post!  
Unread 06-05-2016, 15:19
techhelpbb's Avatar
techhelpbb techhelpbb is offline
Registered User
FRC #0011 (MORT - Team 11)
Team Role: Mentor
 
Join Date: Nov 2010
Rookie Year: 1997
Location: New Jersey
Posts: 1,620
techhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond reputetechhelpbb has a reputation beyond repute
Re: Organizing your programming

Free section of 'Mastering Git' book:
http://cdn.oreillystatic.com/oreilly...754_Sample.pdf

BTW:
PacktPub gives away a free e-book a day.
Look for 'Free Learning' on their website.
I have several hundred from them.
You don't get to pick the topics like that, and the quality may vary, but free as in you click the button and they are yours.
Reply With Quote
  #14   Spotlight this post!  
Unread 06-05-2016, 15:20
BrianAtlanta's Avatar
BrianAtlanta BrianAtlanta is offline
Registered User
FRC #1261
Team Role: Mentor
 
Join Date: Apr 2014
Rookie Year: 2012
Location: Atlanta, GA
Posts: 70
BrianAtlanta has a spectacular aura aboutBrianAtlanta has a spectacular aura about
Re: Organizing your programming

Quote:
Originally Posted by Ether View Post
FWIW: The speaker says right up front that the target audience is "one step beyond" people who have never used git before.


Yes, for people that haven't used version control, it will be a little more complex. But if a team has every done a git commit, then they should be able to follow along. They might not know all the commands, but his explanation, I found, was very easy to understand.
__________________
Reply With Quote
  #15   Spotlight this post!  
Unread 06-05-2016, 15:46
MamaSpoldi's Avatar
MamaSpoldi MamaSpoldi is offline
Programming Mentor
AKA: Laura Spoldi
FRC #0230 (Gaelhawks)
Team Role: Engineer
 
Join Date: Jan 2009
Rookie Year: 2007
Location: Shelton, CT
Posts: 305
MamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant futureMamaSpoldi has a brilliant future
Re: Organizing your programming

I personally am not a fan of Git either. We have been using SVN for 8 years and it works great. We originally had a local respository, but last year we decided to store the repository online using SourceForge. This makes it easier for each programmer to access the updates individually.

As the programming mentor, I am the only one who can commit new code. This allows me to review all the code before it is shared. This also allows me to keep track of the progress being made and if someone needs additional help or support... or is going off on a tangent.

At competitions where we have no internet access I make a backup copy on a flash drive each time our lead programmer loads new code onto the robot. This is my role at competitions... just like during build season, I am the source code control system integrator. This backup provides a trail of what has changed between each download if something unexpected is affected. This is very helpful when something suddenly works differently on the robot... it helps the programmers be able to validate with certainty what changed and what did not change in the software. Each backup sub-directory is labeled with what was changed and when, eg. CMP-1b-MoreAutoAngle would be the code from Championship, day 1, version b (or 2nd change of the day), and change was adding more rotation driving to autonomous mode. This reminds me at a glance the types of changes that were made and when. After competition, the final version is committed to SVN and marked as a revision.

If you have questions or would like help setting something like this up, please feel free to pm me.
__________________

Last edited by MamaSpoldi : 06-05-2016 at 15:52. Reason: more details...
Reply With Quote
Reply


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 18:10.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi