. */ # Known/outstanding issues: # [UNCONFIRMED ISSUE] Plugin seems to keep pinging when importing an XML/WXR file even if pinging is disabled # Plugin does not seem to report any errors if it cannot write to the log file (see E2 blog for example) function SUP_add_options_page(){ if(function_exists("add_options_page")) add_options_page("UP Smart Update Pinger", "UP Smart Update Pinger", 5, basename(__FILE__), "SUP_show_options_page"); } function SUP_show_options_page(){ global $logfile; $ping = get_option("SUP_ping"); $pinglog = get_option("SUP_pinglog"); $uris = get_option("ping_sites"); $forcedpings = false; $SUP_output_log=''; $pingservicesnow = "Ping Services Now!"; $deletelogfile = "Delete Log File"; if(isset($_POST["ping"]) && $_POST["ping"] == $pingservicesnow){ $forcedpings = true; SUP_log(SUP_ping_services($forcedpings).strftime("%D %T")."\tForced pinging services (Homepage)\n\t─────\n"); }elseif(isset($_POST["submit"])){ $uris = $_POST["uris"]; $ping = 0; if($_POST["ping"] == 1) $ping = 1; $pinglog = 0; if($_POST["pinglog"] == 1) $pinglog = 1; update_option("SUP_ping", $ping); update_option("SUP_pinglog", $pinglog); update_option("ping_sites", $uris); echo '

Options saved.

'; }elseif(isset($_POST["delete"]) && $_POST["delete"] == $deletelogfile){ $fh = @fopen($logfile, "w"); if(false === @fwrite($fh, strftime("%D %T")."\tLog file deleted\n\t─────\n")){ update_option("SUP_error", 1); }else{ update_option("SUP_error", 0); } @fclose($fh); } $checked1 = ''; if($ping == 1) $checked1 = 'checked="checked"'; $checked2 = ''; if($pinglog == 1) $checked2 = 'checked="checked"'; echo '

Ultimate Plugins Smart Update Pinger

Click here for installation instructions

Click here for usage instructions

Click here for updated versions

Click here for comments and suggestions

URIs to Ping

The following services will automatically be pinged/notified when you publish normal or future timestamped posts. Not when you edit previously published posts, as WordPress does by default.

This plugin also fixes an issue with the default extended ping programming in Wordpress and pre-2.1 versions of Smart Update Pinger (it now includes the url of the new post).

NB: this list is synchronized with the original update services list.

Separate multiple service URIs with line breaks:

Ping log

These are the last 100 actions performed by the plugin. In reverse chronological order for easier reading (latest ping first).

'; SUP_get_last_log_entries(500); echo '

