<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Thales Brederodes</title>
    <description>The latest articles on DEV Community by Thales Brederodes (@thalesbmc).</description>
    <link>https://dev.to/thalesbmc</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F770415%2F9bb94086-0643-421e-b078-e25349d741f8.jpg</url>
      <title>DEV Community: Thales Brederodes</title>
      <link>https://dev.to/thalesbmc</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thalesbmc"/>
    <language>en</language>
    <item>
      <title>How to Block Twitter (X) Feed on Safari on macOS</title>
      <dc:creator>Thales Brederodes</dc:creator>
      <pubDate>Sun, 11 Jan 2026 14:53:11 +0000</pubDate>
      <link>https://dev.to/thalesbmc/how-to-block-twitter-x-feed-on-safari-on-macos-39o</link>
      <guid>https://dev.to/thalesbmc/how-to-block-twitter-x-feed-on-safari-on-macos-39o</guid>
      <description>&lt;p&gt;If you’re looking for a way to &lt;strong&gt;block Twitter (X) on Safari&lt;/strong&gt; and stop doomscrolling on macOS, you’ll quickly notice that Safari doesn’t offer any built-in way to hide or limit the feed.&lt;/p&gt;

&lt;p&gt;Once you open X, the algorithm takes over — and minutes (or hours) disappear.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Blocking Twitter Feeds Is So Hard
&lt;/h2&gt;

&lt;p&gt;Most solutions rely on willpower:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;“Just don’t scroll”&lt;/li&gt;
&lt;li&gt;“Be more disciplined”&lt;/li&gt;
&lt;li&gt;“Use focus mode”&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But the problem isn’t discipline — it’s &lt;strong&gt;design&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Social feeds are built to keep you scrolling indefinitely, especially on platforms like X (formerly Twitter).&lt;/p&gt;

&lt;h2&gt;
  
  
  Do Website Blockers Actually Work?
&lt;/h2&gt;

&lt;p&gt;Traditional website blockers are too extreme:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;They block the entire site&lt;/li&gt;
&lt;li&gt;They break workflows&lt;/li&gt;
&lt;li&gt;They force you to unblock everything just to check messages or notifications&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In practice, people disable them after a few days.&lt;/p&gt;

&lt;p&gt;Blocking &lt;em&gt;everything&lt;/em&gt; is rarely sustainable.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Better Approach: Hide the Feed, Not the Platform
&lt;/h2&gt;

&lt;p&gt;Instead of blocking X entirely, a better solution is to &lt;strong&gt;remove the feed itself&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That way, you can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check notifications&lt;/li&gt;
&lt;li&gt;Read messages&lt;/li&gt;
&lt;li&gt;Post when needed&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without getting trapped in the endless timeline.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Safari Feed Blocker for X (Twitter) on macOS
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;LockBird&lt;/strong&gt; is a Safari extension for macOS that hides the feed on X to stop doomscrolling directly in your browser.&lt;/p&gt;

&lt;p&gt;Once enabled:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The timeline disappears&lt;/li&gt;
&lt;li&gt;The visual loop is broken&lt;/li&gt;
&lt;li&gt;You naturally close the tab sooner&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No system-wide blockers.&lt;br&gt;&lt;br&gt;
No VPNs.&lt;br&gt;&lt;br&gt;
No tracking.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Stop Doomscrolling on X in Safari
&lt;/h2&gt;

&lt;p&gt;The most effective way to stop doomscrolling isn’t resisting temptation — it’s &lt;strong&gt;removing the trigger&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;By hiding the feed entirely, LockBird adds just enough friction to make scrolling impossible, while still letting you use X intentionally.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is There a Safari Extension to Block Twitter Feeds?
&lt;/h2&gt;

&lt;p&gt;Yes. &lt;strong&gt;LockBird&lt;/strong&gt; is a Safari extension for macOS that hides the algorithmic feed on X (Twitter), helping you stay focused without blocking the entire site.&lt;/p&gt;

