Go to Post Team 71: So good at Strategy they already have figured out next years game before the GDC has even met. - IKE [more]
Home
Go Back   Chief Delphi > FIRST > General Forum
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 09-02-2010, 16:41
efoote868 efoote868 is offline
foote stepped in
AKA: E. Foote
FRC #0868
Team Role: Mentor
 
Join Date: Mar 2006
Rookie Year: 2005
Location: Noblesville, IN
Posts: 1,372
efoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond reputeefoote868 has a reputation beyond repute
Re: The increasing amount of pre-canned code

Quote:
Originally Posted by 1075guy View Post
the problems I see are when the canned code encourages teams to do things that they dont have the required experience to use even the pre-canned stuff.
They might get in over their head, but that's part of the learning experience.
If something does break down, if they do fail, they will learn.
That's the point of FIRST.

You know why veteran programmers are so good at debugging code? Its because they've made a hundred times as many mistakes as the rookies. We should give the rookies every opportunity to learn, even if it means putting them at risk of "failure".
__________________
Be Healthy. Never Stop Learning. Say It Like It Is. Own It.

Like our values? Flexware Innovation is looking for Automation Engineers. Check us out!
Reply With Quote
  #2   Spotlight this post!  
Unread 09-02-2010, 16:51
Racer26 Racer26 is offline
Registered User
no team
Team Role: Alumni
 
Join Date: Apr 2003
Rookie Year: 2003
Location: Beaverton, ON
Posts: 2,229
Racer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond repute
Re: The increasing amount of pre-canned code

Quote:
Originally Posted by efoote868 View Post
They might get in over their head, but that's part of the learning experience.
If something does break down, if they do fail, they will learn.
That's the point of FIRST.

You know why veteran programmers are so good at debugging code? Its because they've made a hundred times as many mistakes as the rookies. We should give the rookies every opportunity to learn, even if it means putting them at risk of "failure".
Ok, but what gives them more learning when "failing". Failing because you don't even a little bit understand what the black box is doing, or failing because you understood the concept, tried to build it, and failed?

I'm not sure which side of this fence I really sit on. On one hand, I think WPILib is spoon-feeding a lot of the more advanced stuff that is advanced in mechanical, programming, and just general understanding of how it works, and this is both frustrating to rookie teams that don't understand it, and makes the teams who spent years perfecting a system of their own to do the same thing lose whatever advantage they'd gained through those years of perfection into the system (swerve drives come to mind here). On the other hand, I see it getting alot of teams who don't have the time, money, mentors, and other resources to develop these advanced systems up to speed.

I'm not sure if it helps or hurts, and I'm not sure if the competition is better or worse for it. It makes things different than they would be without it. I think its probably a net positive force, by encouraging teams to try an advanced drivetrain, and forcing them to learn how it works along the way, however, I can see downsides to it too.

I think there comes a line where its starting to make things too easy. I'm just not sure where that line is.
Reply With Quote
  #3   Spotlight this post!  
Unread 09-02-2010, 17:41
EricVanWyk EricVanWyk is offline
Registered User
no team
 
Join Date: Jan 2007
Rookie Year: 2000
Location: Boston
Posts: 1,597
EricVanWyk has a reputation beyond reputeEricVanWyk has a reputation beyond reputeEricVanWyk has a reputation beyond reputeEricVanWyk has a reputation beyond reputeEricVanWyk has a reputation beyond reputeEricVanWyk has a reputation beyond reputeEricVanWyk has a reputation beyond reputeEricVanWyk has a reputation beyond reputeEricVanWyk has a reputation beyond reputeEricVanWyk has a reputation beyond reputeEricVanWyk has a reputation beyond repute
Send a message via AIM to EricVanWyk
Re: The increasing amount of pre-canned code

Quote:
Originally Posted by 1075guy View Post
I think there comes a line where its starting to make things too easy. I'm just not sure where that line is.
The "line" is the point at which we've raised the floor so high that the advanced teams are hitting the ceiling. The ceiling is pretty darned high (and the GDC keeps raising it), so I don't think we're in danger of that any time soon.

I believe students get much more educational benefit from learning the system level point of view - "What can that do, and what can I do with it?" rather than "How does it do it?". I sent my students home with a homework assignment - "Pick your favorite sensor and think of 3 ways we can use it". The raised floor will allow them to spend more time on that thought and less time on the implementation.
Reply With Quote
  #4   Spotlight this post!  