'; } # telling WordPress to ping if the post is new, but not if it's just been edited function SUP_ping_if_new($id){ global $wpdb, $post_title; $SUP_output_log="\t─────\n"; $SUP_ping_result=''; $forcedpings = false; if(get_option('SUP_ping') == 1 && trim(get_option('ping_sites')) != ""){ # fetches data directly from database; the function "get_post" is cached, and using it here will get the post as is was before the last save $row = mysql_fetch_array(mysql_query( // "SELECT post_date,post_modified,post_title,guid FROM $wpdb->posts WHERE id=$id")); "SELECT post_date,post_modified,post_title FROM $wpdb->posts WHERE id=$id")); # if time when created equals time when modified it is a new post, otherwise the author has edited/modified it if(!$row["post_title"]){ $SUP_output_log=strftime("%D %T")."\tNOT Pinging services (ERROR: YOU HAVE FORGOTTEN TO ENTER A POST TITLE) ...\n".$SUP_output_log; }else{ if($row["post_date"] == $row["post_modified"]){ $SUP_output_log=strftime("%D %T")."\tPinging services (New normal post: “".$row["post_title"]."”) ...\n".$SUP_output_log; $SUP_output_log=SUP_ping_services($forcedpings,get_permalink($id)).$SUP_output_log; # Try commenting the line above, and uncommenting this line below if pinging seems to be out of order. Please notify the author if it helps! # generic_ping(); }else{ // Post has been edited or it's a future post // If we have a post title it means that we are in the normal WP loop and therefore it was an edit (not a future post) if($post_title){ $SUP_output_log=strftime("%D %T")."\tNOT Pinging services (Existing post was edited: “".$row["post_title"]."”) ...\n".$SUP_output_log; }else{ $SUP_output_log=strftime("%D %T")."\tPinging services (New timestamped post: “".$row["post_title"]."”) ...\n".$SUP_output_log; $SUP_output_log=SUP_ping_services($forcedpings,get_permalink($id)).$SUP_output_log; # Try commenting the line above, and uncommenting this line below if pinging seems to be out of order. Please notify the author if it helps! # generic_ping(); } } } }else{ if (trim(get_option('ping_sites')) != ""){ $SUP_output_log=strftime("%D %T")."\tNOT Pinging services (WARNING: DISABLED BY ADMINISTRATOR)\n".$SUP_output_log; }else{ $SUP_output_log=strftime("%D %T")."\tNOT Pinging services (WARNING: EMPTY PING SERVICES LIST)\n".$SUP_output_log; } } SUP_log($SUP_output_log); } # More or less a copy of WP's "generic_ping" from functions.php, but uses another function to send the actual XML-RPC messages. function SUP_ping_services($forcedpings,$SUP_guid = ''){ $SUP_output_log=''; #$services = get_settings('ping_sites'); #UP - 17.07.07 - get_option is newer/better then get_settings $services = get_option('ping_sites'); $services = preg_replace("|(\s)+|", '$1', $services); // Kill dupe lines $services = trim($services); if ( '' != $services ) { $services = explode("\n", $services); foreach ($services as $service) $SUP_output_log=SUP_send_xmlrpc($forcedpings,$SUP_guid,$service).$SUP_output_log; } return $SUP_output_log; } # A slightly modified version of the WordPress built-in ping functionality ("weblog_ping" in functions.php). # Original version: #function weblog_ping($server = '', $path = '') { #global $wp_version; #include_once(ABSPATH . WPINC . '/class-IXR.php'); #// using a timeout of 3 seconds should be enough to cover slow servers #$client = new IXR_Client($server, ((!strlen(trim($path)) || ('/' == $path)) ? false : $path)); #$client->timeout = 3; #$client->useragent .= ' -- WordPress/'.$wp_version; #// when set to true, this outputs debug messages by itself #$client->debug = false; #$home = trailingslashit( get_option('home') ); #if ( !$client->query('weblogUpdates.extendedPing', get_option('blogname'), $home, get_bloginfo('rss2_url') ) ) // then try a normal ping #$client->query('weblogUpdates.ping', get_option('blogname'), $home); #} # This one uses correct extendedPing format (WP does not), and logs response from service. function SUP_send_xmlrpc($forcedpings,$SUP_guid = '',$server = '', $path = ''){ global $wp_version; $SUP_output_log=''; include_once (ABSPATH . WPINC . '/class-IXR.php'); // using a timeout of 5 seconds should be enough to cover slow servers (changed from 3 to 5) $client = new IXR_Client($server, ((!strlen(trim($path)) || ('/' == $path)) ? false : $path)); $client->timeout = 5; $client->useragent .= ' -- WordPress/'.$wp_version; // when set to true, this outputs debug messages by itself $client->debug = false; $home = trailingslashit( get_option('home') ); # The extendedPing format should be "blog name", "blog url", "check url" (the new URL), and "feed url". # Related Website(s) # http://www.weblogs.com/api.html # An example: # Someblog - Title # http://spaces.msn.com/someblog - Home URL # http://spaces.msn.com/someblog/PersonalSpace.aspx?something - Check/New URL # http://spaces.msn.com/someblog/feed.rss - Feed # Changed the following line therefore: # if($client->query('weblogUpdates.extendedPing', get_settings('blogname'), $home, get_bloginfo('rss2_url'), get_bloginfo('rss2_url'))) if ($forcedpings){ # If this is a forced ping it's better to use a regular ping for the homepage without an update URL (safer) if($client->query('weblogUpdates.ping', get_option('blogname'), $home)){ $SUP_output_log=strftime("%D %T")."\t► [Regular Ping] ".$server." was successfully pinged\n".$SUP_output_log; if (get_option('SUP_pinglog') == 1){ $SUP_output_log=strftime("%D %T")."\t►► Blogname: '".get_option('blogname')."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► Homepage: '".$home."'\n".$SUP_output_log; } }else{ $SUP_output_log=strftime("%D %T")."\t► ".$server." could not be pinged. Error message: “".$client->error->message."”\n".$SUP_output_log; } }else{ if($client->query('weblogUpdates.extendedPing', get_option('blogname'), $home, $SUP_guid, get_bloginfo('rss2_url'))){ $SUP_output_log=strftime("%D %T")."\t► [Extended Ping] ".$server." was successfully pinged\n".$SUP_output_log; if (get_option('SUP_pinglog') == 1){ $SUP_output_log=strftime("%D %T")."\t►► Blogname: '".get_option('blogname')."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► Homepage: '".$home."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► Updated : '".$SUP_guid."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► RSS URL : '".get_bloginfo('rss2_url')."'\n".$SUP_output_log; } }else{ # pinging was unsuccessful, trying regular ping format if($client->query('weblogUpdates.ping', get_option('blogname'), $home)){ $SUP_output_log=strftime("%D %T")."\t► [Regular Ping] ".$server." was successfully pinged\n".$SUP_output_log; if (get_option('SUP_pinglog') == 1){ $SUP_output_log=strftime("%D %T")."\t►► Blogname: '".get_option('blogname')."'\n".$SUP_output_log; $SUP_output_log=strftime("%D %T")."\t►► Homepage: '".$home."'\n".$SUP_output_log; } }else{ $SUP_output_log=strftime("%D %T")."\t► ".$server." could not be pinged. Error message: “".$client->error->message."”\n".$SUP_output_log; } } } return $SUP_output_log; } $post_title = ""; # Receives the title of the post from a filter below function SUP_post_title($title){ global $post_title; $post_title = $title; return $title; } # Log $logfile = ABSPATH . 'wp-content/plugins/ultimate-plugins-smart-update-pinger/ultimate-plugins-smart-update-pinger.log'; function SUP_log($SUP_log_output){ global $logfile; $logerror = 0; $fh = @fopen($logfile, "a"); if(false === @fwrite($fh, $SUP_log_output)){ update_option("SUP_error", 1); }else{ update_option("SUP_error", 0); } @fclose($fh); } function SUP_get_last_log_entries($num){ global $logfile; $lines = @file($logfile); if(get_option("SUP_error") == 1){ $fh = @fopen($logfile, "a"); if(false === @fwrite($fh, "")){ echo "Error writing log file (".$logfile."). Most likely your logfile (".$logfile.") is write-protected and no log data can be saved (change the rights of this file to 777), or alternatively this could mean that you have manually removed the log file, or that you have changed the directory or file name of the plugin (they both should be 'ultimate-plugins-smart-update-pinger')"; }else{ // Original: $lines = array_slice($lines, count($lines) - $num); // Modified to show in reverse order (easier for reading) $lines = array_reverse(array_slice($lines, count($lines) - $num)); $msg = ""; foreach($lines as $line){ $msg.=trim($line)."
"; } echo $msg; } @fclose($fh); }else{ if($lines === false){ echo "Error reading log file (".$logfile."). Most likely you have manually removed the log file, or alternatively this could mean that the logfile (".$logfile.") is read-protected (change the rights of this file to 777), or that you have changed the directory or file name of the plugin (they both should be 'ultimate-plugins-smart-update-pinger')"; }else{ // Original: $lines = array_slice($lines, count($lines) - $num); // Modified to show in reverse order (easier for reading) $lines = array_reverse(array_slice($lines, count($lines) - $num)); $msg = ""; foreach($lines as $line){ $msg.=trim($line)."
"; } echo $msg; } } } # adds a filter to receive the title of the post before publishing add_filter("title_save_pre", "SUP_post_title"); # shows the options in the administration panel add_action("admin_menu", "SUP_add_options_page"); # calls SUP_ping whenever a post is published add_action("publish_post", "SUP_ping_if_new"); # calls SUP_ping_draft when changing the status from private/draft to published # add_action("private_to_published', 'SUP_ping_draft'); # removes the "WordPress official" pinging hook remove_action("publish_post", "generic_ping"); # activates pinging if setting doesn't exist in database yet (before the user has changed the settings the first time) if(get_option("SUP_ping") === false){update_option("SUP_ping", 1);} if(get_option("SUP_pinglog") === false){update_option("SUP_pinglog", 1);} if(get_option("SUP_error") === false){update_option("SUP_error", 0);} ?> 2012 | Kite 2012
Sunday, October 24, 2021

Kite 2012

Kitesurfing News Year 2012-2016!

Kitesurfing – the rise of a new sport

Posted by Emma Pat On July - 16 - 2014

Ever stop and ask yourself where it all began? Well, I’m here to tell you a quick story about a sport which we now call kite surfing…

Kite Surfing dates back to as early as the 1800’s wherein George Pocock used large kites to propel carts on land and ships on water which they used as an alternative to horsepower and mainly because they wanted to avoid horse tax. And from then on it was mainly used to move items from one place to another with improvements here and there. Gijsbertus Adrianus Panhuise from Netherlands was the first one to receive the first kite surfing patent in Oct. 1977 which covers a water sport using a floating board of a surf board type where a pilot standing up on it is pulled by a wind catching device of a parachute type tied to his harness on a trapeze type belt. Even though it did not result in any commercial interest, he could be considered as the founding father of kitesurfing. After that, there were occasionally successful attempts to basically combine kites with other sports. Bruno and Dominique Legaignoux came up with an inflatable kite design in the late 1970’s and the early 1980’s. In the USA, Bill Roeseler and his son Cory Roeseler patented the “KiteSki” system which consists of water skis powered by a two line delta style kite controlled via a bar mounted combined winch/brake. The Roeseler’s design was commercially available in 1994. And in the late 1990’s, Cory’s design evolved into a single board similar to a skate board.

“We knew it was gonna be something amazing but we didn’t know when or how” -Flash Austin

Kite Surfing has definitely come a long way and it’s all because of the people who have contributed their time, effort and passion to the sport. When you think about it, back then they didn’t have any material to teach them how to do it, they didn’t have videos that they could watch so that they could try to do it, kite school’s didn’t exist back then and the only way they were able to learn was thru the old fashion way -trial and error. Lou Wainman was said to have invented a lot of the tricks that are the standards now.

“To me Lou (Wainman) is like one of the early most progressive pioneers of this sport and he actually did start the whole wake boarding craze” -Mike Waltze

The first kite competition in which they dubbed the ‘Kite Surfing World Championship’ as a joke because the year before that there were only about 6 people who were in it. But now there are hundreds if not thousands of competitors who join each year and the market is now worth over $250 million dollars.

“Once word went out and the sport started to blow, that’s when Red Bull approached us with doing an event, that’s where we came up with the name ‘King of the Air’ and it stuck because at that time it was all about getting big air and the wow factor” -Joe Keuhi

Because of its exponential growth, kids as young as 13yrs old are now competing in championships, something they have envisioned and wanted to happen in the beginning. It’s not all about competition though, when you meet people who have the same passion as you, it’s when you make a connection and you build friendships, and it won’t even matter if you’re continents apart. And mainly that’s what they’re trying to build and want to achieve -and they have, but it isn’t over yet! The fun’s just getting started.

It’s always good to take a step back and remember where it all began or take a minute to learn how your new favourite sport came to be just to get in it deeper and also find a community where you can share your passion for kite surfing.

Watch the video and get a chance to know who we consider the forefathers or kiting, see amazing tricks on water and know how it all started: the trials they faced, how the sport developed, find out what their kitemares are and see awesomeness in action!

Airton Cozzolino – Kitesurf Wave World Champion 2012

Posted by kite2012 On September - 13 - 2012

Airton Cozzolino is a 18-years-old guy with crazy eyes and a passion for waves! Born in Cape Verde Airton truanted from school as soon as there were waves in the water! His love to the sea made him spend almost more time in the water than on land which of course helped him to develop outstanding skills with his kite and board. In 2012 Airton won the Kitesurf Wave World Champion 2012 and he is now fully dedicated to keep his position as the world’s best wave kitesurfer!

Kiki for Julbo Swell Session 2012

Posted by kite2012 On August - 3 - 2012

A short but nice video for the contest julbo swell session 2012 with Jeremie Eloy.

Kiteboarding worldcup in the Netherlands 2012

Posted by kite2012 On July - 16 - 2012

Here is a nice video from the kiteboarding world cup in the Netherlands 2012. Alex Pastor delivers as usual and not surprisingly becomes the winner in the freestyle competition.

Kitesurfing in Sri Lanka 2012

Posted by kite2012 On July - 14 - 2012

Here is a nice video from Sri Lanka, the best video I could find today among all other crappy kite videos…

Wind and Waves Festival 2012

Posted by kite2012 On July - 5 - 2012

Must be tough for all windsurfers out there watching the kiteboarders jumping skyhigh and making crazy tricks making windsurfing looking nerdy and super boring. On top of that the windsurfers are now being kicked out from the Olympics in favor of the kiteboarders… talk about being put in the shadow behind the kiteboarders ;)
Joking aside, vindsurfing can pretty cool as well! Check out these maniacs that are windsurfing in 20 knots in Gran Canaria, guess that’s the wind speed necessary to perform a double backloop with a windsurfing sail :)

