91³Ô¹ÏÍø

Watch CBS News

How difficult is it to operate a massive container ship? Experts show why it's so hard to avoid bridge crashes

BOURNE – A massive container ship that had lost power slammed into the Francis Scott Key Bridge in Baltimore early Tuesday morning, sending vehicles and people into the water below. Mariners in Massachusetts said the tragedy shows just how difficult it is to operate the vessels.

Since navigating through bridges is such a common scenario for any mariner, it's a big part of the training at Massachusetts Maritime Academy at the entrance to Cape Cod.

How cargo ship operators train

When the staff awoke to reports of tragedy in Baltimore, the news hit home.

"There's no substitute for being at sea," said captain Michael Burns, executive director of the school's Maritime Center for Responsible Energy, which houses the next best thing. It's a video-game quality simulator to prepare for real-life scenarios that are far from any game.

5p-hager-bridge-collapse-mass-maritime-frame-593.jpg
A simulator shows what it's like to learn how to operate a cargo ship. CBS Boston

In a demonstration Tuesday, Burns powered the system up with a view from a container ship approaching the Verrazzano Bridge in New York City.

How long does it take to stop a cargo ship?  

"It's extremely challenging, and takes years of experience and training in order to be able to do this safely," he said. "It can take up to a mile for some of these ships to get stopped, depending on the circumstances, so we really need to think well out, miles ahead of the ship."

Near Mass Maritime, ships regularly move through Cape Cod Bridges some 60 miles south of the major cargo ships pulling into the Port of Boston.

"You get all that force, all that momentum just going, sliding through the water," said captain Angel Montanez, who's an assistant port engineer in Boston's port. "If you're going so fast in the water, you just don't have brakes. You just can't stop, or drop the anchor, because by the time the anchor goes out and grabs something, just swings around or stops it from going the direction it's going, it's too late."

What can be learned from Baltimore bridge collapse

What happened in Baltimore is a tragedy that he and the instructors at Mass Maritime Academy hope the industry can learn from.

"Certainly we try to prepare our cadets for these type of scenarios," Burns said. "Every ship has emergency procedures for these type of things."

View CBS News In
CBS News App Open
Chrome Safari Continue
const link = doc.createElement('link'); link.rel = 'stylesheet'; link.href = '/fly/fly/bundles/cbsnewscontent/css/cmp-banner.min.css?v=fd53910ecf4604072044ab7c46d9b028'; doc.head.appendChild(link); doc.body.innerHTML = CONSENT_MESSAGE; } else { el.insertAdjacentHTML('afterend', CONSENT_MESSAGE); } }); } function hidePrivacyMessage() { // Remove from the main document document.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); // Remove from inside any iframes document.querySelectorAll('iframe').forEach(iframe => { const doc = iframe.contentDocument || iframe.contentWindow.document; doc.querySelectorAll(`.${CONSENT_MESSAGE_CLASS}`).forEach(el => el.remove()); }); } function activateGatedScripts() { // Handle both new format (cmp-gated-script) and old OneTrust/Ketch format (optanon-category-4) const gatedScripts = Array.from(document.querySelectorAll('script.cmp-gated-script, script.optanon-category-4')); // Activate scripts sequentially with a small delay to avoid timing issues let delay = 0; gatedScripts.forEach(function(placeholder, index) { setTimeout(function() { // Skip if already processed if (placeholder.hasAttribute('data-cmp-processed')) { return; } placeholder.setAttribute('data-cmp-processed', 'true'); const newScript = document.createElement('script'); newScript.type = 'text/javascript'; // Try new format first (data-cmp-src), then fall back to old format (data-src) const src = placeholder.getAttribute('data-cmp-src') || placeholder.getAttribute('data-src'); if (src) { newScript.src = src; } else if (placeholder.textContent) { // Inline script - just copy the content newScript.textContent = placeholder.textContent; } // Handle new format attributes (data-cmp-attrs) - for both inline and external scripts const attrs = placeholder.getAttribute('data-cmp-attrs'); if (attrs) { const tempDiv = document.createElement('div'); tempDiv.innerHTML = '
<\/div>'; const tempAttrs = tempDiv.firstChild.attributes; for (let i = 0; i < tempAttrs.length; i++) { // For external scripts, allow defer/async. For inline scripts, skip them (not valid) if (src || (tempAttrs[i].name !== 'async' && tempAttrs[i].name !== 'defer')) { newScript.setAttribute(tempAttrs[i].name, tempAttrs[i].value); } } } // Copy other attributes from old OneTrust format for (let i = 0; i < placeholder.attributes.length; i++) { const attr = placeholder.attributes[i]; // Skip attributes we've already handled or don't want to copy if (!['class', 'data-src', 'data-type', 'data-cmp-src', 'data-cmp-attrs', 'data-cmp-processed', 'type', 'async', 'defer', 'src'].includes(attr.name)) { newScript.setAttribute(attr.name, attr.value); } } placeholder.parentNode.replaceChild(newScript, placeholder); // If external script, manually trigger window.onload handlers after it loads // This handles widgets that use window.onload for initialization if (src) { newScript.addEventListener('load', function() { // If page already loaded and script set a new onload handler, trigger it if (document.readyState === 'complete' && window.onload) { const originalOnload = window.onload; window.onload = null; // Clear temporarily to prevent loops originalOnload(); // Execute the handler } }); } }, delay); delay += 500; // 500ms delay between each script to allow full loading }); } cbsoptanon.onScriptsReady(function(cmp) { cmp.ot.targetingAllowed(function(allowed) { if (!allowed) { showPrivacyMessage(); } else { activateGatedScripts(); } }); cmp.ot.awaitInitialConsent(function(consent_model) { cmp.ot.addOnConsentChangedHandler(function() { cmp.ot.targetingAllowed(function(allowed) { if (allowed) { hidePrivacyMessage(); activateGatedScripts(); } else { showPrivacyMessage(); } }); }); }); });