&lt;p&gt;Everything runs locally in Safari, and no data is collected or shared.&lt;/p&gt;

&lt;p&gt;If you’ve been searching for a way to &lt;strong&gt;block Twitter feeds on Safari and stop doomscrolling on macOS&lt;/strong&gt;, this is one of the simplest approaches available.&lt;/p&gt;

</description>
      <category>hide</category>
      <category>twitter</category>
      <category>feed</category>
      <category>timeline</category>
    </item>
    <item>
      <title>How to Limit Open Tabs on Safari on macOS</title>
      <dc:creator>Thales Brederodes</dc:creator>
      <pubDate>Sun, 11 Jan 2026 14:45:47 +0000</pubDate>
      <link>https://dev.to/thalesbmc/limit-open-tabs-in-safari-on-macos-4kdj</link>
      <guid>https://dev.to/thalesbmc/limit-open-tabs-in-safari-on-macos-4kdj</guid>
      <description>&lt;p&gt;If you’re looking for a way to &lt;strong&gt;limit open tabs in Safari on macOS&lt;/strong&gt;, you’ll quickly notice that Safari doesn’t offer a built-in tab limit.&lt;/p&gt;

&lt;p&gt;You can open unlimited tabs, which often leads to tab overload, loss of focus, and cluttered workflows.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Safari Doesn’t Let You Limit Open Tabs
&lt;/h2&gt;

&lt;p&gt;Safari is designed to be flexible, but that flexibility comes at a cost. By default, there’s no restriction on how many tabs you can open, which makes it easy to postpone decisions and keep everything “just in case.”&lt;/p&gt;

&lt;p&gt;Over time, this creates cognitive overload rather than helping productivity.&lt;/p&gt;

&lt;h2&gt;
  
  
  Do Safari Tab Groups Solve Tab Overload?
&lt;/h2&gt;

&lt;p&gt;Tab Groups help organize tabs, but they don’t actually prevent overload. You can still open unlimited tabs inside each group, which means the core problem remains: there’s no guardrail.&lt;/p&gt;

&lt;p&gt;Organization is not the same as limitation.&lt;/p&gt;

&lt;h2&gt;
  
  
  A Simple Tab Limit Extension for Safari on macOS
&lt;/h2&gt;

&lt;p&gt;Instead of managing tabs after the chaos starts, a better approach is to stop the chaos before it happens.&lt;/p&gt;

&lt;p&gt;A tab limit creates a clear boundary: once you reach a certain number of tabs, Safari simply won’t open more.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to Stop Opening Too Many Tabs in Safari
&lt;/h2&gt;

&lt;p&gt;The most effective way to stop opening too many tabs isn’t relying on willpower — it’s adding a hard constraint.&lt;/p&gt;

&lt;p&gt;When new tabs are blocked after a limit, you’re forced to either close existing ones or finish what you started.&lt;/p&gt;

&lt;h2&gt;
  
  
  Is There a Safari Extension to Limit Tabs?
&lt;/h2&gt;

&lt;p&gt;Yes. &lt;strong&gt;TabCap&lt;/strong&gt; is a Safari extension for macOS that lets you set a maximum number of open tabs. Once the limit is reached, Safari won’t open new tabs until you close existing ones.&lt;/p&gt;

&lt;p&gt;If you’ve been searching for a way to &lt;strong&gt;limit tabs in Safari on macOS&lt;/strong&gt;, this might be the simplest solution available.&lt;/p&gt;