And now a video that has nothing to with kitesurfing or windsurfing whatsoever. Just a great tune from The Naked And Famous – Punching In A Dream, a tune that goes on repeat in my sound system right now. Actually the same song that is used in one of all videos with Youri ZoonThe Ultimate Reward

Christian Winkenjohann Kiteboarding in Greece

Posted by kite2012 On June - 25 - 2012

Christian is another example that shows that it´s fully possible to start kiteboarding again after an injury. Christian broke his hand back in April, but he is now back in action again! Watch him in this video doing kiteloops, darkslides with his Flexifoil Hadlow ID.

Related External Links

Snowkiting in Austria

Posted by kite2012 On June - 12 - 2012

Year 2012 offered a great snowkiting winter for the people in Austria! This video is shot from some spots in Styria, Corithia and Salzburg. I bet the Austrians are crying now when the snow is melting…

Related External Links

Slingshot Fuel vs RPM

Posted by kite2012 On June - 6 - 2012

Ruben Lenten rides the Fuel. Youri Zoon rides the RPM. Wy aren’t both of them on the same kite? We all know that the Fuel is a pure C-kite and that the RPM is a Hybrid C-kite. Is that the only difference between the two? Of course not! We decided to dig deeper into this matter to once for all stake out the differences between the Fuel and the RPM. Not only did we we try the two kites our selfes, but letting a group of Slingshot riders give us their feedback on the two models.

