PageSourceSearch

https://joaotome.com/

html joaotome.com collected 2026-10-02 03:51:39 UTC 120,834 bytes, 68 lines download raw bytes

1<!DOCTYPE html><html lang="en" class="light" style="color-scheme: light;"><head>
2    <meta name="google-site-verification" content="OBgkblKO839ru7pl6QG1iIc5KIkMMVm2IYTeOkOtaiU">
3    <meta charset="UTF-8">
4    <meta name="viewport" content="width=device-width, initial-scale=1.0">
5    <title>João Tomé | Data Editor, Writer, Storyteller</title>
6    <meta name="description" content="João Tomé is an Internet Data Research Editor at IPinfo, writer, storyteller, and former Cloudflare host of This Week in NET, based in Lisbon, Portugal.">
7    <link rel="canonical" href="https://joaotome.com/">
8    <link rel="preconnect" href="https://fonts.googleapis.com">
9    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin="">
10    <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&amp;family=Playfair+Display:wght@400;500;600;700&amp;display=swap">
11    
12    <!-- Favicon -->
13    <link rel="icon" type="image/png" href="/logo.png">
14    <link rel="apple-touch-icon" href="/logo.png">
15    
16    <!-- Open Graph / Facebook -->
17    <meta property="og:type" content="profile">
18    <meta property="og:title" content="João Tomé | Data Editor, Writer, Storyteller">
19    <meta property="og:description" content="João Tomé is an Internet Data Research Editor at IPinfo, writer, storyteller, and former Cloudflare host of This Week in NET, based in Lisbon, Portugal.">
20    <meta property="og:image" content="https://joaotome.com/meta.png">
21    <meta property="og:url" content="https://joaotome.com/">
22    <meta property="og:site_name" content="João Tomé">
23    
24    <!-- Twitter -->
25    <meta name="twitter:card" content="summary_large_image">
26    <meta name="twitter:site" content="@emot">
27    <meta name="twitter:creator" content="@emot">
28    <meta name="twitter:title" content="João Tomé | Data Editor, Writer, Storyteller">
29    <meta name="twitter:description" content="João Tomé is an Internet Data Research Editor at IPinfo, writer, storyteller, and former Cloudflare host of This Week in NET, based in Lisbon, Portugal.">
30    <meta name="twitter:image" content="https://joaotome.com/meta.png">
31    
32    <!-- Theme color -->
33    <meta name="theme-color" content="#F38020">
34
35    <!-- JSON-LD Structured Data -->
36    
36<script type="application/ld+json">
37    {
38      "@context": "https://schema.org",
39      "@type": "Person",
40      "name": "João Tomé",
41      "alternateName": "Joao Tome",
42      "url": "https://joaotome.com",
43      "image": "https://joaotome.com/logo.png",
44      "jobTitle": "Internet Data Research Editor, Writer and Storyteller",
45      "sameAs": [
46        "https://x.com/emot",
47        "https://emot.substack.com",
48        "https://blog.cloudflare.com/author/joao-tome/",
49        "https://www.linkedin.com/in/joaotome1/",
50        "https://thisweekinnet.com",
51        "https://www.youtube.com/@inthistweekinnet"
52      ],
53      "knowsAbout": ["Internet traffic analysis", "cybersecurity", "Cloudflare Radar", "AI trends", "data journalism"],
54      "description": "Internet Data Research Editor at IPinfo, writer and storyteller based in Lisbon, Portugal. Former Cloudflare host of This Week in NET. Writes data-driven stories about Internet trends, cybersecurity, and AI."
55    }
56    </script>
56
57  
57<script type="module" crossorigin="" src="/assets/index-BTsKHbkE.js"></script>
57
58  <link rel="stylesheet" crossorigin="" href="/assets/index-D--2gl89.css">
59<style type="text/css">:where(html[dir="ltr"]),:where([data-sonner-toaster][dir="ltr"]){--toast-icon-margin-start: -3px;--toast-icon-margin-end: 4px;--toast-svg-margin-start: -1px;--toast-svg-margin-end: 0px;--toast-button-margin-start: auto;--toast-button-margin-end: 0;--toast-close-button-start: 0;--toast-close-button-end: unset;--toast-close-button-transform: translate(-35%, -35%)}:where(html[dir="rtl"]),:where([data-sonner-toaster][dir="rtl"]){--toast-icon-margin-start: 4px;--toast-icon-margin-end: -3px;--toast-svg-margin-start: 0px;--toast-svg-margin-end: -1px;--toast-button-margin-start: 0;--toast-button-margin-end: auto;--toast-close-button-start: unset;--toast-close-button-end: 0;--toast-close-button-transform: translate(35%, -35%)}:where([data-sonner-toaster]){position:fixed;width:var(--width);font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;--gray1: hsl(0, 0%, 99%);--gray2: hsl(0, 0%, 97.3%);--gray3: hsl(0, 0%, 95.1%);--gray4: hsl(0, 0%, 93%);--gray5: hsl(0, 0%, 90.9%);--gray6: hsl(0, 0%, 88.7%);--gray7: hsl(0, 0%, 85.8%);--gray8: hsl(0, 0%, 78%);--gray9: hsl(0, 0%, 56.1%);--gray10: hsl(0, 0%, 52.3%);--gray11: hsl(0, 0%, 43.5%);--gray12: hsl(0, 0%, 9%);--border-radius: 8px;box-sizing:border-box;padding:0;margin:0;list-style:none;outline:none;z-index:999999999}:where([data-sonner-toaster][data-x-position="right"]){right:max(var(--offset),env(safe-area-inset-right))}:where([data-sonner-toaster][data-x-position="left"]){left:max(var(--offset),env(safe-area-inset-left))}:where([data-sonner-toaster][data-x-position="center"]){left:50%;transform:translate(-50%)}:where([data-sonner-toaster][data-y-position="top"]){top:max(var(--offset),env(safe-area-inset-top))}:where([data-sonner-toaster][data-y-position="bottom"]){bottom:max(var(--offset),env(safe-area-inset-bottom))}:where([data-sonner-toast]){--y: translateY(100%);--lift-amount: calc(var(--lift) * var(--gap));z-index:var(--z-index);position:absolute;opacity:0;transform:var(--y);filter:blur(0);touch-action:none;transition:transform .4s,opacity .4s,height .4s,box-shadow .2s;box-sizing:border-box;outline:none;overflow-wrap:anywhere}:where([data-sonner-toast][data-styled="true"]){padding:16px;background:var(--normal-bg);border:1px solid var(--normal-border);color:var(--normal-text);border-radius:var(--border-radius);box-shadow:0 4px 12px #0000001a;width:var(--width);font-size:13px;display:flex;align-items:center;gap:6px}:where([data-sonner-toast]:focus-visible){box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast][data-y-position="top"]){top:0;--y: translateY(-100%);--lift: 1;--lift-amount: calc(1 * var(--gap))}:where([data-sonner-toast][data-y-position="bottom"]){bottom:0;--y: translateY(100%);--lift: -1;--lift-amount: calc(var(--lift) * var(--gap))}:where([data-sonner-toast]) :where([data-description]){font-weight:400;line-height:1.4;color:inherit}:where([data-sonner-toast]) :where([data-title]){font-weight:500;line-height:1.5;color:inherit}:where([data-sonner-toast]) :where([data-icon]){display:flex;height:16px;width:16px;position:relative;justify-content:flex-start;align-items:center;flex-shrink:0;margin-left:var(--toast-icon-margin-start);margin-right:var(--toast-icon-margin-end)}:where([data-sonner-toast][data-promise="true"]) :where([data-icon])>svg{opacity:0;transform:scale(.8);transform-origin:center;animation:sonner-fade-in .3s ease forwards}:where([data-sonner-toast]) :where([data-icon])>*{flex-shrink:0}:where([data-sonner-toast]) :where([data-icon]) svg{margin-left:var(--toast-svg-margin-start);margin-right:var(--toast-svg-margin-end)}:where([data-sonner-toast]) :where([data-content]){display:flex;flex-direction:column;gap:2px}[data-sonner-toast][data-styled=true] [data-button]{border-radius:4px;padding-left:8px;padding-right:8px;height:24px;font-size:12px;color:var(--normal-bg);background:var(--normal-text);margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end);border:none;cursor:pointer;outline:none;display:flex;align-items:center;flex-shrink:0;transition:opacity .4s,box-shadow .2s}:where([data-sonner-toast]) :where([data-button]):focus-visible{box-shadow:0 0 0 2px #0006}:where([data-sonner-toast]) :where([data-button]):first-of-type{margin-left:var(--toast-button-margin-start);margin-right:var(--toast-button-margin-end)}:where([data-sonner-toast]) :where([data-cancel]){color:var(--normal-text);background:rgba(0,0,0,.08)}:where([data-sonner-toast][data-theme="dark"]) :where([data-cancel]){background:rgba(255,255,255,.3)}:where([data-sonner-toast]) :where([data-close-button]){position:absolute;
59left:var(--toast-close-button-start);right:var(--toast-close-button-end);top:0;height:20px;width:20px;display:flex;justify-content:center;align-items:center;padding:0;background:var(--gray1);color:var(--gray12);border:1px solid var(--gray4);transform:var(--toast-close-button-transform);border-radius:50%;cursor:pointer;z-index:1;transition:opacity .1s,background .2s,border-color .2s}:where([data-sonner-toast]) :where([data-close-button]):focus-visible{box-shadow:0 4px 12px #0000001a,0 0 0 2px #0003}:where([data-sonner-toast]) :where([data-disabled="true"]){cursor:not-allowed}:where([data-sonner-toast]):hover :where([data-close-button]):hover{background:var(--gray2);border-color:var(--gray5)}:where([data-sonner-toast][data-swiping="true"]):before{content:"";position:absolute;left:0;right:0;height:100%;z-index:-1}:where([data-sonner-toast][data-y-position="top"][data-swiping="true"]):before{bottom:50%;transform:scaleY(3) translateY(50%)}:where([data-sonner-toast][data-y-position="bottom"][data-swiping="true"]):before{top:50%;transform:scaleY(3) translateY(-50%)}:where([data-sonner-toast][data-swiping="false"][data-removed="true"]):before{content:"";position:absolute;inset:0;transform:scaleY(2)}:where([data-sonner-toast]):after{content:"";position:absolute;left:0;height:calc(var(--gap) + 1px);bottom:100%;width:100%}:where([data-sonner-toast][data-mounted="true"]){--y: translateY(0);opacity:1}:where([data-sonner-toast][data-expanded="false"][data-front="false"]){--scale: var(--toasts-before) * .05 + 1;--y: translateY(calc(var(--lift-amount) * var(--toasts-before))) scale(calc(-1 * var(--scale)));height:var(--front-toast-height)}:where([data-sonner-toast])>*{transition:opacity .4s}:where([data-sonner-toast][data-expanded="false"][data-front="false"][data-styled="true"])>*{opacity:0}
59:where([data-sonner-toast][data-visible="false"]){opacity:0;pointer-events:none}:where([data-sonner-toast][data-mounted="true"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset)));height:var(--initial-height)}:where([data-sonner-toast][data-removed="true"][data-front="true"][data-swipe-out="false"]){--y: translateY(calc(var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="true"]){--y: translateY(calc(var(--lift) * var(--offset) + var(--lift) * -100%));opacity:0}:where([data-sonner-toast][data-removed="true"][data-front="false"][data-swipe-out="false"][data-expanded="false"]){--y: translateY(40%);opacity:0;transition:transform .5s,opacity .2s}:where([data-sonner-toast][data-removed="true"][data-front="false"]):before{height:calc(var(--initial-height) + 20%)}[data-sonner-toast][data-swiping=true]{transform:var(--y) translateY(var(--swipe-amount, 0px));transition:none}[data-sonner-toast][data-swipe-out=true][data-y-position=bottom],[data-sonner-toast][data-swipe-out=true][data-y-position=top]{animation:swipe-out .2s ease-out forwards}@keyframes swipe-out{0%{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount)));opacity:1}to{transform:translateY(calc(var(--lift) * var(--offset) + var(--swipe-amount) + var(--lift) * -100%));opacity:0}}@media (max-width: 600px){[data-sonner-toaster]{position:fixed;--mobile-offset: 16px;right:var(--mobile-offset);left:var(--mobile-offset);width:100%}[data-sonner-toaster] [data-sonner-toast]{left:0;right:0;width:calc(100% - var(--mobile-offset) * 2)}[data-sonner-toaster][data-x-position=left]{left:var(--mobile-offset)}[data-sonner-toaster][data-y-position=bottom]{bottom:20px}[data-sonner-toaster][data-y-position=top]{top:20px}[data-sonner-toaster][data-x-position=center]{left:var(--mobile-offset);right:var(--mobile-offset);transform:none}}[data-sonner-toaster][data-theme=light]{--normal-bg: #fff;--normal-border: var(--gray4);--normal-text: var(--gray12);--success-bg: hsl(143, 85%, 96%);--success-border: hsl(145, 92%, 91%);--success-text: hsl(140, 100%, 27%);--info-bg: hsl(208, 100%, 97%);--info-border: hsl(221, 91%, 91%);--info-text: hsl(210, 92%, 45%);--warning-bg: hsl(49, 100%, 97%);--warning-border: hsl(49, 91%, 91%);--warning-text: hsl(31, 92%, 45%);--error-bg: hsl(359, 100%, 97%);--error-border: hsl(359, 100%, 94%);--error-text: hsl(360, 100%, 45%)}[data-sonner-toaster][data-theme=light] [data-sonner-toast][data-invert=true]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1)}[data-sonner-toaster][data-theme=dark] [data-sonner-toast][data-invert=true]{--normal-bg: #fff;--normal-border: var(--gray3);--normal-text: var(--gray12)}[data-sonner-toaster][data-theme=dark]{--normal-bg: #000;--normal-border: hsl(0, 0%, 20%);--normal-text: var(--gray1);--success-bg: hsl(150, 100%, 6%);--success-border: hsl(147, 100%, 12%);--success-text: hsl(150, 86%, 65%);--info-bg: hsl(215, 100%, 6%);--info-border: hsl(223, 100%, 12%);--info-text: hsl(216, 87%, 65%);--warning-bg: hsl(64, 100%, 6%);--warning-border: hsl(60, 100%, 12%);--warning-text: hsl(46, 87%, 65%);--error-bg: hsl(358, 76%, 10%);--error-border: hsl(357, 89%, 16%);--error-text: hsl(358, 100%, 81%)}[data-rich-colors=true][data-sonner-toast][data-type=success],[data-rich-colors=true][data-sonner-toast][data-type=success] [data-close-button]{background:var(--success-bg);border-color:var(--success-border);color:var(--success-text)}[data-rich-colors=true][data-sonner-toast][data-type=info],[data-rich-colors=true][data-sonner-toast][data-type=info] [data-close-button]{background:var(--info-bg);border-color:var(--info-border);color:var(--info-text)}[data-rich-colors=true][data-sonner-toast][data-type=warning],[data-rich-colors=true][data-sonner-toast][data-type=warning] [data-close-button]{background:var(--warning-bg);border-color:var(--warning-border);color:var(--warning-text)}[data-rich-colors=true][data-sonner-toast][data-type=error],[data-rich-colors=true][data-sonner-toast][data-type=error] [data-close-button]{background:var(--error-bg);border-color:var(--error-border);color:var(--error-text)}.sonner-loading-wrapper{--size: 16px;height:var(--size);width:var(--size);position:absolute;inset:0;z-index:10}.sonner-loading-wrapper[data-visible=false]{transform-origin:center;animation:sonner-fade-out .2s ease forwards}.sonner-spinner{position:relative;top:50%;left:50%;height:var(--size);width:var(--size)}.sonner-loading-bar{animation:sonner-spin 1.2s linear infinite;background:var(--gray11);border-radius:6px;height:8%;left:-10%;position:absolute;top:-3.9%;width:24%}.sonner-loading-bar:nth-child(1){animation-delay:-1.2s;transform:rotate(.0001deg) translate(146%)}.sonner-loading-bar:nth-child(2){animation-delay:-1.1s;transform:rotate(30deg) translate(146%)}.sonner-loading-bar:nth-child(3){animation-delay:-1s;transform:rotate(60deg) translate(146%)}.sonner-loading-bar:nth-child(4){animation-delay:-.9s;transform:rotate(90deg) translate(146%)}.sonner-loading-bar:nth-child(5){animation-delay:-.8s;transform:rotate(120deg) translate(146%)}.sonner-loading-bar:nth-child(6){animation-delay:-.7s;transform:rotate(150deg) translate(146%)}.sonner-loading-bar:nth-child(7){animation-delay:-.6s;transform:rotate(180deg) translate(146%)}.sonner-loading-bar:nth-child(8){animation-delay:-.5s;transform:rotate(210deg) translate(146%)}.sonner-loading-bar:nth-child(9){animation-delay:-.4s;transform:rotate(240deg) translate(146%)}.sonner-loading-bar:nth-child(10){animation-delay:-.3s;transform:rotate(270deg) translate(146%)}.sonner-loading-bar:nth-child(11){animation-delay:-.2s;transform:rotate(300deg) translate(146%)}.sonner-loading-bar:nth-child(12){animation-delay:-.1s;transform:rotate(330deg) translate(146%)}@keyframes sonner-fade-in{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}@keyframes sonner-fade-out{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.8)}}@keyframes sonner-spin{0%{opacity:1}to{opacity:.15}}@media (prefers-reduced-motion){[data-sonner-toast],[data-sonner-toast]>*,.sonner-loading-bar{transition:none!important;animation:none!important}}.sonner-loader{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transform-origin:center;transition:opacity .2s,transform .2s}.sonner-loader[data-visible=false]{opacity:0;transform:scale(.8) translate(-50%,-50%)}
60</style><link rel="modulepreload" as="script" crossorigin="" href="/assets/V2-CQKwWM3r.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/V2Navbar-BZ4vHU74.js">
60<link rel="modulepreload" as="script" crossorigin="" href="/assets/Footer-pNBathQW.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/ParticleCloud-TyVBGNxu.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/useWritingFeed-Cgpb-8dp.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/skeleton-c8PS3Ito.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/chart-no-axes-column-CiEzxF-9.js"><link rel="stylesheet" crossorigin="" href="/assets/V2-BtEVpiLP.css"><link rel="modulepreload" as="script" crossorigin="" href="/assets/ThisWeekInNET-Dwb2Cd4w.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/index-BTsKHbkE.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/SectionLink-ByY3jVIo.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/Experience-BSUr1pdW.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/cloudflare-logo-Bq6yJob5.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/InteractiveGlobe-C6TGNeT0.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/Contact-dEEt4QwG.js"><link rel="modulepreload" as="script" crossorigin="" href="/assets/Closing-B_M924Ao.js"></head>
61
62  <body>
63    <div id="root">
63<script>!function(){try{var d=document.documentElement,c=d.classList;c.remove('light','dark');var e=localStorage.getItem('theme');if('system'===e||(!e&&true)){var t='(prefers-color-scheme: dark)',m=window.matchMedia(t);if(m.media!==t||m.matches){d.style.colorScheme = 'dark';c.add('dark')}else{d.style.colorScheme = 'light';c.add('light')}}else if(e){c.add(e|| '')}if(e==='light'||e==='dark')d.style.colorScheme=e}catch(e){}}()</script>
63<div role="region" aria-label="Notifications (F8)" tabindex="-1" style="pointer-events: none;"><ol tabindex="-1" class="fixed top-0 z-[100] flex max-h-screen w-full flex-col-reverse p-4 sm:bottom-0 sm:right-0 sm:top-auto sm:flex-col md:max-w-[420px]"></ol></div><div class="min-h-screen"><header class="fixed top-0 left-0 w-full z-[70] transition-[background-color,box-shadow] duration-300 ease-in-out py-4 px-6 md:px-12 bg-transparent" style="transform: translateZ(0px);"><div class="max-w-7xl mx-auto flex items-center justify-between"><a class="text-xl font-serif font-bold text-foreground" href="/">João<span class="text-cloudflare">Tomé</span></a><nav class="hidden md:flex items-center space-x-8"><a class="nav-link text-foreground font-medium" href="/">Home</a><a class="nav-link" href="/writing">Writing</a><a class="nav-link" href="/#projects">Projects</a><a class="nav-link" href="/#twin">TWiN</a><a class="nav-link" href="/about">About</a><a class="nav-link" href="/#contact">Contact</a><button class="p-2 rounded-lg hover:bg-secondary transition-colors" aria-label="Switch to dark mode"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></button></nav><div class="md:hidden flex items-center gap-2"><button class="p-2 rounded-lg hover:bg-secondary transition-colors text-foreground" aria-label="Switch to dark mode"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-moon"><path d="M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z"></path></svg></button><button class="text-foreground hover:text-cloudflare focus:outline-none" aria-label="Open menu" aria-expanded="false" aria-controls="mobile-navigation"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-menu"><line x1="4" x2="20" y1="12" y2="12"></line><line x1="4" x2="20" y1="6" y2="6"></line><line x1="4" x2="20" y1="18" y2="18"></line></svg></button></div></div></header><main><section id="home" class="relative flex items-center justify-center px-5 sm:px-6 pt-28 pb-12 md:pt-36 md:pb-16 overflow-hidden"><div class="absolute inset-0 -z-10 bg-gradient-to-b from-background via-secondary/20 to-background"></div><div class="max-w-5xl w-full mx-auto grid grid-cols-1 md:grid-cols-[0.7fr_1.3fr] gap-6 md:gap-12 items-center"><div class="transition-opacity duration-500 animate-fade-in flex justify-center md:justify-end"><div class="relative w-36 h-36 sm:w-44 sm:h-44 md:w-60 md:h-60 flex items-center justify-center"><canvas class="absolute inset-0 z-0" width="240" height="240" style="width: 100%; height: 100%;"></canvas><img src="/lovable-uploads/c56bf43d-7e36-430b-a1e2-613d3d7fe9a3.png" alt="João Tomé" class="w-36 h-36 md:w-44 md:h-44 rounded-full border-2 border-white/10 object-cover shadow-lg transition-transform duration-300 ease-out" width="240" height="240" decoding="async" style="transform: scale(1);"></div></div><div class="text-center md:text-left"><div class="transition-opacity duration-500 animate-fade-in-delay-1"><h1 class="text-4xl md:text-5xl lg:text-6xl font-serif font-bold mb-3 text-foreground">João Tomé</h1></div><div class="transition-opacity duration-500 animate-fade-in-delay-2"><div class="mb-5"><h2 class="text-lg md:text-xl font-medium text-muted-foreground">Journalist by training, data editor and storyteller by trade.</h2></div></div><div class="transition-opacity duration-500 animate-fade-in-delay-3"><p class="text-base text-foreground mb-3 leading-relaxed max-w-lg">I turn Internet data into stories, conversations, and tools people can explore.</p><p class="text-sm text-muted-foreground mb-6 leading-relaxed max-w-lg">Now an Internet Data Research Editor at IPinfo, since August 2026. Previously at Cloudflare, from 2021 to July 2026, following almost two decades in Portuguese journalism.</p><div class="flex flex-wrap justify-center md:justify-start gap-2 mb-8"><span class="chip bg-cloudflare/10 text-foreground">Technology</span><span class="chip bg-madeInTech/10 text-foreground">Data Storytelling</span><span class="chip bg-dinheiroVivo/10 text-foreground">Podcasting</span><span class="chip">Journalism</span></div><div class="flex flex-wrap justify-center md:justify-start gap-3 mb-6"><a class="px-5 py-2 rounded-full bg-foreground text-background text-sm font-medium hover:opacity-80 transition-opacity" href="/about">About me</a><a class="px-5 py-2 rounded-full border border-border text-foreground text-sm font-medium hover:bg-secondary transition-colors" href="/writing">All writing</a></div><div class="flex flex-wrap justify-center md:justify-start gap-4"><a href="https://emot.substack.com" target="_blank" rel="noopener noreferrer" class="text-xs text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1.5"><span class="w-1.5 h-1.5 rounded-full bg-orange-400 inline-block"></span>Substack</a><a href="https://x.com/emot" target="_blank" rel="noopener noreferrer" class="text-xs text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1.5"><span class="w-1.5 h-1.5 rounded-full bg-foreground inline-block"></span>X</a><a href="https://www.linkedin.com/in/joaotome1/" target="_blank" rel="noopener noreferrer" class="text-xs text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1.5"><span class="w-1.5 h-1.5 rounded-full bg-blue-600 inline-block"></span>LinkedIn</a><a href="https://blog.cloudflare.com/author/joao-tome/" target="_blank" rel="noopener noreferrer" class="text-xs text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1.5"><span class="w-1.5 h-1.5 rounded-full bg-cloudflare inline-block"></span>Cloudflare Blog</a><a href="https://emot.medium.com" target="_blank" rel="noopener noreferrer" class="text-xs text-muted-foreground hover:text-foreground transition-colors flex items-center gap-1.5"><span class="w-1.5 h-1.5 rounded-full bg-green-500 inline-block"></span>Medium</a></div></div></div></div></section><section id="writing" class="py-14 sm:py-20 px-5 sm:px-6"><div class="max-w-3xl mx-auto"><div class="transition-opacity duration-500 opacity-0"><div class="mb-10 flex flex-col sm:flex-row sm:items-end sm:justify-between gap-3"><div><h2 class="text-3xl font-serif font-bold text-foreground mb-1">Latest Writing</h2><p class="text-sm text-muted-foreground">From <a href="https://blog.cloudflare.com/author/joao-tome/" target="_blank" rel="noopener noreferrer" class="hover:text-cloudflare underline underline-offset-4 transition-colors">Cloudflare Blog</a>, <a href="https://emot.substack.com" target="_blank" rel="noopener noreferrer" class="hover:text-foreground underline underline-offset-4 transition-colors">Substack</a>, <a href="https://emot.medium.com" target="_blank" rel="noopener noreferrer" class="hover:text-foreground underline underline-offset-4 transition-colors">Medium</a>, and a <a href="https://joao-tome.weebly.com/artigosrecentes.html" target="_blank" rel="noopener noreferrer" class="hover:text-foreground underline underline-offset-4 transition-colors">Portuguese journalism archive</a>.</p></div><a class="text-sm text-muted-foreground hover:text-foreground transition-colors whitespace-nowrap flex items-center gap-1" href="/writing">Full archive <svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></div></div><div class="rounded-2xl border border-border/70 bg-secondary/35 dark:bg-zinc-900 dark:border-zinc-700/70 p-2 sm:p-4"><div class="divide-y divide-border/70"><a href="https://emot.substack.com/p/how-the-internet-got-its-addresses" target="_blank" rel="noopener noreferrer" class="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 py-4 px-2 sm:px-3 group rounded-lg hover:bg-background/60 dark:hover:bg-zinc-800/80 transition-colors"><div class="flex-1 min-w-0"><span class="text-foreground group-hover:text-cloudflare transition-colors text-sm sm:text-base leading-snug">
63How the Internet got 32-bit addresses, as explained by Vint Cerf</span></div><div class="flex items-center gap-2 shrink-0 pt-0.5 sm:pt-0"><span class="hidden sm:inline"><span class="text-xs px-2 py-0.5 rounded-full font-medium shrink-0 bg-orange-500/10 text-orange-500">Substack</span></span><span class="text-muted-foreground text-sm whitespace-nowrap">Sep 2026</span><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity hidden sm:inline"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div></a><a href="https://emot.substack.com/p/silo-and-the-impossible-dream-of" target="_blank" rel="noopener noreferrer" class="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 py-4 px-2 sm:px-3 group rounded-lg hover:bg-background/60 dark:hover:bg-zinc-800/80 transition-colors"><div class="flex-1 min-w-0"><span class="text-foreground group-hover:text-cloudflare transition-colors text-sm sm:text-base leading-snug">Silo and the impossible “dream” of programming humanity</span></div><div class="flex items-center gap-2 shrink-0 pt-0.5 sm:pt-0"><span class="hidden sm:inline"><span class="text-xs px-2 py-0.5 rounded-full font-medium shrink-0 bg-orange-500/10 text-orange-500">Substack</span></span><span class="text-muted-foreground text-sm whitespace-nowrap">Sep 2026</span><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity hidden sm:inline"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div></a><a href="https://emot.substack.com/p/what-meos-outage-looked-like-from" target="_blank" rel="noopener noreferrer" class="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 py-4 px-2 sm:px-3 group rounded-lg hover:bg-background/60 dark:hover:bg-zinc-800/80 transition-colors"><div class="flex-1 min-w-0"><span class="text-foreground group-hover:text-cloudflare transition-colors text-sm sm:text-base leading-snug">What MEO’s outage looked like from the routing table</span></div><div class="flex items-center gap-2 shrink-0 pt-0.5 sm:pt-0"><span class="hidden sm:inline"><span class="text-xs px-2 py-0.5 rounded-full font-medium shrink-0 bg-orange-500/10 text-orange-500">Substack</span></span><span class="text-muted-foreground text-sm whitespace-nowrap">Sep 2026</span><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity hidden sm:inline"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div></a><a href="https://emot.substack.com/p/we-really-are-all-going-to-die-just" target="_blank" rel="noopener noreferrer" class="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 py-4 px-2 sm:px-3 group rounded-lg hover:bg-background/60 dark:hover:bg-zinc-800/80 transition-colors"><div class="flex-1 min-w-0"><span class="text-foreground group-hover:text-cloudflare transition-colors text-sm sm:text-base leading-snug">We Really Are All Going to Die (Just Not Necessarily Because of AI)</span></div><div class="flex items-center gap-2 shrink-0 pt-0.5 sm:pt-0"><span class="hidden sm:inline"><span class="text-xs px-2 py-0.5 rounded-full font-medium shrink-0 bg-orange-500/10 text-orange-500">Substack</span></span><span class="text-muted-foreground text-sm whitespace-nowrap">Sep 2026</span><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity hidden sm:inline"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div></a><a href="https://emot.substack.com/p/just-a-library" target="_blank" rel="noopener noreferrer" class="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 py-4 px-2 sm:px-3 group rounded-lg hover:bg-background/60 dark:hover:bg-zinc-800/80 transition-colors"><div class="flex-1 min-w-0"><span class="text-foreground group-hover:text-cloudflare transition-colors text-sm sm:text-base leading-snug">“just” a library</span></div><div class="flex items-center gap-2 shrink-0 pt-0.5 sm:pt-0"><span class="hidden sm:inline"><span class="text-xs px-2 py-0.5 rounded-full font-medium shrink-0 bg-orange-500/10 text-orange-500">Substack</span></span><span class="text-muted-foreground text-sm whitespace-nowrap">Sep 2026</span><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity hidden sm:inline"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div></a><a href="https://emot.substack.com/p/who-tells-the-billionaire-hes-wrong" target="_blank" rel="noopener noreferrer" class="flex flex-col sm:flex-row items-start sm:items-center justify-between gap-3 py-4 px-2 sm:px-3 group rounded-lg hover:bg-background/60 dark:hover:bg-zinc-800/80 transition-colors"><div class="flex-1 min-w-0"><span class="text-foreground group-hover:text-cloudflare transition-colors text-sm sm:text-base leading-snug">Who's left to tell the billionaire he's wrong?</span></div><div class="flex items-center gap-2 shrink-0 pt-0.5 sm:pt-0"><span class="hidden sm:inline"><span class="text-xs px-2 py-0.5 rounded-full font-medium shrink-0 bg-orange-500/10 text-orange-500">Substack</span></span><span class="text-muted-foreground text-sm whitespace-nowrap">Sep 2026</span><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity hidden sm:inline"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div></a></div></div><div class="mt-6 flex items-center justify-between"><button class="inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground transition-colors">Show more <svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down"><path d="m6 9 6 6 6-6"></path></svg></button><a class="text-sm text-cloudflare hover:underline underline-offset-4" href="/writing">View full archive →</a></div><div class="mt-16"><div class="transition-opacity duration-500 opacity-0"><div class="mb-7"><p class="mb-2 text-xs font-semibold uppercase tracking-[0.18em] text-cloudflare">From the Cloudflare Blog</p><h3 class="mb-1 font-serif text-2xl font-bold text-foreground">Popular writing</h3><p class="text-sm leading-relaxed text-muted-foreground">A top five selected from my Cloudflare Blog writing, including Offline Celebrations, Total Eclipse of the Internet and Typo Traps. Show more for the extended list.</p></div></div><div class="rounded-2xl border border-border/70 bg-secondary/35 p-2 dark:bg-zinc-900 dark:border-zinc-700/70 sm:p-4"><div class="divide-y divide-border/70"><a href="https://blog.cloudflare.com/offline-celebrations-how-christmas-nye-and-lunar-new-year-festivities-shape-online-behavior/" target="_blank" rel="noopener noreferrer" class="group flex flex-col sm:flex-row items-start justify-between gap-3 rounded-lg px-2 py-4 transition-colors hover:bg-background/60 dark:hover:bg-zinc-800/80 sm:items-center sm:px-3"><div class="flex-1 min-w-0"><span class="text-sm leading-snug text-foreground transition-colors group-hover:text-cloudflare sm:text-base">Offline celebrations: how Christmas, NYE, and Lunar New Year festivities shape online behavior</span></div><div class="flex shrink-0 items-center gap-2 pt-0.5 sm:pt-0"><span class="hidden sm:inline"><span class="text-xs px-2 py-0.5 rounded-full font-medium shrink-0 bg-cloudflare/10 text-cloudflare">Cloudflare</span></span><span class="whitespace-nowrap text-sm text-muted-foreground">Feb 2025</span><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link hidden text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100 sm:inline"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div></a><a href="https://blog.cloudflare.com/total-eclipse-internet-traffic-impacts-mexico-us-canada/" target="_blank" rel="noopener noreferrer" class="group flex flex-col sm:flex-row items-start justify-between gap-3 rounded-lg px-2 py-4 transition-colors hover:bg-background/60 dark:hover:bg-zinc-800/80 sm:items-center sm:px-3"><div class="flex-1 min-w-0"><span class="text-sm leading-snug text-foreground transition-colors group-hover:text-cloudflare sm:text-base">Total eclipse of the Internet: traffic impacts in Mexico, the US, and Canada</span></div><div class="flex shrink-0 items-center gap-2 pt-0.5 sm:pt-0"><span class="hidden sm:inline"><span class="text-xs px-2 py-0.5 rounded-full font-medium shrink-0 bg-cloudflare/10 text-cloudflare">Cloudflare</span></span><span class="whitespace-nowrap text-sm text-muted-foreground">Apr 2024</span><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link hidden text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100 sm:inline"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div></a><a href="https://blog.cloudflare.com/typo-traps-analyzing-traffic-to-exmaple-com-or-is-it-example-com/" target="_blank" rel="noopener noreferrer" class="group flex flex-col sm:flex-row items-start justify-between gap-3 rounded-lg px-2 py-4 transition-colors hover:bg-background/60 dark:hover:bg-zinc-800/80 sm:items-center sm:px-3"><div class="flex-1 min-w-0"><span class="text-sm leading-snug text-foreground transition-colors group-hover:text-cloudflare sm:text-base">Typo traps: analyzing traffic to exmaple.com (or is it example.com?)</span></div><div class="flex shrink-0 items-center gap-2 pt-0.5 sm:pt-0"><span class="hidden sm:inline"><span class="text-xs px-2 py-0.5 rounded-full font-medium shrink-0 bg-cloudflare/10 text-cloudflare">Cloudflare</span></span><span class="whitespace-nowrap text-sm text-muted-foreground">Sep 2023</span><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link hidden text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100 sm:inline"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div></a><a href="https://blog.cloudflare.com/crawlers-click-ai-bots-training/" target="_blank" rel="noopener noreferrer" class="group flex flex-col sm:flex-row items-start justify-between gap-3 rounded-lg px-2 py-4 transition-colors hover:bg-background/60 dark:hover:bg-zinc-800/80 sm:items-center sm:px-3"><div class="flex-1 min-w-0"><span class="text-sm leading-snug text-foreground transition-colors group-hover:text-cloudflare sm:text-base">The crawl-to-click gap: Cloudflare data on AI bots, training, and referrals</span></div><div class="flex shrink-0 items-center gap-2 pt-0.5 sm:pt-0"><span class="hidden sm:inline"><span class="text-xs px-2 py-0.5 rounded-full font-medium shrink-0 bg-cloudflare/10 text-cloudflare">Cloudflare</span></span><span class="whitespace-nowrap text-sm text-muted-foreground">Aug 2025</span><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link hidden text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100 sm:inline"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div></a><a href="https://blog.cloudflare.com/from-googlebot-to-gptbot-whos-crawling-your-site-in-2025/" target="_blank" rel="noopener noreferrer" class="group flex flex-col sm:flex-row items-start justify-between gap-3 rounded-lg px-2 py-4 transition-colors hover:bg-background/60 dark:hover:bg-zinc-800/80 sm:items-center sm:px-3"><div class="flex-1 min-w-0"><span class="text-sm leading-snug text-foreground transition-colors group-hover:text-cloudflare sm:text-base">From Googlebot to GPTBot: who's crawling your site in 2025</span></div><div class="flex shrink-0 items-center gap-2 pt-0.5 sm:pt-0"><span class="hidden sm:inline"><span class="text-xs px-2 py-0.5 rounded-full font-medium shrink-0 bg-cloudflare/10 text-cloudflare">Cloudflare</span></span><span class="whitespace-nowrap text-sm text-muted-foreground">Jul 2025</span><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link hidden text-muted-foreground opacity-0 transition-opacity group-hover:opacity-100 sm:inline"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div></a></div></div><div class="mt-6 flex items-center justify-between"><button type="button" class="inline-flex items-center gap-1.5 text-sm text-muted-foreground transition-colors hover:text-foreground">Show more <svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chevron-down"><path d="m6 9 6 6 6-6"></path></svg></button><a class="text-sm text-cloudflare hover:underline underline-offset-4" href="/writing">Browse all writing →</a></div></div></div></section><section id="projects" class="py-14 sm:py-20 px-5 sm:px-6"><div class="max-w-5xl mx-auto"><div class="transition-opacity duration-500 opacity-0"><div class="mb-10"><h2 class="text-3xl font-serif font-bold text-foreground mb-2">Projects</h2><p class="text-sm text-muted-foreground mb-6">Selected projects across podcasts, data storytelling, editorial products, and experiments.</p><div class="flex gap-2 flex-wrap"><button aria-pressed="true" class="px-4 min-h-11 rounded-full text-sm font-medium transition-colors bg-foreground text-background">Selected</button><button aria-pressed="false" class="px-4 min-h-11 rounded-full text-sm font-medium transition-colors bg-secondary text-muted-foreground hover:text-foreground">All</button><button aria-pressed="false" class="px-4 min-h-11 rounded-full text-sm font-medium transition-colors bg-secondary text-muted-foreground hover:text-foreground">Podcasts</button><button aria-pressed="false" class="px-4 min-h-11 rounded-full text
63-sm font-medium transition-colors bg-secondary text-muted-foreground hover:text-foreground">Personal</button><button aria-pressed="false" class="px-4 min-h-11 rounded-full text-sm font-medium transition-colors bg-secondary text-muted-foreground hover:text-foreground">At Cloudflare</button></div></div></div><div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"><a href="https://ourfuturestories.eu/" target="_blank" rel="noopener noreferrer" class="group flex flex-col h-full p-5 rounded-xl border border-border bg-background dark:bg-card hover:border-cloudflare/40 transition-colors"><div class="flex items-start justify-between gap-2 mb-2"><h3 class="font-semibold text-foreground text-sm group-hover:text-cloudflare transition-colors leading-snug">Future Stories</h3><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground shrink-0 mt-0.5 opacity-0 group-hover:opacity-100 transition-opacity"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div><p class="text-xs text-muted-foreground leading-relaxed flex-1 mb-3">An independent publication and podcast exploring systems, technology, science, infrastructure, and institutions, with Europe as a recurring lens.</p><div class="flex flex-wrap gap-1.5"><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Publication</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Podcast</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Internet &amp; Society</span></div></a><a href="https://thisweekinnet.com" target="_blank" rel="noopener noreferrer" class="group flex flex-col h-full p-5 rounded-xl border border-border bg-background dark:bg-card hover:border-cloudflare/40 transition-colors"><div class="flex items-start justify-between gap-2 mb-2"><h3 class="font-semibold text-foreground text-sm group-hover:text-cloudflare transition-colors leading-snug">This Week in NET</h3><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground shrink-0 mt-0.5 opacity-0 group-hover:opacity-100 transition-opacity"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div><p class="text-xs text-muted-foreground leading-relaxed flex-1 mb-3">Cloudflare's weekly show on Internet trends, security, and technology. 200+ episodes, produced and hosted from 2022 to 2026.</p><div class="flex flex-wrap gap-1.5"><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Podcast</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Editorial</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Cloudflare</span></div></a><a href="https://www.podchaser.com/podcasts/dinheiro-vivo-made-in-tech-pod-1581233" target="_blank" rel="noopener noreferrer" class="group flex flex-col h-full p-5 rounded-xl border border-border bg-background dark:bg-card hover:border-cloudflare/40 transition-colors"><div class="flex items-start justify-between gap-2 mb-2"><h3 class="font-semibold text-foreground text-sm group-hover:text-cloudflare transition-colors leading-snug">Made in Tech</h3><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground shrink-0 mt-0.5 opacity-0 group-hover:opacity-100 transition-opacity"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div><p class="text-xs text-muted-foreground leading-relaxed flex-1 mb-3">Portuguese-language tech podcast covering innovation, careers, and the Internet. Co-hosted with Dinheiro Vivo, reaching thousands of listeners in Portugal.</p><div class="flex flex-wrap gap-1.5"><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Podcast</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Portuguese</span></div></a><a href="https://eclipse2026.joaotome.com/" target="_blank" rel="noopener noreferrer" class="group flex flex-col h-full p-5 rounded-xl border border-border bg-background dark:bg-card hover:border-cloudflare/40 transition-colors"><div class="flex items-start justify-between gap-2 mb-2"><h3 class="font-semibold text-foreground text-sm group-hover:text-cloudflare transition-colors leading-snug">2026 Eclipse Internet Traffic Tracker</h3><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground shrink-0 mt-0.5 opacity-0 group-hover:opacity-100 transition-opacity"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div><p class="text-xs text-muted-foreground leading-relaxed flex-1 mb-3">An interactive analysis of Internet traffic during the 12 August 2026 total solar eclipse, using country and regional Cloudflare Radar data.</p><div class="flex flex-wrap gap-1.5"><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Data Storytelling</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Cloudflare Radar</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Internet Traffic</span></div></a><a href="https://temperatures-trends.joaotome.com/" target="_blank" rel="noopener noreferrer" class="group flex flex-col h-full p-5 rounded-xl border border-border bg-background dark:bg-card hover:border-cloudflare/40 transition-colors"><div class="flex items-start justify-between gap-2 mb-2"><h3 class="font-semibold text-foreground text-sm group-hover:text-cloudflare transition-colors leading-snug">Are summer nights getting warmer?</h3><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground shrink-0 mt-0.5 opacity-0 group-hover:opacity-100 transition-opacity"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div><p class="text-xs text-muted-foreground leading-relaxed flex-1 mb-3">A city-by-city comparison of May–August 2026 temperatures, overnight minimums, and historical baselines across Europe and North America.</p><div class="flex flex-wrap gap-1.5"><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Data Storytelling</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Climate</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Interactive Dashboard</span></div></a><a href="https://joaotome.com/europe-online-social-ties" target="_blank" rel="noopener noreferrer" class="group flex flex-col h-full p-5 rounded-xl border border-border bg-background dark:bg-card hover:border-cloudflare/40 transition-colors"><div class="flex items-start justify-between gap-2 mb-2"><h3 class="font-semibold text-foreground text-sm group-hover:text-cloudflare transition-colors leading-snug">Europe online, Europe together?</h3><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground shrink-0 mt-0.5 opacity-0 group-hover:opacity-100 transition-opacity"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div><p class="text-xs text-muted-foreground leading-relaxed flex-1 mb-3">A historical comparison of online social-network use and weekly social contact by age, using Eurostat and European Social Survey data.</p><div class="flex flex-wrap gap-1.5"><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Data Storytelling</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Social Research</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Interactive Dashboard</span></div></a><a href="https://worldcup-2026-dashboard.pages.dev" target="_blank" rel="noopener noreferrer" class="group flex flex-col h-full p-5 rounded-xl border border-border bg-background dark:bg-card hover:border-cloudflare/40 transition-colors"><div class="flex items-start justify-between gap-2 mb-2"><h3 class="font-semibold text-foreground text-sm group-hover:text-cloudflare transition-colors leading-snug">World Cup 2026 Dashboard</h3><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground shrink-0 mt-0.5 opacity-0 group-hover:opacity-100 transition-opacity"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div><p class="text-xs text-muted-foreground leading-relaxed flex-1 mb-3">How the 2026 World Cup moved the Internet — real-time traffic shifts, country-by-country breakdowns, and match-day patterns.</p><div class="flex flex-wrap gap-1.5"><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Data Storytelling</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Internet Trends</span></div></a><a href="https://lifefocus.joaotome.com/" target="_blank" rel="noopener noreferrer" class="group flex flex-col h-full p-5 rounded-xl border border-border bg-background dark:bg-card hover:border-cloudflare/40 transition-colors"><div class="flex items-start justify-between gap-2 mb-2"><h3 class="font-semibold text-foreground text-sm group-hover:text-cloudflare transition-colors leading-snug">Focus &amp; Life</h3><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground shrink-0 mt-0.5 opacity-0 group-hover:opacity-100 transition-opacity"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div><p class="text-xs text-muted-foreground leading-relaxed flex-1 mb-3">A source-aware knowledge library of quotations, ideas and historical moments across science, technology, literature, philosophy, art and music.</p><div class="flex flex-wrap gap-1.5"><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Knowledge Library</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Culture</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">History</span></div></a><a href="https://timecapsule.thebookoflives.org" target="_blank" rel="noopener noreferrer" class="group flex flex-col h-full p-5 rounded-xl border border-border bg-background dark:bg-card hover:border-cloudflare/40 transition-colors"><div class="flex items-start justify-between gap-2 mb-2"><h3 class="font-semibold text-foreground text-sm group-hover:text-cloudflare transition-colors leading-snug">Time Capsule</h3><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground shrink-0 mt-0.5 opacity-0 group-hover:opacity-100 transition-opacity"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div><p class="text-xs text-muted-foreground leading-relaxed flex-1 mb-3">A site for writing messages meant for the future — exploring memory, privacy, and delayed communication.</p><div class="flex flex-wrap gap-1.5"><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Creative</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Editorial</span></div></a><a href="https://casamagia.org" target="_blank" rel="noopener noreferrer" class="group flex flex-col h-full p-5 rounded-xl border border-border bg-background dark:bg-card hover:border-cloudflare/40 transition-colors"><div class="flex items-start justify-between gap-2 mb-2"><h3 class="font-semibold text-foreground text-sm group-hover:text-cloudflare transition-colors leading-snug">Casa Magia</h3><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground shrink-0 mt-0.5 opacity-0 group-hover:opacity-100 transition-opacity"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div><p class="text-xs text-muted-foreground leading-relaxed flex-1 mb-3">A Harry Potter-themed site of book covers and games — a creative project made for my kid.</p><div class="flex flex-wrap gap-1.5"><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Creative</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Family</span></div></a><a href="https://dailybrief.joaotome.com" target="_blank" rel="noopener noreferrer" class="group flex flex-col h-full p-5 rounded-xl border border-border bg-background dark:bg-card hover:border-cloudflare/40 transition-colors"><div class="flex items-start justify-between gap-2 mb-2"><h3 class="font-semibold text-foreground text-sm group-hover:text-cloudflare transition-colors leading-snug">Daily Brief</h3><svg xmlns="http://www.w3.org/2000/svg" width="13" height="13" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link text-muted-foreground shrink-0 mt-0.5 opacity-0 group-hover:opacity-100 transition-opacity"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></div><p class="text-xs text-muted-foreground leading-relaxed flex-1 mb-3">A daily briefing of ideas, stories, and useful links about the Internet, technology, and the world.</p><div class="flex flex-wrap gap-1.5"><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Briefing</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Editorial</span><span class="text-xs px-2 py-0.5 rounded-full bg-secondary text-muted-foreground">Internet</span></div></a></div><button type="button" class="mt-5 min-h-11 text-sm text-muted-foreground hover:text-foreground">See all projects (15) →</button></div></section><section id="twin" class="py-20 px-6"><div class="max-w-5xl mx-auto"><div class="transition-opacity duration-500 opacity-0"><div class="mb-10 text-center"><h2 class="section-title mx-auto group"><span>This Week in NET</span><a href="#twin" class="inline-flex items-center ml-2 text-muted-foreground
63/0 hover:text-muted-foreground/60 transition-colors duration-200 group-hover:text-muted-foreground/40 align-middle" title="Copy link to section" aria-label="Copy link to this section"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link2"><path d="M9 17H7A5 5 0 0 1 7 7h2"></path><path d="M15 7h2a5 5 0 1 1 0 10h-2"></path><line x1="8" x2="16" y1="12" y2="12"></line></svg></a></h2><p class="text-muted-foreground">Cloudflare's weekly show on Internet trends, AI, security, and technology, produced and hosted from 2022 to 2026. <a href="https://thisweekinnet.com" target="_blank" rel="noopener noreferrer" class="underline underline-offset-4 hover:text-foreground transition-colors">thisweekinnet.com</a></p></div></div><div class="mb-8"><h3 class="text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4">Selected conversations</h3><div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"><a href="https://www.youtube.com/watch?v=I5m27tO78Ek" target="_blank" rel="noopener noreferrer" class="group block rounded-xl overflow-hidden bg-secondary/40 dark:bg-secondary/20 hover:bg-secondary/60 dark:hover:bg-secondary/30 transition-all duration-200 hover:scale-[1.02]"><div class="relative aspect-video overflow-hidden"><img src="https://i.ytimg.com/vi/I5m27tO78Ek/mqdefault.jpg" srcset="https://i.ytimg.com/vi/I5m27tO78Ek/mqdefault.jpg 320w, https://i.ytimg.com/vi/I5m27tO78Ek/maxresdefault.jpg 1280w" sizes="(min-width: 1024px) 30vw, 100vw" alt="Cloudflare Turns 15: The Origin Story with Michelle Zatlyn &amp; Matthew Prince" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105" width="480" height="270" loading="lazy" decoding="async"></div><div class="p-3"><h3 class="text-sm font-medium leading-snug text-foreground group-hover:text-cloudflare transition-colors line-clamp-2">Cloudflare Turns 15: The Origin Story with Michelle Zatlyn &amp; Matthew Prince</h3><div class="mt-1.5 flex items-center justify-between text-xs text-muted-foreground"><span>Sep 22, 2025</span><span>7.3K views</span></div></div></a><a href="https://www.youtube.com/watch?v=AF3Rr4MENCo" target="_blank" rel="noopener noreferrer" class="group block rounded-xl overflow-hidden bg-secondary/40 dark:bg-secondary/20 hover:bg-secondary/60 dark:hover:bg-secondary/30 transition-all duration-200 hover:scale-[1.02]"><div class="relative aspect-video overflow-hidden"><img src="https://i.ytimg.com/vi/AF3Rr4MENCo/hqdefault.jpg" alt="Rebuilding Next.js with AI in One Week: 4x Faster Builds (vinext Explained)" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105" width="480" height="270" loading="lazy" decoding="async"></div><div class="p-3"><h3 class="text-sm font-medium leading-snug text-foreground group-hover:text-cloudflare transition-colors line-clamp-2">Rebuilding Next.js with AI in One Week: 4x Faster Builds (vinext Explained)</h3><div class="mt-1.5 flex items-center justify-between text-xs text-muted-foreground"><span>Feb 27, 2026</span><span>3.5K views</span></div></div></a><a href="https://www.youtube.com/watch?v=bIxGdrfB-_E" target="_blank" rel="noopener noreferrer" class="group block rounded-xl overflow-hidden bg-secondary/40 dark:bg-secondary/20 hover:bg-secondary/60 dark:hover:bg-secondary/30 transition-all duration-200 hover:scale-[1.02]"><div class="relative aspect-video overflow-hidden"><img src="https://i.ytimg.com/vi/bIxGdrfB-_E/mqdefault.jpg" srcset="https://i.ytimg.com/vi/bIxGdrfB-_E/mqdefault.jpg 320w, https://i.ytimg.com/vi/bIxGdrfB-_E/maxresdefault.jpg 1280w" sizes="(min-width: 1024px) 30vw, 100vw" alt="Why the Internet Works (Most of the Time): A Conversation with Tom Strickx" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105" width="480" height="270" loading="lazy" decoding="async"></div><div class="p-3"><h3 class="text-sm font-medium leading-snug text-foreground group-hover:text-cloudflare transition-colors line-clamp-2">Why the Internet Works (Most of the Time): A Conversation with Tom Strickx</h3><div class="mt-1.5 flex items-center justify-between text-xs text-muted-foreground"><span>Nov 7, 2025</span><span>6.2K views</span></div></div></a><a href="https://www.youtube.com/watch?v=9ygZ4vhhDbw" target="_blank" rel="noopener noreferrer" class="group block rounded-xl overflow-hidden bg-secondary/40 dark:bg-secondary/20 hover:bg-secondary/60 dark:hover:bg-secondary/30 transition-all duration-200 hover:scale-[1.02]"><div class="relative aspect-video overflow-hidden"><img src="https://i.ytimg.com/vi/9ygZ4vhhDbw/hqdefault.jpg" alt="AI, 
63Creators &amp; Agentic Commerce — A Conversation with Cloudflare CSO Stephanie Cohen" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105" width="480" height="270" loading="lazy" decoding="async"></div><div class="p-3"><h3 class="text-sm font-medium leading-snug text-foreground group-hover:text-cloudflare transition-colors line-clamp-2">AI, Creators &amp; Agentic Commerce — A Conversation with Cloudflare CSO Stephanie Cohen</h3><div class="mt-1.5 flex items-center justify-between text-xs text-muted-foreground"><span>Dec 4, 2025</span><span>3.4K views</span></div></div></a><a href="https://www.youtube.com/watch?v=vWjgn7WpQQs" target="_blank" rel="noopener noreferrer" class="group block rounded-xl overflow-hidden bg-secondary/40 dark:bg-secondary/20 hover:bg-secondary/60 dark:hover:bg-secondary/30 transition-all duration-200 hover:scale-[1.02]"><div class="relative aspect-video overflow-hidden"><img src="https://i.ytimg.com/vi/vWjgn7WpQQs/mqdefault.jpg" srcset="https://i.ytimg.com/vi/vWjgn7WpQQs/mqdefault.jpg 320w, https://i.ytimg.com/vi/vWjgn7WpQQs/maxresdefault.jpg 1280w" sizes="(min-width: 1024px) 30vw, 100vw" alt="A bit of Cloudflare history and future with John Graham-Cumming" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105" width="480" height="270" loading="lazy" decoding="async"></div><div class="p-3"><h3 class="text-sm font-medium leading-snug text-foreground group-hover:text-cloudflare transition-colors line-clamp-2">A bit of Cloudflare history and future with John Graham-Cumming</h3><div class="mt-1.5 flex items-center justify-between text-xs text-muted-foreground"><span>Jul 25, 2025</span><span>1.6K views</span></div></div></a><a href="https://www.youtube.com/watch?v=w76C5d5jBdM" target="_blank" rel="noopener noreferrer" class="group block rounded-xl overflow-hidden bg-secondary/40 dark:bg-secondary/20 hover:bg-secondary/60 dark:hover:bg-secondary/30 transition-all duration-200 hover:scale-[1.02]"><div class="relative aspect-video overflow-hidden"><img src="https://i.ytimg.com/vi/w76C5d5jBdM/mqdefault.jpg" srcset="https://i.ytimg.com/vi/w76C5d5jBdM/mqdefault.jpg 320w, https://i.ytimg.com/vi/w76C5d5jBdM/maxresdefault.jpg 1280w" sizes="(min-width: 1024px) 30vw, 100vw" alt="The Internet Now &amp; Then with Internet Pioneer Geoff Huston" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105" width="480" height="270" loading="lazy" decoding="async"></div><div class="p-3"><h3 class="text-sm font-medium leading-snug text-foreground group-hover:text-cloudflare transition-colors line-clamp-2">The Internet Now &amp; Then with Internet Pioneer Geoff Huston</h3><div class="mt-1.5 flex items-center justify-between text-xs text-muted-foreground"><span>May 16, 2025</span><span>1.8K views</span></div></div></a></div></div><div><h3 class="text-xs font-semibold uppercase tracking-widest text-muted-foreground mb-4">Most Popular</h3><div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-4"><a href="https://www.youtube.com/watch?v=KzjQT_3_wPo" target="_blank" rel="noopener noreferrer" class="group block rounded-xl overflow-hidden bg-secondary/40 dark:bg-secondary/20 hover:bg-secondary/60 dark:hover:bg-secondary/30 transition-all duration-200 hover:scale-[1.02]"><div class="relative aspect-video overflow-hidden"><img src="https://i.ytimg.com/vi/KzjQT_3_wPo/mqdefault.jpg" srcset="https://i.ytimg.com/vi/KzjQT_3_wPo/mqdefault.jpg 320w, https://i.ytimg.com/vi/KzjQT_3_wPo/maxresdefault.jpg 1280w" sizes="(min-width: 1024px) 30vw, 100vw" alt="Cita James on HR, Growth, and Building People Teams at Cloudflare" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105" width="480" height="270" loading="lazy" decoding="async"></div><div class="p-3"><h3 class="text-sm font-medium leading-snug text-foreground group-hover:text-cloudflare transition-colors line-clamp-2">Cita James on HR, Growth, and Building People Teams at Cloudflare</h3><div class="mt-1.5 flex items-center justify-between text-xs text-muted-foreground"><span>May 6, 2026</span><span>11.5K views</span></div></div></a><a href="https://www.youtube.com/watch?v=61XNvLRjixg" target="_blank" rel="noopener noreferrer" class="group block rounded-xl overflow-hidden bg-secondary/40 dark:bg-secondary/20 hover:bg-secondary/60 dark:hover:bg-secondary/30 transition-all duration-200 hover:scale-[1.02]"><div class="relative aspect-video overflow-hidden"><img src="https://i.ytimg.com/vi/61XNvLRjixg/mqdefault.jpg" srcset="https://i.ytimg.com/vi/61XNvLRjixg/mqdefault.jpg 320w, https://i.ytimg.com/vi/61XNvLRjixg/maxresdefault.jpg 1280w" sizes="(min-width: 1024px) 30vw, 100vw" alt="Sales Is a Math Problem | Vinti Batiste, VP of Enterprise Sales at Cloudflare" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105" width="480" height="270" loading="lazy" decoding="async"></div><div class="p-3"><h3 class="text-sm font-medium leading-snug text-foreground group-hover:text-cloudflare transition-colors line-clamp-2">Sales Is a Math Problem | Vinti Batiste, VP of Enterprise Sales at Cloudflare</h3><div class="mt-1.5 flex items-center justify-between text-xs text-muted-foreground"><span>Apr 29, 2026</span><span>6.4K views</span></div></div></a><a href="https://www.youtube.com/watch?v=mYLvRaMmfho" target="_blank" rel="noopener noreferrer" class="group block rounded-xl overflow-hidden bg-secondary/40 dark:bg-secondary/20 hover:bg-secondary/60 dark:hover:bg-secondary/30 transition-all duration-200 hover:scale-[1.02]"><div class="relative aspect-video overflow-hidden"><img src="https://i.ytimg.com/vi/mYLvRaMmfho/mqdefault.jpg" srcset="https://i.ytimg.com/vi/mYLvRaMmfho/mqdefault.jpg 320w, https://i.ytimg.com/vi/mYLvRaMmfho/maxresdefault.jpg 1280w" sizes="(min-width: 1024px) 30vw, 100vw" alt="Chaos Using Waves at Cloudflare’s Lisbon Office" class="w-full h-full object-cover transition-transform duration-300 group-hover:scale-105" width="480" height="270" loading="lazy" decoding="async"></div><div class="p-3"><h3 class="text-sm font-medium leading-snug text-foreground group-hover:text-cloudflare transition-colors line-clamp-2">Chaos Using Waves at Cloudflare’s Lisbon Office</h3><div class="mt-1.5 flex items-center justify-between text-xs text-muted-foreground"><span>Mar 17, 2025</span><span>6.1K views</span></div></div></a></div><div class="mt-5 text-center"><button type="button" aria-expanded="false" class="inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground transition-colors">Show 12 more<span aria-hidden="true">↓</span></button></div></div><div class="mt-8 text-center"><a href="https://thisweekinnet.com" target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground transition-colors">Watch all episodes at thisweekinnet.com<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></div></div></section><section id="experience" class="py-20 px-6 bg-background dark:bg-background"><div class="max-w-5xl mx-auto"><div class="transition-opacity duration-500 opacity-0"><div class="mb-12 text-center"><h2 class="section-title mx-auto group"><span>Professional Journey</span><a href="#experience" class="inline-flex items-center ml-2 text-muted-foreground
63/0 hover:text-muted-foreground/60 transition-colors duration-200 group-hover:text-muted-foreground/40 align-middle" title="Copy link to section" aria-label="Copy link to this section"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link2"><path d="M9 17H7A5 5 0 0 1 7 7h2"></path><path d="M15 7h2a5 5 0 1 1 0 10h-2"></path><line x1="8" x2="16" y1="12" y2="12"></line></svg></a></h2><a href="https://www.linkedin.com/in/joaotome1/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center text-cloudflare hover:underline mt-3">View full profile on LinkedIn<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link ml-1"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></div></div><div class="space-y-8"><div class="timeline-item"><div class="timeline-dot"></div><div class="glass-card p-6"><div class="flex flex-col md:flex-row md:items-center gap-4 mb-4"><img src="/assets/ipinfo-logo-DUB5sEZk.png" alt="IPinfo logo" class="w-12 h-12 object-contain rounded-md bg-white p-1" width="48" height="48" decoding="async"><div class="flex-1"><h3 class="font-semibold text-xl text-foreground">Internet Data Research Editor</h3><div class="flex items-center text-muted-foreground mb-1"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-briefcase mr-2"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>IPinfo</span></div><div class="flex items-center text-muted-foreground text-sm"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar mr-2"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><span>Aug 2026 - Present</span></div></div></div><div class="text-muted-foreground">Researching and telling stories about how the Internet is changing through IPinfo's data, combining data analysis, visualization, and storytelling across IP geolocation, network infrastructure, privacy, security, and other Internet datasets.</div></div></div><div class="timeline-item"><div class="timeline-dot"></div><div class="glass-card p-6"><div class="flex flex-col md:flex-row md:items-center gap-4 mb-4"><img src="data:image/svg+xml,%3c?xml%20version='1.0'%20encoding='utf-8'?%3e%3c!--%20Generator:%20Adobe%20Illustrator%2023.0.1,%20SVG%20Export%20Plug-In%20.%20SVG%20Version:%206.00%20Build%200)%20--%3e%3csvg%20version='1.1'%20id='Layer_1'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:xlink='http://www.w3.org/1999/xlink'%20x='0px'%20y='0px'%20viewBox='0%200%201000%201000'%20style='enable-background:new%200%200%201000%201000;'%20xml:space='preserve'%3e%3cstyle%20type='text/css'%3e%20.st0{fill:%23414142;}%20.st1{fill:%23FFFFFF;}%20.st2{fill:%23F28021;}%20.st3{fill:%23FAAE41;}%20%3c/style%3e%3cg%3e%3cpath%20class='st0'%20d='M133.7,647.8H172V667h-60.4v-79.4h22.1V647.8z%20M194.8,627.6v-0.3c0-22.8,18.4-41.3,42.9-41.3%20s42.6,18.3,42.6,41v0.3c0,22.8-18.4,41.3-42.9,41.3S194.8,650.3,194.8,627.6%20M257.9,627.6v-0.3c0-11.5-8.2-21.4-20.4-21.4%20c-12,0-20.1,9.8-20.1,21.2v0.3c0,11.5,8.2,21.4,20.2,21.4C249.8,648.8,257.9,639,257.9,627.6%20M307.3,632.2v-44.6h22.3v44.1%20c0,11.5,5.8,16.8,14.5,16.8c8.7,0,14.5-5.2,14.5-16.3v-44.7H381v44c0,25.6-14.5,36.8-37.2,36.8c-22.5,0-36.6-11.3-36.6-36.2%20M414.6,587.6h30.6c28.3,0,44.8,16.3,44.8,39.2v0.3c0,22.9-16.7,39.8-45.3,39.8h-30.1v-79.4L414.6,587.6z%20M445.6,647.5%20c13.2,0,21.9-7.2,21.9-20.1v-0.3c0-12.7-8.8-20.1-21.9-20.1h-8.9v40.3h8.9V647.5z%20M522.2,587.6h63.5v19.2h-41.6v13.6h37.6v18.3%20h-37.6V667h-21.9L522.2,587.6z%20M638.2,647.8h38.5V667h-60.4v-79.4h21.9L638.2,647.8z%20M734.1,587.2h21.2l33.8,79.9h-23.5l-5.8-14.1%20h-30.6l-5.7,14.1h-23.1L734.1,587.2L734.1,587.2z%20M753.5,635.8l-8.8-22.5l-8.9,22.5H753.5z%20M817.5,587.7H855%20c12.2,0,20.5,3.1,25.9,8.6c4.7,4.5,7.
631,10.6,7.1,18.5v0.3c0,12.2-6.5,20.2-16.3,24.4l19,27.7h-25.5l-16-24.1h-9.7v24.1h-22V587.7z%20M854,625.8c7.5,0,11.7-3.7,11.7-9.3v-0.3c0-6.2-4.5-9.3-11.9-9.3h-14.4v19L854,625.8L854,625.8z%20M941.5,648.3h42.6V667h-64.4%20v-79.4h63.8v18.7h-42v12h38.1v17.4h-38.1L941.5,648.3z%20M63.5,636.9c-3.1,6.9-9.6,11.9-18.1,11.9c-12,0-20.2-10-20.2-21.4v-0.3%20c0-11.5,8.1-21.2,20.1-21.2c9,0,16,5.4,18.8,13.2h23.2c-3.7-19-20.4-33-41.9-33c-24.5,0-42.9,18.5-42.9,41.3v0.3%20c0,22.8,18.1,41,42.6,41c20.9,0,37.4-13.6,41.6-31.7L63.5,636.9L63.5,636.9z'/%3e%3cpath%20class='st1'%20d='M886.3,421.8L638,423.5v126.1h319.5V461l-60.6-34.8L886.3,421.8z'/%3e%3cpath%20class='st2'%20d='M846.9,537.8c3-10.2,1.8-19.5-3.1-26.5c-4.5-6.4-12.2-10-21.4-10.5l-174.2-2.3c-1.1,0-2.1-0.6-2.7-1.4%20c-0.6-0.8-0.7-2-0.4-3.1c0.6-1.7,2.2-3,4.1-3.1l175.7-2.3c20.8-0.9,43.4-17.8,51.4-38.5l10-26.2c0.4-1.1,0.5-2.3,0.3-3.4%20c-11.3-51.2-57-89.4-111.6-89.4c-49,0-92.6,31.2-108.4,77.7c-9.9-7.4-22.5-11.3-36.1-10c-24.3,2.5-43.5,21.7-46,46%20c-0.6,6-0.2,12.1,1.3,18c-39.6,1.1-71.1,33.5-71,73.1c0,3.5,0.3,7.1,0.7,10.6c0.3,1.7,1.7,3,3.4,3h321.4c1.8,0,3.6-1.3,4.1-3.1%20L846.9,537.8L846.9,537.8z'/%3e%3cpath%20class='st3'%20d='M902.3,425.9l-4.8,0.1c-1.1,0-2.1,0.9-2.6,2l-6.8,23.6c-3,10.2-1.8,19.5,3.1,26.5c4.5,6.4,12.2,10,21.4,10.5%20l37.1,2.3c1.1,0,2.1,0.6,2.7,1.4c0.6,0.9,0.7,2.1,0.4,3.1c-0.6,1.7-2.2,3-4.1,3.1l-38.6,2.3c-20.9,0.9-43.4,17.8-51.4,38.5%20l-2.8,7.2c-0.6,1.4,0.4,2.8,2,2.8h132.7c1.6,0,3-0.9,3.4-2.6c2.3-8.4,3.5-17,3.5-25.8C997.4,468.5,954.8,426,902.3,425.9'/%3e%3c/g%3e%3c/svg%3e" alt="Cloudflare logo" class="w-12 h-12 object-contain rounded-md " width="48" height="48" decoding="async"><div class="flex-1"><h3 class="font-semibold text-xl text-foreground">Sr. Data Editor, Writer, Storyteller</h3><div class="flex items-center text-muted-foreground mb-1"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-briefcase mr-2"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Cloudflare</span></div><div class="flex items-center text-muted-foreground text-sm"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar mr-2"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><span>2021 - Jul 2026</span></div></div></div><div class="text-muted-foreground">Led data analysis and storytelling initiatives focused on Internet technology trends. Product Manager of the Internet trends project Radar Display. Hosted and produced the show/podcast <a href="https://cloudflare.tv/this-week-in-net" target="_blank" rel="noopener noreferrer" class="text-cloudflare hover:underline">"This Week in NET"</a>, from 2022 to 2026. Wrote 80+ posts for <a href="https://blog.cloudflare.com/author/joao-tome/" target="_blank" rel="noopener noreferrer" class="text-cloudflare hover:underline">The Cloudflare Blog</a>.</div></div></div><div class="timeline-item"><div class="timeline-dot"></div><div class="glass-card p-6"><div class="flex flex-col md:flex-row md:items-center gap-4 mb-4"><img src="/lovable-uploads/af7cd708-04a2-4b85-9e80-5fdb95ddbd6c.png" alt="Made in Tech logo" class="w-12 h-12 object-contain rounded-md " width="48" height="48" decoding="async"><div class="flex-1"><h3 class="font-semibold text-xl text-foreground">Podcaster</h3><div class="flex items-center text-muted-foreground mb-1"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-briefcase mr-2"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Made in Tech</span></div><div class="flex items-center text-muted-foreground text-sm"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar mr-2"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><span>2020 - 2023</span></div></div></div><div class="text-muted-foreground">Hosting and producing a podcast focused on technology's impact on society, featuring interviews with notable figures in tech and science.</div></div></div><div class="timeline-item"><div class="timeline-dot"></div><div class="glass-card p-6"><div class="flex flex-col md:flex-row md:items-center gap-4 mb-4"><img src="/assets/dinheiro-vivo-logo-Ch6_Necs.png" alt="Dinheiro Vivo logo" class="w-12 h-12 object-contain rounded-md " width="48" height="48" decoding="async"><div class="flex-1"><h3 class="font-semibold text-xl text-foreground">Website coordinator and Editor</h3><div class="flex items-center text-muted-foreground mb-1"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewB
63ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-briefcase mr-2"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Dinheiro Vivo</span></div><div class="flex items-center text-muted-foreground text-sm"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar mr-2"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><span>2017 - 2021</span></div></div></div><div class="text-muted-foreground">Editor of the related tech magazine publication DN Insider. Coordinated the business and tech news website, managed its social media, and led multimedia content production.</div></div></div><div class="timeline-item"><div class="timeline-dot"></div><div class="glass-card p-6"><div class="flex flex-col md:flex-row md:items-center gap-4 mb-4"><img src="/lovable-uploads/d3984a97-1ae8-41e3-90c5-487768ddbc08.png" alt="SIC logo" class="w-12 h-12 object-contain rounded-md " width="48" height="48" decoding="async"><div class="flex-1"><h3 class="font-semibold text-xl text-foreground">Journalist at the TV show Volante</h3><div class="flex items-center text-muted-foreground mb-1"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-briefcase mr-2"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>SIC</span></div><div class="flex items-center text-muted-foreground text-sm"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar mr-2"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><span>2011 - 2016</span></div></div></div><div class="text-muted-foreground">Host, journalist reviewer of cars and motorcycles for the TV show of SIC Notícias, Volante.</div></div></div><div class="timeline-item"><div class="timeline-dot"></div><div class="glass-card p-6"><div class="flex flex-col md:flex-row md:items-center gap-4 mb-4"><div class="flex-1"><h3 class="font-semibold text-xl text-foreground">Freelance Journalist</h3><div class="flex items-center text-muted-foreground mb-1"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-briefcase mr-2"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Notícias Magazine, Sábado magazine, Must magazine</span></div><div class="flex items-center text-muted-foreground text-sm"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar mr-2"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><span>2008 - 2020</span></div></div></div><div class="text-muted-foreground">Contributed feature articles with interviews of well-known cinema and TV actors and directors; wrote about technology, gadgets, and innovation; and did cinema reviews.</div></div></div><div class="timeline-item"><div class="timeline-dot"></div><div class="glass-card p-6"><div class="flex flex-col md:flex-row md:items-center gap-4 mb-4"><img src="/lovable-uploads/152da91e-cf60-4792-98bb-59f341c941ef.png" alt="Destak Portugal logo" class="w-12 h-12 object-contain rounded-md " width="48" height="48" decoding="async"><div class="flex-1"><h3 class="font-semibold text-xl text-foreground">Editor</h3><div class="flex items-center text-muted-foreground mb-1"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewB
63ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-briefcase mr-2"><path d="M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16"></path><rect width="20" height="14" x="2" y="6" rx="2"></rect></svg><span>Destak Portugal</span></div><div class="flex items-center text-muted-foreground text-sm"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar mr-2"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path></svg><span>2004 - 2016</span></div></div></div><div class="text-muted-foreground">Led the Sports, Cinema, Automotive, and Technology sections at Destak Portugal, producing reviews, interviews, and reports, managing digital platforms — while collaborating on external projects, including a TV show (SIC).</div></div></div></div></div></section><section id="perspective" class="px-5 py-14 sm:px-6 sm:py-20"><div class="mx-auto max-w-5xl"><div class="transition-opacity duration-500 opacity-0"><div class="mb-8 max-w-2xl"><p class="mb-2 text-xs font-semibold uppercase tracking-[0.18em] text-cloudflare">A thought for today</p><h2 class="mb-2 font-serif text-3xl font-bold text-foreground">One idea. One moment in history.</h2><p class="text-sm leading-relaxed text-muted-foreground">A daily pairing from science, technology, culture, history and the arts.</p></div></div><div class="rounded-2xl border border-border/70 bg-secondary/35 p-2 dark:bg-secondary/30 sm:p-4"><div class="grid gap-3 md:grid-cols-2"><article class="flex h-[28rem] flex-col overflow-hidden rounded-xl border border-border/60 bg-background p-5 dark:bg-card sm:h-[30rem] sm:p-6"><div class="mb-5 flex items-center justify-between gap-3"><span class="inline-flex items-center gap-2 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-quote text-cloudflare" aria-hidden="true"><path d="M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z"></path><path d="M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z"></path></svg> Quote</span><span class="rounded-full bg-secondary px-2.5 py-1 text-xs capitalize text-muted-foreground">hope</span></div><div class="flex min-h-0 flex-1 animate-fade-in flex-col overflow-y-auto overscroll-contain pr-2" aria-live="polite"><blockquote class="mb-5 font-serif text-xl leading-relaxed text-foreground sm:text-2xl">“We are all in the gutter, but some of us are looking at the stars.”</blockquote><div class="mt-auto"><p class="text-sm font-semibold text-foreground">Oscar Wilde</p><a href="https://www.gutenberg.org/files/790/790-h/790-h.htm" target="_blank" rel="noopener noreferrer" class="mt-1 inline-flex items-start gap-1 text-xs leading-relaxed text-muted-foreground hover:text-cloudflare"><span>Lady Windermere's Fan, Act 3 (1892)</span><svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewB
63ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link mt-0.5 shrink-0" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></div></div><button type="button" class="mt-6 inline-flex w-fit items-center gap-2 rounded-full border border-border px-3.5 py-2 text-sm font-medium text-foreground transition-colors hover:border-cloudflare/50 hover:text-cloudflare focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw" aria-hidden="true"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg> Another quote</button></article><article class="flex h-[28rem] flex-col overflow-hidden rounded-xl border border-border/60 bg-background p-5 dark:bg-card sm:h-[30rem] sm:p-6"><div class="mb-5 flex items-center justify-between gap-3"><span class="inline-flex items-center gap-2 text-xs font-semibold uppercase tracking-[0.14em] text-muted-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="15" height="15" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-calendar-days text-cloudflare" aria-hidden="true"><path d="M8 2v4"></path><path d="M16 2v4"></path><rect width="18" height="18" x="3" y="4" rx="2"></rect><path d="M3 10h18"></path><path d="M8 14h.01"></path><path d="M12 14h.01"></path><path d="M16 14h.01"></path><path d="M8 18h.01"></path><path d="M12 18h.01"></path><path d="M16 18h.01"></path></svg> On this day</span><time datetime="10-01" class="rounded-full bg-secondary px-2.5 py-1 text-xs text-muted-foreground">1 October</time></div><div class="flex min-h-0 flex-1 animate-fade-in flex-col overflow-y-auto overscroll-contain pr-2" aria-live="polite"><p class="mb-2 font-serif text-3xl font-bold text-cloudflare">1890</p><h3 class="mb-2 text-lg font-semibold leading-snug text-foreground">John Muir</h3><p class="text-base leading-relaxed text-foreground/90">At the encouragement of preservationist John Muir and writer Robert Underwood Johnson, the U.S. Congress established Yosemite National Park in California.</p><div class="mt-auto pt-5 text-xs text-muted-foreground"><a href="https://en.wikipedia.org/wiki/John_Muir" target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-1 hover:text-cloudflare">Wikimedia On This Day <svg xmlns="http://www.w3.org/2000/svg" width="11" height="11" viewB
63ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link" aria-hidden="true"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a><span> · CC BY-SA 4.0</span></div></div><button type="button" class="mt-6 inline-flex w-fit items-center gap-2 rounded-full border border-border px-3.5 py-2 text-sm font-medium text-foreground transition-colors hover:border-cloudflare/50 hover:text-cloudflare focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw" aria-hidden="true"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg> Another fact</button></article></div></div><div class="mt-5 flex flex-col gap-2 text-sm sm:flex-row sm:items-center sm:justify-between"><p class="text-muted-foreground">From Focus &amp; Life, a knowledge library I built.</p><a href="https://lifefocus.joaotome.com/" target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-1.5 font-medium text-foreground hover:text-cloudflare">Explore the full library <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right" aria-hidden="true"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a></div></div></section><section id="globe" class="relative py-14 md:py-24 px-5 sm:px-6 overflow-hidden"><div class="max-w-6xl mx-auto"><div class="transition-opacity duration-500 opacity-0"><div class="text-center mb-12"><h2 class="font-serif text-3xl md:text-4xl font-bold mb-4 text-foreground group inline-flex items-center">Internet Visualization<a href="#globe" class="inline-flex items-center ml-2 text-muted-foreground/0 hover:text-muted-foreground/60 transition-colors duration-200 group-hover:text-muted-foreground/40 align-middle" title="Copy link to section" aria-label="Copy link to this section"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link2"><path d="M9 17H7A5 5 0 0 1 7 7h2"></path><path d="M15 7h2a5 5 0 1 1 0 10h-2"></path><line x1="8" x2="16" y1="12" y2="12"></line></svg></a></h2><p class="text-lg text-muted-foreground max-w-2xl mx-auto leading-relaxed">Bringing the Internet to life through data and storytelling.</p></div></div><svg class="absolute" width="0" height="0" aria-hidden="true"><defs><filter id="electric-border-filter" color-interpolation-filters="sRGB" x="-20%" y="-20%" width="140%" height="140%"><feTurbulence type="turbulence" baseFrequency="0.02" numOctaves="10" result="noise1" seed="1"></feTurbulence><feOffset in="noise1" dx="0" dy="0" result="offsetNoise1"><animate attributeName="dy" values="700; 0" dur="6s" repeatCount="indefinite" calcMode="linear"></animate></feOffset><feTurbulence type="turbulence" baseFrequency="0.02" numOctaves="10" result="noise2" seed="1"></feTurbulence><feOffset in="noise2" dx="0" dy="0" result="offsetNoise2"><animate attributeName="dy" values="0; -700" dur="6s" repeatCount="indefinite" calcMode="linear"></animate></feOffset><feTurbulence type="turbulence" baseFrequency="0.02" numOctaves="10" result="noise3" seed="2"></feTurbulence><feOffset in="noise3" dx="0" dy="0" result="offsetNoise3"><animate attributeName="dx" values="490; 0" dur="6s" repeatCount="indefinite" calcMode="linear"></animate></feOffset><feTurbulence type="turbulence" baseFrequency="0.02" numOctaves="10" result="noise4" seed="2"></feTurbulence><feOffset in="noise4" dx="0" dy="0" result="offsetNoise4"><animate attributeName="dx" values="0;
63 -490" dur="6s" repeatCount="indefinite" calcMode="linear"></animate></feOffset><feComposite in="offsetNoise1" in2="offsetNoise2" result="part1"></feComposite><feComposite in="offsetNoise3" in2="offsetNoise4" result="part2"></feComposite><feBlend in="part1" in2="part2" mode="color-dodge" result="combinedNoise"></feBlend><feDisplacementMap in="SourceGraphic" in2="combinedNoise" scale="30" xChannelSelector="R" yChannelSelector="B"></feDisplacementMap></filter></defs></svg><div class="transition-opacity duration-500 opacity-0"><div class="mb-12 md:mb-16"><a href="https://radar.cloudflare.com/display" target="_blank" rel="noopener noreferrer" class="block group"><div class="electric-card relative rounded-xl p-[2px]"><div class="electric-border-inner relative rounded-xl overflow-hidden"><div class="electric-border-line absolute inset-0 rounded-xl pointer-events-none"></div><div class="electric-glow-1 absolute inset-0 rounded-xl pointer-events-none"></div><div class="electric-glow-2 absolute inset-0 rounded-xl pointer-events-none"></div><img src="/radar-display-globe.jpg" alt="Cloudflare Radar Display — real-time 3D globe showing global Internet traffic patterns" class="relative w-full object-cover transition-transform duration-300 group-hover:scale-[1.02] rounded-xl" width="1400" height="918" loading="lazy" decoding="async"></div><div class="electric-bg-glow absolute inset-0 rounded-xl pointer-events-none"></div></div></a><div class="mt-6 max-w-3xl mx-auto text-center"><h3 class="text-xl font-semibold text-foreground mb-3">Cloudflare Radar Display</h3><p class="text-muted-foreground leading-relaxed mb-2">Conceived and led as Product Manager and Data Editor — a real-time globe experience visualizing how the Internet behaves worldwide. It shows traffic patterns, outages, AI trends, attacks, connection quality, and the most popular Internet services by country.</p><p class="text-muted-foreground leading-relaxed mb-4">Featured on large touchscreens at Cloudflare offices in San Francisco, Austin, London, Lisbon, Singapore, and New York, and at events and partner venues worldwide.</p><a href="https://radar.cloudflare.com/display" target="_blank" rel="noopener noreferrer" class="inline-flex items-center gap-1.5 text-sm text-cloudflare hover:text-cloudflare/80 transition-colors">Explore Radar Display<svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></div></div></div><div class="w-24 h-px bg-border mx-auto mb-12"></div><div class="transition-opacity duration-500 opacity-0"><div id="cables" class="text-center mb-6 scroll-mt-24"><h3 class="text-xl font-semibold text-foreground mb-3 group inline-flex items-center">The Internet's Hidden Infrastructure<a href="#cables" class="inline-flex items-center ml-2 text-muted-foreground/0 hover:text-muted-foreground/60 transition-colors duration-200 group-hover:text-muted-foreground/40 align-middle" title="Copy link to section" aria-label="Copy link to this section"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link2"><path d="M9 17H7A5 5 0 0 1 7 7h2"></path><path d="M15 7h2a5 5 0 1 1 0 10h-2"></path><line x1="8" x2="16" y1="12" y2="12"></line></svg></a></h3><p class="text-lg text-muted-foreground max-w-2xl mx-auto leading-relaxed">Over 400 undersea cables spanning 1.3 million km carry ~99% of all intercontinental Internet traffic across the ocean floor.</p></div></div><div class="relative overflow-hidden rounded-2xl border border-border/60 bg-card/30 min-h-[360px] sm:min-h-[500px]"><div class="absolute inset-0 bg-cover bg-center scale-[1.02]" aria-hidden="true" style="background-image: url(&quot;/radar-display-globe.jpg&quot;);"><div class="absolute inset-0 bg-background/72 backdrop-blur-[2px]"></div></div><div class="absolute inset-0 flex items-center justify-center z-10"><div class="px-4 py-2 rounded-full bg-background/70 border border-border/70 animate-pulse text-muted-foreground text-sm">Loading globe...</div></div><div class="w-full flex justify-center relative z-[1]"></div></div></div></section><section id="about-teaser" class="py-14 sm:py-20 px-5 sm:px-6 bg-secondary/20 dark:bg-secondary/10"><div class="max-w-5xl mx-auto"><div class="transition-opacity duration-500 opacity-0"><div class="flex flex-col sm:flex-row sm:items-start sm:justify-between gap-4 mb-8"><div><h2 class="text-3xl font-serif font-bold text-foreground mb-1">About</h2><p class="text-sm text-muted-foreground">Data Editor · Storyteller · Journalist</p></div><div class="flex items-center gap-3 shrink-0"><a href="/resume-joao-tome.pdf" download="" class="inline-flex items-center gap-1.5 px-4 py-2 rounded-lg bg-cloudflare text-white hover:bg-cloudflare/90 transition-colors text-sm font-medium"><svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-download"><path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"></path><polyline points="7 10 12 15 17 10"></polyline><line x1="12" x2="12" y1="15" y2="3"></line></svg>Resume</a><a class="inline-flex items-center gap-1.5 px-4 py-2 rounded-lg border border-border bg-background hover:border-cloudflare hover:text-cloudflare transition-colors text-sm font-medium whitespace-nowrap" href="/about">Full profile <svg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-right"><path d="M5 12h14"></path><path d="m12 5 7 7-7 7"></path></svg></a></div></div></div><div class="transition-opacity duration-500 opacity-0"><p class="text-muted-foreground leading-relaxed max-w-3xl mb-4">From 2021 to July 2026, I led storytelling and data editing at Cloudflare, turning complex Internet trends into clear narratives and interactive experiences. I was the product manager for Radar Display — Cloudflare's globe-based visualization platform — and hosted the weekly show <a href="https://thisweekinnet.com" target="_blank" rel="noopener noreferrer" class="text-foreground underline underline-offset-4 hover:text-cloudflare transition-colors">This Week in NET</a>.</p><p class="text-muted-foreground leading-relaxed max-w-3xl mb-10">With over two decades in journalism — covering technology, cinema, and the automotive industry as editor, presenter, and podcast host — my analysis has been cited by CNN, the New York Times, BBC, and others. I'm also a fluent builder: I've shipped data dashboards, AI agents, editorial products, and interactive tools, mostly using LLM-assisted development workflows.</p><div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4"><div class="flex flex-col gap-2 p-4 rounded-xl border border-border bg-background dark:bg-card"><div class="flex items-center gap-2 text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewB
63ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-chart-no-axes-column text-cloudflare shrink-0"><line x1="18" x2="18" y1="20" y2="10"></line><line x1="12" x2="12" y1="20" y2="4"></line><line x1="6" x2="6" y1="20" y2="14"></line></svg><span class="font-semibold text-sm">Data Storytelling</span></div><p class="text-xs text-muted-foreground leading-relaxed">Internet trends into multimedia narratives — 80+ Cloudflare posts, cited by CNN, NYT, BBC.</p></div><div class="flex flex-col gap-2 p-4 rounded-xl border border-border bg-background dark:bg-card"><div class="flex items-center gap-2 text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mic-vocal text-cloudflare shrink-0"><path d="m11 7.601-5.994 8.19a1 1 0 0 0 .1 1.298l.817.818a1 1 0 0 0 1.314.087L15.09 12"></path><path d="M16.5 21.174C15.5 20.5 14.372 20 13 20c-2.058 0-3.928 2.356-6 2-2.072-.356-2.775-3.369-1.5-4.5"></path><circle cx="16" cy="7" r="5"></circle></svg><span class="font-semibold text-sm">Podcasting &amp; Shows</span></div><p class="text-xs text-muted-foreground leading-relaxed">Host of This Week in NET and Made in Tech — 200+ English and Portuguese episodes.</p></div><div class="flex flex-col gap-2 p-4 rounded-xl border border-border bg-background dark:bg-card"><div class="flex items-center gap-2 text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-wrench text-cloudflare shrink-0"><path d="M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.77-3.77a6 6 0 0 1-7.94 7.94l-6.91 6.91a2.12 2.12 0 0 1-3-3l6.91-6.91a6 6 0 0 1 7.94-7.94l-3.76 3.76z"></path></svg><span class="font-semibold text-sm">Builder</span></div><p class="text-xs text-muted-foreground leading-relaxed">Dashboards, AI agents, and editorial tools shipped with LLM-assisted workflows.</p></div><div class="flex flex-col gap-2 p-4 rounded-xl border border-border bg-background dark:bg-card"><div class="flex items-center gap-2 text-foreground"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-file-text text-cloudflare shrink-0"><path d="M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z"></path><path d="M14 2v4a2 2 0 0 0 2 2h4"></path><path d="M10 9H8"></path><path d="M16 13H8"></path><path d="M16 17H8"></path></svg><span class="font-semibold text-sm">Journalism</span></div><p class="text-xs text-muted-foreground leading-relaxed">Two decades as editor, presenter, and coordinator across print, TV, and digital.</p></div></div></div></div></section><section id="contact" class="py-20 px-6 bg-background"><div class="max-w-5xl mx-auto"><div class="transition-opacity duration-500 opacity-0"><div class="mb-12 text-center"><h2 class="section-title mx-auto group"><span>Get In Touch</span><a href="#contact" class="inline-flex items-center ml-2 text-muted-foreground/0 hover:text-muted-foreground/60 transition-colors duration-200 group-hover:text-muted-foreground/40 align-middle" title="Copy link to section" aria-label="Copy link to this section"><svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-link2"><path d="M9 17H7A5 5 0 0 1 7 7h2"></path><path d="M15 7h2a5 5 0 1 1 0 10h-2"></path><line x1="8" x2="16" y1="12" y2="12"></line></svg></a></h2><p class="text-muted-foreground max-w-2xl mx-auto mb-6">Open to the right conversations and collaborations.</p><div class="flex flex-wrap justify-center gap-2 text-sm"><span class="px-3 py-1 rounded-full border border-border text-muted-foreground">Speaking &amp; event moderation</span><span class="px-3 py-1 rounded-full border border-border text-muted-foreground">Editorial collaborations</span><span class="px-3 py-1 rounded-full border border-border text-muted-foreground">Podcast &amp; interview hosting</span><span class="px-3 py-1 rounded-full border border-border text-muted-foreground">Internet trends &amp; data storytelling</span><span class="px-3 py-1 rounded-full border border-border text-muted-foreground">Media &amp; AI experiments</span></div></div></div><div class="grid grid-cols-1 md:grid-cols-2 gap-8"><div class="transition-opacity duration-500 opacity-0"><div class="glass-card p-8 h-full flex flex-col justify-center items-center text-center dark:bg-card/70 dark:border-border"><div class="p-4 rounded-full bg-cloudflare/10 mb-6"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-mail text-cloudflare"><rect width="20" height="16" x="2" y="4" rx="2"></rect><path d="m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7"></path></svg></div><h3 class="text-xl font-semibold text-foreground mb-3">Email Me</h3><p class="text-muted-foreground mb-6">
63For professional inquiries or collaboration opportunities, feel free to send me an email.</p><div class="relative"><div class="flex items-center gap-2 px-4 py-2 rounded-full border border-border hover:border-cloudflare cursor-pointer transition-colors"><span class="text-foreground"><a href="/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="254f51654f4a444a514a48400b464a48">[email&#160;protected]</a></span><span class="text-xs font-medium text-muted-foreground">Click to copy</span></div></div></div></div><div class="transition-opacity duration-500 opacity-0"><div class="glass-card p-8 h-full dark:bg-card/70 dark:border-border"><h3 class="text-xl font-semibold text-foreground mb-6 text-center">Connect Online</h3><div class="grid grid-cols-2 gap-4"><a href="https://www.linkedin.com/in/joaotome1/" target="_blank" rel="noopener noreferrer" class="flex flex-col items-center p-6 rounded-xl bg-card border border-border shadow-sm hover:shadow-md transition-shadow"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-linkedin text-[#0A66C2] mb-4"><path d="M16 8a6 6 0 0 1 6 6v7h-4v-7a2 2 0 0 0-2-2 2 2 0 0 0-2 2v7h-4v-7a6 6 0 0 1 6-6z"></path><rect width="4" height="12" x="2" y="9"></rect><circle cx="4" cy="4" r="2"></circle></svg><span class="text-foreground font-medium">LinkedIn</span><span class="text-muted-foreground text-sm flex items-center gap-1 mt-1">Profile <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></span></a><a href="https://x.com/emot" target="_blank" rel="noopener noreferrer" class="flex flex-col items-center p-6 rounded-xl bg-card border border-border shadow-sm hover:shadow-md transition-shadow"><svg xmlns="http://www.w3.org/2000/svg" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-twitter text-[#1DA1F2] mb-4"><path d="M22 4s-.7 2.1-2 3.4c1.6 10-9.4 17.3-18 11.6 2.2.1 4.4-.6 6-2C3 15.5.5 9.6 3 5c2.2 2.6 5.6 4.1 9 4-.9-4.2 4-6.6 7-3.8 1.1 0 3-1.2 3-1.2z"></path></svg><span class="text-foreground font-medium">Twitter</span><span class="text-muted-foreground text-sm flex items-center gap-1 mt-1">@emot <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></span></a><a href="https://www.podchaser.com/podcasts/dinheiro-vivo-made-in-tech-pod-1581233" target="_blank" rel="noopener noreferrer" class="flex flex-col items-center p-6 rounded-xl bg-card border border-border shadow-sm hover:shadow-md transition-shadow"><img src="/lovable-uploads/af7cd708-04a2-4b85-9e80-5fdb95ddbd6c.png" alt="Made in Tech" class="w-8 h-8 object-contain mb-4" width="32" height="32" decoding="async"><span class="text-foreground font-medium">Made in Tech Podcast</span><span class="text-muted-foreground text-sm flex items-center gap-1 mt-1">Listen to episodes <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></span></a><a href="https://blog.cloudflare.com/author/joao-tome/" target="_blank" rel="noopener noreferrer" class="flex flex-col items-center p-6 rounded-xl bg-card border border-border shadow-sm hover:shadow-md transition-shadow"><div class="w-8 h-8 rounded bg-cloudflare/10 flex items-center justify-center mb-4"><span class="text-cloudflare font-bold text-xs">CF</span></div><span class="text-foreground font-medium">The Cloudflare Blog</span><span class="text-muted-foreground text-sm flex items-center gap-1 mt-1">Read my posts <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></span></a><a href="https://ThisWeekinNET.com" target="_blank" rel="noopener noreferrer" class="flex flex-col items-center p-6 rounded-xl bg-card border border-border shadow-sm hover:shadow-md transition-shadow"><div class="w-8 h-8 rounded bg-cloudflare/10 flex items-center justify-center mb-4"><span class="text-cloudflare font-bold text-xs">NET</span></div><span class="text-foreground font-medium">This Week in NET</span><span class="text-muted-foreground text-sm flex items-center gap-1 mt-1">Listen to podcast <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></span></a><a href="https://emot.substack.com" target="_blank" rel="noopener noreferrer" class="flex flex-col items-center p-6 rounded-xl bg-card border border-border shadow-sm hover:shadow-md transition-shadow"><div class="w-8 h-8 rounded bg-orange-500/10 flex items-center justify-center mb-4"><span class="text-orange-500 font-bold text-xs">Sub</span></div><span class="text-foreground font-medium">Substack</span><span class="text-muted-foreground text-sm flex items-center gap-1 mt-1">Personal essays <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></span></a></div></div></div></div></div></section><section class="py-20 px-6 bg-gradient-to-b from-secondary/30 to-background dark:from-secondary/10 dark:to-background"><div class="max-w-5xl mx-auto"><div class="transition-opacity duration-500 opacity-0"><div class="text-center mb-12"><p class="text-lg text-muted-foreground mb-8 max-w-3xl mx-auto leading-relaxed">— Journalist at heart. Creator of ideas. Explorer. It's all about passion — and it's been that way since the 1980s.<br>Explore my side gardens: <a href="https://joaotome.org" target="_blank" rel="noopener noreferrer" class="text-cloudflare hover:text-cloudflare/80 underline">joaotome.org</a> and <a href="https://seremot.com" target="_blank" rel="noopener noreferrer" class="text-cloudflare hover:text-cloudflare/80 underline">seremot.com</a><br>(Where quotes, loose thoughts, and messy experiments live.)</p><div class="w-24 h-px bg-border mx-auto mb-8"></div><div class="mb-8"><img src="/lovable-uploads/50f2fc3e-1625-4b20-b96f-06fab430b916.png" alt="João Tomé interviewing Matthew Prince" class="mx-auto rounded-lg shadow-md max-w-md w-full" width="1200" height="673" loading="lazy" decoding="async"><p class="text-muted-foreground mt-4 text-center">Interviewing Cloudflare CEO Matthew Prince for This Week in NET — talking about AI, Cloudflare's history, and what's ahead.<br>Lisbon office, September 2024 <a href="https://www.youtube.com/watch?v=H7NkDreSnF0&amp;list=PLI6HzeeCy4S_YNpiWer9uOHIuSWxmCIhh&amp;index=46" target="_blank" rel="noopener noreferrer" class="text-cloudflare hover:text-cloudflare/80 transition-colors">[Watch on YouTube]</a></p></div><div class="w-24 h-px bg-border mx-auto mb-8"></div><div class="relative max-w-4xl mx-auto"><img src="/lovable-uploads/4c22f258-4181-49ae-9863-d21d902a6d18.png" alt="Earthrise - Earth rising over the lunar horizon" class="w-full rounded-xl shadow-lg" width="1920" height="395" loading="lazy" decoding="async"><div class="mt-6 text-center"><p class="text-sm text-muted-foreground mb-2"><em>Earthrise</em> — Apollo 8, December 24, 1968</p><div class="flex justify-center gap-6 text-sm"><a href="https://earthobservatory.nasa.gov/images/82693/earthrise-revisited" target="_blank" rel="noopener noreferrer" class="text-cloudflare hover:text-cloudflare/80 flex items-center gap-1">NASA Earth Observatory <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a><a href="https://seremot.com/vizlab/" target="_blank" rel="noopener noreferrer" class="text-cloudflare hover:text-cloudflare/80 flex items-center gap-1">VizLab <svg xmlns="http://www.w3.org/2000/svg" width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-external-link"><path d="M15 3h6v6"></path><path d="M10 14 21 3"></path><path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"></path></svg></a></div></div></div></div></div></div></section></main><section class="lisbon-scene is-waiting" aria-label="An illustrated farewell from Lisbon"></section><footer class="bg-secondary/50 dark:bg-secondary/20 py-10 px-6"><div class="max-w-5xl mx-auto"><div class="flex flex-col md:flex-row justify-between items-center"><div class="mb-6 md:mb-0"><div class="text-xl font-serif font-bold text-foreground mb-2">João<span class="text-cloudflare">
63Tomé</span></div><p class="text-muted-foreground text-sm">Data Editor • Writer • Storyteller</p></div><div class="flex items-center gap-2"><button class="p-3 rounded-full bg-card dark:bg-card/70 shadow-sm hover:shadow-md transition-shadow" aria-label="Scroll to top"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-up text-foreground"><path d="m5 12 7-7 7 7"></path><path d="M12 19V5"></path></svg></button></div></div><div class="mt-8 pt-8 border-t border-border text-center"><p class="text-muted-foreground text-sm">© 2026 João Tomé. All rights reserved.</p></div></div></footer></div></div>
64    
65  
66
67<!-- Cloudflare Pages Analytics -->
vendor: 108 bytes, line 67
67<script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script>
vendor: 99 bytes, line 67
67<script defer src='https://static.cloudflareinsights.com/beacon.min.js' data-cf-beacon='{"token": "
675f6464d4ca2f4845bbbce864d7c77e44
vendor: 13 bytes, line 67
67"}'></script>
67<!-- Cloudflare Pages Analytics -->
67<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"0db3bc481df3473694ae97d7ea5e8c18","spa":2}' crossorigin="anonymous"></script>
67
68</body></html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.