A milestone in expanding access to AI
ChatGPT Ads reaches $1 billion in annualized revenue run rate and expands globally, supporting broader access to AI through free and affordable options.
找到 2698 篇相关文章
ChatGPT Ads reaches $1 billion in annualized revenue run rate and expands globally, supporting broader access to AI through free and affordable options.
The Battery-Free Smart Card Revolution: A Hands-On Review of NFC Energy-Harvesting MCU PCBs In professional networking, first impressions are everything. But in a landscape crowded with QR codes and cheap plastic tap-to-share cards, how does a high-tier developer, cybersecurity expert, or tech founder stand out? Enter the NFC Energy-Harvesting MCU PCB Business Card . It’s not just a card; it's a fully functional, battery-free embedded system packed inside a 1.6mm-thick piece of FR-4 fiberglass. In this review, we’ll dive deep into the tech behind passive RF power harvesting, explore the hardware stack making this possible, and evaluate whether building (or selling) these high-tech novelties is worth your time. What is an NFC Energy-Harvesting MCU PCB? At its core, this device is a printed circuit board (PCB) styled to the dimensions of a standard business card. However, unlike passive NFC tags that simply store a URL, this card integrates an onboard Microcontroller Unit (MCU)—such as the ultra-cheap WCH CH552 or Microchip ATTiny85 —and an array of LEDs or an e-paper display. The real engineering marvel? It has no battery. +-------------------------------------------------------------+ | [ NFC Coil Antenna ] -> (Harvests 13.56 MHz RF Field) | | | | | v | | [ Schottky Rectifier Bridge ] | | | | | v | | [ Voltage Regulator ] | | | | | v | | [ Ultra-Low Power MCU ] | | / \ | | v v | | [ Status LEDs ] [ Dynamic NFC payload ] | +-------------------------------------------------------------+ When tapped against an NFC-enabled smartphone, the phone's transmitter emits a magnetic field at 13.56 MHz . The trace antenna etched directly into the outer edges of the PCB acts as an inductor, harvesting this RF energy and converting it into AC electricity. This current is rectified to DC, regulated to a stable 3.3V, and powers up the MCU to execute its onboard program instantly. The Tech Stack: Under the Hood To truly appreciate these cards, we have to look at the components that m
I kept hitting the same wall with coding agents. One Claude Code or Codex session in a repo works great. The moment I wanted two tasks moving at once - login in one terminal, payments in another - they started stepping on each other. Same working directory, same checked-out branch, two processes editing the same files. Chaos. The fix turned out to be a Git feature that has been sitting there for years: git worktree . It gives you several working directories backed by the same repository . Each folder has its own checked-out branch, but all of them share the same objects, commits and branch list. The setup From your main checkout: git worktree add ../integration -b integration main git worktree add ../feature-login -b feature/login main git worktree add ../feature-payments -b feature/payments main Which leaves you with something like: project/ ├── main/ → branch main ├── integration/ → branch integration ├── feature-login/ → branch feature/login └── feature-payments/ → branch feature/payments Now every agent gets its own folder. One terminal per worktree, one agent per terminal, and nobody touches anybody else's files: cd feature-login # agent 1 works here cd feature-payments # agent 2 works here, at the same time The part that surprised me: no push, no pull My first instinct was: agent finishes login, pushes the branch, then I pull it into integration. That's the muscle memory from working in a team. It's unnecessary here. All the worktrees belong to the same repository on the same machine, so Git already knows every branch locally. When agent 1 finishes: cd feature-login git add . git commit -m "feat: implement login" ...the integration worktree can merge it directly: cd ../integration git merge feature/login git merge feature/payments npm test No git push , no git pull . The directories are different, but feature/login and integration are branches of the same repo. When integration is green: cd ../main git merge integration You don't even have to wait for a worktr
How to Build an AI Agent That Works 24/7 Building an AI agent that works 24/7 is a game‑changer for businesses seeking continuous automation, real‑time insights, and round‑the‑clock customer engagement. Whether you’re automating sales outreach, providing instant support, or processing data streams, a persistently available AI agent can boost efficiency, reduce latency, and deliver a seamless user experience. In this guide we’ll walk through the essential steps, architectural considerations, and practical tips to design, deploy, and maintain an AI agent that never sleeps. Understanding the Core Requirements for a 24/7 AI Agent Before you write a single line of code, clarify the fundamental requirements that differentiate a regular AI model from a 24/7 AI agent : Availability – The agent must stay online continuously, handling requests without downtime. Scalability – It should automatically adjust resources to meet spikes in traffic. Reliability – Fault‑tolerance mechanisms (redundancy, retries, circuit breakers) are essential to prevent crashes. Security & Compliance – Data encryption, authentication, and adherence to relevant regulations (GDPR, HIPAA, etc.) protect user privacy. Observability – Real‑time monitoring, logging, and alerting let you detect and remediate issues before they affect users. These pillars guide every subsequent design decision and ensure your AI agent can operate continuously in production environments. Designing a Scalable Architecture A robust architecture is the backbone of a 24/7 AI agent . Below is a high‑level blueprint that you can adapt to cloud, on‑premise, or hybrid deployments. 1. Decouple the Front‑End and Back‑End API Gateway – Expose a lightweight REST or GraphQL endpoint that routes requests to the appropriate micro‑service. Stateless Front‑End – Use a containerized web service (e.g., Node.js, FastAPI) that forwards requests without storing session state. 2. Use a Message Queue for Asynchronous Work Implement a durable message
Hello, I'm Shrijith Venkatramana, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. Most people learn neural networks by staring at the model. Weights. Attention. MLPs. LayerNorm. Tokenizers. Context windows. But when you actually train an LLM, there is another piece of machinery making billions of decisions every second: the optimizer. A 70-billion-parameter model does not "learn" because gradient descent tells it which direction is better. It learns because an optimizer turns an enormous, noisy stream of gradients into parameter updates that are small enough not to explode, large enough to make progress, and adaptive enough that different parameters can move at radically different effective rates. For the last decade, the dominant answer has largely been some form of Adam , and increasingly AdamW . The interesting part is that Adam is not some mysterious LLM-specific invention. The original Adam paper was submitted in December 2014 by Diederik Kingma and Jimmy Ba, before the Transformer, before GPT, and before the modern LLM era. Kingma was working on scalable machine learning and generative models; Ba was then a PhD student working with Geoffrey Hinton at Toronto. Three years later, the Transformer paper used Adam directly in its training recipe. Then came AdamW, which fixed a subtle but important problem in how regularization interacted with adaptive optimization. By 2025, Adam was sufficiently influential to receive an ICLR Test of Time award. So what exactly is Adam doing? And why is AdamW usually what you actually want when training a Transformer? 1. First, forget Adam: what problem is the optimizer solving? Suppose your neural network has parameters theta = [theta_1, theta_2, ..., theta_N] and your training batch produces a loss L . Backpropagation gives you g = dL/dtheta The simplest possibl
Originally published at nlocoding.com 92%of regression bugs in SaaS platforms go undetected until production without AI-based testing (Source: Capgemini World Quality Report 2026) Most companies spend more on fixing bugs post-release than on their entire automated testing stack. According to the Testing Intelligence Survey 2026, the average cost to fix a bug in production is $3,800—triple what it costs to catch it during automated testing. This is why 2026 trends in AI-driven software testing matter: the cost of ignoring them is rising fast. AI-driven test coverage is replacing manual scripts in 2026 AI-driven test coverage now exceeds traditional manual scripting by 64% in efficiency (SmartBear State of Quality 2026). Companies like Atlassian cut manual test creation time by 71% after switching to AI-powered tools such as Testim and Mabl, which both cost around $100/user/month. Manual testers are not obsolete, but they are now orchestrators, not script jockeys. 💡 Pro Tip: Start by identifying repetitive UI tests. AI tools excel at these and deliver instant ROI. Self-healing tests are solving flaky pipelines Self-healing tests reduce flaky test failures by 83%, according to Sauce Labs' 2026 industry report. This matters: Netflix slashed CI/CD pipeline downtime from 14 hours/month to under 2 by using Functionize, which auto-fixes selectors and waits for dynamic elements. The technology isn't magic, but it is relentless. 83%fewer flaky failures with self-healing AI (Sauce Labs 2026) You’ll notice fewer midnight Slack panics. Give your team back their weekends. Adopt a self-healing platform with robust change detection. GenAI is writing—and maintaining—test cases in 2026 Generative AI wrote 54% of all new test cases at Fortune 500 companies in Q1 2026 (TestOps Pulse). Copilot for Test Automation, released by GitHub in February 2026, costs $19/month and supports Cypress, Playwright, and Selenium. The result? Test coverage expands, but more importantly: maintenance shrin
Changelogs and pricing pages ship the model. Your feed just argues about it later. I used to treat AI Twitter like a release channel. Bad idea. The timeline is commentary. The drop is usually a quiet line on a docs page. Last month a new model ID showed up on an API pricing table before anyone I follow wrote a thread. I was not clever. That URL was already on a watch. The feed still spent the afternoon debating vibes. What belongs in a real brief When a lab ships, I want five boring facts: The model name and the ID your code will call Price per million tokens (input and output) Context window and any rate-limit changes Deprecations or aliases that reroute old names Where it lives (API only, chat app, open weights, or all three) A launch blog is optional. Those five lines are the brief. Where the news actually appears Social posts trail the docs. I keep pages, not accounts. OpenAI: API changelog, deprecations, pricing. Anthropic: news, platform release notes, pricing. Google: Gemini API changelog and pricing. Open weight: Hugging Face org pages I actually deploy from. Discord is faster for some open-weight labs. Fine. I still want the model card and the price before I rewrite a prompt. Monday rituals die by Tuesday I tried opening three changelogs every Monday. Skim. Close tabs. Feel responsible. It works until a midweek price cut or a silent alias change. Then you learn from an invoice spike or a broken eval. Google Alerts on "new GPT" or "Claude release" is noise. You get essays, not the SKU. Screenshot watchers catch layout shifts on marketing pages. Sometimes useful. I usually need the sentence that changed on the pricing table. What I leave running I paste the docs URLs I already trust into a website change alert and ask for a one-line brief: new models, price cuts, deprecations, alias moves. AyeWatch is what I use for that. Free Preview is $0 (3 topics, 6 lifetime runs). Pro is $9 a month. When something fires, I get a short summary, open the page, and copy the
Burnt out on wrist buzzes and notification overload? A new crop of minimalist wearables promises to collect your health data without demanding your attention.
Experience the oddly satisfying joy of labeling bins, drawers, and more with the best Bluetooth and traditional label makers.
Young adults are in more group chats than ever—sometimes more than 20 at a time. Here’s how to tame the chat madness.
Thin vs Thick Provisioning: Which One Is Actually Eating Your Datastore? You just got an alert: your datastore is at 92% capacity. But when you check the actual VMs, they're barely using half the storage you allocated to them. Welcome to the most common source of confusion in virtualization storage — the gap between allocated and used . This comes down to how you provisioned your virtual disks in the first place. Thin Provisioning: Pay As You Go With thin provisioning, a 100 GB virtual disk doesn't actually consume 100 GB on your datastore right away. It grows as data is written to it. Create ten VMs with 100 GB thin disks, and if they're only using 20 GB each, your datastore shows 200 GB used — not 1 TB. This is why thin provisioning is the default choice for most environments today. It lets you overcommit storage and squeeze more VMs onto the same physical hardware. The catch: you must monitor actual datastore consumption, not just allocated capacity. If every VM suddenly starts writing more data than expected, you can run out of physical space even though your dashboards showed "plenty of room" based on allocated sizes. Thick Provisioning: Reserve It All Up Front Thick provisioning reserves the full disk size the moment you create it. There are two flavors: Lazy-zeroed : space is reserved, but blocks are only zeroed out the first time the VM writes to them. Faster to create, slightly slower on first write. Eager-zeroed : every block is zeroed at creation time. Slower to provision (a 500 GB disk can take a while), but delivers the most predictable, consistent I/O performance from the very first write. Which One Should You Actually Use? A simple rule of thumb: default to thin provisioning for general-purpose VMs — web servers, file servers, domain controllers, dev/test environments. Switch to eager-zeroed thick provisioning specifically for workloads where I/O consistency matters more than storage efficiency — databases, latency-sensitive applications, anything whe
AI coding agents have a communication problem. They can be technically capable and still make a development loop feel slow because every small action arrives with a paragraph of ceremony: a restatement of the ticket, a promise to investigate, an explanation of an obvious command, and a summary that repeats the first three things. That style is sometimes useful. It is not useful all the time. When you are deep in a known codebase and want to diagnose a failing test, inspect a diff, or make a narrow fix, the value is usually in four things: what the agent found, what it changed, how it verified the change, and what remains uncertain. Caveman is a skill/plugin built around that distinction. It makes a coding agent communicate in short, direct language its deliberately rough “caveman-speak” while aiming to leave code, commands, and errors byte-for-byte intact. The project describes this as making the agent’s mouth smaller rather than its brain smaller. Ultra Mode is an interface choice The useful way to understand Caveman is not as a substitute for reasoning. It is an interface choice for the execution phase of work. A terse agent should still inspect the repository, follow the test suite, notice ambiguity, and say when evidence is missing. It simply should not pad a simple finding with social filler. Compare these two reports: “I’ve taken a look at the component and the reason it is re-rendering is likely because a new object reference is created during each render cycle. I recommend using useMemo to memoize that object.” “New object ref each render. Inline prop = new ref = re-render. Wrap in useMemo .” The second version is not appropriate for a design document. For a developer actively debugging a React component, however, it is easier to scan and easier to act on. The underlying technical claim is the same. What Caveman actually promises The Caveman repository says it works with Claude Code, Codex, Gemini, Cursor, Windsurf, Cline, Copilot, and other agent environmen
When applying for engineering roles, automated applicant tracking systems (ATS) often silently reject candidates due to parsing blockers like multi-column layouts, missing quantitative metrics, or non-standard font embeddings. To fix this latency bottleneck, I built MyRizzume ( https://myrizzume.me ) — designed to parse and score resumes end-to-end in under 1,000ms. What it checks: Layout Integrity: Validates that column and table layouts won't merge or scramble text during ATS ingestion. Action Verb Strength: Highlights passive phrases and suggests active, quantifiable replacements. Keyword Density: Compares section headers and skill blocks against common parser taxonomies. Try it out live at https://myrizzume.me and let me know how it handles your layout!
You know technical debt. Code that works today but accumulates hidden costs over time. Shortcuts that seem reasonable in the moment and compound into architectural problems that take months to untangle. The kind of debt that doesn't announce itself until the system starts failing in ways that are expensive and slow to fix. Chronic stress works the same way. Every sprint crunch, every production incident at 11PM, every sustained period of pressure without adequate recovery — these aren't just experiences you have and move past. They're transactions against a biological account. And like technical debt, the interest compounds quietly until the system starts failing. Here's what the debt actually is, how it accumulates, and — most importantly — how to stop it before the refactor becomes mandatory. The Debt Accumulation Model javascript class StressDebt { constructor() { this.magnesium = 100 // % of optimal this.vitaminD = 100 // % of optimal this.omega3Index = 8 // % target this.HPARegulation = 100 // % of optimal this.prefrontalIntegrity = 100 // % of optimal this.dopamineBaseline = 100 // % of optimal } // called every week of unaddressed chronic stress accrue(stressLevel, coffeePerDay, supplementation) { // magnesium depletion this.magnesium -= stressLevel * 0.3 // cortisol burns magnesium this.magnesium -= coffeePerDay * 0.15 // caffeine accelerates excretion if (!supplementation.magnesium) { this.magnesium -= 0.5 // diet doesn't replace it } // downstream effects of magnesium depletion this.HPARegulation = this.magnesium * 0.9 // HPA loses regulator — cortisol response amplifies // vitamin D depletion (passive — no sun exposure) if (!supplementation.vitaminD) { this.vitaminD -= 0.3 // indoor work, winter, no replacement } this.dopamineBaseline = this.vitaminD * 0.85 // tyrosine hydroxylase requires vitamin D // omega-3 insufficiency (dietary) if (!supplementation.omega3) { this.omega3Index = 3.5 // western diet default } // neuroinflammation runs elevated at <6% /
A Technical PM's journey from frustration to shipping a solo Android app As a Technical Project Manager, I track time constantly. Client hours, project phases, billable work. It's part of the job. But every time tracker I tried left me frustrated. Toggl is powerful — too powerful. Every time I opened it, I had to navigate through workspaces, projects, tags, and integrations I'd never use. Clockify felt the same. Harvest was built for teams, not for someone who just wants to know where their day went. And don't get me started on the design. Most of these apps look like they were built in 2012 and never updated. So I did what any slightly obsessive PM would do: I built my own. The Problem I Was Actually Solving It wasn't that existing trackers lacked features. It was that they had too many. Every morning I'd open an app, get overwhelmed by options, and either spend 2 minutes setting up a timer correctly or just give up and track nothing. By the end of the week, I had no idea where my billable hours went — which meant I was probably undercharging clients. I wanted one thing: tap a button, start tracking. That's it. Building Tempo as a Non-Developer Here's the part that still surprises me: I built Tempo without writing a single line of code. As a Technical PM, I understand systems, workflows, and user experience — but I'm not a developer. I used AI tools to go from idea to a fully functional Android app in 2–3 months. The process wasn't always smooth. There were bugs, confusing UX decisions, and moments where I questioned whether I was building something anyone else would actually use. But I kept coming back to the same question: would I use this every day? And the answer was always yes. What Tempo Does (and Doesn't Do) Tempo is deliberately minimal: One tap to start tracking **— no setup, no forms, no friction **Billable vs non-billable toggle — know exactly what to invoice Daily & weekly reports — see where your time actually goes Custom projects with icons and colors
1. Introduction Excel is much more than a spreadsheet for entering numbers. It can be used as a data-analysis tool that helps analysts inspect, validate, filter, summarize, and prepare raw data before deeper analysis begins. In typical analytics, the quality of the final work depends heavily on the quality of the data used; therefore, data cleaning is not an optional step—it is the foundation of effective data analysis. This article demonstrates key Week 1 Excel concepts _using an employee dataset containing _employee IDs, names, departments, gender, marital status, hire dates, salaries, educational level, performance score among others. The raw file intentionally contains common data-quality issues: inconsistent capitalization on the First and Last names, blank records, duplicate employee records, varying department names, currency and dates that need review. By working through these issues, the article shows how Excel’s formatting tools, text functions, filters, conditional formatting, numerical functions, conditional summaries, and date functions can turn a messy workbook into an analysis-ready dataset. 2. Why Data Cleaning Matters Data cleaning is more than just about removing errors. By standardizing formats and categories, we make datasets more transparent, usable, and valuable for management analysis and reporting purposes. Data analysis is simple – garbage in, garbage out. A dashboard or prediction can appear professional, but can be misleading if the underlying data has duplicates, blank values, inconsistent categories or incorrectly formatted text and dates. For example, “IT” “I.T.” and “Information Tech” can be viewed as different department values if naming is not standardized. Duplication of an employee ID can inflate employee counts and department totals. A blank performance score might mean that something is missing and should be looked into and dates saved as text cannot be reliably used in calculations such as employee tenure checks. A good practice
Most job searches look the same from the inside: a dozen open browser tabs, a spreadsheet that was accurate for about four days, and a nagging feeling that something is slipping. Applications leak out the bottom. Follow-ups get forgotten. And after a few weeks of it, you have done a lot of work and learned almost nothing about what is actually working. I ran mine that way for a while. Then I stopped treating it as a to-do list and started treating it as a pipeline: named stages, a scoring step at the front, and a follow-up cadence that did not depend on my memory. That one shift changed how the whole search felt. Here is the system. Why a list fails you A to-do list is good at exactly one thing: telling you what to do next. That is also its limit. A list cannot tell you what is working. It has no stages, so you cannot see where things stall. Are you not getting responses because your applications are weak, or because you are aiming at the wrong roles, or because you never follow up? A list shrugs. It just shows you the next unchecked box. And because a list rewards volume, it quietly pushes you to apply more without ever asking whether applying more is the problem. You end up repeating the same misses faster. The reframe is simple. A job search is not a list of chores. It has stages, the same way a sales pipeline does. Naming those stages is the first thing that changes, because you cannot improve a step you cannot see. The stages Here is the pipeline I settled on, in plain terms: Sourced. A role you found and might go after, but have not evaluated yet. Evaluated. You have looked at it seriously and decided it is worth pursuing. Applied. You are in. Follow-up. You have applied and the clock is running on a nudge. Interview. A human is talking to you. Offer. The point of the whole thing. And then the ways a role ends, which matter more than people think: No response. You applied and heard nothing back. Ghosted. Closed. The posting closed before you got a real shot at
I’ve been building a browser-first project called RelicBeam, and one feature I wanted was simple in theory: Open a folder on one device and temporarily browse it from another device without installing anything. That became Remote Files, part of RelicBeam’s Device Portal. The host selects a folder, another device joins with a QR/code, the host approves the connection, and the second device can browse, preview and download files. The folder itself is never uploaded to RelicBeam. File data travels over a WebRTC DataChannel. If a direct connection isn’t possible, my own TURN server relays the encrypted traffic. Device Portal traffic is end-to-end encrypted between the connected browsers. The interesting problems The file browser itself was actually the easy part. Android file pickers kept killing sessions When I added optional uploads, I noticed something odd during testing. The first upload worked, but after opening the Android file picker a few times, the Remote Files session could suddenly disconnect. It turned out Android can background or suspend the browser while the native file picker is open. That could temporarily drop the Socket.IO signaling connection, and my server was treating any disconnect as the viewer leaving permanently. The fix was a short reconnect grace period. Temporary disconnects now get time to recover, while explicit Leave and End session actions still terminate access immediately. Firefox and Safari can browse, but not host uploads Remote Files works read-only across browsers, but writable folder access is more limited. Chrome and Edge expose writable directory handles through the File System Access API, so a host can optionally allow remote uploads into the selected folder. Firefox and Safari don’t currently expose the same writable directory picker. So today: Chrome / Edge host Browse ✅ Preview ✅ Download ✅ Optional uploads ✅ Firefox / Safari host Browse ✅ Preview ✅ Download ✅ Host uploads ❌ Firefox and Safari can still be the remote device
Mac LLM server that cuts agent wait times from 90s to 5s Discussion | Link
Hello, I'm Shrijith Venkatramana, and I'm building LiveReview — a blast-radius aware AI code review built for your business-critical systems. Star us to help devs discover the project, give it a try, and share your feedback to help improve the product. There is a strange thing that happens when you make an AI system very good at optimization. It starts finding solutions that look almost like bugs in reality. Give a boat-playing agent points for hitting objects, and it may learn to drive in circles forever rather than finish the race. Give a robot a reward for putting a block at a certain height, and it may discover that flipping the block upside down satisfies the measurement. Give a language model a reward for producing answers humans prefer, and it may learn that agreeing with humans is often more profitable than correcting them. And give an LLM access to the code that calculates its own reward, and researchers have observed something considerably more unsettling: in a controlled experiment, models that had previously learned simpler forms of specification gaming sometimes went on to modify the mechanism that generated their reward. ([Anthropic][1]) None of this requires the model to "want" anything in the human sense. The optimizer is simply doing its job. The problem is that we specified the job incorrectly . For developers building LLMs, agents, evaluators, and automated coding systems, this is one of the most important failure modes to understand. 1. The Basic Idea: You Asked for X, but Measured Y Suppose you're building a coding agent. What you actually want is: correct, robust, maintainable software But directly measuring that is expensive. So you give the agent a reward: +10 tests pass +1 code compiles +0.1 code is concise -5 tests fail This seems reasonable. But now the agent isn't actually being optimized for: "write correct software" It is being optimized for: "maximize this scoring function" Those are only approximately the same thing. That distinction