Connect with us

Vermont

You don’t have to drive to Vermont for a maple creemee. Just head to Cambridge. – The Boston Globe

Published

on

You don’t have to drive to Vermont for a maple creemee. Just head to Cambridge. – The Boston Globe


The response surprised Pattavina, who dreamed up the idea as a way to add some simple, accessible fun to the shop’s mostly New England-produced offerings.

“Whenever I picture a corner store, it has to have treats,” they said.

Advertisement

Using ice cream as a lure for eating your vegetables is a classic trick, acknowledges Pattavina, a former restaurateur who began stocking New England-grown produce after noticing it missing from their local grocery store.

But true to the mission, that meant making sure the ice cream was regionally sourced, too. Unlike vanilla and chocolate, maple comes from New England. Momma’s maple creemees are made from Vermont-raised milk, cream, eggs, and maple. (The shop also serves vanilla and chocolate on a rotating basis — check Instagram for what’s on special when you go.)

“I never ate a maple soft serve, ever, until I became an adult,” said Pattavina. “But still, I didn’t really even understand what a craze it was until we opened.”

On an average day, the store turns out about 100 cones, although recently they hit a record of nearly 200 in a day, and selling out early September weekends. Pattavina expected creemees would be seasonal, but based on the response, they now plan to serve it year-round.

“As long as people keep coming and eating them, then we’ll keep serving them,” they said.

Advertisement

On Sundays, Momma’s offers a rotating cast of sundaes ($9) — a recent special topped maple soft serve with locally-produced marshmallow fluff and Vermont-based goat caramel from Fat Toad Farm, and maple sprinkles.

Some customers who arrive early think it’s a great breakfast food — after all, the machine starts churning out cones as soon as the shop opens, said Pattavina.

Accessibility is a big part of the idea, said Pattavina, including the price point.

Maple creemees from Momma’s.Danielle Pattavina/Momma’s

“You need to have $100 to go into a restaurant to do the tip and do the meal, and if you want to drink,” they said. “But you could go into Momma’s, and you can get an apple, you can get a bottle of milk. You can get an ice cream.”

Advertisement

If you trade rolling fields and goats for Mass. Ave. traffic, does a maple creemee taste as sweet? From a bank of laundromat-style seats outside the shop, the creemee’s nostalgic flavor seemed as at home in the autumn air as on the farm.

The store features sophisticated fare: natural wines, lavender tea cookies, artisanal beans, and local cheese line its counters. But thanks to the creemee, some of its biggest boosters are kids. Pattavina enjoys when groups of them line up, chaotically debating twist combinations and toppings — only to hear the crowd fall silent when it’s time to eat.

“I think my favorite thing is kids after school with a Ziploc baggie of change that really wait patiently in line, and then, order one, and then take it outside with their gigantic backpack and eat it,” said Pattavina. “Oh my God, it’s just so happy.”

Momma’s Grocery + Wine, 2304 Massachusetts Ave., Cambridge, www.mommasgrocery.com





Source link

Advertisement

Vermont

Hour-by-hour: When to expect showers & thunderstorms Tuesday in Vermont, New York

Published

on

Hour-by-hour: When to expect showers & thunderstorms Tuesday in Vermont, New York


The most widespread storm coverage will occur between 2-8 PM Tuesday, April 14

Advertisement

Timeline: When to expect showers & thunderstorms Tuesday in Vermont, New York

The most widespread storm coverage will occur between 2-8 PM Tuesday, April 14

Advertisement

NBC5 meteorologists expect strong to locally severe thunderstorms Tuesday afternoon into the evening for Vermont and northern New York.Watch the video to see when showers, downpours, and storms are most likely near your town.

NBC5 meteorologists expect strong to locally severe thunderstorms Tuesday afternoon into the evening for Vermont and northern New York.

Advertisement

Watch the video to see when showers, downpours, and storms are most likely near your town.

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

Noah Kahan, Vermont consumers and venues voice support for ticket resale limits

Published

on


A movement to limit the resale price of concert and event tickets is growing in Vermont.Last Thursday, renowned Vermont singer Noah Kahan submitted a video to a state Senate committee voicing his support of H.512. The bill passed the House last month. “This bill is a critical step in eliminating predatory resale behaviors and offering promoters a great solution for exchanging and reselling tickets in a safe marketplace,” the Strafford native said to lawmakers.The bill would limit the resale of tickets to 110% of the value they were originally purchased at. Other Vermonter’s testified that day and said they found themselves purchasing tickets online, not from the event’s venue or artist. They said the price was way above the original rate. “Now I was not just mad at myself, but I was mad at this person who did it to me,” Marina Cole of Wheelock told lawmakers. In 2024, the National Association of Ticket Brokers told NBC 5 that they were against price caps, which this bill is currently pursuing.”We have really good businesspeople who are doing the right thing,” Executive Director Gary Adler said at the time. The bill, as passed by the House, would charge the Vermont Attorney General’s Office with enforcing the resale cap. The office would have the authority to conduct audits, issue penalties and revoke a reseller’s license. Resale licenses would be a new requirement under the current bill. “I suspect the enforcement won’t be easy,” executive director of the Champlain Valley Exposition Tim Shea said Monday. “But it’s something we’re looking to follow and advocate for the right ticket buyer.”Shea said the Expo has been approached by consumers who have faced high resale prices and even some cases of ticket fraud through online reselling. He believes the legislation would help avoid those issues and keep revenues for Vermont venues and artists within the state. “When tickets are marked up to the level, they are that money’s going out of Vermont. It’s not staying here. It’s not going to the promoter. It’s not going to the concessioners on the ground,” Shea said. The bill is currently being reviewed by the Senate Committee on Economic Development, Housing, and General Affairs.