Unread 09-02-2010, 18:22
Greg McKaskle Greg McKaskle is offline
Registered User
FRC #2468 (Team NI & Appreciate)
 
Join Date: Apr 2008
Rookie Year: 2008
Location: Austin, TX
Posts: 4,748
Greg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond repute
Re: The increasing amount of pre-canned code

If this is about blank canvas versus paint by numbers, that is a deep discussion. If a good mentor is there to challenge, encourage, goad, and help explain why something just happened, then the blank canvas can certainly offer the richest and most fulfilling experience. The blank canvas approach seems to work less well without the awesome mentor and support network. Arguably, the systems approach, also works far better with the mentor to fill those roles. Also, if a team chooses to go blank canvas and uses kit materials and WPILib only for prototyping that seems to expose them to the full benefits of both approaches. Some teams simply don't have the time or resources to undergo the second phase.

If this discussion is about taking the contest back to year XX when things were just right for your taste, then why not really make it challenging and design your own limited challenge within your team or region for the offseason. You know the ones where you make a bridge from pasta, a boat from cardboard, or I don't know, how about autonomous robots without ICs of any kind -- tubes for all. No need to worry about spoiling them with SW libraries that way.

If you have specific feedback on WPILib, I'm sure Brad and the other contributors will be happy to get feedback or assistance.

Greg McKaskle
Reply With Quote
  #5   Spotlight this post!  
Unread 09-02-2010, 18:54
apalrd's Avatar
apalrd apalrd is offline
More Torque!
AKA: Andrew Palardy (Most people call me Palardy)
VRC #3333
Team Role: College Student
 
Join Date: Mar 2009
Rookie Year: 2009
Location: Auburn Hills, MI
Posts: 1,347
apalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond reputeapalrd has a reputation beyond repute
Re: The increasing amount of pre-canned code

I like the IFI processor, it worked well at its time.
The biggest advantages to me using the cRio are that I no longer have to write lookup tables for things, as I have the power to calculate them in real time.

Working in LAbVIEW: Some of the WPIlib is nice, like integrating gyros and counting encoder clicks. Some of it is not, such as the really really really annoying fact that you must set both the forward and reverse coils of a relay at the same Set (I actually wrote a vi to set them separately, based on copied code from that Set). I would totally agree with the fact that PID and Holonomic are probably going too far. Jim (Zondag) actually didn't tell us programmers that there was a PID library, and since we didn't find it until after writing the crab-drive code, we didn't use it.

The cRio: Being a first year programmer in 2009, I probably would have never been able to code the 4-wheel independent steering code without the trig power on the cRio. It was nice to have all of the power I needed. That said, after spending 8+ hours debugging a firmware issue in the cRio this year (which turned out to be a problem in the 24vdc supply on the PD board), I would say that the cRio is definitely not as robust as the IFI system. While talking to the NI tech support, if they say "Ummm... That's Bad" then you know they must not have found that problem in their testing and aren't prepared to solve it. When a problem arises with this new system, there are so many more points of error that it's quite difficult to debug some times.

cRio boot times: They bug me. Waiting for the robot to boot is the most annoying thing there is. However, after talking to NI tech support for around 4 hours, he claims that the cRio itself boots in several seconds and then the FIRST code waits for FMS comm to timeout (25s) before loading the team code. Is this the case? If so, they could make the FMS timeout a little faster.

PID and Holonomic: They are sitting unused in my WPIlib pallate. They will never be touched. As I teach the newbees (freshmen), they too will learn to leave them alone. At least they didn't give us crab-drive code. Debugging that is too much fun for them to just hand us.
__________________
Kettering University - Computer Engineering
Kettering Motorsports
Williams International - Commercial Engines - Controls and Accessories
FRC 33 - The Killer Bees - 2009-2012 Student, 2013-2014 Advisor
VEX IQ 3333 - The Bumble Bees - 2014+ Mentor

"Sometimes, the elegant implementation is a function. Not a method. Not a class. Not a framework. Just a function." ~ John Carmack
Reply With Quote
  #6   Spotlight this post!  
Unread 10-02-2010, 03:15
Greg McKaskle Greg McKaskle is offline
Registered User
FRC #2468 (Team NI & Appreciate)
 
