Connect with us

Iowa

’24 Iowa Football Preseason Awards

Published

on

’24 Iowa Football Preseason Awards


IOWA CITY, Iowa – The preseason is for the fans and media. We talk about what’s going to happen in college football this fall, while the student-athletes sweat through the August heat preparing for it.

That’s the setup. We have our marching orders before the 2024 campaign kicks off later this month. That means previews and predictions from yours truly.

Check out the site for previous installments and check back for more with media and kids days coming next week. Here’s a staple of the football preview rubber chicken circuit – Preseason Awards.

Defensive Player of the Year

Advertisement

Jay Higgins, SR, LB

Who else, right? Actually, Jay would be the first to tell you he couldn’t do what he does without the tremendous talent around him. In Iowa’s scheme, the middle linebacker racks up tackles when things are going well.That starts with the line keeping him clean.

Rank the guys during the last quarter century however you like. Fred Barr, Abdul Hodge, Pat Angerer, Josey Jewell and Jack Campbell are all memorable. Higgins is in that conversation now.

He’s considered one of the country’s best defenders heading into 2024 after 171-tackle season. A similar tackle total can be expected.

More importantly, as a second-year starter, Higgins will play faster and with a greater knowledge of the defense can better help guys around him.

Advertisement

Offensive Player of the Year

Luke Lachey, SR, TE

Picking middle linebacker and tight end for these awards at Iowa isn’t exactly going out on a limb. Be that as it may, like Higgins, Lachey could be the best player at his position in the Big Ten and beyond.

While Higgins’ case can be made through last year’s production, we’re projecting with Lachey. He’s returning from a season-ending knee injury that cost him all but nine quarters of football, during which he already had caught 10 passes for 131 yards.

The Ohio native showed breakout potential at the end of ‘22, too. He was honorable mention All-Big Ten after catching 28 passes for 398 yards and four touchdowns. He was the No. 2 tight end behind Sam LaPorta, who finished third in the NFL’s Offensive Rookie of The Year voting in ‘23.

Advertisement

Iowa is TE U. Lachey is the next one. And, like Higgins, he has an opportunity to strengthen his place in pantheon of great performers at his position.

Redshirt Freshman of The Year

John Nestor, CB, Chicago 

Nestor delivered in a special teams’ role last season and took another step forward in the spring. That growth led to him entering training camp as a starting cornerback. 

Deshaun Lee and TJ Hall certainly aren’t conceding anything in their pursuit of the spot vacated by Cooper DeJean, now with the Philadelphia Eagles. They have more game experience than Nestor at the position. 

Advertisement

They also have to overtake him this month and keep pushing if they don’t. No matter what happens, Nestor will play. And he’ll probably blow up some folks on special teams as well. 

Iowa returns a lot of starters, reducing candidates for this category. But Nestor is a good one as is the guy in the next category. 

True Freshman of The Year

Rhys Dakin, P, Australia

Dakin takes over for countryman Tory Taylor, who is a Chicago Bears rookie after becoming a Hawkeye folk hero. Yeah, that’s a tough act to follow. 

Advertisement

Thing is, Dakin doesn’t need to be Taylor. He just needs to be a consistently efficient punter. Be a contributor to, dare I say, successful complementary football. 

The unknown is how he’ll perform in a game in front of large crowds. You can’t practice that. But he’s been vetted by the staff and sure looks the part. 

Most Pivotal Player

Cade McNamara, SR, QB

Yeah, I’m just making up awards now. This is an important one, though, one with a clear and obvious choice. 

Advertisement

McNamara entered camp saying he felt better now than he had since the fall of 2022 at Michigan. If the Hawkeyes can keep him healthy, there’s chance for this offense to click. He seems like a great fit for new coordinator Tim Lester’s system. 

The Hawkeyes are better prepared than this time last year should McNamara suffer another unfortunate injury. Northwestern transfer Brendan Sullivan has led a team to victory in the Big Ten, and redshirt freshman Marco Lainez got his feet wet in the bowl game. 

The backups haven’t led a team to the College Football Playoff like McNamara, however. The former Wolverine gives Iowa its best opportunity to make the new 12-team CFP this season. 

Best Position Group

Running Back

Advertisement

During some years, this category would be easier to pick. That it’s not is a good thing for Iowa. Tight end and linebacker are top-notch, while the lines and secondary could be pretty good. 

Running back has three guys that have produced in meaningful games in Leshon Williams, Kaleb Johnson and Jaziun Patterson. Redshirt freshman Kamari Moulton is listed with Williams and Johnson on the preseason two-deep. 

Having four capable running backs with experience is a luxury in portal era. Hopefully Lester can find ways to get them all involved. 

Top NFL Prospect

Luke Lachey, SR, TE

Advertisement

We talked about Lachey above. It wouldn’t be surprising to see him in the running for the Mackey Award. 

Top NFL Prospect Part II

Sebastian Castro, SR, S

