今日已更新 253 条资讯 | 累计 41930 条内容
关于我们

标签:#productivity

找到 1124 篇相关文章

AI 资讯

The 3-line discipline

When I write code in unfamiliar territory, I write three lines, then I run it. Then I write three more lines, and I run it again. I've been doing this for twenty-four years. It's the most specific habit I have. I almost didn't write this article, because the habit feels too small to be worth describing — but then I noticed that it's the part of my way of working that I can never seem to explain to someone in real time. It needs writing down. Three principles The discipline rests on three things I believe about writing code. They're not deep. They've just stayed with me. 1. Trust nothing but your own code. If you can't trust the code you wrote yourself, what can you trust? Not a library, not a vendor's documentation, not your own assumption from yesterday. The only thing in the system whose behavior you can fully verify is the code you just typed, by running it. 2. Write in code, not in language. If you're describing what the code should do in Japanese or English, you're spending the same time you could have spent writing the code itself. By the time the code runs, the description is already done — by the code, in a more precise form than any language could give it. 3. Make three lines complete. The three lines you just wrote should be complete. Error handling included. Validation included. Logging included. Not "I'll add validation later." Not "I'll wrap it in a try-catch later." Three lines, complete, then run. (There's a small exception to this. Sometimes you do want to ignore every error and move on — for instance, when you're trying to understand whether the happy path works at all before you care about anything else. That's a different mode, used deliberately. It's not the same as "I'll handle errors later.") Why three lines Three lines is roughly the unit of thought I can hold completely. Five lines, and I start guessing what the third line did. Ten lines, and I'm reading the code as if it were someone else's. Three lines is the size that stays mine. When thre

2026-06-29 原文 →
AI 资讯

How to Fix Excel CSV Date Import Problems (US / UK Format Guide)

You export a CSV from a UK system and double-click it in US Excel — 28/05/2026 suddenly looks like May 28, or something even stranger. The file isn't corrupt. Excel is guessing your date format based on your computer's locale. This short guide covers why that happens, how to import CSV correctly, and how to batch-fix dates that are already wrong. For the full walkthrough with examples, see the official guide: How to Fix Excel CSV Date Import Problems . Why Excel breaks CSV dates A CSV is plain text. It does not store whether a value is a date or a string. When you double-click to open, Excel parses using your regional settings: US Excel: MM/DD/YYYY UK / Europe: DD/MM/YYYY Dates like 03/04/2025 are the most dangerous — both parts are ≤ 12. US Excel may read April 3; UK Excel reads March 4. Excel won't warn you. Other common traps: Dates exported as serial numbers (e.g. 44927 ) Two-digit years triggering century guesses Re-saving as CSV destroys formats a second time The right way: don't double-click the CSV Open Excel first — don't double-click the .csv file Data → Get Data from Text/CSV (older Excel: Data → From Text) Set date columns to Text if you need to preserve the original string Confirm the source region (US / UK), then convert to a single format For team data exchange, agree on ISO 8601: YYYY-MM-DD in your schema — unambiguous, sorts correctly as text, and works in JSON APIs and databases. Ambiguous value US reads as UK reads as Safe format (ISO) 03/04/2025 2025-04-03 2025-03-04 Confirm source region 28/05/2026 — 2026-05-28 2026-05-28 05/28/2026 2026-05-28 — 2026-05-28 Already broken? Fix dates in the browser (no server upload) I built a free tool cluster on FormatList — everything runs locally in your browser : 1. Date Format Fixer — bulk repair Paste a date column or upload .csv / .txt Ambiguous rows highlighted; optional US / UK preference Export ISO / US / UK or download a fixed CSV Best for: normalizing a whole column to ISO before a database or API imp

2026-06-29 原文 →
AI 资讯

Contact Form 7 sent the email — but did it arrive? You have no way to know

