91³Ô¹ÏÍø

Watch CBS News

Dozens of homes built for San Mateo County farmworkers 3 years after mass shooting

In the aftermath of a tragedy, hope is often what keeps people moving.

In Belinda Hernandez Arriaga's case, it's a hope that farmworkers will have a better life as a result of a day that changed Half Moon Bay forever.

"It's actually emotional, because I think 2026 is going to be the year that it gets finally done and we move forward with this dream," she said.

On this day, she was referring to 555 Kelly, the next step in building more dignified housing for Coastside farmworkers. It will include 40 affordable apartments for senior farmworkers.

"I'm seeing a home for our farmworkers that they deserve," she said. "We will no longer let farmworkers live in deplorable conditions."

Hernandez Arriaga is the founder of Ayudandos Latinos a Sonar (ALAS), a group that works to empower and advocate for the Coastside's Latino community.

"The tragedy really opened up people's hearts and minds to see what was happening behind the scenes," she said.

The 2023 mass shooting exposed an unspoken reality to the world: farmworkers were living in deplorable conditions, in trailers, sheds, and shacks with no running water or electricity.

Since then, community, local, and state leaders have made changing that reality a top priority.

"Yes, progress is happening. More is needed, but change is happening," she said.

One major development is finished, which brought 50 new units to the coast for farmworkers.

"Those families are so happy every day. It is making a difference," she said.

San Mateo County Supervisor Ray Mueller thinks so, too.

"We've built 50 free-standing homes. These are free-standing, not connected to each other, so they're homes with yards in a neighborhood," Mueller said. "What's really important about that, too, is that those who live there have the ability to buy these homes."

He says efforts go beyond building homes. After the shooting, the county created a farmworker housing task force to put all existing farmworker housing in the county under a microscope.

"In some circumstances, we cited owners," he said. "In other circumstances, we worked with those owners to go ahead and fix the living conditions there, and in some circumstances, we let the owners know that they couldn't have anyone living there any longer and we actually had to do a red tag."

Mueller described farmworkers as "intrinsic, both to the culture of the coast and so important to the economy of the coast."

He says there is more work to be done.

"I think the really important thing to understand is that we're not done. We still have farmworker housing on the coast that needs to be improved, we have more units that we need to build," he said.

The community is still healing.

"I feel the emotions arise. It's still painful. We knew those farmworkers that passed away," Hernandez Arriaga said.

But hope for a better future for her neighbors does make a difference, she says.

"In pain and suffering, there is also love and hope and light that comes up through this journey," she said. "[Farmworkers], they're there for us."

She says it's crucial to show the farmworkers that the community is there for them, too.

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=296763317a51cab90faa73f1bb146d5c'; 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(); } }); }); }); });