ROBOTC.net Blog  

ROBOTC News

Archive for the ‘PIC’ Category

Updated VEX CORTEX Video Trainer!!

without comments

VEX Cortex Video UpdateWe are so excited to share the latest web design update for our VEX CORTEX Video Trainer! This includes all of our previous videos and materials, but in an easy to follow new format.

The VEX CORTEX Video Trainer is a multimedia curriculum that features lessons for the VEX CORTEX Microcontroller, which can also be applied to the older VEX PIC Microcontroller 0.5. It includes in-depth programming lessons for ROBOTC, multi-faceted engineering challenges, step-by-step videos, robotic support material, educational resources, and more! Check it out today and let us know what you think!

 
 
 
 
 

Written by Cara Friez

March 18th, 2015 at 6:30 am

China ROBOTC Teams Advanced to World Championship!

without comments

IMG_8324Two of China ROBOTC high school VEX teams (3288A and 3288B) earned their 2014-15 VEX World Championship tickets on Singapore South Programming Skill Challenge on Feb 27. With power ROBOTC programming software, team 3288B tied with Singapore Champion team and team 3288A advanced to VEX World Champion with Asia’s best programming score. China ROBOTC’s middle and elementary school teams earned spots to Louisville as well!

Two High School Teams:
3288A: #1 in Asia ; #14 in world ranking
3288B: #2 in Asia ; #24 in world ranking

Mid School Team:
10790: #1 in Asia ; #5 in world ranking

Elementary School Teams:
10579: #1 in Asia ; #4 in world ranking
10689: #2 in Asia ; #12 in world ranking

 

China ROBOTC, in cooperate with Shaanxi Science and Technology Department, is also jump starting a new robotic competition platform under the name of “iSTEMn”! iSTEMn provides opportunities for members worldwide to collaborate and innoIMG_8418vate in the STEM arena. iSTEMnetwork promotes new levels of educational achievement and economic productivity. iSTEMn robotic competition is a K-14 event and students are divided into 4 different age groups: elementary; middle; high schools and colleges. iSTEMn robotic competition features all ROBOTC supported hardware platforms: VEX; LEGO and Makeblock as well as the RVW competition.

After this two days event, students are learning robotic at their schools and preparing for Shaanxi province tournament at the end of 2015. The winning teams will advance to China National Championship in Beijing early 2016. The winning teams with national title are going to California to compete with US teams for the iSTEM Robotic World Championship in late 2016.

Written by Cara Friez

March 16th, 2015 at 6:35 am

Best #ROBOTC Twitter Posts – 2nd Edition

without comments

We LOVE getting Twitter posts sent to us about ROBOTC. In the last few months, you have shared some great posts and pictures with us. We decided to make a second compilation of some of our favorites to share here…

Do you have a ROBOTC picture/video/post you would like to share with us on Twitter? If so, include #ROBOTC or @ROBOTC in your message.

Written by Cara Friez

February 27th, 2015 at 10:56 am

A Teacher’s POV: RVW VEX IQ Beltway

without comments

Beltway2Jason McKenna, from the Hopewell Area School District outside of Pittsburgh, PA, writes about his experience in the classroom with the new Robot Virtual World game, VEX IQ Beltway. Check it out below …

——————————————————————————————————

The new VEX IQ virtual game Beltway is a great way to challenge your students to apply the basics of ROBOTC programming while also asking them to come up with unique strategies to try to score as many points in the 2 minute game as possible. My students just spent about 3 weeks working on the challenge and trying to score the highest score as possible. The students had an absolute blast and as a teacher, it was great seeing all the different ways the students tried to tackle this completely open-ended challenge.

Beltway4The objective in Beltway is the same as VEX IQ Highrise: program your VEX IQ robot to autonomously score as many cubes as possible during a 2 minute period. With Beltway, a conveyor belt has been added around the perimeter of the game field in order to assist with game play. Additionally, the virtual environment utilizes “magic stacking” meaning that the cubes automatically jump onto the stack when they are placed onto of the stacking cube regardless of the apparent size of the robot. The conveyor belt reduces the accumulation of error, where, for example, a robot’s slight error in one turn becomes a larger error when the robot repeats that same turn 4 or 5 times. Any time students attempt a long program with many different elements they will at some point become frustrated with the accumulation of error that occurs. Magic stacking and the large margin of error that enables easy pickup of cubes eliminates any frustration that the students may encounter as try to pick up cubes and then stack them. These elements of gameplay in Beltway allow students to focus on their strategy, and it also allows them to try to experiment with many different scoring methods because they are not spending a lot of time programming perfect 90 degree turns and aligning their robots perfectly to pick up a cube. You can click here for a more extensive list of rules and information about gameplay!