The Fuel

As we´ve seen in numerous videos on the net many riders that are into insane kiteloops ride with the Fuel. The reason is that the Fuel turns a little more open which creates a lot of energy while you loop it into the powerzone. However the performances of the Fuel also depends on the settings you choose, you can choose between wake and freestyle.
The wake setting means more low-end power and grunt. The kite will turn slower, have less depower, pull more during turns and it will deliver a higher bar pressure. The freestyle setting is basically the opposite. These settings are usually found on most kites and it´s nothing special really. The closer you attach the front lines to the wing tips the deeper the kite sits in the wind window which will change its properties a bit.

The Fuel will give you a bit more load and pop perfomance. The kite is also less sensitive to slack in the lines. People that are into mobes normally prefer the Fuel before the RPM for these reasons. Another great advantage with the Fuel is that you don’t have to trim the kite when you perform unhooked tricks.

Gust handling. The Fuel is not really known for its great ability to handle gusty wind. Flying a Fuel in gusty conditions is fully possible, but it will drain a lot more of your energy since the kite will put more strain on your body compared to the RPM that has the ability to absorb gusts in a better way. Flying an RPM for 2-3 hours in gusty conditions is like flying a Fuel for 1 hour, that’s how tiring it is to fly the Fuel when it´s gusty. In smooth constant wind conditions the Fuel is a killer.

