Jennifer Gunderman, director of Bangor Public Health and Community Services, on July 18. (Daryn Slover/Staff Photographer)
Bangor Public Health launched an intensive case management program this month to serve those impacted by the city’s HIV outbreak, which has led to 29 identified cases.
The program is funded by about $550,000 of Bangor’s opioid settlement funds. It will provide case management services like mental health care and rides to appointments for residents impacted by the outbreak, which has been ongoing since October 2023 and saw cases rise through this summer, said Jennifer Gunderman, director of Bangor Public Health and Community Services.
“We’re still dealing with an outbreak,” Gunderman said. “Yet I think what we’re trying to do is build longer-term systems so that we don’t all get burned out.”
Over the last two years, Bangor has become the site of Maine’s largest outbreak, with most cases identified among people who have used injection drugs or experienced homelessness in the 12 months before their diagnosis, according to data from the Maine Center for Disease Control and Prevention. Before late 2023, Penobscot County had averaged just two new HIV infections annually.
Advertisement
The intensive case management program will provide wraparound services like mental health care, housing assistance and substance use disorder treatment to people impacted by the outbreak. Gunderman said it will employ two case managers and a vehicle to transport people to and from appointments.
This is the first time the city’s public health department is running its own case management services, Gunderman said.
Gunderman said Bangor’s population needs a combination of programs and case management services, including ones that are close to home, so residents don’t fall through the cracks.
“We have been engaging with this population for a very long time, even before this outbreak happened,” Gunderman said. “So when the intensive case management (program) happened, it was just like saying to a person that we’ve known for a while: ‘Hey, we now have this other service that we can offer you.’”
The Regional Medical Center at Lubec previously handled case management services for Bangor, but the hospital terminated its Northern Maine HIV Program this summer, ending case management for about140 people in five northern counties, according to Gunderman and MaineGeneral Health officials.
Advertisement
Bangor residents who had been on HIV case management for decades lost services in the middle of an outbreak, Gunderman said.
On Oct. 7, MaineGeneral Health’s Horizon program announced it would expand its HIV and AIDS support services to more counties, including Penobscot, to fill the gap.
The Lubec hospital and Horizon program are both longtime recipients of funding through the federal Ryan White Part C Early Intervention Services Program, which allocates HIV prevention and care dollars to states and communities.
After Lubec terminated its program, federal funding was awarded to MaineGeneral’s program to take on the additional counties, said Jennifer Riggs, MaineGeneral’s CEO of community care.
Riggs said the Horizon program integrates outpatient medical services with support services like mental health care to serve people who are low-income, uninsured or underserved.
Advertisement
“Ensuring that these services and the funding for them remain available to individuals is essential to limit the negative effects (of HIV and AIDS) in Maine’s local community members,”Riggs said.
Horizon will expand its coverage area to 14 counties, up from nine, and has already started transitioning some case management services over while building relationships with existing health organizations in those places, Riggs said.
Riggs said the program will work with Bangor’s health leaders on “prevention and testing, treatment coordination and other support services.”
Bangor Public Health has worked with a slew of community groups and organizations on expanding preventative HIV services, including distributing condoms and clean needles, making self tests available and helping people get on PrEP, or pre-exposure prophylaxis, a preventative medication taken by people at high risk for HIV infection.
Gunderman said the outbreak is likely larger than the 29 cases that have been identified and reported. She said it was made more intense because of conditions like people experiencing homelessness, living in outdoor congregate settings and struggling with substance use issues and mental health.
Advertisement
She said the outbreak should be a “wake up call” for the rest of Maine.
“Bangor is not the only community that struggles with that,” Gunderman said. “So I think that statewide, there should be an increased awareness and increased testing.”
Maine Mariners clinch home ice for first round of playoffs
Advertisement
NA
Advertisement
Maine Mariners clinch home ice for first round of playoffs
Updated: 10:38 PM EDT Apr 11, 2026
Editorial Standards ⓘ
Advertisement
The Maine Mariners will have home ice in the first round of the ECHL Playoffs. Games 1 and 2 in Portland will be on April 24th and 25th at 6:00pm.
The Maine Mariners will have home ice in the first round of the ECHL Playoffs. Games 1 and 2 in Portland will be on April 24th and 25th at 6:00pm.
Advertisement
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’);
});
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) {}
Advertisement
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’);
});
}
}
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.wmtw.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.wmtw.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);
}
}
}
}
Advertisement
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’);
}
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’);
}
Advertisement
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);
}
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);
Advertisement
for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex
`;
}
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’);
});
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 };
Advertisement
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’);
});
}
}
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’);
Advertisement
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.wmtw.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.wmtw.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’);
}
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);
}
Advertisement
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);
}
function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;
Advertisement
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
HELPED MORE THAN 300,000 VETERANS VISIT THE MEMORIALS BUILT IN THEIR HONOR. YOU MAY KNOW HER FROM HER POPULAR GOAT YOGA CLASSES… OR THE INSPIRING ‘YOGA FOR GOOD’ SERIES. ASHLEY FLOWERS’ WORK IS ALL ABOUT BRINGING PEOPLE TOGETHER. JAMIE AZULAY INTRODUCES US TO THIS WEEK’S COMMUNITY CHAMPION. THIS MAY LOOK LIKE A CLOTHING STORE – IT IS… BUT IT’S ALSO A MAKESHIFT YOGA STUDIO. TOAD AND CO IN PORTLAND IS ONE OF SEVERAL SPOTS YOU CAN FIND ASHLEY FLOWERS LEADING LOCAL YOGIS IN THEIR PRACTICE. “I THINK HEALTHY COMMUNITIES ARE WELL CONNECTED COMMUNITIES.” AND IT’S HERE ON DIAMOND STREET WHERE ASHLEY LEADS ‘YOGA FOR GOOD’ – DONATION-BASED CLASSES THAT SUPPORT LOCAL NON-PROFITS. “EXPERIENCING THAT SENSE OF JOY AND HAPPINESS AND PEACEFULNESS THAT YOGA BRINGS, AND KNOWING THAT YOU’RE ALL COMING TOGETHER TO DO SOMETHING GOOD FOR YOURSELVES AND THE WORLD, I THINK, IS REALLY POWERFUL.” IN 2 YEARS — 2-THOUSAND DOLLARS HAS BEEN RAISED FOR 9 NON-PROFITS… AND SHE’S ADDING MORE TO THE LINE-UP. THIS WEEK… IT WAS ALL ABOUT THE ADAPTIVE OUTDOOR EDUCATION CENTER AND THEIR MISSION TO PROVIDE RECREATION PROGRAMMING FOR PEOPLE WITH DIFFERENT ABILITIES. “IF YOU CAN BREATHE, YOU CAN DO YOGA. YOGA IS ACCESSIBLE TO EVERYONE.” “SHE ALWAYS HAS SUCH GREAT MESSAGES AS A PART OF BEING IN THE YOGA CLASS. IT’S NOT JUST COMING TO YOGA AND STRETCHING AND BREATHING, BUT ALSO WHAT CAN YOU GIVE BACK TO THE COMMUNITY AND HOW CAN WE WORK TOGETHER TO SUPPORT EACH OTHER?” COMMUNITY… AND MAKING THE WORLD A BETTER PLACE… IS WHAT ASHLEY SAYS YOGA IS ALL ABOUT. “IF YOU COULD HELP PEOPLE TO CULTIVATE A SENSE OF RESPECT FOR THEMSELVES, THEN MAYBE YOU COULD HAVE THAT SENSE OF RESPECT TO BUBBLE OUT INTO THE WORLD, AND HEAL THE WORLD
Advertisement
Yoga for Good: Maine woman raising money through movement
Updated: 11:49 AM EDT Apr 11, 2026
Editorial Standards ⓘ
Advertisement
Ashley Flowers started “Yoga for Good,” a donation-based class series in support of local nonprofits, in 2024. Since then, she’s raised $2,000 for nine organizations.Flowers said, “Experiencing that sense of joy and happiness and peacefulness that yoga brings, and knowing that you’re all coming together to do something good for yourselves and the world, I think, is really powerful.”Toad & Co hosts “Yoga for Good” in the back of their Portland clothing store. After class, they collect payment, which is a suggested $15 donation. However, attendees are encouraged to pay what they can. “I don’t ever want to turn someone away from yoga because money is an issue,” Flowers said. All proceeds go directly to the cause. The most recent class on April 10 was held in support of the Adaptive Outdoor Education Center. The AOEC is a nonprofit aimed at providing recreation programming for people with different abilities. Inclusivity is a priority in Flowers’ practice. “If you can breathe, you can do yoga,” she said. “Yoga is accessible to everyone.” The AOEC has been the beneficiary of five Yoga for Good classes. When asked about working with Flowers, the nonprofit’s program and development coordinator, Alessa Foley, said, “She always has such great messages as a part of being in the yoga class. It’s not just coming to yoga and stretching and breathing, but also what can you give back to the community, and how can we work together to support each other?”That’s what Flowers thinks yoga is all about. She said, “If you could help people to cultivate a sense of respect for themselves, then maybe you could have that sense of respect to bubble out into the world and heal the world.” When Flowers is not teaching at Toad & Co, you may find her leading goat yoga at Smiling Hill Farm, online classes, or workshops at other local farms. She feels operating without a brick-and-mortar studio is a good way to support her community by drawing people into local businesses. “I think healthy communities are well-connected communities,” she said. Flowers has already lined up the next five Yoga for Good classes, which will run through September. RSVPs can be made on her website. Fri. May 8 at 8 a.m. — Adaptive Outdoor Education CenterSat. June 13 at 9 a.m. — Dempsey CenterSat. July 11 at 11 a.m. — Impact HorseSat. August 8 at 9 a.m. — Dempsey Center Fri. Sept 11 at 8 a.m. — Sea Change Yoga
PORTLAND, Maine —
Ashley Flowers started “Yoga for Good,” a donation-based class series in support of local nonprofits, in 2024. Since then, she’s raised $2,000 for nine organizations.
Flowers said, “Experiencing that sense of joy and happiness and peacefulness that yoga brings, and knowing that you’re all coming together to do something good for yourselves and the world, I think, is really powerful.”
Advertisement
Toad & Co hosts “Yoga for Good” in the back of their Portland clothing store. After class, they collect payment, which is a suggested $15 donation. However, attendees are encouraged to pay what they can. “I don’t ever want to turn someone away from yoga because money is an issue,” Flowers said.
All proceeds go directly to the cause. The most recent class on April 10 was held in support of the Adaptive Outdoor Education Center. The AOEC is a nonprofit aimed at providing recreation programming for people with different abilities.
Inclusivity is a priority in Flowers’ practice. “If you can breathe, you can do yoga,” she said. “Yoga is accessible to everyone.”
Advertisement
The AOEC has been the beneficiary of five Yoga for Good classes. When asked about working with Flowers, the nonprofit’s program and development coordinator, Alessa Foley, said, “She always has such great messages as a part of being in the yoga class. It’s not just coming to yoga and stretching and breathing, but also what can you give back to the community, and how can we work together to support each other?”
That’s what Flowers thinks yoga is all about. She said, “If you could help people to cultivate a sense of respect for themselves, then maybe you could have that sense of respect to bubble out into the world and heal the world.”
When Flowers is not teaching at Toad & Co, you may find her leading goat yoga at Smiling Hill Farm, online classes, or workshops at other local farms. She feels operating without a brick-and-mortar studio is a good way to support her community by drawing people into local businesses.
“I think healthy communities are well-connected communities,” she said.
Flowers has already lined up the next five Yoga for Good classes, which will run through September. RSVPs can be made on her website.
Advertisement
Fri. May 8 at 8 a.m. — Adaptive Outdoor Education Center
Veterans of USS Samuel B Roberts 1988 mine strike reunite in Maine
Advertisement
STUFF DONE. GO DOWN THERE AND KICK BUTT.” THE MAINE DEMOCRATIC PRIMARY IS SCHEDULED FOR JUNE NINTH. VETERANS OF THE 1988 PERSIAN GULF MINE STRIKE ARE NOW REUNITING HERE IN MAINE. THE BATH IRON WORKS BUILT SHIP SUFFERED MAJOR DAMAGE AFTER HITTING AN IRANIAN MINE ON APRIL 14 1988. TONIGHT CATE MCCUSKER SHARES THE HEROIC ACTIONS OF THE CREW AND THE BROTHERHOOD THAT REMAINS TODAY. TUESDAY MARKS 38 YEARS SINCE A SHIP BUILT BY BATH IRON WORKS DEFIED ALL ODDS – AND SURVIVED A DANGEROUS STRIKE IN THE PERSUAN GULF…THANKS TO THE BRAVE EFFORTS OF ITS CREW. “ON OUR WAY BACK THAT WAY FROM THE MINEFIELD, AND WE HIT ONE OF THE MINES.” WHILE ON A MISSION IN THE PERSIAN GULF – DURING THE IRAN-IRAQ WAR – THE USS SAMUEL B ROBERTS STRUCK AN IRANIAN MINE “I WAS FREAKING OUT, YOU KNOW, I’M 19. NEVER GOING TO GET MARRIED, NEVER GOING TO SEE MY FAMILY AGAIN.” THE DAMAGE WAS DRASTIC – LEAVING A MASSIVE HOLE IN THE HULL OF THE SHIP – BUT THE CREW JUMPED INTO ACTION… “OUR TRAINING KICKED IN AND EVERYBODY DID WHAT THEY HAD TO DO, WHATEVER THEIR JOB WAS. FOR ME PERSONALLY, I ONLY KIND OF HESITATED AT ONE TIME, WONDERING WHAT MY WIFE WAS THINKING AT THE TIME, AND I PUSHED THAT ASIDE AND THEN WENT TO WORK. MIRACULOUSLY – EVERYONE ON BOARD SURVIVED – AND ONLY TEN PEOPLE WERE INJURED… WE FOUGHT FIRES AND FLOODING FOR ABOUT FIVE HOURS OR BETTER. THE MINE BLAST HIT US ON THE PORT SIDE, BROKE THE KEEL OF THE SHIP AND CRACKED THE SUPERSTRUCTURE ALL THE WAY AROUND. YEARS LATER – THE GROUP FREQUENTLY REUNITES… FOREVER BONDED BY THE TRAUMA AND BROTHERHOOD OF THAT MOMENT. THIS TIME THEY’VE RETURNED TO BATH – WHERE THE USS SAMUEL ROBERTS WAS BUILT… ” EACH SHIP HAS A MOTTO. OURS WAS NO HIGHER HONOR.” THIS SHIP MEANS SO MUCH TO US. AND AS THE US IS CURRENTLY ENGAGED IN A WAR WITH IRAN – WHERE MEMBERS OF THE MILITARY ARE ALSO ENCOUNTERING DANGEROUS SITUATIONS IN THAT AREA OF THE WORLD… VETERANS OF THE 1988 PERSIAN GULF MINE STRIKE SAY…
Advertisement
Veterans of USS Samuel B Roberts 1988 mine strike reunite in Maine
Updated: 10:31 PM EDT Apr 10, 2026
Editorial Standards ⓘ
Advertisement
Veterans of the USS Samuel B Roberts are reuniting in Maine this weekend.Tuesday marks 38 years since the ship struck an Iranian mine in the Persian Gulf.“Our training kicked in, and everybody did what they had to do,” crewmember Brad Gutcher said. “We fought fires and flooding for about five hours. The mine blast hit us on the port side, broke the keel of the ship, and cracked the structure all the way around.”Everyone on board survived, and they now meet every few years for remembrance and camaraderie. This year, the reunion is held in Bath, as the USS Samuel B Roberts was built by Bath Iron Works.“Each ship has a motto. Ours was no higher honor,” crewmember Shane Deitert said. “This ship means so much to us.”
Veterans of the USS Samuel B Roberts are reuniting in Maine this weekend.
Tuesday marks 38 years since the ship struck an Iranian mine in the Persian Gulf.
Advertisement
“Our training kicked in, and everybody did what they had to do,” crewmember Brad Gutcher said. “We fought fires and flooding for about five hours. The mine blast hit us on the port side, broke the keel of the ship, and cracked the structure all the way around.”
Everyone on board survived, and they now meet every few years for remembrance and camaraderie. This year, the reunion is held in Bath, as the USS Samuel B Roberts was built by Bath Iron Works.
“Each ship has a motto. Ours was no higher honor,” crewmember Shane Deitert said. “This ship means so much to us.”
Advertisement
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’);
});
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) {}
Advertisement
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’);
});
}
}
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.wmtw.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.wmtw.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);
}
}
}
}
Advertisement
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’);
}
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’);
}
Advertisement
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);
}
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);
Advertisement
for (var i = 0; i 0 ? currentIndex – 1 : tabs.length – 1;
tabs[prevIndex].focus();
break;
case ‘ArrowRight’:
e.preventDefault();
var nextIndex = currentIndex
`;
}
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’);
});
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 };
Advertisement
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’);
});
}
}
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’);
Advertisement
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.wmtw.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.wmtw.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’);
}
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);
}
Advertisement
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);
}
function updateForecastTabs(weatherData) {
var visibleItems = isWeatherBoxV2 ? 6 : 5;
Advertisement
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