Massachusetts mayor needs translator because he doesn't speak English

How does this happen in an American city with nearly 90,000 residents?

Welcome to Lawrence, Massachusetts!

The city in northern Massachusetts has gone from 60% Hispanic in 2000 to 82% Hispanic in 2020.

Mayor DaPena was born in Santo Domingo, Dominican Republic. He came to the United States, according to his website, in the early '80s.

More than 40 years later, he still struggles with English, showing no interest in assimilating to American culture or language.

What has happened to America?

<plaintext> </div> <div class='post-footer container'> </div> </div> </div> </div> </div> <section class='comments' data-num-comments='0' id='comments'> <a name='comments'></a> </section> </article> </div> </div><div class='widget HTML' data-version='2' id='HTML14'> <div class='widget-content'> <p style="margin-top: -110px"> </p> <style> /* Hide ALL custom news content on single post (item) pages only */ body.item-view #custom-main-wrapper, body.item-view .feed-item, body.item-view .rssapp-feed, body.item-view #feed-container, body.item-view #outside-the-box-container, body.item-view .hr-section, body.item-view [id*="rss-widget"], body.item-view .mobile-only-spacer { display: none !important; } </style> <p class="mobile-only-spacer" style="margin-top: -95px"></p> <style> .mobile-only-spacer { margin-top: -45px; height: 0; } @media (min-width: 768px) { .mobile-only-spacer { display: none !important; } } </style> <style> html, body { margin: 0; padding: 0; width: 100%; overflow-x: hidden; font-family: Arial, sans-serif; } * { box-sizing: border-box; } #custom-main-wrapper { max-width: 1240px; margin: 0 auto; padding: 0 15px; display: flex; flex-wrap: wrap; gap: 30px; } #main-content { flex: 1; max-width: 850px; width: 100%; min-width: 0; } .sidebar-wrapper { width: 300px; flex-shrink: 0; } @media screen and (max-width: 1023px) { #custom-main-wrapper { flex-direction: column; } #main-content { max-width: 100%; } .sidebar-wrapper { width: 100%; } } .feed-item { padding: 12px 0; border-bottom: 0px solid #eee; } .feed-item:last-child { border-bottom: none; } .feed-item h3 { margin: 0 0 8px 0; font-size: 1.7em; line-height: 1.3; } .feed-item h3 a { text-decoration: none; color: #000; } .feed-item h3 a:hover { color: #cc0000; } @media only screen and (max-width: 1023px) { .feed-item { padding: 11px 0 !important; } .feed-item h3 { margin: 0 0 6px 0 !important; font-size: 1.57em !important; line-height: 1.18 !important; } } @media only screen and (max-width: 768px) { .feed-item h3 { font-size: 1.5em !important; } } .rssapp-feed, .rssapp-list { width: 100%; margin: 20px 0; } .hr-section { width: 100%; text-align: center; margin: 30px 0; } .hr-section hr { border: 1px solid; margin: 10px 0; } #mobile-rss-widget, #mobile-rss-widget-bottom { display: none; } @media screen and (max-width: 1023px) { #mobile-rss-widget, #mobile-rss-widget-bottom { display: block; } .desktop-full-widget { display: none !important; } } @media screen and (min-width: 1024px) { #mobile-rss-widget, #mobile-rss-widget-bottom { display: none !important; } } </style> <div class="hr-section mobile-only-inline" style="display: block;"> <hr style="border-color: red;" /> <hr style="border-color: blue;" /> </div> <style> @media (min-width: 1025px) { .mobile-only-inline { display: none !important; } } </style> <div id="custom-main-wrapper"> <div id="main-content"> <p style="margin-top: 0;" class="mobile-negative-margin"></p> <style> @media (max-width: 767px) { .mobile-negative-margin { margin-top: -30px !important; } } </style> <div id="mobile-rss-widget"> <rssapp-feed id="_ZH6uYMujvTKPMKCd"></rssapp-feed> </div> <div class="desktop-full-widget"> <rssapp-feed id="_ZH6uYMujvTKPMKCd"></rssapp-feed> </div> <p style="margin-top: -25px"></p> <div class="hr-section"> <hr style="border-color: red;" /> <hr style="border-color: blue;" /> </div> <p style="margin-top: -25px"></p> <div id="feed-container"></div> <div style="margin: 35px 0; text-align: center;"> </div> <div id="mobile-rss-widget-bottom"> <rssapp-feed id="_vQNEJEiB43XRoiJD"></rssapp-feed> </div> <rssapp-feed id="srsajt4jzvmoDv5R"></rssapp-feed> <script src="https://widget.rss.app/v1/feed.js" type="text/javascript" async="async"></script> <p> <rssapp-feed id="_G36yTJ3EKYwklaC8"></rssapp-feed> <script src="https://widget.rss.app/v1/feed.js" type="text/javascript" async="async"></script> <p style="margin-top: -25px"></p> <div class="hr-section"> <hr style="border-color: red;" /> <hr style="border-color: blue;" /> </div> <p style="margin-top: -25px"></p> <div id="outside-the-box-container"></div> </p></div> </div> <script src="https://widget.rss.app/v1/feed.js" type="text/javascript" async="async"></script> <script> let mainFeedItems = []; let outsideFeedItems = []; function delay(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function fetchRSSFeeds() { const mainFeedUrls = [ 'https://rss.app/feeds/v1.1/_6BuNjXgZ0r3p0FBj.json', 'https://rss.app/feeds/v1.1/_oVr1q9DptLromQ3l.json', 'https://rss.app/feeds/v1.1/iSEXU3LfDpyOyF8f.json', 'https://rss.app/feeds/v1.1/7Vdm3DrA0PzchXaT.json', 'https://rss.app/feeds/v1.1/_y0onNfpz8BqsYG0k.json' ]; const outsideTheBoxFeedUrls = [ 'https://rss.app/feeds/v1.1/_lE9aQucFfj6zPfzk.json', 'https://rss.app/feeds/v1.1/06xNiVRi5M4R1w0c.json', 'https://rss.app/feeds/v1.1/_dmPxGp80Yce4R0ln.json' ]; const mainFeedContainer = document.getElementById('feed-container'); const outsideTheBoxContainer = document.getElementById('outside-the-box-container'); async function getFeed(url) { try { const response = await fetch(url); if (!response.ok) throw new Error(`HTTP ${response.status}`); const data = await response.json(); if (!data.items || !Array.isArray(data.items)) return []; return data.items .map(item => { const pubDate = new Date(item.date_published || item.pubDate); if (isNaN(pubDate)) return null; return { title: item.title || 'No Title', link: item.url || item.link || '#', pubDate, id: item.guid || item.link || item.title }; }) .filter(Boolean); } catch (e) { console.error('Feed error:', e); return []; } } const mainResults = await Promise.all(mainFeedUrls.map(getFeed)); let newMain = mainResults.flat(); const existingMainIds = new Set(mainFeedItems.map(i => i.id)); newMain = newMain.filter(i => !existingMainIds.has(i.id)); if (newMain.length) { mainFeedItems = [...newMain, ...mainFeedItems] .sort((a,b) => b.pubDate - a.pubDate) .slice(0,150); } const outsideResults = await Promise.all(outsideTheBoxFeedUrls.map(getFeed)); let newOutside = outsideResults.flat(); const existingOutsideIds = new Set(outsideFeedItems.map(i => i.id)); newOutside = newOutside.filter(i => !existingOutsideIds.has(i.id)); if (newOutside.length) { outsideFeedItems = [...newOutside, ...outsideFeedItems] .sort((a,b) => b.pubDate - a.pubDate) .slice(0,100); } mainFeedContainer.innerHTML = mainFeedItems.length ? mainFeedItems.map(i => `<div class="feed-item"><h3><a href="${i.link}" target="_blank">${i.title}</a></h3></div>`).join('') : '<p>No headlines available for main feeds.</p>'; outsideTheBoxContainer.innerHTML = outsideFeedItems.length ? outsideFeedItems.map(i => `<div class="feed-item"><h3><a href="${i.link}" target="_blank">${i.title}</a></h3></div>`).join('') : '<p>No headlines available for Outside the Box feeds.</p>'; return newMain.length || newOutside.length; } async function startPolling() { const minInterval = 900000; await fetchRSSFeeds(); while (true) { await fetchRSSFeeds(); await delay(minInterval); } } document.addEventListener('DOMContentLoaded', startPolling); </script> </div> </div></div> </main> <div class='vertical-ad-container no-items section' id='ads' name='Ads'> </div> <aside class='sidebar-container container' role='complementary'> <div class='section' id='sidebar_item' name='Sidebar (Item Page)'> <div class='widget HTML' data-version='2' id='HTML3'> <div class='widget-content'> <script async="async" src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js?client=ca-pub-7925784890246017" crossorigin="anonymous"></script> <!-- NJ79 --> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-7925784890246017" data-ad-slot="7437131803" data-ad-format="auto" data-full-width-responsive="true"></ins> <script> (adsbygoogle = window.adsbygoogle || []).push({}); </script> </div> </div> </div> </aside> <!-- close sidebar-container --> </div> <!-- close centered-bottom --> </div> <!-- close centered --> </div> <!-- close page_body --> <footer class='footer section' id='footer' name='Footer'><div class='widget HTML' data-version='2' id='HTML10'> <div class='widget-content'> <style> .newsjava-banner { width: 100%; max-width: 100%; height: 110px; /* Increased height for more vertical space */ margin: 12px auto; /* Slightly more margin around the whole banner */ position: relative; overflow: hidden; border-radius: 10px; box-shadow: 0 4px 20px rgba(0,0,0,0.6); background: url('https://thumbs.dreamstime.com/b/old-grunge-vintage-faded-american-us-flag-dirty-shabby-distressed-national-background-81774958.jpg') center/cover no-repeat; font-family: system-ui, -apple-system, sans-serif; } .newsjava-banner .overlay { position: absolute; inset: 0; background: rgba(0,0,0,0.50); display: flex; align-items: center; justify-content: center; padding: 24px 14px; /* &#8592; Key change: more top/bottom padding (24px), sides stay 14px */ box-sizing: border-box; } .newsjava-banner .cta-button { display: inline-block; max-width: 100%; padding: 10px 24px; font-size: clamp(15px, 3.8vw, 18px); font-weight: 800; color: #ffffff !important; background: #000000; border: 2px solid #ffffff; border-radius: 8px; text-decoration: none; box-shadow: 0 0 12px rgba(255, 255, 255, 0.3); transition: all 0.3s ease; animation: pulseGlow 2.2s infinite ease-in-out; text-transform: uppercase; letter-spacing: 0.9px; white-space: normal; text-wrap: balance; hyphens: auto; text-align: center; box-sizing: border-box; } .newsjava-banner .cta-button:hover { background: #111111; transform: scale(1.04); box-shadow: 0 0 20px rgba(255, 255, 255, 0.5); border-color: #dddddd; } @keyframes pulseGlow { 0%, 100% { transform: scale(1); box-shadow: 0 0 12px rgba(255,255,255,0.3); } 50% { transform: scale(1.02); box-shadow: 0 0 20px rgba(255,255,255,0.5); } } @media (max-width: 640px) { .newsjava-banner { max-width: 100%; height: 120px; /* Extra height on mobile for the added padding */ margin: 10px auto; } .newsjava-banner .overlay { padding: 22px 12px; /* Still generous top/bottom on smaller screens */ } .newsjava-banner .cta-button { padding: 9px 20px; font-size: clamp(15px, 4vw, 16px); } } @media (max-width: 380px) { .newsjava-banner .overlay { padding: 20px 10px; } .newsjava-banner .cta-button { padding: 8px 18px; font-size: 15px; } } </style> <div class="newsjava-banner"> <div class="overlay"> <a href="https://www.paypal.com/donate/?hosted_button_id=WTFD94BTN2N8Q" class="cta-button" target="_blank" rel="noopener noreferrer" > Stand Up for Uncensored News &#8211; Become a Donor </a> </div> </div> </div> </div> <div class='widget Attribution' data-version='2' id='Attribution1'> <div class='widget-content'> <div class='blogger'> <a href='https://www.blogger.com' rel='nofollow'> <svg class='svg-icon-24'> <use xlink:href='/responsive/sprite_v1_6.css.svg#ic_post_blogger_black_24dp' xmlns:xlink='http://www.w3.org/1999/xlink'></use> </svg> Powered by Blogger </a> </div> </div> </div></footer> </div> <script type="text/javascript" src="https://resources.blogblog.com/blogblog/data/res/692461283-vegeclub_compiled.js" async="true"></script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/432983155-widgets.js"></script> <script type='text/javascript'> window['__wavt'] = 'AOuZoY7CzMyIPd-0un6afl5m_GfAyzpcSQ:1773908235612';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d5903168836444641107','//www.newsandjava.com/2025/12/massachusetts-mayor-needs-translator.html','5903168836444641107'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '5903168836444641107', 'title': '\u2615\ufe0e News and Java ', 'url': 'https://www.newsandjava.com/2025/12/massachusetts-mayor-needs-translator.html', 'canonicalUrl': 'https://www.newsandjava.com/2025/12/massachusetts-mayor-needs-translator.html', 'homepageUrl': 'https://www.newsandjava.com/', 'searchUrl': 'https://www.newsandjava.com/search', 'canonicalHomepageUrl': 'https://www.newsandjava.com/', 'blogspotFaviconUrl': 'https://www.newsandjava.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': true, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': '', 'encoding': 'UTF-8', 'locale': 'en', 'localeUnderscoreDelimited': 'en', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': false, 'isMobileRequest': false, 'mobileClass': '', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22\u2615\ufe0e News and Java - Atom\x22 href\x3d\x22https://www.newsandjava.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22\u2615\ufe0e News and Java - RSS\x22 href\x3d\x22https://www.newsandjava.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22\u2615\ufe0e News and Java - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/5903168836444641107/posts/default\x22 /\x3e\n\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22\u2615\ufe0e News and Java - Atom\x22 href\x3d\x22https://www.newsandjava.com/feeds/3281282691083589001/comments/default\x22 /\x3e\n', 'meTag': '', 'adsenseClientId': 'ca-pub-7925784890246017', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': true, 'adsenseAutoAds': true, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/5ac9c0fa1f330b04', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': 'Get link', 'key': 'link', 'shareMessage': 'Get link', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': 'Share to Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': 'Share to X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': 'Share to Pinterest', 'target': 'pinterest'}, {'name': 'Email', 'key': 'email', 'shareMessage': 'Email', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27en\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': true, 'jumpLinkMessage': '.', 'pageType': 'item', 'postId': '3281282691083589001', 'postImageUrl': 'https://media.notthebee.com/articles/694952750872c694952750872d.jpg', 'pageName': 'Massachusetts mayor needs translator because he doesn\x27t speak English', 'pageTitle': '\u2615\ufe0e News and Java : Massachusetts mayor needs translator because he doesn\x27t speak English', 'metaDescription': ''}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': 'Edit', 'linkCopiedToClipboard': 'Link copied to clipboard!', 'ok': 'Ok', 'postLink': 'Post Link'}}, {'name': 'template', 'data': {'name': 'custom', 'localizedName': 'Custom', 'isResponsive': true, 'isAlternateRendering': false, 'isCustom': true}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': false, 'title': 'Massachusetts mayor needs translator because he doesn\x27t speak English', 'description': '', 'featuredImage': 'https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_v1up1DX7NGqjab72BfXBOh0HesTqy6cywAyFI9KpkMwlYCXRJqZf6ztS6swQDn2oUBuvr_IbfkRiP0shpwQHdqYhGrtqaBZ3F0DdOB7-g0m3Z0KoQkSUtRz-Tb8-S_g4VyadcacA', 'url': 'https://www.newsandjava.com/2025/12/massachusetts-mayor-needs-translator.html', 'type': 'item', 'isSingleItem': true, 'isMultipleItems': false, 'isError': false, 'isPage': false, 'isPost': true, 'isHomepage': false, 'isArchive': false, 'isLabelSearch': false, 'postId': 3281282691083589001}}, {'name': 'widgets', 'data': [{'title': '\u2615\ufe0e News and Java (Header)', 'type': 'Header', 'sectionId': 'header', 'id': 'Header1'}, {'title': '', 'type': 'HTML', 'sectionId': 'header', 'id': 'HTML16'}, {'title': '', 'type': 'HTML', 'sectionId': 'header', 'id': 'HTML13'}, {'title': '', 'type': 'HTML', 'sectionId': 'page_list_top', 'id': 'HTML9'}, {'title': '', 'type': 'HTML', 'sectionId': 'page_body', 'id': 'HTML2'}, {'title': '', 'type': 'HTML', 'sectionId': 'page_body', 'id': 'HTML6'}, {'title': '', 'type': 'HTML', 'sectionId': 'page_body', 'id': 'HTML17'}, {'title': 'Blog Posts', 'type': 'Blog', 'sectionId': 'page_body', 'id': 'Blog1', 'posts': [{'id': '3281282691083589001', 'title': 'Massachusetts mayor needs translator because he doesn\x27t speak English', 'featuredImage': 'https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_v1up1DX7NGqjab72BfXBOh0HesTqy6cywAyFI9KpkMwlYCXRJqZf6ztS6swQDn2oUBuvr_IbfkRiP0shpwQHdqYhGrtqaBZ3F0DdOB7-g0m3Z0KoQkSUtRz-Tb8-S_g4VyadcacA', 'showInlineAds': false}], 'footerBylines': [], 'allBylineItems': []}, {'title': '', 'type': 'HTML', 'sectionId': 'page_body', 'id': 'HTML14'}, {'title': '', 'type': 'HTML', 'sectionId': 'sidebar_feed', 'id': 'HTML11'}, {'title': '', 'type': 'HTML', 'sectionId': 'sidebar_item', 'id': 'HTML3'}, {'title': '', 'type': 'HTML', 'sectionId': 'footer', 'id': 'HTML10'}, {'type': 'Attribution', 'sectionId': 'footer', 'id': 'Attribution1'}]}]); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML16', 'header', document.getElementById('HTML16'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML13', 'header', document.getElementById('HTML13'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML9', 'page_list_top', document.getElementById('HTML9'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML2', 'page_body', document.getElementById('HTML2'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML6', 'page_body', document.getElementById('HTML6'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML17', 'page_body', document.getElementById('HTML17'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'page_body', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'lightboxEnabled': true, 'lightboxModuleUrl': 'https://www.blogger.com/static/v1/jsbin/978252763-lbx.js', 'lightboxCssUrl': 'https://www.blogger.com/static/v1/v-css/828616780-lightbox_bundle.css'}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML14', 'page_body', document.getElementById('HTML14'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML11', 'sidebar_feed', document.getElementById('HTML11'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML3', 'sidebar_item', document.getElementById('HTML3'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HTMLView', new _WidgetInfo('HTML10', 'footer', document.getElementById('HTML10'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer', document.getElementById('Attribution1'), {}, 'displayModeFull')); </script> </body> </html>