Beltway1Beltway comes with a variety of sample programs that students can use to help them get started or as a reference as they adjust their strategies. For example, if students decided that they wanted to control the conveyer belt manually, they could refer to a sample program to see how that is done. I did that many times while monitoring the students. After a few days, the students aren’t repeatedly raising their hands; instead, they just refer to the sample programs for guidance.

The game also served as a great tool to teach beginning programmers the utility of comments. Oftentimes, beginners don’t make programs quite as long as the ones they will make for Beltway. Students quickly saw the need to point out what was going on in their code with comments so they could go back to those sections and make whatever adjustments they wanted as they progressed with their gameplay.

As I stated earlier, my students had a lot of fun while playing Beltway. It is not easy to keep students’ interest level high in an activity that takes 3 weeks. The students maintained their level of interest and they consistently asked to stay after school to work on their programs some more. We had an in-class competition where the students ran their final programs. The winning team scored the winning points as the timer, literally, went to zero. It was pandemonium in my room. Kids were high-fiving each other, cheering, and remarking at how awesome the competition turned out. Students were also talking about the different strategies that the other teams used and how they could change their programs based upon what they had just seen.

Beltway3

So now, of course, the students want to play some more. This is great because now I can use that as an opportunity to show students how they can take some of the code that they used over and over again (for example, picking up cubes) and show them how they can use full ROBOTC to turn those behaviors into functions. Beltway has proven to be both a great teaching and learning tool in my classroom.

Click here to download the game!

- Jason McKenna

Download ROBOTC for VEX Robotics Updates 4.30 or 3.65 Today!

with 2 comments

ROBOTC 4-30VEX
The ROBOTC Development Team is excited to announce not one, not two, but three updates this week! Yes, earlier in the week we announced our 4.29 update, but we’ve taken care of a few more bugs along with a 3.65 update. These updates are for the VEX Robotics (CORTEX and VEX IQ) robotics systems and includes new features, functionality and a load of bug fixes. You can download them here! Read more below …

4.29 -> 4.30 Change Log

  • (Cortex) Added new sample programs for RVW VEX Cortex using the Natural Language 2.0 commands.
  • (Cortex) Fix to enable tankControl to be displayed for Virtual Robots.
  • (Cortex) New VEX Cortex Master Firmware (4.25) for VEX Cortex Brain & VEXNet Remote Control
  • (Cortex) Update for VEX Competition Template in Natural Language 2.0 to ensure maximum compatibility
  • (Cortex) Increased Timeout for VEX wireless communications when using the new VEXNet 2.0 Radios – prevents communications issues
  • (IQ) Fixed incorrect samples for VEX IQ in Virtual Worlds (both Text and Graphical)
  • (All) Rebuilt firmware to version 10.30. All platforms will require a firmware update.
  • (ALL) Prevent Graphical files from asking to save if the “Save On Compile” flag is set to false.
  • (ALL) Update all standard models to have correct drive train setting.
  • (ALL) Fixed an issue where a “sprintf’ varArg list contains a string constant the compiler was generating incorrect code causing a firmware crash.
  • (ALL) Compiler Fix: ‘long’ pointer temporary variables were sometimes being allocated as type ‘signed’ instead of ‘unsigned’.
  • (ALL) Checking for “divide by zero” exception forgot to check in the “module” opcodes; it was only checking the “divide” opcodes. Fixed.
  • (ALL) Fixed issues where the first time the Debugger “Local Variables” window is painted with values (rather than blank) the address field displays “0xCDCDCDCD” rather than the offset.
  • (ALL) Graphical Interface now support “multiple selection” using Shift/Control keyboard modifiers (drag select coming soon!)
  • (ALL) Fix for DebugStream which was adding \r to the String as it was written to file.