Other drawbacks with the Fuel is the less wind range and the water relaunch is easier with the RPM. However, for being a c-kite the water relaunch is very good!

The RPM

Like the Fuel, the RPM can be tuned to fit your desired style by changing the settings. Attach the front lines to the wake setting and set the rear lines to the slower setting and you´ll end up with a RPM that almost has exactly the same characteristics as the Fuel. The bar pressure is about the same, the RPM is somewhat faster and turns a little more closely.

The RPM may advantageously be flown when it´s gusty and it´s more forgiving than the Fuel. The depower is better and so is the wind range. During jumps the RPM will give you a longer hang time. One can say that the RPM is a more versatile kite than the Fuel. If the Fuel and the RPM were brothers, the RPM would definitely be the little brother, a less extreme version of Fuel, the big brother.

Conclusion

Selecting between the Fuel and the RPM is not an easy task. It´s of course  a question about your riding style. If you´re into mobes and freaked out kiteloops, then go for the Fuel. Are you looking for a more versatile all-round kite, then the RPM might be your first choice. However, another probably even more important factor when choosing between the Fuel and the RPM is your local wind conditions. Are you spoiled with solid constant condition, then the Fuel should definitely be your first choice! But the Fuel will kick your ass in gusty conditions, so you might feel more comfortable with the RPM. It is not surprising that many riders have a quiver of RPM’s mixed with one or two Fuels to be used when the conditions are right.