The Chicago-area thumper is an impressive combination of skills that play well at Cash and strong safety. He’s talented enough to follow in the footsteps of previous players at the position, Amani Hooker and Dane Belton, recent NFL Draft picks still in the league. 

Castro is stronger against the run than those guys at this stage and is gaining ground in matching their coverage ability. He holds his own in that area already. 

Advertisement



Source link

Iowa

Tornadoes and hail reported across northern Iowa counties

Published

on

Tornadoes and hail reported across northern Iowa counties


Tornadoes and hail reported across northern Iowa counties

Advertisement

KCCI EIGHT NEWS AT TEN STARTS NOW. GOOD EVENING. IT HAS BEEN AN ACTIVE EVENING IN NORTHERN IOWA. ACTIVE WEATHER EVENING. THIS PICTURE SENT TO US BY STEVE FITCHETT SHOWS A TORNADO ON THE GROUND NEAR GILLETT GROVE. YOU CAN SEE THE DEBRIS KICK UP THERE. THIS WAS IN CLAY COUNTY. THIS WAS A TORNADO WARNED STORM NEAR THAT AREA. TONIGHT. A TORNADO WARNED STORM ALSO MOVED THROUGH KOSSUTH COUNTY THIS EVENING. THAT’S A LIVE LOOK RIGHT NOW FROM ALGONA. THANKFULLY THE TORNADO WATCH FOR THE COUNTY JUST EXPIRED AT THE TOP OF THE HOUR, SO IT SHOULD BE A MUCH CALMER NIGHT AHEAD. THE STORM ROLLED THROUGH SANBORN THIS AFTERNOON. TAKE A LOOK AT THIS. ALYSSA BECKER SENT US THESE PICTURES OF THE HAIL THAT FELL THERE TODAY. THAT’S A BIG HAIL AND DOES SOME DAMAGE. ABSOLUTELY. WE SAW EVEN THE LIVE LOOK FROM ALGONA. YOU SAW SOME LIGHTNING THERE. SO EVEN FOR THESE AREAS THAT ARE OUT OF KIND OF THE ROUGH STUFF THERE, JASON, STILL A LITTLE BIT OF A, YOU KNOW, I DON’T KNOW, THINGS THAT CATCHES THEIR EYE TONIGHT. ABSOLUTELY. THERE’S

Advertisement

Tornadoes and hail reported across northern Iowa counties

Updated: 11:16 PM CDT Apr 13, 2026

Editorial Standards

Advertisement

Severe storms swept through northern Iowa Monday evening, bringing tornadoes and hail to several counties.A tornado was spotted on the ground near Gillett Grove in Clay County, as shown in a photo sent by Steve Fitchett. The area experienced a tornado-warned storm Monday night. A tornado-warned storm also moved through Kossuth County this evening. A live view from Algona showed the conditions, and the tornado watch for the county expired at 10 p.m.Earlier in the day, the storm rolled through Sandborn, bringing hail to the area. Alyssa Becker shared pictures of the hail from the scene.

Severe storms swept through northern Iowa Monday evening, bringing tornadoes and hail to several counties.

Advertisement

A tornado was spotted on the ground near Gillett Grove in Clay County, as shown in a photo sent by Steve Fitchett. The area experienced a tornado-warned storm Monday night.

A tornado-warned storm also moved through Kossuth County this evening. A live view from Algona showed the conditions, and the tornado watch for the county expired at 10 p.m.

Earlier in the day, the storm rolled through Sandborn, bringing hail to the area. Alyssa Becker shared pictures of the hail from the scene.

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’);
});

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

Advertisement

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’);
}
}

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.kcci.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.kcci.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);
}

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);

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’);
});

Advertisement

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’);
}
}

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.kcci.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.kcci.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);
}

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;

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

Loading more articles…



Source link

Advertisement
Continue Reading

Iowa

Why Jimmy Butler wore an Iowa State volleyball shirt before NBA game

Published

on

Why Jimmy Butler wore an Iowa State volleyball shirt before NBA game


play

The Iowa State volleyball program recently received an unexpected endorsement from an NBA All‑Star.

Golden State Warriors forward Jimmy Butler hit the court wearing a gray Nike Iowa State Volleyball T‑shirt before his team’s regular‑season finale against the Los Angeles Clippers on Sunday, April 12.

Advertisement

So why did Butler, a Marquette alum and Texas native with no obvious Iowa State ties at first glance, sport an Iowa State volleyball shirt? Here’s what we know.

Jimmy Butler’s Iowa State volleyball connection

Butler’s decision to wear the shirt wasn’t the result of a lost bet with a former Iowa State coach or player, or an unrelated thrift-store pickup, but rather tied to a longstanding personal connection with a member of the Iowa State volleyball coaching staff.

Butler has been friends with Ciara Jones, Iowa State volleyball’s associate head coach and recruiting coordinator, since their time together as student‑athletes at Marquette in the late 2000s. The connection was first pointed out on social media by Iowa State women’s basketball radio play‑by‑play announcer Noah Wolf, who noted that the six‑time All-Star selection attended Iowa State’s match at Houston during the 2025 season to support Jones and the team.