Join Date: Apr 2008
Rookie Year: 2008
Location: Austin, TX
Posts: 4,748
Greg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond reputeGreg McKaskle has a reputation beyond repute
Re: The increasing amount of pre-canned code

Quote:
That said, after spending 8+ hours debugging a firmware issue in the cRio this year (which turned out to be a problem in the 24vdc supply on the PD board), I would say that the cRio is definitely not as robust as the IFI system. While talking to the NI tech support, if they say "Ummm... That's Bad" then you know they must not have found that problem in their testing and aren't prepared to solve it. When a problem arises with this new system, there are so many more points of error that it's quite difficult to debug some times.

cRio boot times: They bug me. Waiting for the robot to boot is the most annoying thing there is. However, after talking to NI tech support for around 4 hours, he claims that the cRio itself boots in several seconds and then the FIRST code waits for FMS comm to timeout (25s) before loading the team code. Is this the case? If so, they could make the FMS timeout a little faster.
Sorry it took so long to debug.

Since the cRIO and many of the other control system are off the shelf, not specially designed for this competition, their interactions, especially when one of them is failing, is indeed something not that many people have seen. Also, the AEs are mostly new to this system too. They are familiar with NI products in normal usage.

As for the boot time. The cRIO FPGA is booted very quickly. The PPC typically boots in about ten. The bridge and other elements, the FRC specific tasks all take a bit longer. But the boot time isn't waiting for any particular element such as FMS to timeout -- no magic bullet.

Greg McKaskle
Reply With Quote
  #7   Spotlight this post!  
Unread 10-02-2010, 03:35
AustinSchuh AustinSchuh is offline
Registered User
FRC #0971 (Spartan Robotics) #254 (The Cheesy Poofs)
Team Role: Engineer
 
Join Date: Feb 2005
Rookie Year: 1999
Location: Los Altos, CA
Posts: 800
AustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond reputeAustinSchuh has a reputation beyond repute
Re: The increasing amount of pre-canned code

Quote:
Originally Posted by apalrd View Post
However, after talking to NI tech support for around 4 hours, he claims that the cRio itself boots in several seconds and then the FIRST code waits for FMS comm to timeout (25s) before loading the team code. Is this the case?
You can get a really good idea on what's taking so long to boot up by connecting up a serial cable to the cRio and booting it. The debugging that I've done using the serial port confirms Greg's claim that there is no magic bullet.
Reply With Quote
  #8   Spotlight this post!  
Unread 11-02-2010, 12:34
pilum40 pilum40 is offline
Steve Miller-Coach-Team 3355
AKA: Steve Miller
FRC #3355 (Bigg Redd)
Team Role: Coach
 
Join Date: Jan 2010
Rookie Year: 2010
Location: Arlington, Texas
Posts: 139
pilum40 has much to be proud ofpilum40 has much to be proud ofpilum40 has much to be proud ofpilum40 has much to be proud ofpilum40 has much to be proud ofpilum40 has much to be proud ofpilum40 has much to be proud ofpilum40 has much to be proud ofpilum40 has much to be proud of
Re: The increasing amount of pre-canned code

I respectfully disagree. The pre-canned code actually helped us stay on build schedule as rookies. We're still having issues with how to make the autonomous work (it doesn't work at all), but getting the bot up, running and able to go under the tunnel/over the hump is major for us since we're majority 9th-10th graders. We'll take time to re-learn code from scratch when we're not pressed for time.

Quote:
Originally Posted by apalrd View Post
I like the IFI processor, it worked well at its time.
The biggest advantages to me using the cRio are that I no longer have to write lookup tables for things, as I have the power to calculate them in real time.

Working in LAbVIEW: Some of the WPIlib is nice, like integrating gyros and counting encoder clicks. Some of it is not, such as the really really really annoying fact that you must set both the forward and reverse coils of a relay at the same Set (I actually wrote a vi to set them separately, based on copied code from that Set). I would totally agree with the fact that PID and Holonomic are probably going too far. Jim (Zondag) actually didn't tell us programmers that there was a PID library, and since we didn't find it until after writing the crab-drive code, we didn't use it.