</description>
      <category>safari</category>
      <category>tab</category>
      <category>limit</category>
      <category>extension</category>
    </item>
    <item>
      <title>I Built a 3D Global Radio Map with Next.js and Three.js</title>
      <dc:creator>Thales Brederodes</dc:creator>
      <pubDate>Sat, 26 Apr 2025 03:38:32 +0000</pubDate>
      <link>https://dev.to/thalesbmc/i-built-a-3d-global-radio-map-with-nextjs-and-threejs-1lci</link>
      <guid>https://dev.to/thalesbmc/i-built-a-3d-global-radio-map-with-nextjs-and-threejs-1lci</guid>
      <description>&lt;p&gt;I want to share how I developed &lt;a href="https://viberadio.live" rel="noopener noreferrer"&gt;Vibe Radio&lt;/a&gt;, a project that places radio stations from around the world on an interactive 3D globe.&lt;br&gt;
It was a fascinating journey where I learned a lot about 3D visualization, Three.js, and managing geographic data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tech Stack&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Next.js for the frontend&lt;/li&gt;
&lt;li&gt;Three.js via React Three Fiber for 3D graphics&lt;/li&gt;
&lt;li&gt;TypeScript&lt;/li&gt;
&lt;li&gt;Radio Browser API for station data&lt;/li&gt;
&lt;li&gt;Tailwind CSS for styling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The Most Interesting Challenges&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating the 3D Globe&lt;/strong&gt;&lt;br&gt;
The core of ViberRadio is the interactive 3D globe. Building it involved several fascinating challenges:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// Earth component with continuous rotation and stations
const Earth = ({ stations }: { stations: Station[] }) =&amp;gt; {
  const earthRef = useRef&amp;lt;THREE.Mesh&amp;gt;(null);
  const globeGroupRef = useRef&amp;lt;THREE.Group&amp;gt;(null);

  // Load textures
  const textures = useTexture({
    earthTexture: "/earth-texture.jpg",
    cloudsTexture: "/clouds-texture.png",
  });

  // Continuous rotation animation
  useFrame(() =&amp;gt; {
    if (globeGroupRef.current) {
      // Rotate the entire group
      globeGroupRef.current.rotation.y += 0.0005;
    }
  });

  // ...rest of the component
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Mapping Coordinates to 3D Space&lt;/strong&gt;&lt;br&gt;
One of the most interesting technical challenges was converting latitude and longitude coordinates to positions on the 3D sphere:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const latLngToPosition = (
  lat: number,
  lng: number,
  radius: number = 1
): [number, number, number] =&amp;gt; {
  const phi = (90 - lat) * (Math.PI / 180);
  const theta = (lng + 180) * (Math.PI / 180);

  const x = -radius * Math.sin(phi) * Math.cos(theta);
  const y = radius * Math.cos(phi);
  const z = radius * Math.sin(phi) * Math.sin(theta);

  return [x, y, z];
};
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This mathematical transformation takes a station's geographic coordinates and places it precisely on the globe's surface.&lt;br&gt;
It was exciting to see stations appear exactly where they should be in the world!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What I Learned&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This project taught me a powerful lesson: everything is possible today.&lt;/p&gt;

&lt;p&gt;With the right mindset, AI tools like Cursor and Claude 3.7 Sonnet, and a willingness to build step-by-step, you can create projects that once felt out of reach.&lt;/p&gt;

&lt;p&gt;Even complex applications like 3D visualization, real-time data management, and interactive maps become achievable if you break the process down and trust the journey.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You don't have to know everything from the start, you just have to start.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you have an idea in your mind, go for it. Build it, experiment, and let the tools and technology help you evolve along the way.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Try It Out!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Visit &lt;a href="https://viberadio.live" rel="noopener noreferrer"&gt;Vibe Radio&lt;/a&gt; to explore radio stations from around the world.&lt;br&gt;
Click on any dot to tune in to that station!&lt;/p&gt;

&lt;p&gt;The project is fully open-source:&lt;br&gt;
👉 &lt;a href="https://github.com/ThalesBMC/vibe-radio" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you enjoyed this project, feel free to leave a ❤️, follow me here or on GitHub, and share your ideas or feedback! 🚀&lt;/p&gt;

&lt;p&gt;Would love to hear what you think or see your own creations too!&lt;br&gt;
Happy listening! 🎶🌎&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
