This Week's Top Hudson Valley Events | June 24-June 30 (2024)

The undauntable Elevator Repair Service takes on a theatrical challenge of Joycean proportions, TMI Projects spotlights those fighting for liberation, Roomful of Teeth delights with its signature vocal acrobatics, and more in this week's round-up of top arts and cultural events in the Hudson Valley.

This Week Only

Event Details

Stories For Freedom

Stories for Freedom has gathered ten storytellers, who have been cultivating practices of liberation within their work and lives, to join a TMI Project true storytelling workshop to craft their stories of love, resistance, and growth; stories that can be used to further their work and serve as a blueprint for radical generations to come. By crafting radically true stories, Stories for Freedom amplifies the voices of artists, activists, and artivists to inspire identification and belonging in audience members, and challenge all of us to take bold action in the disruption of systemic oppression.RSVP: Required for in-person/livestream

Senate Garage 4 N Front St, Kingston Kingston

Buy Tickets

Free! (donations and sponsorships are welcomed and appreciated)


Event Details

Roomful of Teeth

Fri., June 28, 7:30 p.m.

The extraordinary vocal acrobatics of Roomful of Teeth will expand your understanding of what the human voice can achieve. This Grammy-winning octet and self-described “vocal band” will take you on a mind-bending journey, blending diverse vocal techniques and styles in works written for (and with) them by some of today’s most exciting composers, including three from their most recent recording, Rough Magic.

Caramoor Center for Music and the Arts 149 Girdle Ridge Road, Katonah Katonah


Event Details

June 28-30

June 28-30, 2024 at the Altamont Fairgrounds near Albany, NY. Old Songs is a family-friendly festival of folk, traditional, Celtic and world music and dance, known for its relaxed atmosphere, interactive sessions and workshops, hands-on experience and participatory nature. In addition to evening concerts each night, there are over 100 daytime workshops, dances or performances. Also featured are craft, food and instrument vendors, and a well-run children’s activity area.

Altamont Fairgrounds 129 Grand Street, Altamont Albany


Event Details

Opening: Scott Michael Ackerman's "Sharp Teeth"

Sat., June 29, 2-6 p.m.

Opening reception for "Sharp Teeth."Scott Michael Ackerman, Kingston born and bred, has tapped into the narrative of folk law, fairy tale and the history of figurative painting in his new body of work Sharp Teeth presented by Hawk and Hive. Inhabited by a cast of wild beasts and peculiar characters, the paintings seem to hover somewhere between child-like enchantment and a shadowy place of suggested violence and the uncanny. For Ackerman, they express the travails of everyday life, interwoven with a dream-like imaginary world. He is exploring themes of “companionship, loneliness and a sense of wonder”.

Hawk + Hive 61 Main Street, Andes Andes

Event Details

Opening: Inaugural Exhibition at The Campus

Sat., June 29, 2-5:30 p.m.

Together with Bortolami, kaufmann repetto, Anton Kern, Andrew Kreps, and kurimanzutto, James Cohan is thrilled to present our inaugural exhibition which features new, historical, and site-specific works by over 80 artists. Embracing a collaborative model, the galleries have turned an abandoned former school building into a platform for dynamic cultural exchange. Organized by Timo Kappeller, the exhibition in this shared space will run from June 29 through October 31, 2024. The event will feature music by DJ Matthew Higgs.

The Campus 341 NY-217, Hudson Hudson

Event Details

"Brother's Keeper"

Fri., June 28, 7 p.m. and Sat., June 29, 2 p.m.

Written and performed by Wallace Norman, "Brother's Keeper is a gripping solo play about courageous survival and the delicacy of friendship. Playing 13 characters, Norman shares the journey of two young boys who are abused by a member of the Catholic clergy. Norman shifts between the two main characters as they grow up and apart. One does not survive the trauma. The other bravely confronts his abuser. This cathartic act leads to healing, love and a kind of peace.

Watch the trailer for Brother's Keeper.

Phoenicia Playhouse 10 Church Street, Phoenicia Phoenicia


Ongoing

Event Details

"Ulysses"

Through July 14