Both the RPM and the Fuel are great kites and you can’t really go wrong with any of them, but remember to keep your local conditions in mind since this will greatly effect your buying decision.

For further information and reviews about the RPM and the Fuel, check out www.slingshotfuelkite.com

Related External Links

KTA China Pingtan 2012

Posted by kite2012 On May - 19 - 2012

They finally got some wind in Pingtan! Here is a bit of freestyle action from the mens and female single competition as well as some racing competition. As you can see they ride a lot of Ozone kites, I guess Ozone has done some serious marketing in Asia :)

The guy standing to the right in this picture is Ken from Boracay. He runs a kite center on bulabong beach, “Kite Academics” or something like that. Anyway, he is a friendly guy that you usually find on the beach or in one of bars in the evenings.
Don’t know his place in this KTA tournament… he doesn’t seem to look to enthusiastic some reason…

Related External Links

Best Snowkiting Video 2012!

Posted by kite2012 On May - 11 - 2012

This is by far the best snowkiting video that has been released in 2012!

This is a great production made by Créateurs de films featuring many riders such as Laurent Sublet, Remi Meum, Alex Bryand, Bjorn Kaupang, Guillaume Voegli, Goody Gaudard, Alex Robin, Romain Barachko, Laurent Guyot and Paul Turberg to name a few of them…

Related External Links

Movistar Kitesurf Tour 2012 in Matanzas

Posted by kite2012 On May - 7 - 2012

This is the 3:rd episode of the Rise Kitesurfing Podcast series featuring JP Diban and the Chilean National Wavemaster, The Movistar Kitesurf Tour 2012 in Matanzas. The video is far from the best I´ve seen, but I like the music, so I decided to post it here :)

KTA Boracay 2012

Posted by kite2012 On April - 28 - 2012

Here is a collection of videos from the KTA competition at the Bulabong beach in Boracay.

Day 1

Day 2

Day 3

Day 4

Related External Links

Hatteras 2012 Daniel Koenig and Stefan Koenig

Posted by kite2012 On April - 26 - 2012

Two for me unknown brothers, Daniel and Stefan Koenig, have shot this video in Cape Hatteras, North Carolina. It’s nice to for once see some innovative kitesurfing, not just the usual unhooked 1080’s ala Aaron Hadlow style :)

Related External Links

Tom’s kitchen episode 4

Posted by kite2012
May-14-2016 I Comments Off on Tom’s kitchen episode 4

We Love Kiteboarding

Posted by kite2012
Apr-22-2015 I Comments Off on We Love Kiteboarding

Te Tainui Kitesurfing Video by F-One

Posted by Emma Pat
Nov-19-2014 I Comments Off on Te Tainui Kitesurfing Video by F-One

Red Bull King of the Air 2015 – Rule the Sky

Posted by Emma Pat
Nov-17-2014 I Comments Off on Red Bull King of the Air 2015 – Rule the Sky

A new video from Kite 2013

Posted by kite2012
Mar-20-2013 I Comments Off on A new video from Kite 2013

What do to when it´s not too windy

Posted by kite2012
Oct-11-2012 I Comments Off on What do to when it´s not too windy

How to film yourself while kitesurfing

Posted by kite2012
Oct-6-2012 I Comments Off on How to film yourself while kitesurfing

Kiteloop Crash

Posted by kite2012
Sep-22-2012 I Comments Off on Kiteloop Crash

Cross the Atlantic ocean by a kite!

Posted by kite2012
Sep-21-2012 I Comments Off on Cross the Atlantic ocean by a kite!