Connect with us

Vermont

Woodstock will vote on short-term rental ordinance

Published

on

Woodstock will vote on short-term rental ordinance


The town and village of Woodstock have scheduled special elections to see if there is support for a new short-term rental ordinance that went into effect this spring.

Both the village and the town approved the new rules, which limit how many short-term rentals are allowed in Woodstock.

But opponents gathered enough signatures to force the special elections, which are scheduled for Tuesday, July 30.

The town and village will vote separately on whether to overturn the new ordinance.

Advertisement

More from Vermont Public: Short-term rentals are on the rise in Vermont. So are debates over how to regulate them.

Woodstock has had a short-term rental ordinance since 2021, but the town and village revisited the ordinance this spring to unify and simplify the laws and make them more equitable and uniform, according to an information sheet on the town website.

The new regulations allow 55 owner-occupied short-term rentals, and 55 non-owner-occupied short-term rentals, which makes up about 5% of the town’s housing stock.

They also limit the number of rentals each homeowner can have at one per person.

“The cap is one of the most important pieces of the ordinance,” said select board member Laura Powell. “So the 5% for us is something we felt comfortable with that also helps us protect future speculative investment in our community.”

Advertisement

Powell says the new short-term rental ordinance is partially driven by the housing crisis that is affecting just about every community in Vermont.

And she says while limiting the number of homes that can be used for a short-term rental will not address all of the town’s housing needs, it is a way of slowing down what she says is a loss of housing stock to the growing short-term rental market, especially in tourist-driven economies like Woodstock.

“Short-term rentals absolutely have a place in our community, and that’s why we didn’t have an outright ban on them,” Powell said. “The point of the ordinance is to keep that place in balance with the needs of our community.”

“Short-term rentals absolutely have a place in our community, and that’s why we didn’t have an outright ban on them. The point of the ordinance is to keep that place in balance with the needs of our community.”

Laura Powell, Woodstock select board member

Advertisement

Former Woodstock Planning Commission member Sam Segal, who operates a short-term rental out of his home, supported the original ordinance.

But he says he is going to vote to overturn the new ordinance.

“I’m all for keeping track of and monitoring who’s doing vacation or short-term rentals, even perhaps restricting how many there are, I think that’s totally reasonable,” Segal said. “I just feel like the new ordinance imposes fees that are really high.”

“I’m all for keeping track of and monitoring who’s doing vacation or short-term rentals, even perhaps restricting how many there are, I think that’s totally reasonable. I just feel like the new ordinance imposes fees that are really high.”

Sam Segal, Woodstock resident

Advertisement

The new ordinance allows the select board, and the village trustees, to set the registration fees. In May an annual permit structure was set at $500 for owner-occupied rentals, and $1,000 for non-owner occupied units, with additional fees added depending on how many bedrooms are rented.

Segal says the new fee structure will force him to rent out his place more often, and if he can’t rent it enough to recoup the fees, it will put a strain on his household budget.

“I would not have built a short-term rental if I didn’t need the money to stay in town. I need the additional money to stay in town,” said Segal, who is a single parent. “For me to stay in the house, it’s not easy to do it on one income. Staying in a house is a priority for me so I can stay in the school system, and I certainly count on the short-term rental income to offset the high taxes we pay in Woodstock.”

Have questions, comments or tips? Send us a message.

Advertisement





Source link

Vermont

Hour-by-hour: See when to expect steady snow Tuesday in Vermont, New York

Published

on

Hour-by-hour: See when to expect steady snow Tuesday in Vermont, New York


Roads will turn slippery mid-morning through mid-afternoon

Advertisement

Hour-by-hour: See when to expect steady snow Tuesday in Vermont, New York

Roads will turn slippery mid-morning through mid-afternoon

Advertisement

NBC5 meteorologists expect a burst of steady snow to arrive Tuesday morning in Vermont and northern New York, lasting through the early-mid afternoon. Deteriorating road conditions will lead to slow travel for several hours, with some improvement expected by the evening commute.Watch the video above to see the timeline for your area.

NBC5 meteorologists expect a burst of steady snow to arrive Tuesday morning in Vermont and northern New York, lasting through the early-mid afternoon.

Advertisement

Deteriorating road conditions will lead to slow travel for several hours, with some improvement expected by the evening commute.

Watch the video above to see the timeline for your area.

Advertisement

`;
}

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

Advertisement

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

Advertisement

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

var location = { zip: window.DEFAULT_ZIPCODE };

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

Advertisement

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.mynbc5.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.mynbc5.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

Advertisement

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

updateWeatherBackground(weatherData.current.icon_name);
}
}

Advertisement

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

`;
}

Advertisement

function refreshWeatherIframe(containerId) {
var iframeId = ‘weather-iframe-‘ + containerId;
var iframe = document.getElementById(iframeId);
if (iframe && iframe.src) {
var originalSrc = iframe.src;
iframe.src = originalSrc + (originalSrc.indexOf(‘?’) > -1 ? ‘&’ : ‘?’) + ‘t=” + Date.now();
}
}