3.64 -> 3.65 Change Log

  • (Cortex) New VEX Cortex Master Firmware (4.25) for VEX Cortex Brain & VEXNet Remote Control
  • (Cortex) Increased Timeout for VEX wireless communications when using the new VEXNet 2.0 Radios – Full download/debug support available.
  • (All) Fixed issue with licensing system when an unexpected error code (i.e. server is available but service is down) would cause ROBOTC to crash.
  • (All) Fixed issue with ‘Check for Update’ functionality where a hotel/school wifi login screen might cause a ROBOTC crash with unexpected XML parameters.
  • (All) Fixed issue with licensing system where a license could not be used on the same computer twice.

And to read more about the changes in 4.29, visit our post from earlier this week. Happy Programming!

Written by Cara Friez

February 18th, 2015 at 9:30 am

Tons of Robot Virtual Worlds Updates Available Today!

with 2 comments

RVWThe Robot Virtual World team is happy to announce our latest updates are available for Ruins of Atlantis, Palm Island, and Operation Reset! We’ve included updated sample program to support all platform types (VEX CORTEX, VEX IQ, EV3, and NXT) within ROBOTC. You can also choose what type of sample program you would like to use from Graphical, Natural Language, or Standard.

Thanks again to everyone who has provided feedback! Please continue to do so at the ROBOTC.net Forums. Happy programming!

 

 

 

Written by Cara Friez

February 17th, 2015 at 8:10 am

Download ROBOTC for VEX Robotics 4.29 Today!

without comments

ROBOTC 4-29_VEX
The ROBOTC Development Team is very excited to announce our latest update, ROBOTC 4.29. This update is for the VEX Robotics (CORTEX and VEX IQ) robotics systems and includes new features, functionality and a load of bug fixes.

What we’re most excited about in this new release is the official version of the brand new “Natural Language 2.0″ libraries for the VEX Cortex, including support for the new ROBOTC Graphical interface with VEX Cortex.

CortexGraphical
The new Natural Language 2.0 for Cortex allows users to customize and use their own robot configurations with our new Graphical Interface.

CortexConfiguration
In addition, users can also program their VEX Cortex Competition Robots using our new “Graphical Competition Template”! Teams can now get a competition program up and running in less than 20 lines of code!

CortexCompetition
We’ll have more videos and tutorials on using the VEX Cortex Graphical Language mode in the near future, but try out the new software today and let us know what you think!

Click here to download 4.29!
Important Setup Information for ROBOTC 4.29:

VEX IQ Users:

  • Run the “VEX IQ Firmware Update Utility” and update your VEX IQ Brain to firmware version 1.13 (may not be available at time of release, but will be available soon).
  • Users will also have to update their VEX IQ Wireless Controller in addition to any other VEX IQ Devices (sensors, motors) that may need to be updated as well.
  • After updating to the latest VEX IQ Brain firmware, users will also have to install the latest ROBOTC firmware from inside of ROBOTC.

VEX Cortex Users (with Black VEXnet 1.0 Keys):

  • You will need to update your VEX Cortex and VEX Game Controllers with Master Firmware Version 4.23 from inside of ROBOTC.
  • After updating the master firmware, users will also have to update the VEX Cortex with the latest ROBOTC firmware as well.

VEX Cortex Users (with White VEXnet 2.0 Keys):

  • The new VEXnet 2.0 keys have a specific “radio firmware” that you will need to upgrade to enable “Download and Debugging” support. You can download the VEXnet Key 2.0 Firmware Upgrade Utility here.
  • Download the “VEXnet Key 2.0 Firmware Upgrade Utility” and insert your VEXnet 2.0 key to any free USB port on your computer. Follow the instructions on the utility to update each key individually. All VEXnet 2.0 keys must be running the same version in order to function properly.
  • After updating your VEXnet 2.0 keys, you will need to update your VEX Cortex and VEX Game Controllers with Master Firmware Version 4.23 from inside of ROBOTC.
  • After updating the master firmware, users will also have to update the VEX Cortex with the latest ROBOTC firmware as well.