Contact Form 7 runs on millions of sites for a good reason: it's free, light, and gets out of your way. I shipped it on client sites for years. The problem isn't that CF7 is bad — it's that it answers exactly one question ("did the form submit?") and stays completely silent on the one that actually matters in production: did the notification arrive? Here's the call every developer who maintains WP sites has taken at least once: "I filled in your contact form last week and never heard back." You check. The form is fine. JavaScript fires, the success message shows, no console errors. CF7 did its job — it handed the message to wp_mail() and forgot it ever existed. There's no record the submission happened, and no log of whether the email was delivered, bounced, or quietly dropped by the host's unauthenticated sendmail. The lead is just gone, and you have nothing to debug with. The three gaps that bite in production No submissions database. CF7 sends an email and discards the data. If the email fails or lands in spam, the submission never existed. (Flamingo helps, but it's a bolt-on — separate screen, no filtering or export out of the box, not tied to your form config.) No delivery log. You can't tell whether mail was sent, rejected, or bounced. "I never got it" has no audit trail to check against. No native block. CF7 is still a shortcode — [contact-form-7 id="123"] . You can't drop it into a block template, control its layout with block spacing, or edit it inline in Gutenberg. You paste a shortcode and hope. None of these are dealbreakers for a throwaway contact form. All three are dealbreakers when a missed submission is a missed sale. Migrating without rebuilding by hand The reason most people put off switching isn't the feature gap — it's the thought of rebuilding every form field by field. That's the part I wanted to skip. The migration path I use reads CF7's stored form definitions directly and recreates them as native forms. What comes across automatically: All

2026-06-29 原文 →
AI 资讯

Building a Real-Time AI Voice Agent with OpenAI Realtime API and Next.js

Voice interfaces are rapidly becoming the next major interaction layer after mobile and web UI. Instead of clicking, users will increasingly talk to systems that understand intent, context, and can execute actions in real time. In this article, we’ll build a production-grade architecture for a real-time AI voice system using modern web technologies such as Next.js, WebRTC, and OpenAI’s streaming capabilities. We’ll also explore how this architecture powers modern conversational systems like an AI Voice Agent platform, where AI can handle real-time interactions for business use cases like bookings, support, and sales automation. 1. Why Voice AI is the Next Interface Shift Text-based chatbots solved the first wave of automation. But voice introduces: Faster interaction (no typing) Higher emotional expressiveness Better accessibility Natural multitasking Businesses are now adopting systems like Voice AI for Business to replace traditional call centers and static IVR menus. The key challenge is not just speech-to-text, but building a low-latency conversational loop that feels human. 2. System Architecture Overview A production-ready AI voice system typically consists of: Frontend (Next.js) Audio capture via Web Audio API Streaming audio chunks UI for conversation state Backend (Node.js / Edge Functions) Session management Authentication Tool execution layer AI Layer OpenAI Realtime API (streaming) Function calling Context memory Audio Pipeline Speech-to-text streaming Text-to-speech streaming Optional noise cancellation 3. Core Concept: Real-Time Streaming Loop The core of a voice agent is a continuous loop: User speaks Audio is streamed to server Model transcribes in real time Model generates response token-by-token Response is converted to audio instantly Audio is played back with minimal delay The goal is to keep latency under ~800ms for a natural experience. 4. Building the Frontend (Next.js + Web Audio API) We start by capturing microphone input: const stream = awa

2026-06-29 原文 →
AI 资讯

I stopped trusting my agent the day it agreed with everything

There is a sentence my coding agent used to say that I now read as a warning light. You are completely right. For months I took it as a compliment. The machine agreed with me, so I figured I was onto something. I would describe a plan, watch the agent call it a strong plan, and go build it. If you work with an AI agent every day, you have heard your own version of this. Smart call. Solid approach. That makes a lot of sense. Each one is the machine nodding along while you talk. It feels good. That is the problem. What took me too long to admit An agent that agrees with everything I say stops being a thinking partner. It turns into something that flatters me into shipping my first idea. My first idea is rarely my best idea. Nobody's is. The whole point of a second mind in the room is that it pushes back when the first mind is about to walk into a wall. A yes-machine removes the one thing that made a second mind worth having. This has a name Sycophancy. These models are trained to be agreeable, because agreeable scores well in the feedback that shapes them. OpenAI said so out loud in 2025 when they pulled back a version of their model for being, in their words, overly flattering. They were pointing straight at the default behaviour. So your agent is doing exactly what it was tuned to do when it tells you that you are right. No malfunction involved. One opinion most builders have not made peace with Your agent's confident wrong answer costs more than a useless one. A useless answer wastes a minute. You see it is useless and move on. A confident wrong answer wastes a week, because you trusted it, built on it, and found out only when it broke in front of someone who mattered. Occasional wrongness is survivable. Everything is wrong sometimes. What actually bites is being wrong while sounding certain, and agreeable, and exactly like what you wanted to hear. How to tell if your agent is a yes-machine You can test it in a minute. Tell it a bad idea on purpose. Propose somethi

2026-06-29 原文 →
AI 资讯

I timed stair carries on my commute ? the spreadsheet column mobility apps skip

I log commutes in a spreadsheet because mobility apps smooth over the ugly legs. Last week I added a column I should have tracked years ago: carry seconds ? time from curb to platform when stairs replace ramps. The hidden leg My one-wheel leg is fine on paper. Three metro exits on my route have no elevator during maintenance. Carrying a 14 kg wheel down 22 stairs does not show up in trip duration. It shows up in whether I arrive annoyed enough to skip coffee. What I logged (one week) Exit Stairs Carry time (s) Mood after (1-5) North gate 22 38 2 Side ramp (control) 0 8 4 East stairs 16 29 3 Battery delta on those days? Within noise. Mood delta? Not noise. A cheap decision rule I turned this into a go/no-go check before leaving: if stairs > 15 AND carry_weight_kg > 12: prefer transit-only or locker elif stairs > 0 AND wet_floor: walk the wheel (no riding in station) else: ride It is blunt. It works better than pretending every leg is rideable. Assumptions up front Wheel weight includes pads and charger pouch (~14 kg for my commuter setup). I am not timing competitive carries ? just whether I can do this daily without hating it. Your threshold differs if every exit has elevators. What I would do differently I would log carry seconds from day one, same tab as distance and battery percent. Range math without carry math is incomplete for anyone who mixes metro and one-wheel. I work around personal EVs and sometimes cross-check specs on the official Kingsong catalog. https://www.kingsong.com/collections/electric-unicycle

2026-06-29 原文 →
AI 资讯

The 4 PM Rush: A Day Inside a Growing Food Tech Platform

What happens when thousands of people decide they're hungry at the exact same time? The Quiet Before the Storm 10:00 PM. The numbers are gentle tonight. One hundred eighty-nine requests trickle in. Someone in Lagos is ordering late-night suya. A rider in Ibadan is wrapping up his last delivery. In Bangladesh, someone is just discovering us for the first time. By 11:00 PM , things get quiet. Just 8 requests. The platform takes a breath. 2:00 AM. A mystery. 151 requests spike out of nowhere. We check the logs. Nothing unusual. Just a group of night owls ordering food, maybe shift workers, maybe students pulling an all-nighter. The beauty of a platform is we're always on, always ready. 7:00 AM. Good morning, Nigeria. Fifty-five requests. People waking up, checking their wallets, planning their day. The coffee hasn't even brewed yet, but the platform is already humming. The Morning Rush 9:00 AM. 315 requests. The workday begins. Offices buzz with conversations about lunch plans. If someone searches "foodmat site" for the third time this week, they're getting closer to finding us. A corporate client logs in to set up their employee meal program for the first time. By 10:00 AM , the traffic settles to 50 requests. A calm before the real storm. 11:00 AM. 173 requests. The hunger is building. People are making decisions about what to eat, where to order, and which vendor to choose. Our World Cup campaign notifications ping. Someone shares their referral code. The viral loop begins. The Lunch Explosion 12:00 PM. 321 requests. It's happening. The platform comes alive. 1:00 PM. 339 requests. The peak is building. Our servers are handling it smoothly. This is where the magic happens when thousands of people decide they're hungry at the exact same time. 2:00 PM. 289 requests. Still going strong. Vendor dashboards refresh. Riders accept orders. Laundry bookings come in alongside food deliveries. If someone cancels an order with a reason, we take note. Every interaction teaches us

2026-06-29 原文 →
AI 资讯

I Taught Claude Code to Speak Kiro

TL;DR — Claude Code sends its requests wherever one environment variable points. Aim that at a small local translator and it runs on the Kiro plan you already pay for. Full setup below, plus the two snags worth knowing about. Claude Code and Kiro have something funny in common: underneath, they're powered by the same Claude models. Same brain. They just grew up speaking different dialects, so out of the box they can't hold a conversation. I noticed this right as I was about to start a second subscription for Claude Code. My Kiro plan was already renewing every month, already serving the exact models Claude Code wanted to charge me for again. Paying twice to talk to the same thing felt absurd. So instead of buying a second seat, I hired an interpreter. One small program that sits between them, listens to Claude Code, and relays everything to Kiro in a dialect it understands. Here's how to set it up, and what I learned doing it. Why they can't just talk Claude Code is more open-minded than people assume. It doesn't hard-code where it sends requests. It reads one environment variable, ANTHROPIC_BASE_URL , and ships everything to that address. Normally that's the official endpoint, but it'll happily send its requests anywhere you tell it to. That's the opening. Point it somewhere local and the whole thing becomes possible. Meet the interpreter The catch is that Claude Code and Kiro phrase things differently. You can't just redirect one at the other and expect them to understand each other. You need a translator fluent in both. That's kiro-gateway-next : a tiny proxy that runs on your own machine. A request arrives phrased one way and leaves phrased another: Claude Code (phrases it for Anthropic) ──▶ kiro-gateway (rephrases it for Kiro) ──▶ your Kiro account Claude Code gets a reply in the format it expects. Kiro receives a request it recognizes. The interpreter does the rephrasing in the middle, and the conversation just flows. Setting it up, step by step Six steps. Abo

2026-06-29 原文 →
AI 资讯

I recorded every Claude Code session for 3 months. Here's what my work actually looked like.

For the last 3 months I recorded every session I had with Claude Code. Not screenshots, not memory. Every prompt I typed and everything it did, saved to a small database I own. I did it because I kept losing my own work. I would finish a week, someone would ask what I shipped, and I genuinely could not remember. The work was real. It just lived in terminal scrollback I would never scroll through again. So I set up a chain of small agents to remember it for me. Every night, while I sleep, one agent reads that day's raw sessions and writes a single clear note: what I built, the decisions I made, what is still open. Plain language, the way I would write it in a journal, not a wall of logs. Once a week, a second agent reads all seven daily notes and updates a profile of me: the projects I am moving, the skills I have actually used, the things I learned. After a few months this turned into a more honest picture of my work than my resume. Then a third agent reads all of that and drafts posts for LinkedIn and X about what I actually worked on that week. Building in public, without me having to remember or sit down and write. The part I like most: none of it runs on my machine. It is all scheduled cloud routines. My laptop can be off. I wake up and the notes, the profile, and the draft posts are already waiting. I have started open-sourcing this as Pulse. The capture and the nightly daily-note agent are out now. You point it at your own database and your own notes repo, and it writes your day for you, in plain English, in files you own. The weekly profile agent and the post-writer are the pieces I am extracting next. It is early and rough in places. The honest caveat: the writing is only as good as the model behind it, and a quiet day still makes a quiet note. But after 3 months, I no longer guess what I did. I just open the vault. The graph at the top is 3 months of my own notes, each day linked to the projects it touched. Repo: https://github.com/muhammademanaftab/pulse

2026-06-29 原文 →
AI 资讯

The Story of Building Stulo: One Student, Hundreds of Bugs

A few months ago, if someone had asked me to build a mobile app, I would've had absolutely no idea where to start. Today, an app I built is on the Google Play Store. It's called Stulo, and it's currently in closed testing. The funny part? I'm not a software engineer. I'm just a college student who got tired of missing opportunities. Internships were on LinkedIn, hackathons were buried somewhere on Instagram, college events lived inside WhatsApp groups, and competitions were scattered across random websites. If the algorithm didn't like you that day, you simply never found them. That felt... ridiculous. So I asked myself, "Why isn't there one place where students can find everything?" That simple question eventually became Stulo. Today, students can discover internships, hackathons, competitions, campus events, connect with other students, and share updates through a campus feed—all in one app. The biggest lie I believed was that building the app would be the hard part. It wasn't. Understanding why it wasn't working was. I built the first version using Emergent because, honestly, I didn't know enough to start from scratch. It got me surprisingly far. As the project became more serious, I moved development to Google AI Studio (Antigravity). That's when I learned something every AI-generated YouTube thumbnail forgets to mention: AI doesn't build products. It generates code. There's a huge difference. AI happily writes hundreds of lines of code, but it doesn't explain why your images randomly stop rendering after ten minutes, why scrolling suddenly feels like you're using a phone from 2013, or why fixing one bug somehow creates three completely unrelated bugs. Most days followed the exact same routine: generate code, run the app, watch something break, Google the error, ask AI, read Stack Overflow, realize the problem was my own code, and repeat. Some bugs took ten minutes to fix, while others stole an entire weekend. Looking back, one of the biggest things I learned wa

2026-06-29 原文 →
AI 资讯

OKF for Claude Code: structured, portable memory your agent (and team) can read

The problem: agents forget your project every session If you pair with a coding agent, you have lived this: a new session starts and the context is gone. The agent re-discovers your auth flow, re-guesses why a decision was made, re-reads the same files to rebuild a mental model you already explained yesterday. Project knowledge — the why behind your systems, the runbooks, the "don't touch this, here's the reason" — lives scattered across wikis, code comments, and people's heads. None of it travels with the code, and none of it survives a fresh context window. CLAUDE.md helps, but it's for standing instructions , and it gets loaded wholesale into every prompt. Auto-memory captures what an agent picked up, but it's implicit, per-agent, and not reviewed. A wiki is for humans and needs exporting. There's a gap: curated team knowledge that's structured, versioned with the code, and readable by any agent or person. What OKF is Open Knowledge Format is an open, vendor-neutral format (announced by the Google Cloud Data Cloud team in June 2026, Apache-2.0) that represents knowledge as a directory of markdown files with YAML frontmatter . That's the whole idea. No schema registry, no runtime, no SDK. If you can cat a file you can read it; if you can git clone a repo you can ship it. A bundle looks like this: .okf/ ├── index.md # progressive disclosure (root carries okf_version) ├── log.md # ISO-dated change history, newest first ├── services/auth-api.md # one concept = one file; path is its ID ├── datasets/orders-db.md ├── decisions/use-okf.md ├── runbooks/payment-failures.md └── metrics/checkout-conversion.md Each concept needs exactly one thing to be conformant: YAML frontmatter with a non-empty type . Everything else is optional. --- type : Service title : " Auth API" description : " Issues and verifies short-lived access tokens." resource : https://github.com/acme/auth tags : [ auth , platform ] timestamp : 2026-06-14T10:00:00Z --- # Endpoints | Method | Path | Descriptio

2026-06-28 原文 →
AI 资讯

I'm 11, I built a Math App with Gemini & Vercel, and I need your Mobile UX advice!

Hello again, DEV Community!I recently shared my project, Jesse Math Rock Star, and the feedback from this community has been incredibly supportive.For those who don't know me, I am 11 years old. I started coding with Scratch when I was 8, and I built this production web app using self-explored vibe coding, Google's Gemini models (via AI Studio), and Vercel!Looking at my analytics, 61% of my visitors are using mobile phones, mostly Android. I want to make sure the app feels perfect and fun for kids my age to use on small touchscreens.Could you do me a quick favour?Open the app on your phone: https://jesse-math-rockstar-app.vercel.app/ a quick round of math.Leave a comment below with your advice on the user interface (UI) and layout!Thank you all for being such a safe and helpful community for early-career builders! ( https://jesse-math-rockstar-app.vercel.app/ )

2026-06-28 原文 →
AI 资讯

Absolute Revolution in Assistants, ChuroAI.

I've been working on Churo, an open-source voice assistant built entirely in Python. It features high-quality speech-to-text and text-to-speech, web search, image understanding, and agentic capabilities. It runs with Ollama models and is designed to be easy to modify and extend. The goal is to provide a capable, local-first voice assistant that developers can actually inspect, customize, and build on. Repository: https://github.com/MathObsession/Churo-assistant or run it with(You need Ollama): pip install churovoice churovoice --voice male Feedback, issues, and contributions are welcome.

2026-06-28 原文 →
AI 资讯

Context Engineering Is the New Prompt Engineering

For the last two years, one skill dominated every AI conversation: Prompt engineering. People spent hours crafting the "perfect" prompt. They built prompt libraries. They sold prompt templates. They believed that better prompts meant better AI. But AI has evolved. The bottleneck is no longer the prompt. It's the context . The Prompt Was Never the Problem Imagine asking an AI: "Build me a secure authentication system." A perfect prompt isn't enough. The AI also needs to know: Which programming language you're using Your existing codebase Your framework Your database schema Your security requirements Your coding standards Your deployment environment Your team's conventions Without that information, even the best model is forced to guess. And AI is terrible at guessing. What Is Context Engineering? Context engineering is the practice of giving AI everything it needs to solve a task—not just instructions. It's about designing the right environment for the model to think. Context includes: Source code Documentation Project architecture Previous conversations Git history APIs Logs Tool outputs User preferences Business requirements Memory Constraints The prompt tells AI what to do. The context tells AI how to do it correctly. Why Prompt Engineering Is Reaching Its Limits A prompt is static. Real work isn't. Projects change. Requirements evolve. Files get updated. Tests fail. New bugs appear. The AI must continuously receive fresh information. That's impossible with a single prompt. Instead, modern AI systems constantly rebuild their context as they work. Think About AI Coding Agents Why do AI coding agents feel dramatically smarter than a normal chatbot? Not because they have better prompts. Because they constantly gather context. They can: Read your repository Search across files Run terminal commands Execute tests Inspect logs Read documentation Fix errors Verify changes Remember previous actions Every step adds more context. Every iteration makes better decisions. Cont

2026-06-28 原文 →
AI 资讯

The n8n bug that took three tries to find (and the free workflow it broke)

I built a free n8n workflow that writes your launch content for you. It broke three times before it worked, and the third break is the only part of this post worth reading. The problem Every time I ship a new digital product, I write the same five things: a short blog intro, a LinkedIn post, an X post, an Instagram caption, and a launch email. Same structure every time, different product. The kind of task that's boring enough to automate but annoying enough that I kept putting it off. So I built Launch Content Pack : an n8n workflow that takes one product description and generates all five, using an LLM node wired up with Claude Code on the customization side. It's free, it's on Gumroad, and the JSON is the whole product — open it, see every node. Why bother when there are 9,000+ free n8n templates already There are. I checked before building this, because there's no point shipping a workflow that already exists for free somewhere else. What's actually missing from most of those templates: nobody validates the nodes. A huge chunk of free n8n templates floating around were generated by someone (often an LLM) guessing at node types and parameters, and they quietly break the moment n8n ships a version update. I used n8n-mcp , a free MCP server, to confirm every single node type, version, and parameter against n8n's actual schema before writing any JSON. No guessing. That sounds like a small difference. It's the reason this post exists. The bug that actually mattered I tested the workflow in n8n Cloud. Two nodes ran clean — green checkmarks, no errors. Then the Code node that's supposed to take the LLM's output and split it into five labeled fields threw: Cannot read property 'text' of undefined My first guess was wrong. I assumed the LLM node's output field was named something other than text — output , maybe, or response — and that I just had the wrong field name in the Code node. Reasonable guess. Also not the actual bug. Here's what was really happening. The OpenAI

2026-06-28 原文 →