1const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/Experience-Def4GMEG.js","assets/index-OZBwOq0W.js","assets/index-CAwBdAmG.css","assets/Footer-Bl-kUtxI.js","assets/SectionLink-CYLVaZpO.js","assets/cloudflare-logo-Bq6yJob5.js"])))=>i.map(i=>d[i]); 2import{c as x,r as n,_ as v,a as e}from"./index-OZBwOq0W.js";import{u as N,V as k}from"./V2Navbar-Cd57qlL5.js";import{V as w}from"./V2Breadcrumb-t7E5I00o.js";import{b as s,E as c,F as C}from"./Footer-Bl-kUtxI.js";import I from"./CloudSection-BeQbg5VF.js";import{C as m,B as y,n as P,p as M,u as S,g as T,F as u,a as E,b as A,H as z,Z as j,M as g,P as h,T as L,G as W}from"./producoes-ficticias-logo-DrpkfhzQ.js";import{c as F}from"./cloudflare-logo-Bq6yJob5.js";import{C as p}from"./chart-no-axes-column-FB2Fie-w.js";import"./chevron-right-DajRt_yh.js";import"./SectionLink-CYLVaZpO.js";/** 3 * @license lucide-react v0.462.0 - ISC 4 * 5 * This source code is licensed under the ISC license. 6 * See the LICENSE file in the root directory of this source tree. 7 */const V=x("Cpu",[["rect",{width:"16",height:"16",x:"4",y:"4",rx:"2",key:"14l7u7"}],["rect",{width:"6",height:"6",x:"9",y:"9",rx:"1",key:"5aljv4"}],["path",{d:"M15 2v2",key:"13l42r"}],["path",{d:"M15 20v2",key:"15mkzm"}],["path",{d:"M2 15h2",key:"1gxd5l"}],["path",{d:"M2 9h2",key:"1bbxkp"}],["path",{d:"M20 15h2",key:"19e6y8"}],["path",{d:"M20 9h2",key:"19tzq7"}
7],["path",{d:"M9 2v2",key:"165o2o"}],["path",{d:"M9 20v2",key:"i2bqo8"}]]);/** 8 * @license lucide-react v0.462.0 - ISC 9 * 10 * This source code is licensed under the ISC license. 11 * See the LICENSE file in the root directory of this source tree. 12 */const i=x("Languages",[["path",{d:"m5 8 6 6",key:"1wu5hv"}],["path",{d:"m4 14 6-6 2-3",key:"1k1g8d"}],["path",{d:"M2 5h12",key:"or177f"}],["path",{d:"M7 2h1",key:"1t2jsx"}],["path",{d:"m22 22-5-10-5 10",key:"don7ne"}],["path",{d:"M14 18h6",key:"1m8k6r"}]]);/** 13 * @license lucide-react v0.462.0 - ISC 14 * 15 * This source code is licensed under the ISC license. 16 * See the LICENSE file in the root directory of this source tree. 17 */const B=x("MessageSquare",[["path",{d:"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z",key:"1lielz"}]]),D=n.lazy(()=>v(()=>import("./Experience-Def4GMEG.js"),__vite__mapDeps([0,1,2,3,4,5]))),f=[{name:"Data Storytelling",desc:"Transforming complex data into compelling narratives that resonate with audiences",icon:e.jsx(p,{className:"text-cloudflare"}),category:"media"},{name:"Multimedia Production",desc:"Creating engaging visual and audio content across multiple platforms",icon:e.jsx(h,{className:"text-madeInTech"}),category:"media"},{name:"Podcasting",desc:"Hosting, producing, and editing podcast content with notable figures in technology and science",icon:e.jsx(g,{className:"text-dinheiroVivo"}),category:"media"},{name:"Film & Cinema Analysis",desc:"Deep understanding of cinema with experience in film criticism and interviews",icon:e.jsx(u,{className:"text-muted-foreground"}),category:"media"},{name:"Comms & Press Relations",desc:"Supporting communication strategies alongside C-level leaders during major announcements and crisis moments; media outreach, press briefings, journalist coordination",icon:e.jsx(B,{className:"text-cloudflare"}),category:"media"},{name:"Public Speaking & Moderation",desc:"Moderated hundreds of conferences and events in Portuguese and English, across tech, mobility, and policy",icon:e.jsx(g,{className:"text-muted-foreground"}),category:"media"},{name:"Data Visualization",desc:"Building interactive dashboards and visual stories from complex datasets",icon:e.jsx(p,{className:"text-muted-foreground"}),category:"technical"},{name:"Plain-language Tech Writing",desc:"Explaining complex technical concepts in accessible, human language",icon:e.jsx(L,{className:"text-muted-foreground"}),category:"technical"},{name:"Figma",desc:"UI design and prototyping for web projects",icon:e.jsx(h,{className:"text-muted-foreground"}),category:"technical"},{name:"SQL & Jupyter",desc:"Querying structured data and data exploration in Python environments",icon:e.jsx(m,{className:"text-muted-foreground"}),category:"technical"},{name:"Adobe Premiere",desc:"Video editing for podcast episodes and multimedia content",icon:e.jsx(u,{className:"text-muted-foreground"}),category:"technical"},{name:"Claude Code / Codex",desc:"Building sites, tools, and dashboards through AI-assisted development workflows",icon:e.jsx(V,{className:"text-cloudflare"}),category:"ai"},{name:"Prompt Engineering",desc:"Crafting effective prompts and workflows for LLM-based tools",icon:e.jsx(j,{className:"text-cloudflare"}),category:"ai"},{name:"Cloudflare Workers & Pages",desc:"Deploying and managing edge applications and static sites",icon:e.jsx(W,{className:"text-cloudflare"}),category:"ai"},{name:"Vite + React",desc:"Frontend development stack used across personal projects",icon:e.jsx(m,{className:"text-cloudflare"}),category:"ai"},{name:"English",desc:"Native / Bilingual",icon:e.jsx(i,{className:"text-muted-foreground"}),category:"languages"},{name:"Portuguese",desc:"Native",icon:e.jsx(i,{className:"text-muted-foreground"}),category:"languages"},{name:"German",desc:"Elementary",icon:e.jsx(i,{className:"text-muted-foreground"}),category:"languages"},{name:"Spanish",desc:"Limited Working",icon:e.jsx(i,{className:"text-muted-foreground"}),category:"languages"}],H=[{id:null,label:"All Skills"},{id:"media",label:"Media & Production"},{id:"technical",label:"Technical"},{id:"ai",label:"AI & Building"},{id:"languages",label:"Languages"}],_=()=>{const[o,d]=n.useState(null),t=o?f.filter(a=>a.category===o):f;return e.jsx("section",{className:"px-6 py-16 bg-secondary/30 dark:bg-secondary/10 mb-20",children:e.jsx("div",{className:"max-w-5xl mx-auto",children:e.jsxs(s,{children:[e.jsx("h2",{className:"text-2xl font-serif font-bold text-foreground mb-2 text-center",children:"Skills & Expertise"}),e.jsx("p",{className:"text-muted-foreground text-center max-w-2xl mx-auto mb-8 text-sm",children:"Spanning media production, data storytelling, technology, and communication."}),e.jsx("div",{className:"flex flex-wrap justify-center gap-2 mb-10",children:H.map(({id:a,label:l})=>e.jsx("button",{onClick:()=>d(a),className:`px-4 py-1.5 rounded-full text-sm font-medium transition-colors ${o===a?"bg-foreground text-background":"bg-secondary text-muted-foreground hover:text-foreground"}`,children:l},l))}),e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:t.map(a=>e.jsxs("div",{className:"glass-card p-5 flex flex-col dark:bg-card/70 dark:border-border",children:[e.jsxs("div",{className:"flex items-center gap-3 mb-3",children:[e.jsx("div",{className:"p-2.5 rounded-full bg-secondary shrink-0",children:a.icon}),e.jsx("h3",{className:"font-medium text-foreground text-sm",children:a.name})]}),e.jsx("p",{className:"text-muted-foreground text-xs leading-relaxed",children:a.desc})]},a.name))})]})})})},J=[{institution:"Universidade Nova de Lisboa",degree:"Master in Communication Sciences (Journalism, Cinema & Audiovisuals)",period:"1999 â 2003",logo:P},{institution:"Produções FictÃcias",degree:"Workshop in Screenwriting for Film and Television",period:"2009",logo:M},{institution:"Universidade do Porto",degree:"Workshop in Television Editing",period:"2013",logo:S},{institution:"FLAG",degree:"Workshop in Social Media",period:"2014"}
17,{institution:"Google Creative Campus",degree:"Workshop in Communication and Media",period:"2019",logo:T},{institution:"Facebook & Instagram (Meta)",degree:"Workshop in Social Media and Marketing",period:"2019"},{institution:"Cloudflare Internal Training",degree:"Hands-on training with Figma, GitHub, SQL, Jupyter Notebooks, and Adobe Premiere. Internal courses in Data Visualization, Privacy, Product, Cybersecurity, and Compliance.",period:"2021 â Jul 2026",logo:F},{institution:"Udemy, Coursera & Professional Training",degree:"Ongoing courses in Data Visualization and digital storytelling, plus hands-on experimentation with Claude Code, Codex, Opencode, and other LLM tools.",period:"2021 â Current"}],b=[{icon:e.jsx(u,{size:18}),title:"Cinema",content:"As a former movie critic, I've developed a deep appreciation for cinema as both art form and storytelling medium. I've interviewed actors and directors and covered cinema for SIC, Destak, Sábado, Expresso, and Observador."},{icon:e.jsx(E,{size:18}),title:"Podcasting",content:"Audio storytelling led me to create and host the Made in Tech podcast, and later Cloudflare's This Week in NET â combining journalism with technology and long-form conversation."},{icon:e.jsx(A,{size:18}),title:"Mobility",content:"I hosted car and motorcycle shows on SIC NotÃcias (TV Turbo and Volante) for over a decade. I'm fascinated by how mobility is changing â especially autonomous vehicles and what they mean for how we experience driving."},{icon:e.jsx(z,{size:18}),title:"History",content:"History runs through everything I do â from contextualizing tech at Cloudflare to exploring the roots of innovation on the podcast. Understanding where things came from helps make sense of where they're going."},{icon:e.jsx(j,{size:18}),title:"Technology & Innovation",content:"Consistent curiosity about Internet infrastructure, AI, and computing history. I'm especially drawn to the intersection of technology and human communication â how digital infrastructure changes the way we connect."},{icon:e.jsx(g,{size:18}),title:"Public Speaking",content:"Moderated hundreds of conferences and events in Portuguese and English, across tech, mobility, and policy. I enjoy making complex topics relatable through live conversation."},{icon:e.jsx(y,{size:18}),title:"Languages",content:"English (Native/Bilingual), Portuguese (Native), German (Elementary), Spanish (Limited Working). Languages have opened doors to diverse perspectives and stories throughout my career."}],X=()=>{const[o,d]=n.useState(0);return N({title:"About â João Tomé",description:"João Tomé â Internet Data Research Editor at IPinfo, former Cloudflare Data Editor and host of This Week in NET, journalist, and builder. Full profile: career, skills, projects, and background.",canonicalPath:"/about"}),n.useEffect(()=>{const t=()=>{if(!document.querySelector('link[data-cloud-prefetch="true"]')){const r=document.createElement("link");r.rel="prefetch",r.as="document",r.href="/cloud",r.setAttribute("data-cloud-prefetch","true"),document.head.appendChild(r)}},a=typeof window.requestIdleCallback=="function"?window.requestIdleCallback(t,{timeout:1200}):window.setTimeout(t,400);return()=>{typeof window.cancelIdleCallback=="function"&&typeof a=="number"?window.cancelIdleCallback(a):window.clearTimeout(a)}},[]),e.jsxs("div",{className:"min-h-screen",children:[e.jsx(k,{}),e.jsx(w,{current:"About",parentHash:"#about-teaser"}),e.jsxs("main",{className:"pt-6 pb-24",children:[e.jsx("section",{className:"px-6 mb-20",children:e.jsx("div",{className:"max-w-3xl mx-auto",children:e.jsxs(s,{children:[e.jsx("h1",{className:"text-4xl md:text-5xl font-serif font-bold text-foreground mb-8",children:"About"}),e.jsx("p",{className:"text-muted-foreground leading-relaxed mb-5 text-lg",children:"Since August 2026, João Tomé has worked as an Internet Data Research Editor at IPinfo, using data on IP geolocation, network infrastructure, privacy, and security to research and tell stories about how the Internet is changing."}),e.jsx("p",{className:"text-muted-foreground leading-relaxed mb-5 text-lg",children:"From 2021 to July 2026, João Tomé led storytelling and data editing at Cloudflare, contributing to product development for Cloudflare Radar â turning complex Internet trends into clear narratives and interactive experiences. He was the product manager for Radar Display, Cloudflare's globe-based visualization platform showcased at events and offices worldwide."}),e.jsx("p",{className:"text-muted-foreground leading-relaxed",children:"With more than two decades in media and technology, João hosted Cloudflare's weekly show This Week in NET from 2022 to 2026, authored over 80 Cloudflare blog posts on traffic shifts, security incidents, and AI, and developed insights covered by CNN, the New York Times, and the BBC. Before Cloudflare, he worked as a journalist, editor, and coordinator for newspapers and magazines, and was a television presenter in Portugal covering technology, cinema, and the automotive industry."})]})})}),e.jsx("div",{className:"mb-4",children:e.jsx(n.Suspense,{fallback:e.jsx("div",{className:"py-20"}),children:e.jsx(D,{})})}),e.jsx("section",{id:"ai",className:"px-6 py-16 bg-secondary/30 dark:bg-secondary/10 mb-20",children:e.jsx("div",{className:"max-w-3xl mx-auto",children:e.jsxs(s,{children:[e.jsxs("div",{className:"flex items-center gap-3 mb-6",children:[e.jsx("div",{className:"p-2 rounded-lg bg-cloudflare/10",children:e.jsx(m,{size:22,className:"text-cloudflare"})}),e.jsx("h2",{className:"text-2xl font-serif font-bold text-foreground",children:"AI Projects & Building"})]}),e.jsx("p",{className:"text-muted-foreground leading-relaxed mb-5",children:"More recently, a new layer has emerged: building. Not as an engineer, but as a storyteller with access to AI coding tools. Using Claude Code, Codex, and Opencode, I design and ship real projects â data visualization dashboards, interactive sites, AI agents â that sit somewhere between journalism and product."}),e.jsx("p",{className:"text-muted-foreground leading-relaxed mb-8",children:"The workflow is intentional: I use AI assistants to turn ideas into working prototypes quickly, then refine with real audiences in mind. I'm particularly interested in how data visualization can carry a narrative â not just present numbers, but make someone understand something they didn't before."}),e.jsx("h3",{className:"text-sm font-semibold text-foreground uppercase tracking-widest mb-4",children:"Selected projects"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-3",children:[{title:"This Week in NET",url:"https://thisweekinnet.com",desc:"Weekly show on Internet trends"},{title:"World Cup 2026 Dashboard",url:"https://worldcup-2026-dashboard.pages.dev",desc:"Internet traffic around the 2026 World Cup"},{title:"Ask Emot",url:"https://ask-emot.joaotome.workers.dev",desc:"AI agent on Cloudflare Workers"},{title:"Casa Magia",url:"https://casamagia.org",desc:"Harry Potter covers & games for my kid"},{title:"Time Capsule",url:"https://timecapsule.thebookoflives.org",desc:"Messages to the future"},{title:"Starlink Dashboard",url:"https://starlink-traffic-map-2026.pages.dev",desc:"Global Starlink penetration map"},{title:"HN Cloudflare Board",url:"https://hn-cloudflare-board-v2.pages.dev",desc:"Cloudflare on Hacker News, live"}].map(t=>e.jsxs("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"group flex items-center justify-between gap-3 py-2.5 px-3 rounded-lg border border-border bg-background dark:bg-card/60 hover:border-cloudflare/40 transition-colors",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-sm font-medium text-foreground group-hover:text-cloudflare transition-colors",children:t.title}),e.jsx("span",{className:"text-xs text-muted-foreground ml-2",children:t.desc})]}),e.jsx(c,{size:12,className:"text-muted-foreground opacity-0 group-hover:opacity-100 transition-opacity shrink-0"})]},t.url))})]})})}),e.jsx(_,{}),e.jsx("section",{className:"px-6 mb-20",children:e.jsx("div",{className:"max-w-3xl mx-auto",children:e.jsxs(s,{children:[e.jsx("h2",{className:"text-2xl font-serif font-bold text-foreground mb-10",children:"Education & Training"}),e.jsx("div",{className:"space-y-6",children:J.map((t,a)=>e.jsxs("div",{className:"flex gap-4",children:[t.logo?e.jsx("img",{src:t.logo,alt:t.institution,className:"w-10 h-10 object-contain rounded flex-shrink-0 mt-0.5",width:40,height:40,decoding:"async"}):e.jsx("div",{className:"w-10 h-10 bg-secondary rounded flex items-center justify-center flex-shrink-0 mt-0.5",children:e.jsx(y,{size:16,className:"text-muted-foreground"})}),e.jsxs("div",{children:[e.jsx("h4",{className:"font-medium text-foreground text-sm",children:t.institution}),e.jsx("p",{className:"text-muted-foreground text-sm leading-snug",children:t.degree}),e.jsx("p",{className:"text-cloudflare text-xs mt-0.5",children:t.period})]})]},a))})]})})}),e.jsx("section",{className:"px-6 py-16 bg-secondary/30 dark:bg-secondary/10 mb-20",children:e.jsx("div",{className:"max-w-3xl mx-auto",children:e.jsxs(s,{children:[e.jsx("h2",{className:"text-2xl font-serif font-bold text-foreground mb-3",children:"Writing & Sites"}),e.jsx("p",{className:"text-sm text-muted-foreground mb-8",children:"Places where my writing and experiments live, past and present."}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-2 gap-4 mb-10",children:[{label:"Cloudflare Blog",url:"https://blog.cloudflare.com/author/joao-tome/",desc:"Internet trends, data analysis, and technical storytelling"},{label:"Substack â emot",url:"https://emot.substack.com",desc:"Personal essays on technology, life, and ideas"},{label:"Medium â emot",url:"https://emot.medium.com",desc:"Essays and tech writing"},{label:"Casa Magia",url:"https://casamagia.org",desc:"Harry Potter covers & games for my kid"},{label:"joaotome.org",url:"https://joaotome.org",desc:"Garden of ideas â notes and thoughts"},{label:"seremot.com",url:"https://seremot.com",desc:"Lab for developer experiments and visualizations"},{label:"joaotome.com",url:"https://joaotome.com",desc:"This site â built with Claude Code"},{label:"joao-tome.weebly.com",url:"https://joao-tome.weebly.com",desc:"Old CV site in Portuguese"}].map(t=>e.jsxs("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"group flex flex-col gap-1 p-4 rounded-xl border border-border bg-background dark:bg-card hover:border-cloudflare/40 transition-colors",children:[e.jsxs("span",{className:"font-medium text-foreground text-sm group-hover:text-cloudflare transition-colors flex items-center gap-1.5",children:[t.label," ",e.jsx(c,{size:12,className:"opacity-0 group-hover:opacity-100 transition-opacity"})]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:t.desc})]},t.url))}),e.jsx("h3",{className:"text-xs font-semibold text-muted-foreground uppercase tracking-widest mb-4",children:"Older blogs â pre-2012, in Portuguese"}),e.jsx("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3",children:[{label:"Frescas e Boas",url:"https://frescaseboas.blogspot.com",desc:"Early blog â ideas and writing"},{label:"Creator of Life",url:"https://creatoroflife.blogspot.com",desc:"Early blog â creativity and life"},{label:"Magacine",url:"https://magacine.blogspot.com",desc:"Early blog â culture and cinema"}].map(t=>e.jsxs("a",{href:t.url,target:"_blank",rel:"noopener noreferrer",className:"group flex flex-col gap-1 p-3 rounded-lg border border-border bg-background dark:bg-card hover:border-cloudflare/40 transition-colors opacity-75 hover:opacity-100",children:[e.jsxs("span",{className:"font-medium text-foreground text-sm group-hover:text-cloudflare transition-colors flex items-center gap-1.5",children:[t.label," ",e.jsx(c,{size:11,className:"opacity-0 group-hover:opacity-100 transition-opacity"})]}),e.jsx("span",{className:"text-xs text-muted-foreground",children:t.desc})]},t.url))})]})})}),e.jsx("section",{className:"px-6",children:e.jsx("div",{className:"max-w-3xl mx-auto",children:e.jsxs(s,{children:[e.jsx("h2",{className:"text-2xl font-serif font-bold text-foreground mb-8",children:"Personal Interests"}),e.jsx("div",{className:"flex flex-wrap gap-2 mb-8",children:b.map((t,a)=>e.jsxs("button",{onClick:()=>d(a),className:`flex items-center gap-2 px-3 py-2 rounded-full text-sm transition-colors ${o===a?"bg-cloudflare text-white":"bg-secondary text-muted-foreground hover:text-foreground"}`,children:[t.icon,t.title]},a))}),e.jsx("div",{className:"min-h-[80px] text-muted-foreground leading-relaxed transition-all",children:b[o].content})]})})}),e.jsx("div",{className:"pt-4 pb-2 text-center px-6",children:e.jsx("p",{className:"text-xs text-muted-foreground
17/50 uppercase tracking-widest",children:"One more thing"})}),e.jsx(I,{})]}),e.jsx(C,{})]})};export{X as default};
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.