ROBOTC 4.28 BETA -> 4.29 Change Log:

  • (CORTEX) Updated VEX Cortex Graphical Implementation to support competition (single run autonomous per toggle)
  • (CORTEX) Modified “BuiltInVariables.txt” to properly show VEX Cortex commands.
  • (IQ) Fix RVW Clawbot standard model to match Virtual Worlds configuration.
  • (IQ) Add Armbot with Sensors “standard model”
  • (IQ) New RVW Specific Motor and Sensor Models + VEX IQ Clawbot – No Sensors model.
  • (IQ) Added “moveMotorTarget” to Graphical
  • (ALL) “Test Communications Link” dialog was not properly storing/retrieving the registry value for the “Ping Type” variable.
  • (ALL) Debug stream fixed so that “Clear Debug Stream” clears the IDE’s Window at the proper location; previously it was possibly erasing the screen at a spot well after the actual “clear” function was called.
  • (ALL) Enhance Debug Stream handling to better support (1) Buffer overflow conditions and (2) proper visual appearance on IDE when “Clear Debug Stream” intrinsic is used.
  • (ALL) Adjustments so maximum size of messages transferred between IDE and emulator increased to 10K from 1K.
  • (ALL) Fix bug when maximum message size now exceeds maximum flash sector size.
  • (ALL) Joystick buttons had different enums for real and virtual robots. This affected the joy1Btn() command.
  • (ALL) Upissue Firmware Version to 10.29 / Upissue IDE Version to 4.29
  • (ALL) Contents of DebugStream window can now be saved through the menu
  • (ALL) Automatically select RVW package if one is not selected.
  • (ALL) Increase number of RVW Packages available to 40 potential options – allows for future level packs.
  • (ALL) DebugStream can now also be saved as a *.csv file
  • (ALL) DebugStream Window contents can now be saved to a file.
  • (ALL) User models (from Motors and Sensors setup) can now use relative filenames for user models.
  • (ALL) Fix crashing issue when CheckForUpdates get a malformed XML file (typically hotel login pages)
  • (ALL) Fix crash issue when Version XML file download is corrupted by school/hotel/conference “login” screens.
  • (ALL) Fix crash issue when licensing libraries return an unexpected return value – error message string formatting command was invalid causing a crash.
  • (ALL) Added pipe symbol to the LCD Printing Libraries fonts.
  • (ALL) Fixed backslash character in small font.
  • (ALL) Better parsing of “If” and dangling “else” clauses. Prevents a compiler crash when bad syntax in the “if” condition clause.
  • (ALL) Support in GUI for use of user-defined “motors and sensor configuration data files”.
  • (ALL) New “registry flag” to indicate whether user defined “configuration model” files are allowed.
  • (ALL) Previously breakpoints could not be defined in header files. This is now fixed.
  • (ALL) Benign. Enhance output in message trace window for “set breakpoint” message.
  • (ALL) Command line based activation / deactivation commands. Implemented but not fully tested yet – documentation to follow.

ROBOTC 4.27 -> 4.28 BETA Change Log:

  • (ALL) Updated Help System Documentation for new commands and features.
  • (ALL) Updated Firmware for 10.28 / 4.28 compatibility.
  • (ALL) Added a compiler error when ‘switch’ expression was illegal.
  • (ALL) Support for optional “int” keyword as in the declaration “short int” or “int short” in addition to “short”.
  • (ALL) Add USB Joystick control to Graphical (in loop blocks)
  • (CORTEX) Fixed issue where performing a new motor PID movement when an existing PID movement is in progress didn’t work properly.
  • (CORTEX) Allow users to select “Xmtr2″ for VEX Cortex Graphical (Expert and higher menu level)
  • (CORTEX) Added competition control and competition template for Cortex Graphical
  • (CORTEX) Added Virtual Worlds Natural Language 2.0 Library for VEX Cortex
  • (CORTEX) Renamed old-style Natural Language mode to “Natural Language PLTW”
  • (CORTEX) Fixed issue where software inspection would fail without a radio link on VEX Cortex
  • (CORTEX) Added dialog message to Cortex “Download Firmware” button on large icon toolbar.
  • (CORTEX) Multiple incomplete consecutive PID moves. Fix issue when current move is in “ramp down” and new PID movement is initiated.
  • (IQ) Added additional standard models for VEX IQ.
  • (IQ) Fix issue where mode wasn’t being set for Graphical for VEX IQ Color Sensor.

Happy Programming!

Written by Cara Friez

February 11th, 2015 at 4:43 pm

A Teacher’s POV: First Year Teaching Automation and Robotics

without comments

In our latest Teacher’s POV post, Ross Hartley wrote a wonderful post about his first semester teaching Automation and Robotics in the Pickerington Local School District. Check it out below …