If there’s one theatrical ensemble in America that is up for taking on James Joyce's Ulysses, it’s Elevator Repair Service. Founded in 1991 by John Collins, who for 13 years worked as a sound designer at the pivotal Wooster Group (the alma mater of Willem Defoe and Spalding Gray), Elevator Repair Service—cited as “one of New York City’s few truly essential theater companies” by the New York Times—has produced acclaimed adaptations of other modernist works including a version of William Faulkner’sThe Sound and the Fury; “The Select,” a reworking of Ernest Hemingway’sThe Sun Also Rises; and, most famously, “Gatz,” an eight-hour performance of F. Scott Fitzgerald’sThe Great Gatsby.

Fisher Center at Bard College Bard College PO Box 5000, Annandale-on-Hudson Annandale-on-Hudson

Event Details

Arm-of-the-Sea's Waterfront Wednesday

Wednesdays, 6-8:30 p.m. Continues through Aug. 14

Waterfront Wednesdays is a weekly series of events from June 19th to August 14th, every Wednesday from 6:00-8:30pm at the Tidewater Center in Saugerties. These events feature live, original performances by Arm-of-the-Sea Theater and offer different supporting acts, such as hands-on art projects, workshops, presentations on river ecology and local history of the Esopus Creek, and performances by local theater makers and musicians. Live theater! Art-making! Environmental Education! Ecology Presentations! Local Lore and more!These events are Family Friendly and Community Mending. Discover the stories of our home on the Creek in the Catskills. Rain or shine, all ages!

Tidewater Center 61 E. Bridge St, Saugerties Saugerties

') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } // const insertionBlockClass = `fdn-paragraph-insertion-block`; const styleElementHook = `fdn-paragraph-insertion-styles`; jQuery(element).addClass(insertionBlockClass); if (jQuery(`[${styleElementHook}]`).length === 0) { jQuery('div.fdn-content-body, div #storyBody').append('

') const paragraphLineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() const styleElement = jQuery(`

`); const styleText = ` div.fdn-content-body br+.${insertionBlockClass}:not([hidden]), div #storyBody br+.${insertionBlockClass}:not([hidden]) { margin-top: ${paragraphLineHeight*2}px; margin-bottom: ${paragraphLineHeight}px; } div.fdn-content-body br+.${insertionBlockClass}[hidden] > div:last-of-type, div #storyBody br+.${insertionBlockClass}[hidden] > div:last-of-type { margin-bottom: ${paragraphLineHeight*2}px; } ` styleElement.text(styleText); jQuery('head').append(styleElement); } // } } jQuery(element).insertBefore(this.paragraphEndNodes[index]); } else { console.warn('Foundation.ParagraphTool.insertElemenAt: invalid insertion index', index); } } this.insertElemenAtEnd = function (element) { if (this.paragraphEndNodes.length) { let lastNode = this.getNodeAtIndex(this.paragraphEndNodes.length -1); if (this.isDoubleBrParagraphBreak(lastNode) || this.isBrParagraphBreakBeforeBlockElement(lastNode)) { if (jQuery(element).get(0).tagName.match(/SCRIPT/i) !== null) { jQuery('
').insertAfter(this.paragraphEndNodes[index]); jQuery('
').insertAfter(this.paragraphEndNodes[index]); } else { jQuery('div.fdn-content-body, div #storyBody').append('

') let lineHeight = jQuery('[line-height-check]').get(0).clientHeight; jQuery('[line-height-check]').remove() if (jQuery(element).prop('tagName').match(/HIDDEN/i) !== null) { jQuery(element).children('div').last().css({ marginBottom: `${lineHeight*2}px` }); } else { jQuery(element).css({ marginTop: `${lineHeight*2}px`, marginBottom: `${lineHeight}px` }); } } } } this.bodyContainer.append(element); } this.getNodeAtIndex = function (index) { return this.paragraphEndNodes[index]; } }