function initializeWeatherBox(container) {
var containerId = container.getAttribute(“data-container-id’);
var isWeatherBoxV2 = containerId === ‘home-weather-v2’;

function switchWeatherTab(tabName, clickedElement) {
container.querySelectorAll(‘[data-tab-id]’).forEach(function(tab) {
tab.classList.remove(‘open’);
tab.setAttribute(‘aria-selected’, ‘false’);
});

clickedElement.classList.add(‘open’);
clickedElement.setAttribute(‘aria-selected’, ‘true’);

container.querySelectorAll(‘[data-content-id]’).forEach(function(content) {
content.style.display = ‘none’;
content.setAttribute(‘hidden’, ‘true’);
});

Advertisement

var targetContent = container.querySelector(‘[data-content-id=”‘ + tabName + ‘”]’);
if (targetContent) {
targetContent.style.display = ‘block’;
targetContent.removeAttribute(‘hidden’);
}
}

function loadWeatherData() {
// If weather data is already being loaded, wait for it
if (window.weatherDataPromise) {
window.weatherDataPromise.then(function(data) {
if (data && data.data) {
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
}
});
return;
}

var location = { zip: window.DEFAULT_ZIPCODE };

try {
var storedLocations = localStorage.getItem(‘hrst.zip.history’);
if (storedLocations) {
var locations = JSON.parse(storedLocations);
if (locations && locations.length > 0) {
location = locations[0];
}
}
} catch (e) {}

var apiUrl = (window.DEWY_HOSTNAME || ”) + ‘/api/v1/weather/full/’ + location.zip;

Advertisement

if (window.fetch) {
window.weatherDataPromise = fetch(apiUrl)
.then(function(response) { return response.json(); })
.then(function(data) {
if (data && data.data) {
var article = container.closest(‘.article–wrapper’);
var weatherContainer = container.closest(‘.weather-box-container’);
if (weatherContainer) {
weatherContainer.style.display = ‘flex’;
updateCurrentWeather(data.data);
updateForecastTabs(data.data);
updateWeatherAlertsBar(data.data);
}
return data;
}
})
.catch(function(error) {
console.error(‘Error loading weather:’, error);
// Reset to unknown background on error
updateWeatherBackground(‘unknown’);
});
}
}

function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;

var weatherWatchText = weatherWatchHeader.querySelector(‘.weather-watch-text’);
var weatherWatchLink = weatherWatchHeader.querySelector(‘.weather-watch-link’);

if (weatherData.alerts_count > 0) {
weatherWatchHeader.className=”weather-watch-header has-alerts”;
if (weatherWatchText) {
weatherWatchText.textContent = `Weather Alerts (${weatherData.alerts_count})`;
}
if (weatherWatchLink) {
if (!weatherWatchLink.getAttribute(‘data-initial-href’)) {
weatherWatchLink.setAttribute(‘data-initial-href’, weatherWatchLink.getAttribute(‘href’));
weatherWatchLink.setAttribute(‘data-initial-onclick’, weatherWatchLink.getAttribute(‘onclick’) || ”);
}
weatherWatchLink.setAttribute(‘href’, “https://www.mynbc5.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.mynbc5.com/alerts”);”);
}
} else {
weatherWatchHeader.className=”weather-watch-header”;
if (weatherWatchText) {
weatherWatchText.textContent = containerId === ‘home-weather-v2’ ? ‘Watch Latest Forecast’ : ‘Latest Forecast’;
}
if (weatherWatchLink) {
var initialHref = weatherWatchLink.getAttribute(‘data-initial-href’);
var initialOnclick = weatherWatchLink.getAttribute(‘data-initial-onclick’);
if (initialHref) {
weatherWatchLink.setAttribute(‘href’, initialHref);
}
if (initialOnclick) {
weatherWatchLink.setAttribute(‘onclick’, initialOnclick);
}
}
}
}

function updateCurrentWeather(weatherData) {
if (weatherData.current) {
var tempValue = weatherData.current.temp_f || ”;
var skyValue = weatherData.current.sky || ”;
var feelsLikeValue = weatherData.current.feels_like_f || weatherData.current.temp_f || ”;

Advertisement

var tempEl = container.querySelector(‘.weather-grid–current-temp-value’);
if (tempEl) {
tempEl.textContent = tempValue;
tempEl.setAttribute(‘aria-label’, tempValue + ‘ degrees Fahrenheit’);
}

var iconEl = container.querySelector(‘.weather-grid–current-icon’);
if (iconEl && weatherData.current.icon_name) {
iconEl.className=”weather-grid–current-icon weather-current-icon icon icon-weather-” + weatherData.current.icon_name;
}

var skyEl = container.querySelector(‘.weather-grid–sky’);
if (skyEl) {
skyEl.textContent = skyValue;
skyEl.setAttribute(‘aria-label’, ‘Current condition: ‘ + skyValue);
}

var feelsEl = container.querySelector(‘.weather-grid–feels’);
if (feelsEl) {
feelsEl.textContent = feelsLikeValue + ‘°F’;
feelsEl.setAttribute(‘aria-label’, feelsLikeValue + ‘ degrees Fahrenheit’);
}

var weatherContainer = container.querySelector(‘.weather-temp-container’);
if (weatherContainer) {
var summary = ‘Current temperature ‘ + tempValue + ‘ degrees Fahrenheit, ‘ +
skyValue + ‘, feels like ‘ + feelsLikeValue + ‘ degrees’;
weatherContainer.setAttribute(‘aria-label’, summary);
}

Advertisement

updateWeatherBackground(weatherData.current.icon_name);
}
}

function updateWeatherBackground(iconName) {
try {
var bgPath = weatherImages.backgrounds[iconName] || weatherImages.backgrounds.unknown;
container.style.backgroundImage=”url(” + bgPath + ‘)’;
} catch (e) {
console.log(‘Error updating weather background:’, e);
}
}

function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;

if (weatherData.hourly) {
var hourlyContainer = container.querySelector(‘.weather-hourly-forecast’);
if (hourlyContainer) {
var html=””;
var maxHours = Math.min(visibleItems, weatherData.hourly.length);

for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex

Advertisement

Loading more articles…



Source link

Continue Reading

Vermont

Magnificent 7: Must-See, Must-Do Events in and Around Vermont, April 8-15 | Seven Days

Published

on

Magnificent 7: Must-See, Must-Do Events in and Around Vermont, April 8-15 | Seven Days


Perfectly Seasoned

Sunday 12

You know TV personality Alton Brown as the quirky host of hit reality cooking shows such as “Iron Chef America” and “Cutthroat Kitchen.” Now the culinary commentator and author takes the stage solo at Rutland’s Paramount Theatre for a no-frills show of his talents, trading the glitz and glamour of Hollywood for a more intimate showcase of food science, humor and heart.

Girl Almighty

Friday 10
Diana Whitney Credit: Courtesy of Beowulf Sheehan

Queer author and educator Diana Whitney launches her patriarchy-smashing poetry collection, Girl Trouble, in conversation with fellow writer Eve Alexandra at Next Stage Arts in Putney. Listeners hear unflinching takes on growing up female, adolescent trauma, rape culture and modern movements of resilience before roaring onto the dance floor to channel the grit and grace of feminism.

Fun Facts

Thursday 9
Local News Day Credit: © Undrey | Dreamstime

It’s no surprise that we stan Local News Day (see page 13). Journalism leaders and advocates fill Montpelier’s Kellogg-Hubbard Library for a fact-forward fête celebrating the value of civic transparency and trusted community information. A documentary screening and a panel discussion explore media ecosystems and spur dialogue about how to sustain an essential public resource.

Role Models

Saturday 11
CAN-AM Con Credit: © Nanantachoke | Dreamstime

Scale model makers and Lego lovers connect at CAN-AM Con at Williston’s National Guard Armory, where seminars and vendors complement a display contest honoring late Japanese producer Shunsaku Tamiya. Junior builders and veterans show off their finest constructions from any Tamiya kit for consideration in categories such as Best of Class and People’s Choice.

Advertisement
Saturday 11

Disco Inferno

Gala ’54: After Hours Credit: © Anton Vierietin | Dreamstime

The Current — Stowe’s center for contemporary art — invites philanthropic partygoers to the Lodge at Spruce Peak for Gala ’54: After Hours. The annual fundraiser boasts silent and live auctions, a cocktail reception, and chef-crafted food stations, all inspired by New York City’s glamorous Studio 54 era. Then revelers hit the dance floor to boogie oogie oogie in their flashiest disco dress.

See gallery listing at sevendaysvt.com/art

Piste de Résistance

Saturday 11 & Sunday 12
Gather Outdoors Credit: Courtesy

Music and winter culture festival Gather Outdoors takes Stratton Mountain Resort by storm with a superlative lineup of jam bands and electronic artists, including Philadelphia legends the Disco Biscuits and rising star Karina Rykman. The high-energy mountainside affair fuses plein air recreation with an immersive club atmosphere for an unforgettable end to the ski season.

Reading the Room

Tuesday 14
Bianca Stone Credit: Courtesy

Vermont poet laureate Bianca Stone continues her “State of Poetry” tour with a stop at Phoenix Books in Burlington. Stone leads an analytical deep dive into the craft of late Nobel Prize-winning writer — and the nation’s 12th poet laureate — Louise Glück, underscoring the vital cultural impact of her contributions to American literature.



Source link

Advertisement
Continue Reading

Vermont

Aly Richards announces run for Vt. governor

Published

on

Aly Richards announces run for Vt. governor


NEWBURY, Vt. (WCAX) – A new face joins the race for Vermont governor.

Aly Richards, the former CEO of Lets Grow Kids, will hold her campaign announcement on Monday morning.

Richards has spent the last decade advocating for affordable child care in Vermont, including pushing for the state’s landmark child care law.

Richards’ campaign announcement will take place in her hometown of Newbury at 11 a.m.

Advertisement



Source link

Continue Reading

Trending