91³Ô¹ÏÍø

Watch CBS News

Volunteers in West Oakland kick off Earth Day early with 7th Street cleanup efforts

Officially, Earth Day is on Wednesday, but some volunteers in the East Bay got an early start on Saturday.

While the day is usually a celebration of the planet's natural beauty, there isn't always a lot of that in West Oakland. But some people are trying to change that, and to do it, they're going to have to first change some people's perceptions.

"I think 7th Street has a lot of potential. I decided to do this area on my own," said volunteer Benjamin Levine.

Levine spent Saturday morning collecting trash along a corridor that doesn't show up in any nature magazines. Bay Area Rapid Transit (BART) tracks run down the middle of 7th Street, cutting through West Oakland like a knife between older homes and the industrial areas of the Oakland Port. But it wasn't always like that.

"There were houses going another quarter mile toward the Bay. There were clubs, cobblers, tax accountants, right here on this corner," said Noni Session, co-founder and executive director of a nonprofit called East Bay Permanent Real Estate Cooperative, or EB PRAC. "And all of that was removed for the BART tracks, and apparently, there was a bait-and-switch because BART promised it would be built underground."

Now, the BART train roars overhead every few minutes, and the area is mostly asphalt, concrete block walls and weeds. But there is still beauty there if you look closely, and Levine said it shows through in the people who came out to do the cleanup.

"When you meet people at a bar, you meet people who like drinking. But when you meet people at a community event, you meet people who like doing things," he said. "And so, they're much more fun people to know."

Saturday's event was called Black Earth Day, but the emphasis was on green, even though there is little of that underfoot. EB PRAC purchased the 26,000-square-foot dirt-and-asphalt lot at 7th and Wood Street, along with a number of buildings. Their plan for the lot is to remove the concrete and create a small redwood forest, a community garden and greenhouse, a playground, and an amphitheater.

"We're just modeling that if you bring any green infrastructure to any place, it changes and shifts your quality of life," Session said. "It changes and shifts the kind of investment that people can make in the place, and it just shifts your daily experience of the place, where if you come to 7th Street and you see a redwood tree growing, you're going to know that there's a 'there there.'"

Session said that no matter what may be covering it, we are all standing on the Earth. Fellow member and volunteer Christina Kenney said when people take time to clean it up, they are making an investment in their community, even if it isn't a monetary one.

"When we can't give money, when we can't give dollars, we can give our time," Kenney said. "We can give our energy. We can use our bodies to be able to support the community, and that is just as equally important as any dollar amount anybody can give."

It's important to remember that, like it or not, the Earth is always changing. So, when people work to "save the planet," they're really working to maintain the kind of world that they want to live in.

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