`); } var paragraphCount = myParagraphTool.getParagraphEndNodeCount(); // No need to insert if there aren't enough paragaphs if (paragraphCount >= parseInt(item.requiredCountToDisplay)) { // Matches specific paragraph insertion indexes if (item.insertPoint.match(/^\d+$/) !== null) { var insertIndex = parseInt(item.insertPoint) - 1; // Insert within content if (insertIndex < paragraphCount) { myParagraphTool.insertElemenAtIndex(componentElement, insertIndex); } // Append to the end if the insert point is beyond the paragraph count else { myParagraphTool.insertElemenAtEnd(componentElement) } } // Matches for 1/2, 1/4, 2/3, 5/6, etc else if (item.insertPoint.match(/^[1223456]\/[23456]$/) !== null) { var fractionMatch = new RegExp(/^([123456])(?:\/)([23456]$)/); var fractionPart = parseInt(item.insertPoint.match(fractionMatch)[1]); var fractionWhole = parseInt(item.insertPoint.match(fractionMatch)[2]); var fractionValue = fractionPart / fractionWhole; var fractionIndex = Math.floor(myParagraphTool.paragraphEndNodes.length * fractionValue) - 1; myParagraphTool.insertElemenAtIndex(componentElement, fractionIndex); } // Matches for every Nth insertion point else if (item.insertPoint.match(/^\d*th$/i) !== null) { var intervalIndex = parseInt(item.insertPoint.match(/^(\d*)th$/i)[1]); var startingIndex = parseInt(item.startingPoint) - 1; var insertionMax = parseInt(item.maxInsertions) || 100; var insertionCount = 0; for (var i = startingIndex; i < myParagraphTool.paragraphEndNodes.length && insertionCount < insertionMax; i++) { if ((i - startingIndex) % intervalIndex === 0) { let currentNode = myParagraphTool.getNodeAtIndex(i); const clonedComponent = componentElement.clone(); myParagraphTool.insertElemenAtIndex(clonedComponent, i); insertionCount++; } } } } }); Foundation.Content['21068223'].setupInlineComponents = function () { return true; }; if (typeof callback === 'function') { callback(); } }, 200); } Foundation.Content['21068223'].previewInsertionPoints = function () { var myParagraphTool = Foundation.Content['21068223'].paragraphTool myParagraphTool.paragraphEndNodes.each((index, item) => { const insertionPointPlaceholder = jQuery(`

Insertion point ${index+1}