The cRio: Being a first year programmer in 2009, I probably would have never been able to code the 4-wheel independent steering code without the trig power on the cRio. It was nice to have all of the power I needed. That said, after spending 8+ hours debugging a firmware issue in the cRio this year (which turned out to be a problem in the 24vdc supply on the PD board), I would say that the cRio is definitely not as robust as the IFI system. While talking to the NI tech support, if they say "Ummm... That's Bad" then you know they must not have found that problem in their testing and aren't prepared to solve it. When a problem arises with this new system, there are so many more points of error that it's quite difficult to debug some times.

cRio boot times: They bug me. Waiting for the robot to boot is the most annoying thing there is. However, after talking to NI tech support for around 4 hours, he claims that the cRio itself boots in several seconds and then the FIRST code waits for FMS comm to timeout (25s) before loading the team code. Is this the case? If so, they could make the FMS timeout a little faster.

PID and Holonomic: They are sitting unused in my WPIlib pallate. They will never be touched. As I teach the newbees (freshmen), they too will learn to leave them alone. At least they didn't give us crab-drive code. Debugging that is too much fun for them to just hand us.
Reply With Quote
  #9   Spotlight this post!  
Unread 11-02-2010, 13:17
bcieslak
 
Posts: n/a
Re: The increasing amount of pre-canned code

I am all for good pre-canned code for FIRST robotics...When do you think it will be available???

BC
Reply With Quote
  #10   Spotlight this post!  
Unread 11-02-2010, 15:15
Racer26 Racer26 is offline
Registered User
no team
Team Role: Alumni
 
Join Date: Apr 2003
Rookie Year: 2003
Location: Beaverton, ON
Posts: 2,229
Racer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond repute
Re: The increasing amount of pre-canned code

It already is, in large quantities, as part of WPILib.

This discussion was about whether or not the amount included is not enough, too much, or just right.
Reply With Quote
  #11   Spotlight this post!  
Unread 11-02-2010, 15:17
Akash Rastogi Akash Rastogi is offline
Jim Zondag is my Spirit Animal
FRC #2170 (Titanium Tomahawks)
Team Role: Mentor
 
Join Date: Feb 2007
Rookie Year: 2006
Location: Manchester, Connecticut
Posts: 7,003
Akash Rastogi has a reputation beyond reputeAkash Rastogi has a reputation beyond reputeAkash Rastogi has a reputation beyond reputeAkash Rastogi has a reputation beyond reputeAkash Rastogi has a reputation beyond reputeAkash Rastogi has a reputation beyond reputeAkash Rastogi has a reputation beyond reputeAkash Rastogi has a reputation beyond reputeAkash Rastogi has a reputation beyond reputeAkash Rastogi has a reputation beyond reputeAkash Rastogi has a reputation beyond repute
Re: The increasing amount of pre-canned code

Are you also referring to code that teams open-source to others? Or just the NI and Labview libraries?
__________________
My posts and opinions do not necessarily reflect those of my affiliated team.
['16-'xx]: Mentor FRC 2170 | ['11-'13]: Co-Founder/Mentor FRC 3929 | ['06-'10]: Student FRC 11 - MORT | ['08-'12]: Founder - EWCP (OG)
Reply With Quote
  #12   Spotlight this post!  
Unread 11-02-2010, 15:46
Racer26 Racer26 is offline
Registered User
no team
Team Role: Alumni
 
Join Date: Apr 2003
Rookie Year: 2003
Location: Beaverton, ON
Posts: 2,229
Racer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond repute
Re: The increasing amount of pre-canned code

To a lesser extent, yes Akash. But I'm mostly referring to WPILib. I'm torn, I think its a good thing, but I also think it encourages teams to try more advanced things before they've gotten a handle on the simple stuff, which could lead to problems down the road.
Reply With Quote
  #13   Spotlight this post!  
Unread 12-02-2010, 13:52
bcieslak
 
Posts: n/a
Re: The increasing amount of pre-canned code

Quote:
Originally Posted by 1075guy View Post
It already is, in large quantities, as part of WPILib.

This discussion was about whether or not the amount included is not enough, too much, or just right.
I should have emphasized when will 'good' code be available. This season has been spent developing work arounds for the WPILib code.

BC
Reply With Quote
  #14   Spotlight this post!  
Unread 12-02-2010, 13:56
Racer26 Racer26 is offline
Registered User
no team
Team Role: Alumni
 