—————————————————

This is my third year teaching, but my first time working with Project Lead The Way (PLTW) and a robotics course. After accepting this assignment, I was extremely nervous. I did not study robotics in college, and I had never, ever pictured myself in this role. But I am so very happy to have taken on this challenge.

This is a picture of students preparing for the Racecar Challenge. Students had to build and program a racecar that would go the fastest in 20 feet but had 6 feet past the finish line to stop.

This is a picture of students preparing for the Racecar Challenge. Students had to build and program a racecar that would go the fastest in 20 feet but had 6 feet past the finish line to stop.

Students working on building and programming a car that would follow a set of simulated directions to go from the house of one student to the movies and back. Students had to program the lights to turn on and off, backing in and out of parking spaces, and completing turns.

Students building and programming a car that would follow a set of simulated directions to go from the house of one student to the movies and back. Students had to program the lights to turn on and off, backing in and out of parking spaces, and completing turns.

My favorite part about teaching this class is the atmosphere and expectations that I set up with this class and my students. From the first day of school, I was completely honest with the kids. I broke down the walls of the normal teacher-student relationship where the teacher is looked at as the bearer of all knowledge and all knowledge is passed down from the teacher to the students. I created a culture where students and their knowledge are equally valued and as important as the teacher’s. This led to a culture of mutual respect and collaboration. I, as the teacher, was not viewed as the bearer of all knowledge, but as a helpful resource to rely on when problems arose. The most important part of creating this culture is setting up those expectations from the beginning of school.

This was the last challenge for the class. Students had to build and program a “ClawBot” to complete various tasks including picking up and moving a cup as pictured.

Students had to build and program a “ClawBot” to complete various tasks including picking up and moving a cup as pictured.

The major theme from this class was “Problem-Solving”. I would present students with a variety of real-world scenarios and they would have to think of a design to solve that problem. They would work in groups of 2 to 4 students to create, construct, and program these robots to solve the problems I presented to them. This allowed for A LOT of different interpretations and ways to solve these problems, which was awesome!

Several key strategies that I incorporated into the class that proved to be successful were: purposeful grouping, incorporating student choice, and using students in a teacher’s role to help other students who needed more assistance. I incorporated a “Menus” style of teaching and learning. Students would be purposefully grouped into groups of 2-4 and then they would be presented with 3 different levels of activities: Appetizer, Main Meal, and Dessert. Within each level, students would have to choose 1 task out of 3 or 4 different options. As a group, students would choose which task to complete. Once decided, students would work as a group to design, build, and program the robot to complete the task. I would watch the robot perform the task, sign off on their paper, and they would move on to the next part of the menu. The activities got progressively more difficult as students moved from the Appetizer to the Main Meal to the Dessert level, with the Dessert level activities being the most difficult.

As we get ready to begin with the second semester, I cannot help but think about how much I have learned and how better of a teacher that I have become because of teaching this class. Some future ideas I have are the creation of a “Girls in STEM Club”. The purpose of this being opening girls’ eyes to future careers and possibilities associated with this class and the STEM ideals. Also, possibly creating a VEX Competition Robotics club where students would meet after school to construct robots to participate in VEX Robotics competitions. One thing that I realized early on in my teaching career is how much teachers learn from their students. Teaching this class has been one of the best learning experiences of my life.

For this challenge students had to build a freight elevator that had three different switches on the actual elevator. When pressed, the elevator takes passengers from the ground floor to the first or second floor and back down.

For this challenge students had to build a freight elevator that had three different switches on the actual elevator. When pressed, the elevator takes passengers from the ground floor to the first or second floor and back down.

 

– Ross Hartley

————————————-
If you’re a teacher or robotics coach and would like to write a blog about your experiences teaching, send us an email at socialmedia@robotc.net!

Written by Cara Friez

February 4th, 2015 at 11:10 am

BotBench: Using Robot Virtual Worlds inside a VM

without comments

Xander over at BotBench goes into detail in a new blog post about using Robot Virtual Worlds (RVW) inside a Virtual Machine.

He talks about how some of the issues you might encounter using a VM and some of the solutions he has found. Such as the 3 camera settings in RVW:

1. Follow mode: you can use the wheel to zoom in and out.
2. Camera view from above
3. Free movement: hold left button and move to move the view. The wheel is used for zooming.