`) myParagraphTool.insertElemenAtIndex(insertionPointPlaceholder, index); }); return 'Paragraph insertion placeholders applied.'; }

Tags

  • Hudson Valley Events Round-Ups

Comments(0)

'); } else if (jQuery(this).attr("id") == "sortSelect"){ jQuery("#Comments [uk-spinner]").show(); } var url = "/arts/this-weeks-top-hudson-valley-events-june-24-june-30-21068223"; var myStart = jQuery(this).attr("id") == "sortSelect" ? "1" : jQuery(this).attr("rel"); var showAllComments = jQuery(this).attr("id") == "showAllComments" ? "yes" : "no"; if (!myStart) var myStart = "1"; var mySort = jQuery("#sortSelect").val() || "desc"; /* commented out to prevent jacking up

HTML / JS syntax highlighting */ var params = { sort: mySort, ajaxComponent: componentId, startIndex: myStart, cb: commentCB(), showAll: showAllComments }; jQuery.ajax({ url: commentComponentUrl, data: (params), dataType: 'json', success: function (data) { jQuery("#"+componentId+"_PaginationBottom").remove(); jQuery("#"+componentId+"_commentContent .brandNewComment").remove(); jQuery("#Comments [uk-spinner]").hide(); if (data.nocomments == false) { jQuery('.fdn-comments-header-block').removeClass('uk-hidden') } if (myStart == "1") { jQuery("#"+componentId+"_commentContent") .html(data.html); } else { jQuery("#"+componentId+"_commentContent").append(data.html); } } }); }; function removeEdit(oid){ if (oid){ jQuery("#Comments-comment-" + oid + " .brandNewComment .newCommentOptions") .fadeOut(function(){ jQuery(this).remove(); }) } } // function getComment(oid, commentLimit){ var url = "/arts/this-weeks-top-hudson-valley-events-june-24-june-30-21068223"; var limitMsg = commentLimit ? "

\r\n\r\n \r\n \r\n Note: Since you've already made live comments \r\n to day(s)ay, this and any additional comments in this timeframe will be \r\n reviewed by our staff before being made live. Thank you for your contribution!\r\n \r\n\r\n <\/div>" : ''; var commentListWrapper = "

    " + "<\/ul>"; if (oid){ var params = { ajaxComponent: componentId, commentOid: oid, cb: commentCB() }; jQuery.ajax({ url: commentComponentUrl, data: (params), success: function (data) { jQuery('span.descriptionWordsLeft').text("0"+" words left.") jQuery('progress.postCommentTextProgress').attr('value','0') function insertNewComment () { // if (jQuery(commentListWrapperSel).length == 0){ jQuery("#"+componentId+"_commentContent") .append(commentListWrapper) } // jQuery(commentListWrapperSel) .append(limitMsg+data) .find(".brandNewComment") .fadeIn(); var reEditTime = 300000 var t=setTimeout(function(){removeEdit(oid)},reEditTime); var progressSel = '#' + componentId + '-comment-' + oid + ' [fdn-comment-edit-options] progress' var timerSel = '#' + componentId + '-comment-' + oid + ' [fdn-edit-timer]' jQuery(progressSel) .attr('max', reEditTime) .attr('value', 0) var countDown = setInterval(function(){ var val = parseInt(jQuery(progressSel).val()) || 0 val = Math.min(reEditTime, val + 1000) var minutes = Math.floor((reEditTime - val) / 1000 / 60 % 10) var seconds = Math.floor((reEditTime - val) / 1000 % 60) .toString().replace(/^\d$/, function(m) { return '0' + m }) jQuery(progressSel).val(val) jQuery(timerSel) .text(minutes + ':' + seconds) if(val >= reEditTime - 1000){ clearInterval(countDown) } },1000) var myTotal = parseInt(jQuery("#comments_total").text(), 10); myTotal++; updateCommentTotals(false,myTotal); } jQuery('.fdn-comments-header-block').removeClass('uk-hidden') insertNewComment() } }); } } function doLikeComment(e){ e.preventDefault(); if (!this.clicked){ var oid = jQuery(this).attr("data-commentOid"); jQuery("#Comments #"+oid+"_likeLinks a").addClass("dimmed").css("opacity","0.4").each(function(){this.clicked = true;}); var myCurrentLikes = jQuery("#"+oid+"_rating_likes").html() || 0; var myCurrentDislikes = jQuery("#"+oid+"_rating_dislikes").html() || 0; var thisRating = jQuery(this).attr("rel"); if (thisRating == "Like"){ myCurrentLikes = parseFloat(myCurrentLikes)+1; } else { myCurrentDislikes = parseFloat(myCurrentDislikes)+1; } // var myNewLine = '' + myCurrentLikes + ' like'; // if (myCurrentLikes != 1) { // myNewLine += 's'; // } // myNewLine += ', ' + '' + myCurrentDislikes + ' dislike'; // if (myCurrentDislikes != 1) { // myNewLine += "s"; // } // jQuery("#"+oid+"_rating_sub").html(myNewLine); // jQuery("#"+oid+"_rating_sub").show(); var params = { oid: oid, rating: thisRating, cb: commentCB() }; jQuery.ajax({ url: "/gyrobase/Tools/AjaxLike", type: "POST", data: (params), dataType: 'json', success: function (data) { console.log(data) jQuery("#"+data.oid+"_rating_likes").html(data.rating.likes) jQuery("#"+data.oid+"_rating_dislikes").html(data.rating.dislikes) if (thisRating == "Like"){ jQuery("#Comments #"+oid+"_likeLinks a.dislike").removeClass("dimmed").css("opacity","1").each(function(){this.clicked = false;}); } else { jQuery("#Comments #"+oid+"_likeLinks a.like").removeClass("dimmed").css("opacity","1").each(function(){this.clicked = false;}); } } }); } } function reportComment(e){ e.preventDefault(); e.stopPropagation(); var oid = jQuery(this).attr("rel"); var elem = jQuery("#"+oid+"_report"); elem.click(function(e){e.stopPropagation();}) if (!elem.is(":visible")){ if (elem.is(":empty")){ var params = { // oid: oid, ajaxComponent: componentId, requestAction: "reportComment", cb: commentCB() }; jQuery.ajax({ url: commentComponentUrl, // componentURL, data: (params), dataType: 'json', success: function (data) { console.log(data) if(data.reportForm.html){ elem.html(data.reportForm.html); UIkit.modal(jQuery('#'+data.reportForm.oid+'_report_modal')) .show(); } } }); } else { UIkit.modal(jQuery('#'+oid+'_report_modal')).show(); } } } function submitReport(e){ var params = jQuery(e).closest("form").serialize()+"&ajaxComponent="+componentId+"&requestAction=reportComment"; jQuery.ajax({ url: commentComponentUrl, // componentURL, type: "POST", data: (params), dataType: 'json', success: function (data) { console.log(data) if(data.reportResult.html){ UIkit.modal(jQuery('#'+data.reportResult.oid+'_report_modal')) .hide(); jQuery('#'+data.reportResult.oid+'_report_result') .html(data.reportResult.html) UIkit.modal(jQuery('#'+data.reportResult.oid+'_report_success_modal')) .show(); setTimeout(function(){ UIkit.modal(jQuery('#'+data.reportResult.oid+'_report_success_modal')) .hide(); }, 2500); } } }) } (function($) { var subscribed=false; function showFollowPanel(e){ e.preventDefault(); myPanel = $(this).parent().next(".togglePanel"); myPanel.fadeIn("fast"); } function doSubscribe(obj){ var myPanel = obj.parent().next(".togglePanel"); myPanel.fadeIn("fast"); if (!subscribed){ var myLink = obj.parent(); var myLoader = myPanel.children(".loading"); var myUpdater = myPanel.children(".ajaxUpdater"); var params = { object: myPanel.attr("data-toolsoid"), macro: myPanel.attr("data-toolsajaxmacro"), url: window.location }; $.ajax({ url: "/gyrobase/Macros/ToolsAjax", data: (params), type: "POST", dataType: "html", success: function (data) { subscribed = true; if (myUpdater){ myUpdater.html(data); myLoader.fadeOut("fast", function(){ myUpdater.fadeIn("fast", function(){ setTimeout(function(){ myPanel.fadeOut("fast"); }, 3000); }); }); } else { myPanel.fadeOut("fast"); } } }); } } function activateSubscribe(e){ e.preventDefault(); var myObj = $(this); var isAuthenticated = Foundation.SessionManager.sharedSessionManager().isAuthenticated(); if (!isAuthenticated){ new Foundation.Login.Dialog({ "feelingShy": false, "callback": function(){doSubscribe(myObj);} }); return false; } else { // Proceed doSubscribe(myObj); } } function deleteComment(e){ e.preventDefault(); var thisComment = $(this); var params = { macro: "deleteComment", comment: thisComment.attr("data-comment") }; $.ajax({ url: "/gyrobase/Macros/ToolsAjax", data: (params), type: "POST", dataType: "html", success: function (data) { thisComment.closest(".brandNewComment").fadeOut("fast", function(){ $(this).remove(); var myTotal = parseInt(jQuery("#comments_total").text(), 10); myTotal--; updateCommentTotals(false,myTotal); }); } }); } function editComment(e){ e.preventDefault(); var thisComment = $(this); var commentCont = thisComment.closest(".brandNewComment").find(".description"); var commentTemp = thisComment.closest(".brandNewComment").find(".commentTemp"); var commentText = commentTemp.html(); var toolbar = thisComment.closest(".brandNewComment").find(".commentToolbar"); commentCont.next(".commentEditCont").remove(); commentCont.after(''); toolbar.fadeOut("fast"); commentCont.fadeOut("fast", function(){ commentCont.next(".commentEditCont").fadeIn("fast", function(){ $(".brandNewComment textarea.expandableBox").autoBoxResize(); $(".brandNewComment textarea.expandableBox").focus(); }); }); } function editCommentSave(e){ e.preventDefault(); var thisComment = $(this); var editCont = thisComment.closest(".commentEditCont"); var commentTemp = thisComment.closest(".brandNewComment").find(".commentTemp"); var newText = thisComment.prevAll("textarea").val(); var toolbar = thisComment.closest(".brandNewComment").find(".commentToolbar"); var params = { macro: "editComment", comment: thisComment.attr("data-comment"), commentText: newText }; $.ajax({ url: "/gyrobase/Macros/ToolsAjax", data: (params), type: "POST", success: function (data) { if (data.error){ $(".editErrorDisplay").html("
  1. "+data.error+"

").fadeIn("fast"); } else if (data.result){ editCont.fadeOut("fast", function(){ $(".editErrorDisplay").hide().html("

    "); editCont.prev(".description").html($.trim(data.result)); commentTemp.html(newText); editCont.prev(".description").fadeIn("fast"); toolbar.fadeIn("fast"); }); } } }); } function editCommentCancel(e){ e.preventDefault(); var editCont = $(this).closest(".commentEditCont"); var toolbar = $(this).closest(".brandNewComment").find(".commentToolbar"); editCont.fadeOut("fast", function(){ $(".editErrorDisplay").hide().html("

      "); editCont.prev(".description").fadeIn("fast"); toolbar.fadeIn("fast"); editCont.remove(); }); } $("#Comments").on('click', ".bottomOptionBar a#doSubscribe", activateSubscribe); $("#Comments").on('click', ".bottomOptionBar a.togglePanelClose", function(){$(this).parent().fadeOut("fast"); return false;}); $("#Comments").on('click', ".brandNewComment a.commentDeleteLink", deleteComment); $("#Comments").on('click', ".brandNewComment a.commentEditLink", editComment); $("#Comments").on('click', ".brandNewComment a.doneEditLink", editCommentSave); $("#Comments").on('click', ".brandNewComment a.cancelEditLink", editCommentCancel); })(jQuery); jQuery(function($){ // var commentWordLimit = 0 if(commentWordLimit > 0){ jQuery('textarea[name=comment]').on('input propertychange',function(){ var originalText = jQuery(this).prop('value') var wordList = originalText.trim().split(/\s+/) var wordsUsed = wordList[0] == "" ? 0 : wordList.length var wordsLeft = Math.max(0,commentWordLimit - wordsUsed) jQuery('span.descriptionWordsLeft').text(wordsLeft+" words left.") jQuery('progress.postCommentTextProgress').val(wordsUsed) if(wordsUsed > commentWordLimit){ // var shortenedMatch = new RegExp("^([^\\s]*\\s+){" + (commentWordLimit-1) + "}[^\\s]{1,10}","gi") var shortenedText = shortenedMatch.exec(originalText)[0] jQuery(this).prop('value', shortenedText) } if(wordsLeft < commentWordLimit){ jQuery('span.descriptionWordsLeft').text(wordsLeft+" words left.") jQuery('progress.postCommentTextProgress').val(wordsUsed) }else{ jQuery('span.descriptionWordsLeft').text('') jQuery('progress.postCommentTextProgress').val(0) } }) } $("#Comments").on('click', '#showMoreComments,#showAllComments', getMoreComments); $("#Comments #sortSelect").change(getMoreComments); getMoreComments(); // new Foundation.PostCommentComponent(componentId); // var nc = Foundation.NotificationCenter.sharedNotificationCenter(); nc.observe("comment:added", function (e) { var comment = e.data; getComment(comment.get("oid"), comment.get("commentLimit")); // clear rating if (jQuery(".commentFormRating").length != 0){ Foundation.Rating['[data-component-id="Comments"] .commentFormRating'] .clearRating() } }); var subscribeCheckBox = $("#Comments_commentSubscribe"); subscribeCheckBox.prop("checked", getCookie("subscribeToThread") === "true" ? true : false); subscribeCheckBox.change(function (e) { var subscribeToThread = $(this).prop("checked"); setCookie("subscribeToThread", subscribeToThread ? "true" : "false", 30); }); var shareFacebookBox = $("#Comments_postCommentToFacebook"); shareFacebookBox.prop("checked", getCookie("shareOnFacebook") === "true" ? true : false); shareFacebookBox.change(function (e) { var shareOnFacebook = $(this).prop("checked"); setCookie("shareOnFacebook", shareOnFacebook ? "true" : "false", 30); }); $("#Comments").on('click', 'a.likeLink', doLikeComment); $("#Comments").on('click', 'a.reportCommentLink', reportComment); });

      This Week's Top Hudson Valley Events  | June 24-June 30 (2024)

      References

      Top Articles
      Latest Posts
      Article information

      Author: Edwin Metz

      Last Updated:

      Views: 6371

      Rating: 4.8 / 5 (58 voted)

      Reviews: 89% of readers found this page helpful

      Author information

      Name: Edwin Metz

      Birthday: 1997-04-16

      Address: 51593 Leanne Light, Kuphalmouth, DE 50012-5183

      Phone: +639107620957

      Job: Corporate Banking Technician

      Hobby: Reading, scrapbook, role-playing games, Fishing, Fishing, Scuba diving, Beekeeping

      Introduction: My name is Edwin Metz, I am a fair, energetic, helpful, brave, outstanding, nice, helpful person who loves writing and wants to share my knowledge and understanding with you.