Connect with us

Vermont

St. Johnsbury gymnastics captures first state title since 2005

Published

on

St. Johnsbury gymnastics captures first state title since 2005


For the first time in 21 years, the St. Johnsbury Academy gymnastics team is the best in the state. The Hilltoppers scored 145.875 to win their first title since 2005 during the the Vermont high school state championship meet held at the school’s fieldhouse on Saturday, Feb. 21.

The Hilltoppers ended their drought behind their lone senior, Lydia Ruggles, who won the all-around title for the third year in a row. This year, Ruggles posted a 37.850 with the highest scores on bars (9.5) and floor (9.9). She posted the second-highest score on vault (9.4) and placed sixth in beam (9.05).

Ruggles score matches her all-around title-winning score from 2024. Brattleboro’s Lauren Chute finished second in the all-around for the third consecutive year with a 37.375.

Advertisement

The Hilltoppers posted the highest scores on vault (36.275), bars (35.425) and floor (38.100) events and won comfortably over runners-up Essex (140.100).

St. Johnsbury showcased their skills with five members finishing in the top eight of the all-around competition. Hannah Wood finished third in the all-around (37.20) and took the vault title with a 9.575.

2026 state championship results

At St. Johnsbury Academy (Saturday, Feb. 21)

Team scores: 1. St. Johnsbury 145.875; 2. Essex 140.100; 3. Brattleboro 134.975; 4. Champlain Valley 134.050; 5. Harwood 126.675; 6. Burr and Burton 103.900; 7. Middlebury 101.025.

Advertisement

All-around: 1. Lydia Ruggles, SJ 37.85; 2. Lauren Chute, Bratt 37.375; 3. Hannah Wood, SJ 37.20; 4. Kinley Remick, SJ 35.90; 5. Anna Colby, MMU 34.90; 6. Kate Quintin, E 34.875; 7. Peyton Thompson, SJ 34.275; 8. Malia Ignjatovic, SJ 34.225.

Vault: 1. Hannah Wood, SJ 9.575; 2. Lydia Ruggles, SJ 9.40; 3. Lauren Chute, Bratt 9.30; 4. Kinley Remick, SJ 8.725; 5. Anna Colby, MMU 8.70; 6. Kate Quintin, E 8.625 T7. Alice Leonard, E; MacKenna Parisi, E 8.60.

Bars: 1. Lydia Ruggles, SJ 9.50; 2. Lauren Chute, Bratt 9.25; 3. Hannah Wood, SJ, 9.20; 4. Kinley Remick, SJ 8.95; 5. Kate Quintin, E 8.65; 6. Ashley Gokey, E 8.225; 7. Alice Leonard, E 8.15; Elizabeth Bennett, E 7.80.

Beam: 1. Lauren Chute, Bratt 9.525; 2. Riley Hammond, E 9.45; 3. Anna Colby, MMU 9.35; T4. Malia Ignjatovic, SJ; Chloe Crowder, CVU 9.10; 6. Lydia Ruggles, SJ 9.05; 7. Emma Bennett, E 9.025; 8. Hannah Wood, SJ 9.0.

Floor: 1. Lydia Ruggles, SJ 9.90; 2. Peyton Thompson, SJ 9.475; 3. Hannah Wood, SJ 9.425; 4. Anna Wulff, Har 9.350; T5. Lauren Chute, Bratt; Kinley Remick, SJ; Anna Colby, MMU; Leah Fortin, CVU 9.30.

Advertisement

Contact Judith Altneu at JAltneu@usatodayco.com. Follow her on X, formerly known as Twitter: @Judith_Altneu.





Source link

Vermont

Tourism Leaders To Gather In Killington For Vermont Tourism Summit

Published

on

Tourism Leaders To Gather In Killington For Vermont Tourism Summit


Tuesday, April 28-Wednesday, April 29 —KILLINGTON— The Killington Grand Resort Hotel & Conference Center will host the 41st Annual Vermont Tourism Summit, bringing together business owners, operators, and industry professionals from across the state for two days focused on collaboration, strategy, and growth within Vermont’s tourism economy.



Source link

Continue Reading

Vermont

Vermont residents remain concerned over potential environmental provisions

Published

on

Vermont residents remain concerned over potential environmental provisions


This week, a bill that would make changes to Vermont’s Act 181 is receiving testimony in the House Committee on Environment. Certain provisions in Act 181 could trigger a permitting process through Vermont’s land use protection law, Act 250. A rule related to road building and some lands identified as “critical natural resource areas” by the state’s land use review board are expected to take effect this year. Last month, legislation passed the Senate and is currently in the House to push those deadlines back by a few years. For Corinth resident Neil Ryan, that not enough. “The group of people that was largely left out of the process: Rural Vermonters are having this imposed upon them with no say,” he said. Ryan and his family have built their own farms for generations. He believes if the provisions take effect, it would be very difficult for future generations to accomplish what he has. “The difficulty of the Act 250 process, the costs associated with the Act 250 process, we wouldn’t have started those farms likely,” he said. However, Ryan said he does support the portion of Act 181 that allows towns to opt into being exempt from the permitting process altogether. This is meant to assist housing development. On Tuesday, regional planning commissions told lawmakers that many towns have opted in. Still, Vermont is not on track for its goal of 40,000 + homes by 2030. “We’re not saying rural housing growth should stop or slow,” Executive Director of the Northwest RPC Catherine Dimitruk said. “Were saying those additional units that we need, we should be doing all we can to encourage and incentivize.”The bill will remain in House environment for the foreseeable future.

This week, a bill that would make changes to Vermont’s Act 181 is receiving testimony in the House Committee on Environment.

Certain provisions in Act 181 could trigger a permitting process through Vermont’s land use protection law, Act 250.

Advertisement

A rule related to road building and some lands identified as “critical natural resource areas” by the state’s land use review board are expected to take effect this year.

Last month, legislation passed the Senate and is currently in the House to push those deadlines back by a few years. For Corinth resident Neil Ryan, that not enough.

“The group of people that was largely left out of the process: Rural Vermonters are having this imposed upon them with no say,” he said.

Advertisement

Ryan and his family have built their own farms for generations. He believes if the provisions take effect, it would be very difficult for future generations to accomplish what he has.

“The difficulty of the Act 250 process, the costs associated with the Act 250 process, we wouldn’t have started those farms likely,” he said.

However, Ryan said he does support the portion of Act 181 that allows towns to opt into being exempt from the permitting process altogether. This is meant to assist housing development.

On Tuesday, regional planning commissions told lawmakers that many towns have opted in. Still, Vermont is not on track for its goal of 40,000 + homes by 2030.

“We’re not saying rural housing growth should stop or slow,” Executive Director of the Northwest RPC Catherine Dimitruk said. “Were saying those additional units that we need, we should be doing all we can to encourage and incentivize.”

Advertisement

The bill will remain in House environment for the foreseeable future.



Source link

Continue Reading

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

Trending