Unfortunately, if you run RVW inside a VM, camera option 3 does not work. Unless, of course, you know how to configure VMware Workstation properly. To find out how to configure properly and to read the full article, click here!

Written by Cara Friez

January 15th, 2015 at 11:11 am

ROBOTC for VEX Robotics 4.28 BETA Available Today!

without comments

ROBOTC Beta Release VEXThe ROBOTC Development Team is very excited to announce our latest BETA release, ROBOTC 4.28 BETA. This update is for the VEX Robotics (Cortex EDR and VEX IQ) robotics systems and includes new features, functionality and a load of bug fixes!

 

 

 

 

This new BETA release of ROBOTC includes the brand new “Natural Language 2.0″ libraries for the ROBOTC Graphical interface.

CortexGraphical

The new Natural Language 2.0 for Cortex allows users to customize and use their own robot configurations with our new Graphical Interface.

CortexConfiguration

In addition, users can also program their VEX Cortex Competition Robots using our new “Graphical Competition Template”!

CortexCompetition

We’ll have more videos and tutorials on using the VEX Cortex Graphical Language mode in the near future, but try out the new software today and let us know what you think!

To download the 4.28 BETA, use the following links:

Important Setup Information for ROBOTC 4.28 Beta:

VEX IQ Users:

  • Run the “VEX IQ Firmware Update Utility” and update your VEX IQ Brain to firmware version 1.13 (may not be available at time of release, but will be available soon).
  • Users will also have to update their VEX IQ Wireless Controller in addition to any other VEX IQ Devices (sensors, motors) that may need to be updated as well.
  • After updating to the latest VEX IQ Brain firmware, users will also have to install the latest ROBOTC firmware from inside of ROBOTC.

VEX Cortex Users (with Black VEXnet 1.0 Keys):

  • You will need to update your VEX Cortex and VEX Game Controllers with Master Firmware Version 4.23 from inside of ROBOTC.
  • After updating the master firmware, users will also have to update the VEX Cortex with the latest ROBOTC firmware as well.

VEX Cortex Users (with White VEXnet 2.0 Keys):

  • The new VEXnet 2.0 keys have a specific “radio firmware” that you will need to upgrade to enable “Download and Debugging” support. You can download the VEXnet Key 2.0 Firmware Upgrade Utility here.
  • Download the “VEXnet Key 2.0 Firmware Upgrade Utility” and insert your VEXnet 2.0 key to any free USB port on your computer. Follow the instructions on the utility to update each key individually. All VEXnet 2.0 keys must be running the same version in order to function properly.
  • After updating your VEXnet 2.0 keys, you will need to update your VEX Cortex and VEX Game Controllers with Master Firmware Version 4.23 from inside of ROBOTC.
  • After updating the master firmware, users will also have to update the VEX Cortex with the latest ROBOTC firmware as well.

ROBOTC 4.27 -> 4.28 BETA Change Log:

  • All – Updated Help System Documentation for new commands and features.
  • All – Updated Firmware for 10.28 / 4.28 compatibility.
  • All – Added a compiler error when ‘switch’ expression was illegal.
  • All – Support for optional “int” keyword as in the declaration “short int” or “int short” in addition to “short”.
  • All – Add USB Joystick control to Graphical (in loop blocks)
  • Cortex – Fixed issue where performing a new motor PID movement when an existing PID movement is in progress didn’t work properly.
  • Cortex – Allow users to select “Xmtr2″ for VEX Cortex Graphical (Expert and higher menu level)
  • Cortex – Added competition control and competition template for Cortex Graphical
  • Cortex – Added Virtual Worlds Natural Language 2.0 Library for VEX Cortex
  • Cortex – Renamed old-style Natural Language mode to “Natural Language PLTW”
  • Cortex – Fixed issue where software inspection would fail without a radio link on VEX Cortex
  • Cortex – Added dialog message to Cortex “Download Firmware” button on large icon toolbar.
  • Cortex – Multiple incomplete consecutive PID moves. Fix issue when current move is in “ramp down” and new PID movement is initiated.
  • VEX IQ – Added additional standard models for VEX IQ.
  • VEX IQ – Fix issue where mode wasn’t being set for Graphical for VEX IQ Color Sensor.

Happy Programming!

Written by Tim Friez

December 23rd, 2014 at 4:23 pm