Join Date: Apr 2003
Rookie Year: 2003
Location: Beaverton, ON
Posts: 2,229
Racer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond reputeRacer26 has a reputation beyond repute
Re: The increasing amount of pre-canned code

Theres nothing wrong with the WPILib code that I'm aware of... It all works exactly as advertised.
Reply With Quote
  #15   Spotlight this post!  
Unread 12-02-2010, 15:23
Kims Robot's Avatar Unsung FIRST Hero
Kims Robot Kims Robot is offline
Onto a New Chapter...
AKA: Kim O'Toole Eckhardt
no team
 
Join Date: Aug 2004
Rookie Year: 1996
Location: Framingham, MA
Posts: 1,467
Kims Robot has a reputation beyond reputeKims Robot has a reputation beyond reputeKims Robot has a reputation beyond reputeKims Robot has a reputation beyond reputeKims Robot has a reputation beyond reputeKims Robot has a reputation beyond reputeKims Robot has a reputation beyond reputeKims Robot has a reputation beyond reputeKims Robot has a reputation beyond reputeKims Robot has a reputation beyond reputeKims Robot has a reputation beyond repute
Send a message via AIM to Kims Robot
Re: The increasing amount of pre-canned code

I'm seeing the original point was more about trying fancier mechanical things than teams are capable of, and less about how much code you write...?

As was already alluded to FIRST has come a LONG way. Teams now have the option to try crazy things like meccanum drive because they dont have to design their own gearboxes with parts out of the small parts catalog and program in PBasic (yup thats what I programmed my first robot in! Ever try to implement your OWN random number generator??? UGH!). Anyways, FIRST has a struggle to keep the old veteran teams excited, interested and the kids attempting newer challenges every year, while allowing rookies to compete at a reasonable level with them. The ONLY way to do that in my mind is to make sure everyone can start with something.

Back in 1997 it was common to see a robot that couldnt drive... there WAS no Kitbot drivetrain... that revolution was huge!! That kitbot allowed 1511 to come up with something fun the first year - a 6WD center traction corner omni that could drive circles around some of the veterans... that was because we already had a frame and gearboxes in our kit, so we could play with some more advanced features. Had we had to design our own gearbox, we never would have tried it. And you guessed it when the gearbox failed, we took it apart, figured out what was failing and put it back together. it was a struggle, but we learned how a gearbox worked AND got a fancy drivetrain.

I also am very much of the opinion that you learn MUCH more when you fail than when you succeed. If everything is easy, you arent trying hard enough or challenging yourself enough. Starting with the black box gives you somewhere to get running, when something stops working, you start poking around at the edges and tweaking the interfaces... when you wonder why the box does xyz instead of yza, you open up the box and look inside, and work from the outside in until you understand it. Thats called reverse engineering and its done all of the time and its how many of us gain knowledge we might never have had.

And I agree with Chris, as long as teams arent turning around and pointing the finger at FIRST for making things too hard, or "giving" them failed code, then we are all on the right track. When you start blaming someone for a "gift", you are wrong. So what if the gift causes you to struggle a little bit, if you can try to do so much more because of it, even if you fail, if you learn from your failures, you HAVE succeeded.

In short, I'm all for anything that makes teams get creative, think outside the box and do things they might never have done before... kitbot or code-wise
__________________
~kim~
Kimberly O'Toole Eckhardt <3
Principal Systems Engineer & Program Manager
History - Team 176, Team 229, Team 1511, FIRST Volunteer!!
My new FIRST Photography Hobby & Angry Eric's Fan Page
Excellence - is the result of caring more than others think is wise, risking more than others think is safe, dreaming more than others think is practical, and expecting more than others think is possible.
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

Similar Threads
Thread Thread Starter Forum Replies Last Post
Hartford Canned Goods Drive easponge General Forum 0 24-03-2009 20:50
pic: Canned Food Drive Flyer for NYC Regional daryl Extra Discussion 9 06-03-2009 19:31
can we control the amount of air to control the speed of the cylinder? Team2339 Pneumatics 22 11-02-2009 15:33
Friction-increasing substances nayer247 Technical Discussion 15 29-01-2009 12:10
Amount of Force to lift the bridge? archiver 2001 2 23-06-2002 23:21


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

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