Maine Space Corp. was created by lawmakers to take advantage of an emerging space economy with a goal of creating 500 jobs by 2030 and up to 5,500 jobs over 20 years. (Garrick Hoffman/The Maine Monitor)
The training facility of the Maine Space Corporation, the quasi-governmental agency tasked with building the infrastructure for the state’s nascent space industry, sits at the end of a humming hallway in Brunswick Landing’s Hangar 5.
On an exceptionally hot day in mid-July, in the absence of air conditioning, the windows were shuttered to keep the facility cool. Three machines used to test products for space conditions — each about the size of a household fridge — sat in the corners of the room, encircling a paper-strewn round table and a few office chairs in the center.
The Maine Space Corporation, which recently filed for 501(c)(3) nonprofit status, was created in 2022 by the Maine Legislature with the aim of positioning the state as “a national and international destination and authority in launching small launch vehicles and small satellites into polar orbit.”
Advertisement
But MSC is taking lessons from the struggles of the commercial space industry in Maine and, for now, is working toward the launch of small rockets from platforms far out to sea, hoping to avoid some of the pushback faced by commercial space companies whose operations have been rejected by communities worried about the impact on fishing and the environment.
“The new space economy is another industrial revolution,” said Terry Shehata, executive director of MSC. “The question is, with Maine’s assets, should we get on that train or just stand aside and let the train go by the station?”
The Maine Space Corporation, said Shehata, is in talks with The Spaceport Company, a Virginia-based startup that focuses on mobile floating spaceports, about acquiring access to its launch platform. The company recorded the first rocket launch from U.S. waters in 2023 in the Gulf of Mexico.
The commercial space industry has exploded worldwide in recent years, with the number of launches far eclipsing the early days of the space race. More than 2,200 objects — including satellites, probes, landers, crewed spacecrafts, and space station flight elements — were launched into space last year from the United States alone, compared to fewer than 100 just a decade earlier, according to Our World In Data.
The rockets being launched today look much different than the behemoths of the early days of the space race. Those that MSC will allow to launch from their facilities are small – averaging about 100 feet — said Shehata, containing satellites for telecommunications, weather monitoring or data collection.
Advertisement
The Maine Space Corporation is in talks with The Spaceport Company, which conducted a test launch in the Gulf of Mexico. (The Spaceport Company via The Maine Monitor)
Launching at sea may be one of the ways companies can avoid the “bottleneck” at spaceports around the country, according to Tom Marotta, founder and CEO of Spaceport. In the U.S., commercial launches are regulated by the Federal Aviation Administration and confined to a handful of sites around the country.
“As congestion grows at existing sites and regulatory constraints impede inland launch, operating spaceports at sea becomes a more attractive option to meet the demand,” wrote Marotta in a 2023 opinion piece in The Space Review.
The development comes at a time when the Trump administration looks to ease safety and environmental operations for rocket launches and restrict the authority of states over nearshore waters when it comes to operations in space.
Bringing the space industry to Maine
Advertisement
While not typically known as a hub for space innovation, Maine has geographical advantages for launching into certain orbits, said University of Maine physics professor David Batuski.
Earth has a variety of orbits — regular, repeating paths, determined by gravitational pull – in which objects rotate around our planet. In the U.S., the equatorial orbit has historically been the most popular choice for rocket launches, said Shehata, of MSC.
Spaceports located far south in Texas, California and Florida have the advantage of being proximal to the equator, which allows rockets to require less energy to launch from these locations into the equatorial orbit, said Batuski.
Maine provides a more efficient launch into polar orbits, which are paths going roughly over North and South Poles as the Earth spins beneath it, said several experts. With its far north location and a coastline curved enough eastward, Maine could allow rockets to reach polar orbits with less fuel than many other locations.
“From Maine, if you want something to be in a polar orbit, you can just launch directly south. Our coast here in Maine curves enough so that you can launch directly south and be over the water and not have a danger for communities,” said Batuski. “You don’t have to use additional fuel.”
Advertisement
Because Earth spins beneath the satellites in polar orbits, satellites in those orbits have the advantage of being able to cover the entire planet, rather than just the band around the equator, according to Shehata, one of the reasons this type of satellite is gaining momentum in the industry.
Maine Space Corp. was created by lawmakers to take advantage of this emerging space economy, according to its website, with a goal of creating 500 jobs by 2030 and up to 5,500 jobs over 20 years.
In June, Gov. Janet Mills signed a law enabling MSC to become a nonprofit, which will allow MSC to take advantage of federal research grants, according to Maine Senate President Mattie Daughtry (D-Cumberland) who introduced the bill.
According to Shehata, most of MSC’s funding to date has come from the Maine Technology Institute. It received a two-year $426,000 grant from MTI and $29,000 from the Maine Space Grant Consortium, which will go toward renovating the facility in Brunswick Landing and training businesses and individuals to use the facility.
The Space Corporation is working with bluShift Aerospace, also based in Brunswick, as well as Ukrainian start-up Promin Aerospace and the global technology company, Teledyne Technologies, said Shehata. The Space Corporation is also recruiting other New England states and partners in the hopes of building a regional space economy.
Advertisement
Besides launch services, Shehata emphasized that MSC is focused on building innovation hubs, where companies can conduct testing and research, as well as data analytics centers. The current training facility in Brunswick Landing is an example of the innovation hubs that MSC hopes to open in other parts of the state.
Renovations on the facility began in January. Slated to open this fall, the facility has specialized equipment that simulate various conditions for space launches, such as intense vibrations and heat, said Shehata.
The $6 million John F. Kennedy Aerospace Park that broke ground earlier this month in Presque Isle could be part of this research and development infrastructure in the future, said Shehata. Although the JFK Park project precedes the founding of MSC, Shehata said they are open to working with the park in the future.
The JFK Park is an effort focused primarily on Presque Isle, separate from the statewide plans of the MSC, said Scott Wardwell, director of the Presque Isle International Airport, who also sits on MSC’s board of directors. Primarily funded by the U.S. Economic Development Administration, the park project hopes to attract aerospace research to Aroostook County.
According to Shehata, the only publicly-known commercial rocket launch in Maine so far was bluShift Aerospace’s low-altitude test launch of the 20-feet-tall Stardust 1.0 in January 2021 from Loring Commerce Centre, the former Loring Air Force base in Aroostook County. Founded in 2014, the Brunswick-based space company specializes in small rocket launches with what it says is non-toxic biofuel.
Advertisement
Presque Isle-based Valt Enterprizes, which plans to be an anchor tenant of the JFK Park, has also conducted several rocket launches in Maine, said Shehata. Suborbital launches, which are lower-altitude rocket launches that do not reach the orbit, can be categorized as amateur rocketry under the Federal Aviation Administration and do not need to disclose information publicly.
The company, which focuses on developing “hypersonic delivery systems” according to its LinkedIn page, was awarded a $14.8 million contract with the Department of Defense in September 2024. Multiple attempts to reach Valt Enterprizes were unsuccessful.
With sea-based launches, MSC hopes to avoid community pushback
Maine’s commercial space industry has gotten off to a rocky start. After its test launch in Limestone in 2021, bluShift faced significant pushback in its search for launch sites Downeast.
In March, Steuben voted to prohibit commercial rocket launches and manufacturing facilities after bluShift eyed the town for offshore launches and facilities. Nearby Jonesport also passed a permanent ban on rocket launches and control facilities in July 2022, after bluShift proposed building a launch site on Water Island just off the coast.
Advertisement
Residents in both towns expressed similar concerns about the impact of rocket launches on the local fishing industry, noise, pollution from fuel and the general lack of regulations on the space industry. After the pushback, bluShift began looking elsewhere for launch sites, including in Florida, according to reporting by MaineBiz.
According to its website, MSC is also interested in launch sites Downeast, but “has no authority to dictate the location,” and will ultimately have to rely on the community “to accept the launch site designation using whatever local approval process [is] at their disposal, including the planning board and a community-wide vote.”
Launching rockets from platforms in the ocean would allow MSC and its partner companies to avoid many of these complications. For a sea-based launch, a liftboat would load the rocket and fuel in separate tanks and sail out to a launch point pre-approved by the FAA.
The Spaceport Company is also working on liftboats that use pylons to temporarily affix the liftboat to the sea bed and raise it out of the water to provide stabilization, according to Tom Marotta, founder and CEO of The Spaceport Company. The liftboats, depending on size, could operate in 80 to 200 feet of water, he said.
The Spaceport Company has already modified a former U.S. Navy vessel as a sea-based launch platform, and has plans to build other vessels. Marotta said that their liftboat platform could be ready in 18 months after a contract is signed.
Advertisement
Maine Space Corporation is discussing acquiring the exclusive rights for the use of the sea-based platform in the New England area, and hopes to use a subscription model for clients who would like to use the platform, according to Shehata. The subscription fees from clients could be used to pay for costs of the platform. When asked about contracts and any specific commitments of the Corporation with the company, Shehata said that the exact details of their conversations are protected by a nondisclosure agreement.
Shehata said they are looking into launches around 20 to 100 miles off the coast, which would put them in federal waters, and is still discussing long-term plans for launch sites that could include building their own launch platforms, to save on contract fees.
Trump administration looks to ease regulatory path for rocket launches
Despite community concerns around environmental issues, state agencies have little clear authority over the industry in Maine. The state has no dedicated regulatory body for space operations.
David Madore, deputy commissioner of the Maine Department of Environmental Protection, would not speculate what environmental regulations may apply prior to any permit applications of space operations. Jeff Nichols, communications director for the Department of Marine Resources, told The Maine Monitor the department does not have any regulatory authority over sea-based rocket launches.
Advertisement
The enabling legislation of MSC states that the launch services and sites shall prioritize Maine-based businesses and businesses that minimize the environmental effects of their space vehicles and launches.
The organization is still researching how to minimize environmental impacts, including the use of environmentally-friendly fuel, according to Shehata. The Corporation’s strategic plan calls for an assessment of potential environmental impacts of a launch site to be shared with the public “BEFORE any infrastructure development,” and notes that land-based sites require approval from the FAA as well as local communities.
“I think [Maine Space Corporation] has the strictest environmental guidelines of any spaceport complex governing document in the nation,” Sen. Daughtry said.
The FAA is responsible for licensing and regulating within the U.S., including commercial space operations, like rocket launch and reentry, as well as the operation of spaceports. The federal agency’s oversight includes conducting safety and environmental assessments in compliance with the National Environmental Policy Act, which considers factors like air quality, biological resources, hazardous materials, and noise.
The Trump administration, however, is looking to relax federal regulations over commercial rocket launches. On Aug. 13, President Trump signed an executive order that would, among other deregulatory measures, establish certain exclusions for rocket launches under the National Environmental Policy Act.
Advertisement
The order also restricts the regulatory powers of state officials in coastal zones in instances in which they interfere with spaceport development. Derek Brockbank, executive director of the Coastal States Organization, commenting on a draft of the order in July, told ProPublica it could force states to prioritize spaceport infrastructure and undermine their ability to decide how to use coastal land under the Coastal Zone Management Act.
Shehata said that MSC is monitoring the uncertainties, and may institute its own rules to mitigate risks. These rules, which have yet to be written, would apply to the clients of MSC but would not apply to Maine’s industry more broadly.
Shehata said he hopes concerns over impacts to local industry and the environment can be mitigated, rather than shutting the industry down altogether.
“We don’t want to shut out the opportunity for economic growth in that area. So we have to find a better way of doing it and working very closely with the community to make that realization [of launch facilities] happen.”
This story was originally published by The Maine Monitor, a nonprofit and nonpartisan news organization. To get regular coverage from The Monitor, sign up for a free Monitor newsletter here
State educators met on Thursday to discuss the future of education as technology continues to creep its way into the classroom.
School officials from Portland, Gorham, and more joined the “Eggs and Issues” panel to discuss some of the biggest issues facing education in Maine.
K-12 educators say they continue to feel the long-term effects of the COVID-19 pandemic in their education and now have to pivot their teaching once again as artificial intelligence plays a bigger role in the classroom.
Pender Makin, the commissioner of the Maine Department of Education, was asked what she thinks Mainers need to know about the state of education.
Advertisement
“People really need to know and to be reminded of constantly is that your local public schools are the foundation of our civilization really. It’s the most important work that we engage in as a community,” Makin said.
Thursday’s panel was the third “Eggs and Issues” event of the year.
A fourth focusing on Maine’s 2026 elections will be happening next month.
“ACTIVE MINDS / KYLE CARES” PAY FOR THEIR YEAR-ROUND PROGRAMMING. THE MAINE MARINERS AND PORTLAND SEA DOGS BOTH HAD HOME GAMES TONIGHT. AND WHILE THE SEA DOGS SEASON IS JUST UNDERWAY, THE MARINERS ARE IN THE STRETCH RUN TO THE PLAYOFFS. THEY HOSTED THE ADIRONDACK THUNDER AT THE CROSS ARENA. AND THE MARINERS HAD A BAD START. ALEX CAMPBELL SCORES LESS THE THREE MINUTES INTO THE GAME TO GIVE THE THUNDER THE LEAD. THE THUNDER SCORED FOUR GOALS IN THE FIRST PERIOD AND LATER TOOK A 5-0 LEAD. THE MARINERS ACTUALLY CAME BACK TO TIE IT BEFO
The Maine Mariners fell behind 5-0 and then lost 6-5 in a shootout.
The Maine Mariners fell behind 5-0 and then lost 6-5 in a shootout.
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 };
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’, ‘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);
}
}
}
}
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
`;
}
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’;
Advertisement
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;
}
Advertisement
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’);
});
}
}
function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;
Advertisement
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’, ‘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;
}
Advertisement
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);
}
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
A letter is being sent that asks registered sex offenders to email personal information
Advertisement
Maine State Police
scam letter targeting sex offenders in maine
SOURCE: Maine State Police
Advertisement
State Police warn of scam targeting sex offenders in Maine
Advertisement
A letter is being sent that asks registered sex offenders to email personal information
Updated: 11:10 AM EDT Apr 8, 2026
Editorial Standards ⓘ
Advertisement
Maine State Police is warning of a scam that is targeting sex offenders in the state.The issue was brought to those who run the Sex Offender Registry that the scam is targeting registered people on probation in Maine. A letter is being mailed to people, claiming to be from the ‘Maine Probation Tonduary.’ The letter claims there has been a data migration error in the Records Management System and the registrant needs to email personal identifying information (PII) to an email address listed on the letter. Police say neither the Maine Sex Offender Registry nor the Maine Department of Corrections would ever send such a letter asking a person to send sensitive information in this format. If you have received such a letter, you should not email your information to the address on the letter. Instead, report it to the Maine Sex Offender Registry at 207-624-7270 or local law enforcement.
MAINE —
Maine State Police is warning of a scam that is targeting sex offenders in the state.
The issue was brought to those who run the Sex Offender Registry that the scam is targeting registered people on probation in Maine.
Advertisement
A letter is being mailed to people, claiming to be from the ‘Maine Probation Tonduary.’ The letter claims there has been a data migration error in the Records Management System and the registrant needs to email personal identifying information (PII) to an email address listed on the letter.
Advertisement
Police say neither the Maine Sex Offender Registry nor the Maine Department of Corrections would ever send such a letter asking a person to send sensitive information in this format. If you have received such a letter, you should not email your information to the address on the letter. Instead, report it to the Maine Sex Offender Registry at 207-624-7270 or local law enforcement.
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 };
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’, ‘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);
}
}
}
}
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
`;
}
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’;
Advertisement
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;
}
Advertisement
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’);
});
}
}
function updateWeatherAlertsBar(weatherData) {
var weatherWatchHeader = container.querySelector(‘.weather-watch-header’);
if (!weatherWatchHeader) return;
Advertisement
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’, ‘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;
}
Advertisement
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);
}
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