Jones, who has been with the Cyclones Volleyball team since 2023, reposted a photo of Butler from Sunday in the Cyclones gear with the star eye emojis and “you love to see it” in her caption. Butler attended Marquette from 2008 to 2011 and Jones from 2008 to 2012.

Jones helped lead the program to its first NCAA Tournament appearance in 2011, a season in which she was also named a Big East First Team All‑American, according to her Iowa State coaching profile. The two Golden Eagles alums appear together in several posts on Jones’ Instagram.

Advertisement

When did Jimmy Butler tear his ACL?

Butler, 36, has been sidelined since Jan. 19, 2026, after suffering a torn right ACL, an injury that ended his 2025–26 season.

He appeared in 38 games, averaging 20.0 points, 5.6 rebounds and 4.9 assists per game while shooting 51.9% from the field. After losing Sunday’s matchup 115–110, the Warriors (37–45) are set to rematch the Clippers (42–40) on Wednesday, April 15, in the NBA Play‑In Tournament.

The Cyclones volleyball program capped a strong 2025 season with a 23–8 overall record, their highest win total since 2011, and finished third in the Big 12 at 12–6 in conference play.

Advertisement

Cooper Worth is a service/trending reporter for the Des Moines Register. Reach him at cworth@gannett.com or follow him on X @CooperAWorth.





Source link

Continue Reading

Iowa

Iowa newspapers get second chance after publisher closure

Published

on

Iowa newspapers get second chance after publisher closure


Iowa newspapers get second chance after publisher closure

Advertisement

WELCOME BACK. SEVERAL SMALL TOWN IOWA NEWSPAPERS ARE ON THE BRINK OF SHUTTING DOWN. WILL NOW GET A SECOND CHANCE. 18 PAPERS ACROSS THE STATE WERE SET TO GO OUT OF PRINT AT THE START OF THE MONTH, WHEN MID-AMERICA PUBLISHING CLOSED. NELSON MEDIA COMPANY, A VIDEO PRODUCTION COMPANY BASED IN NORTHEAST IOWA, BOUGHT FOUR OF THOSE PAPERS. THE ACQUISITIONS INCLUDE THE WINNEBAGO COUNTY TRIBUNE, PARKERSBURG ECLIPSE NEWS REVIEW, BUTLER COUNTY TRIBUNE, AND THE REGISTER. CEO CHRIS NELSON SAYS LOSING THE NEWSPAPERS WOULD PUT LOCAL COMMUNITIES AT RISK. JOURNALISM WAS THE FOUNDATION OF THIS COUNTRY, SO IF WE LOSE THAT IN THE SMALL COMMUNITIES, THAT’S A BIG DEAL. WE WANT TO MAKE THESE PAPERS GREAT FOR THE COMMUNITIES AND SHOW THE NEWS AND THE CONTENT THAT HAPPENS EVERY SINGLE WEEK IN THESE CITIES AND TOWNS. 13 OF THE 18 NEWS

Advertisement

Iowa newspapers get second chance after publisher closure

Updated: 10:44 PM CDT Apr 12, 2026

Editorial Standards

Advertisement

Eighteen Iowa newspapers faced closure this month after MidAmerica Publishing shut down, but several have been saved by new ownership. Nelson Media Company, a video production company based in Northeast Iowa, purchased four of the papers. The acquisitions include the Winnebago County Tribune, Parkersburg Eclipse News Review, Butler County Tribune and the Grundy Register. “Journalism is the foundation of this country. So, if we lose that in the small communities, that’s a big deal,” CEO Chris Nelson said. “We want to make these papers great for these communities and show the news and content that happens every week in these cities and towns.”Thirteen of the 18 newspapers that were at risk of closing have been sold and will continue printing.

Eighteen Iowa newspapers faced closure this month after MidAmerica Publishing shut down, but several have been saved by new ownership.

Advertisement

Nelson Media Company, a video production company based in Northeast Iowa, purchased four of the papers. The acquisitions include the Winnebago County Tribune, Parkersburg Eclipse News Review, Butler County Tribune and the Grundy Register.

“Journalism is the foundation of this country. So, if we lose that in the small communities, that’s a big deal,” CEO Chris Nelson said. “We want to make these papers great for these communities and show the news and content that happens every week in these cities and towns.”

Thirteen of the 18 newspapers that were at risk of closing have been sold and will continue printing.

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’);
});

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

Advertisement

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’);
}
}

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.kcci.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘mobile-weather’, “https://www.kcci.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);
}

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);

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’);
});

Advertisement

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’);
}
}

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.kcci.com/alerts”);
weatherWatchLink.setAttribute(‘onclick’, “return handleWeatherLinkClick(event, ‘click_alerts’, ‘click’, ‘sidelist-weather’, “https://www.kcci.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);
}

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;

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

Loading more articles…



Source link

Advertisement
Continue Reading

Trending