103rd Assembly District Democratic Debate: Sarahana Shrestha and Gabi Madden on June 17 in Kingston (2024)

Incumbent Sarahana Shrestha faces former Kevin Cahill staffer Gabi Madden in the 103rd Assembly District Democratic primary on June 25. The two will debate at the Old Dutch Church in Kingston on Monday, June 17 at 6pm in a forum co-hosted by Kingston Wire and the Hudson Valley Pilot. The event will be a structured discussion moderated by Dan Barton, managing editor of Kingston Wire, and Eric Steinman, executive editor of Hudson Valley Pilot. The public is encourage to attend and submit written questions to be asked of the candidates by the moderators via email: [emailprotected] or [emailprotected].

Here's how Kingston Wire views the match-up:

"We see it as a something of a replay of Cahill-Shrestha. Then as now, Democratic voters are being asked to endorse one of two competing theoris of how they want to be represented in Albany. Shrestha, who has done what we think is a decent job of funneling state aid back to the district, may never be a top player in state politics. But she's a force pushing for serious structural change, a stance that resonates with a lot of voters who want that kind of change for both Albany and society as a whole. We don't know if Madden would be that kind of force for that kind of change_but look at the sharp left turn Michelle Hinchet just made by throwing in with the Hudson Valley Power Authority plan. Madden is promising, in her own words "results, not rhetoric." We take that to mean her knowledge and connections in Albany will help her recapture more of the money the community pays in taxes than someone whose eyes are on a bigger prize. As far as specifics, she says she will, if elected, work to get more money and incentives for first responders and causes like housing, healthcare, and education."

The 103rd district covers the city of Kingston and the towns of Esopus, Gardiner, Hurley, Kingston, Marbletown, New Paltz, Olive, Rosendale, Saugerties, Ulster, and Woodstock in Ulster County, as well as the towns of Red Hook and Rhinebeck in Dutchess County.

Early voting in primary elections beings Saturday, June 15 and runs through Sunday, June 23, in advance of voting on Tuesday, June 25. Early voting locations in Ulster County can be found here. Early voting locations in Dutchess County can be found here.

') 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['20991857'].setupInlineComponents = function () { return true; }; if (typeof callback === 'function') { callback(); } }, 200); } Foundation.Content['20991857'].previewInsertionPoints = function () { var myParagraphTool = Foundation.Content['20991857'].paragraphTool myParagraphTool.paragraphEndNodes.each((index, item) => { const insertionPointPlaceholder = jQuery(`

Insertion point ${index+1}

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

Tags

  • Politics,
  • Gabi Madden,
  • Sarahana Shrestha,
  • Kingston Wire,
  • Hudson Valley Pilot

103rd Assembly District Democratic Debate: Sarahana Shrestha and Gabi Madden on June 17 in Kingston (2)103rd Assembly District Democratic Debate: Sarahana Shrestha and Gabi Madden on June 17 in Kingston (3)

Comments(0)

'); } else if (jQuery(this).attr("id") == "sortSelect"){ jQuery("#Comments [uk-spinner]").show(); } var url = "/river-newsroom/103rd-assembly-district-democratic-debate-sarahana-shrestha-and-gabi-madden-on-june-17-in-kingston-20991857"; 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 = "/river-newsroom/103rd-assembly-district-democratic-debate-sarahana-shrestha-and-gabi-madden-on-june-17-in-kingston-20991857"; 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); });

      103rd Assembly District Democratic Debate: Sarahana Shrestha and Gabi Madden on June 17 in Kingston (2024)
      Top Articles
      Latest Posts
      Article information

      Author: Domingo Moore

      Last Updated:

      Views: 5595

      Rating: 4.2 / 5 (73 voted)

      Reviews: 88% of readers found this page helpful

      Author information

      Name: Domingo Moore

      Birthday: 1997-05-20

      Address: 6485 Kohler Route, Antonioton, VT 77375-0299

      Phone: +3213869077934

      Job: Sales Analyst

      Hobby: Kayaking, Roller skating, Cabaret, Rugby, Homebrewing, Creative writing, amateur radio

      Introduction: My name is Domingo Moore, I am a attractive, gorgeous, funny, jolly, spotless, nice, fantastic person who loves writing and wants to share my knowledge and understanding with you.