A movement to limit the resale price of concert and event tickets is growing in Vermont.

Last Thursday, renowned Vermont singer Noah Kahan submitted a video to a state Senate committee voicing his support of H.512. The bill passed the House last month.

Advertisement

“This bill is a critical step in eliminating predatory resale behaviors and offering promoters a great solution for exchanging and reselling tickets in a safe marketplace,” the Strafford native said to lawmakers.

The bill would limit the resale of tickets to 110% of the value they were originally purchased at. Other Vermonter’s testified that day and said they found themselves purchasing tickets online, not from the event’s venue or artist. They said the price was way above the original rate.

“Now I was not just mad at myself, but I was mad at this person who did it to me,” Marina Cole of Wheelock told lawmakers.

Advertisement

In 2024, the National Association of Ticket Brokers told NBC 5 that they were against price caps, which this bill is currently pursuing.

“We have really good businesspeople who are doing the right thing,” Executive Director Gary Adler said at the time.

The bill, as passed by the House, would charge the Vermont Attorney General’s Office with enforcing the resale cap.

The office would have the authority to conduct audits, issue penalties and revoke a reseller’s license. Resale licenses would be a new requirement under the current bill.

“I suspect the enforcement won’t be easy,” executive director of the Champlain Valley Exposition Tim Shea said Monday. “But it’s something we’re looking to follow and advocate for the right ticket buyer.”

Advertisement

Shea said the Expo has been approached by consumers who have faced high resale prices and even some cases of ticket fraud through online reselling. He believes the legislation would help avoid those issues and keep revenues for Vermont venues and artists within the state.

“When tickets are marked up to the level, they are that money’s going out of Vermont. It’s not staying here. It’s not going to the promoter. It’s not going to the concessioners on the ground,” Shea said.

The bill is currently being reviewed by the Senate Committee on Economic Development, Housing, and General Affairs.



Source link

Advertisement
Continue Reading

Vermont

Meet the 95-year-old Vermont herbarium volunteer who had a fern named for her

Published

on

Meet the 95-year-old Vermont herbarium volunteer who had a fern named for her


BURLINGTON, Vt. (InvestigateTV) — For 28 years, Hilda White has shown up at the University of Vermont’s Pringle Herbarium to do a job most people have never heard of: mounting plants.

Now 95 years old, White has carefully preserved more than 50,000 plant specimens — pressing and affixing them to archival paper so they can be studied and referenced for generations to come.

“If I mount the plants, the plants will be around for hundreds of years, barring any unforeseen accidents or anything,” White said.

Birthday gift unlike any other

For her 95th birthday, the herbarium gave her a gift unlike any other: a newly discovered fern, found in Colombia in 2023, was officially named for her.

Advertisement

The plant — a Christmas fern — was discovered by Wes Testo, now the director of the Pringle Herbarium collection, during a research trip to South America.

“I was walking through the forest there, and I saw this just spectacular fern,” Testo said. “I knew immediately it was something I hadn’t seen before.”

After further research confirmed it was a species new to science, Testo and his colleagues decided to name it for White: Polystichum hildae.

“Oh, I was absolutely blown away,” White said when she learned of the honor.

“You can’t imagine, I cried all afternoon.”

Advertisement

‘Library for plants’

White’s work at the herbarium is kind of a library for plants.

“I can’t draw, but this is my artistic outlet,” she said.

Testo said White’s contributions have been essential to the research conducted in the collection, which now houses 400,000 plant specimens in a single room.

“Hilda mounted a huge amount of the specimens you see here,” Testo said. “Her contributions are absolutely essential to the research we do here.”

The collection’s survival is not something White or Testo take for granted. In 2017, a fire broke out at Torrey Hall, where the collection was housed at the time. Testo was in South America doing research when he received word.

Advertisement

“All I could see from an email in Colombia — the roof on fire. I thought my whole Ph.D. was going up in flames along with the whole collection here,” Testo said.

White was on her way into work when the fire broke out. Staff and volunteers, including White, worked to restore and remount the damaged plants. The collection has since been relocated to the Jeffords Building.

No plans to stop

White says she has no plans to stop.

“Oh no! I’ll be here as long as I can,” she said.

And when asked what she planned to give Testo for his birthday in return for the honor of having a plant named after her, White kept it simple.

Advertisement

“He just got good wishes!”

Read the full story.



Source link

Advertisement
Continue Reading

Trending