AI 资讯
Paramount Refused to Air an Ad Criticizing Its Merger With Warner Bros.
The commercial was submitted by the Freedom of the Press Foundation to run during Donald Trump’s UFC event. It criticized the $111 billion merger as a threat to the First Amendment.
AI 资讯
SpaceX to acquire Cursor for $60B in stock, days after blockbuster IPO
The deal is supposed to help SpaceX's struggling AI division. The company told IPO investors it sees a $26 trillion addressable market in AI.
科技前沿
Meta's Threads app now has half a billion monthly users
Almost three years in, Meta's X competitor is still growing.
开发者
Threads adds new personalization and community features as it reaches 500M monthly users
The Meta-owned social platform announced a series of new features launching today, including a "Your Algo" tool that lets users control what they see in their feeds
AI 资讯
‘Pretty Crazy’ Token Usage Is Testing Bosses’ Bet on AI
A Silicon Valley software maker and an ecommerce company reveal to WIRED how they are navigating the emerging challenge of “tokenomics.”
产品设计
Want to get a data center online quickly? Give it some flex.
At the end of a tense and scoreless first half of a soccer match between the English men’s team and rival Germany, millions of Brits let out a collective sigh and did what they so often do in moments of stress: They made tea. That wave of electric kettles clicking on, however, caused a different…
AI 资讯
Malaysia’s AI agent-powered messaging app Respond.io raises $62.5M, eyes acquisitions
Respond.io, one of Malaysia startups to watch, uses AI agents to handle high volumes of customer inquiries and charges per convo, not per seat.
AI 资讯
How to Track Local SEO Rankings by City with an API
Local SEO rankings are not the same everywhere. Your website may rank in position 2 in Austin, position 8 in Dallas, and not appear at all in Chicago. That is why checking one generic Google result is not enough for local SEO. If you are working on local SEO , agency reporting, competitor monitoring, or location-based search analysis, you need to track rankings by city. A simple workflow looks like this: Keyword + city → SERP API → local search results → ranking check → CSV report In this tutorial, we’ll build a basic Python script that tracks local SEO rankings by city using a SERP API. We will: Define target keywords Define target cities Send city-specific searches to a SERP API Extract organic results Check where a target domain appears Save the ranking data to CSV This is not a full SEO platform, but it gives you the core logic behind many local rank tracking tools. Why city-level rankings matter Google search results are location-sensitive. A query like: best digital marketing agency may return different results in: New York Austin London Singapore Sydney This matters even more for local intent keywords, such as: dentist near me plumber in Chicago coffee shop in Austin real estate agent in Miami For these searches, the result page can include: organic results local packs Google Maps results ads business directories review sites service pages location-specific landing pages If you only check one location, you may miss what users actually see in other cities. For local SEO, ranking data without location context is incomplete. Why use a SERP API? You could try to check Google rankings manually. But that does not scale. You could also try to scrape Google directly, but that brings a lot of maintenance work: changing page layouts CAPTCHA blocked requests proxy handling inconsistent HTML location mismatch parser updates retry logic A SERP API gives you structured search results in JSON. Instead of parsing raw HTML, you get data like this: { "query" : "plumber in Aust
AI 资讯
DOJ Lawyers Argue xAI Is ‘Vital’ for National Security in NAACP Lawsuit
In a bid to dismiss a lawsuit over xAI’s polluting gas turbines, the Justice Department claimed the company is integral to military operations—including the Iran War.
AI 资讯
Anthropic Is Still at Odds With the White House Over Claude Fable 5
Anthropic leaders flew to Washington, DC, to meet with White House officials on Monday. After high-level talks, they're still split on the risk Claude Fable 5 presents.
AI 资讯
TypeScript Patterns for Environment Variables
Yesterday, as I was working on a CORS configuration, AI generated a block of code for me: const allowedOrigins = [ process . env . FRONTEND_URL || " http://localhost:3000 " , process . env . ADMIN_URL || " http://localhost:3001 " , ]. filter ( Boolean ); I was wondering... why use .filter(Boolean) here? 🤔 The fallbacks already guarantee strings. So I hovered on the variable. The type definition read: const allowedOrigins : string [] Fine. Made sense. But then I got curious. What if I removed the hardcoded fallbacks? const allowedOrigins = [ process . env . FRONTEND_URL , process . env . ADMIN_URL , ]. filter ( Boolean ); My type definition changed to: const allowedOrigins : ( string | undefined )[] I was shocked. I just filtered the array. How can TypeScript still think there's an undefined in there? First: What Does .filter(Boolean) Even Do? Boolean used as a filter function removes any falsy value from an array: false null undefined 0 "" NaN So: [ " https://app.com " , "" , undefined ]. filter ( Boolean ) // Result: ["https://app.com"] At runtime, this works exactly as you'd expect. No undefined survives. So why does TypeScript disagree? 🤷♀️ The Real Answer: TypeScript Doesn't Run Your Code TypeScript is a transpiler. It doesn't execute .filter(Boolean) — it only looks at types. When it sees this: array . filter ( Boolean ) It knows the callback returns a boolean . But it doesn't know what that means for the type of the elements that survive. It can't infer "if Boolean(x) is true, then x must be a string." So the undefined stays in the type — even though it'll never actually be there at runtime. That's the gap: your runtime behavior is correct, but your types are lying. The Fix: Type Predicates TypeScript lets you close that gap with a type predicate — a way of explicitly telling the compiler what a filter function guarantees: const allowedOrigins = [ process . env . FRONTEND_URL , process . env . ADMIN_URL , ]. filter (( origin ): origin is string => Boolean ( o
AI 资讯
Key mission for Europe's commercial space enterprise scrubbed again
Isar Aerospace is not hurting for money, but it is sorely lacking in the currency of flight experience.
AI 资讯
Quando o Pomodoro não funciona: organização realista para TDAH em burnout
Um relato honesto de alguém que trabalha com design, vive com TDAH e está cansada de dicas genéricas Tem um tipo de artigo sobre organização que eu já sei de cor. É sempre alguma variação de: “faça uma lista, use Pomodoro, durma 8 horas e beba água”. Só que tem um cenário que quase nunca aparece nessas listas: O momento em que você não é neurotípica, está em burnout, tem duas tarefas importantes com o mesmo prazo e nenhuma técnica milagrosa resolve. É sobre isso que eu quero falar aqui. Sumário: O cenário caótico (e bem real) Por que o Pomodoro não funciona pra todo mundo Burnout em quem tem TDAH O dia em que duas tarefas importantes têm o mesmo prazo Estratégia 1: uma prioridade verdadeira por dia Estratégia 2: subtarefas em vez de cronômetro Estratégia 3: time blocking gentil (agenda que não te esmaga) Estratégia 4: reduzir fricção em vez de exigir mais disciplina Estratégia 5: contratos curtos consigo mesma E quando nada disso parece suficiente? Referências O cenário caótico (e bem real) Imagina o seguinte: Projeto A : entrega do pitch da pós, com prazo na sexta. Projeto B: preparar apresentação do roadmap, também para sexta. Você já está cansada, a cabeça rodando, o corpo em modo economia de energia. Aí você joga no Google “como se organizar” e recebe de volta: “Use a técnica Pomodoro, 25 minutos de foco, 5 de pausa.” E você pensa: “Amiga, eu mal estou levantando da cama. Você quer que eu vire um cronômetro humano?” A real é que muita técnica de produtividade tradicional foi pensada para cérebros neurotípicos. Quando a gente vive com TDAH, burnout ou os dois juntos, essa lógica simplesmente não encaixa tão bem. Por que o Pomodoro não funciona pra todo mundo Pomodoro é ótimo… para algumas pessoas. Mas tem motivos bem específicos para ser um caos para muitos de nós. Por exemplo: A pausa obrigatória, interrompe justo quando o foco finalmente chegou. A sensação do timer contando, aumenta a ansiedade em vez de ajudar. Cada “reinício de ciclo” vira mais uma micro deci
AI 资讯
Meta CTO Andrew Bosworth Admits the Company’s AI Reorg Was ‘Atrocious’
In an internal memo seen by WIRED, Bosworth promised employees more stability, better communication, and the return of workplace perks as the company seeks to improve morale.
AI 资讯
Facebook’s new AI Mode search gets its info from public posts
Your public Facebook posts could help inform AI-generated results in Meta's new AI Mode. When you search on Facebook, the "AI Mode" option will appear alongside the usual search modes like "People" and "Marketplace." It's one of several new AI features Meta is rolling out starting today, including photo presets that swap sports jerseys onto […]
科技前沿
UK to ban social media for kids under 16, may impose overnight curfews
Critics say bans push kids to riskier alternatives and can be beaten with VPNs.
AI 资讯
Chipmaker Nvidia seeks to raise over $25B in first bond deal since 2021
Debt sale set to test investor appetite for further exposure to AI sector amid a deluge of borrowing.
AI 资讯
Agent Accounts Quickstart in Python
A connected Gmail grant starts with an OAuth consent screen and ends with a refresh token you have to babysit; a Nylas Agent Account starts and ends with one POST request. Same API surface afterward — same messages endpoints, same webhooks, same calendar — but the provisioning story couldn't be more different, and that difference is what makes these hosted mailboxes such a natural fit for Python automation, agents, and test harnesses. Agent Accounts are in beta, and the official quickstart gets you from nothing to a sending-and-receiving mailbox in under 5 minutes using curl. Here's the whole flow as a Python script. Step 0: prerequisites You need an API key (run nylas init with the CLI, or use the Dashboard) and a domain. The fast path for testing: register a *.nylas.email trial subdomain from the Dashboard — no DNS records, instantly usable. Custom domains need MX and TXT records published at your DNS provider, with automatic verification once they propagate; save that for production. import os import requests BASE = " https://api.us.nylas.com " HEADERS = { " Authorization " : f " Bearer { os . environ [ ' NYLAS_API_KEY ' ] } " , " Content-Type " : " application/json " , } Step 1: provision the account POST /v3/connect/custom with "provider": "nylas" . No refresh token — just an email address on a registered domain: resp = requests . post ( f " { BASE } /v3/connect/custom " , headers = HEADERS , json = { " provider " : " nylas " , " settings " : { " email " : " test@your-application.nylas.email " }, }, ) resp . raise_for_status () grant_id = resp . json ()[ " data " ][ " id " ] print ( f " Agent Account live: { grant_id } " ) Save that grant_id — per the docs, you'll use it in every subsequent call. The mailbox works with every existing endpoint from this moment on. If you want policies or mail rules applied, add a top-level workspace_id to the same request body; the account inherits the workspace's limits, spam settings, and rules. Omit it and the account lands i
AI 资讯
Agent Accounts Quickstart in Node.js
Provisioning a working email mailbox from Node.js takes less code than the average OAuth callback handler. No consent screen, no token refresh job, no provider SDK — one fetch call returns a grant ID, and from there the mailbox sends, receives, and RSVPs to calendar invites. That's the pitch for Nylas Agent Accounts , hosted email-and-calendar identities you control entirely through the API. They're in beta, and the official quickstart promises a working account in under 5 minutes. The docs show it in curl; here's the same flow in JavaScript. What you need Two things: an API key, and a registered domain for the mailbox to live on. For testing, the zero-DNS path is a *.nylas.email trial subdomain registered from the Dashboard — addresses like test@your-application.nylas.email work immediately. For production you'd register your own domain (the Dashboard generates the MX and TXT records to publish, and verification is automatic once they propagate), but the trial domain is fine for this walkthrough. export NYLAS_API_KEY = "nyk_..." Create the mailbox The endpoint is POST /v3/connect/custom — the same Bring Your Own Auth route used for other providers — with "provider": "nylas" . Unlike OAuth providers, there's no refresh token in the body; just the address: const BASE = " https://api.us.nylas.com " ; const headers = { Authorization : `Bearer ${ process . env . NYLAS_API_KEY } ` , " Content-Type " : " application/json " , }; const res = await fetch ( ` ${ BASE } /v3/connect/custom` , { method : " POST " , headers , body : JSON . stringify ({ provider : " nylas " , settings : { email : " test@your-application.nylas.email " }, }), }); const { data } = await res . json (); const grantId = data . id ; // save this — every later call needs it That grantId is the whole handle. The mailbox behind it is live as soon as the response comes back, and it works with every existing endpoint — messages, drafts, folders, calendars, events, webhooks. One optional field deserves a menti
AI 资讯
Java Interface
today we discuss about Interface in Java. first we understand the concept with simple Analogy, Imagine you go to a shop and buy items. in a bill counter, the shop keeper care about only one thing. The customer paid the Money or not. The shopkeeper does NOT care about how you pay the money, UPI Debit Card Cash They only thing is payment paid in successfully. Here a interface acts like a Rule in billing counter. It only defines what must be done, not how it should be done. Different payment methods follow the same rule, but each one works in its own way. The shopkeeper does not need to change anything in the billing counter. No matter how the customer pays, the system works the same. so, i follow this analogy and using a example for this blog. What is Interface? (in GeeksforGeeks) An interface in Java is a blueprint that defines a set of methods a class must implement without providing full implementation details. It helps achieve abstraction by focusing on what a class should do rather than how it does it. Interfaces also support multiple inheritance in Java. A class must implement all abstract methods of an interface. All variables in an interface are public, static, and final by default. Interfaces can have default, static, and private methods first create a interface file Payment.java public interface Payment { void pay ( int amount ); } here we create a method but not defined that method This is the shop rule. “Anyone wants to pay must follow one rule → pay the amount.” The shop does not explain how you pay, only thing is you must pay. next we create another file for Different Customers, class CardPayment implements Payment { public void pay ( int amount ) { System . out . println ( "Paid ₹" + amount + " using Card" ); } } class UpiPayment implements Payment { public void pay ( int amount ) { System . out . println ( "Paid ₹" + amount + " using UPI" ); } } class CashPayment implements Payment { public void pay ( int amount ) { System . out . println ( "Paid ₹" +