AI 资讯
I Went Looking for the Basis of 'N Characters Per Minute Is Fast' — There Wasn't One. Setting Read-Aloud Thresholds Honestly
📝 Originally published in Japanese on Zenn. This is the English version. Canonical: https://zenn.dev/uya0526_design/articles/satellite3_metrics-rationale 📚 This is satellite article #3 in my "Read-Aloud Speed Meter dev log" series. For the whole picture, see the main article . Where This Sits The read-aloud speed meter converts speaking speed into an evaluation label like "slightly fast," and stagnation rate into one like "few." Those labels ultimately become the foundation for Claude Haiku's feedback. So — on what basis did I draw the thresholds (the dividing lines)? This article digs into that "basis." The short answer from my research: I couldn't find a paper that defines an academic threshold for "N characters/min = fast/slow." This is a record of how I drew the lines honestly once I'd learned there was no firm basis. More than the metric numbers themselves, I believe being transparent about why I chose those numbers is what makes an evaluation app trustworthy. 💡 I'm an ex-Java engineer learning TypeScript in public. This one is mostly about design decisions. Why Obsess Over the "Basis"? An evaluation app passes judgment on the user: "your reading is slightly fast." Once you're passing judgment, if you can't explain "why we can say that," it's just guesswork. This app in particular passes the labels straight to Claude Haiku to generate coaching. If the foundational label has an unclear basis, the feedback built on top of it is a castle on sand. So I decided to nail down the basis for the thresholds first. Two things to research: The judgment basis for speaking speed (characters/min) The judgment basis for stagnation rate (the proportion of silence) As it turned out, these two had completely different kinds of basis. Speed Thresholds: No Academic Threshold → Draw From General Rules of Thumb What I found For speaking speed, I first looked for academic backing. Here's what I found: Speaking speed has traditionally been measured against mora count, but prior researc
AI 资讯
How I Have Build Memory That Actually Works for AI Coding
Most AI coding assistants do not really remember your project . They remember just enough to be dangerous . They see the latest prompt, skim a few files, improvise, and then forget the reasoning that made the answer useful five minutes ago. That is fine for toy demos. It breaks down fast inside a real software codebase. In Knotic I take an harder line . Instead of treating memory like a chat log with extra lipstick, I treat memory as infrastructure . Project knowledge is separated from session knowledge. Source material is separated from condensed understanding . Old context is compressed instead of blindly dragged forward. The result is a system that feels less like autocomplete with a caffeine habit and more like an AI engineering partner that can stay oriented over time. If you care about AI coding assistant memory , context engineering , persistent project memory , or long-term memory for software development , this is the part worth paying attention to. The Real Problem With AI Memory in Coding Tools The average AI IDE has the same failure mode . It looks smart on the first turn and shaky on the fifth . Why? Because software work is not just about answering the latest question. It is about carrying forward constraints, architecture, naming conventions, decisions, tradeoffs, dead ends, file relationships , and the exact context of the change in progress. When an assistant does not separate those layers, everything gets mixed together . Stable project facts sit next to temporary tool output. Important decisions compete with random noise. The model burns tokens re-reading the same files, or worse, works from partial memory and starts making up the missing pieces . Knotic solves this by splitting memory into distinct layers , each with a clear job. That design choice sounds simple. In practice, it changes everything . Knotic Does Not Use One Memory. It Uses Three. Knotic's memory model is built around three different kinds of context . The first is long-term projec
AI 资讯
I spend more time gathering context than completing coding tasks
I've been an engineer for almost 9 years, and I know from experience how much coding has changed over the years. Right now Im working in a big blockchain company and honestly I feel pretty exhausted. BUT NOT FROM THE TASKS I EXECUTE. I think with AI now, my work is more like being a human API. Lol. I got to slack, emails, JIRA and zoom calls to interact with people and gather all the context needed in order to make sure that when I will use AI the results will be relevant and accurate. And I feel that this is actually draining me. And i realized that this because every time we open PRs and it is about time to review things, CIs are freaking failing everywhere and then I have to go back and forth with people on slack to get the missing context. And all that even if we have already done scoping, architectural decisions. I feel we rush so much to deliver things fast, due to the AI-speed pressure, that is causing all this. I actually found many articles online talking about this. Anthropic also did their own index for checking if the fatigue is real from AI usage. I linked a medium article that resonated with me on the topic. Are you also facing this issue at your job? If so, how are you dealing with this, apart from taking more walks at the park lol. submitted by /u/LeopardAfter493 [link] [留言]
AI 资讯
The C4 Model: Visualizing Software Architecture • Simon Brown & Susanne Kaiser
Simon Brown explains that the C4 Model started not as a grand design theory, but as a practical answer to an embarrassing problem. Furthermore, he answers the question on how to handle microservices in C4 and explains the important distinction between modeling and diagramming. submitted by /u/goto-con [link] [留言]
开发者
i would be much of help if anyone is struggling with SQL
submitted by /u/Same_Ad_5357 [link] [留言]
开发者
Java 27 Features: what to expect?
submitted by /u/Maria_3464 [link] [留言]
AI 资讯
Samsung The Frame Pro 2026 Review: Pricey But Worth It
The Frame Pro 2026 benefits from meaningful tweaks. AI audio and picture tuning work in tandem with a new anti-glare coating to deliver impressive benefits.
开发者
Pixi’s new iOS app turns text messages into interactive AR experiences
Forget stickers, GIFs, and emoji reactions. Pixi is betting that the next evolution of messaging is interactive augmented reality (AR).
AI 资讯
This Ghost in the Shell keyboard makes me want to activate the hundred spidery robot fingers inside my regular fingers
Anime collaborations are everywhere, from Gundam watches and Naruto nights at Major League ballparks to just about anything Evangelion. But these Ghost in the Shell keyboards from Iqunix are some of the coolest examples I've seen of anime-inspired everyday tech. They look sick and they type and play great. At $249 they're a hefty upcharge […]
创业投融资
Waymo recalls nearly 4,000 robotaxis to stop them driving into highway construction zones
The company has identified at least 13 instances where its robotaxis drove into highway sections closed for construction.
开发者
My Node.js Server Was Leaking Memory in Production. Here's How I Found It.
This article covers Node.js garbage collection (Mark-and-Sweep), memory leaks, and practical techniques for debugging them using Clinic.js, heap dumps, and heap snapshot comparisons. submitted by /u/cryptomallu123 [link] [留言]
AI 资讯
Ky 2.0 Fetch API Wrapper with Revamped Hooks, Smarter Timeouts, and Built-In Schema Validation
Ky 2.0 is an open-source JavaScript HTTP client built on the Fetch API, featuring significant updates such as consolidated hook handling, enhanced timeout management, and improved URL processing. The release includes response validation through schema validation libraries and addresses migration from earlier versions. It aims to provide a lightweight alternative to axios. By Daniel Curtis
AI 资讯
Building an agentic PR reviewer with Antigravity SDK
As announced in this blog post on June 18, 2026, Gemini CLI and Gemini Code Assist IDE extensions...
AI 资讯
Embedding Forbidden Text in Spyware to Discourage AI Analysis
At least one malware developer is adding text about nuclear and biological weapons to their spyware, in an effort to stop automatic AI analysis. Details : The _index.js payload begins with a large JavaScript block comment containing fake system instructions and policy-triggering content. Because it is inside a comment, it does not affect JavaScript execution. The runtime skips it. The real malware begins after the comment with a try{eval(…)} wrapper around a large character-code array and a ROT-style substitution function. This header appears designed for AI-mediated analysis, not for Node, Bun, or Python. It attempts to derail scanners or analyst copilots that feed the beginning of a file to a language model without clearly isolating the content as untrusted data. In weak pipelines, this can cause refusal behavior, prompt confusion, context pollution, or premature classification before the scanner reaches the actual malware...
科技前沿
13 Best Essential Oil Diffusers 2026: Tested and Reviewed
I tested over a dozen top home diffusers for scent strength, longevity, special features, and more. The Urpower Aroma is my favorite option for most people.
开发者
Congrats to the Gemma 4 Challenge Winners!
We are so excited to announce the winners of the Gemma 4 Challenge! This is officially our most...
产品设计
Building video games with 20 year old tech
submitted by /u/r_retrohacking_mod2 [link] [留言]
AI 资讯
VS Code 1.123 Adds Two-Hour Extension Update Delay to Limit Supply Chain Attacks
VS Code 1.123 adds a two-hour delay before auto-updating extensions to newly published versions, creating a revocation window against supply chain attacks. The delay does not apply to trusted publishers like Microsoft, GitHub, and OpenAI. Similar cooldown mechanisms have now spread across pip, RubyGems, npm, pnpm, Yarn, and Bun. By Steef-Jan Wiggers
AI 资讯
Geoengineering still faces major practical challenges
Solar geoengineering is often portrayed as a sort of emergency brake. Something along the lines of Pull in case of climate emergency to scatter light-reflecting particles to bounce sunlight out of the atmosphere and cool the planet. But it might be less like a simple brake and more like a complicated, entirely unsolved puzzle. Some…
AI 资讯
I Replaced 5 Social Media APIs With One Key (and My Code Got Way Simpler)
A while back I was building a side project that needed public data from a few social platforms. Nothing crazy — profiles, posts, some engagement numbers. I figured I'd just grab each platform's official API. Reader, I did not "just grab each platform's official API." Here's what that road actually looked like, and how I ended up consolidating everything down to one key and roughly ten lines of shared code. The five-API nightmare Instagram (Meta Graph API). Great if you own the account. Useless for pulling public data about accounts you don't. Endless app review. TikTok. The research API is academics-only with a long application. For commercial use, basically nothing. X (Twitter). Used to be wonderful. Now $100/month to start, more for anything serious. YouTube. Honestly the best of the bunch — generous and well-documented. Credit where due. LinkedIn. Partner-only. For most people, no useful public access at all. So to cover five platforms I was looking at: five sets of credentials, five auth flows, five rate-limit models, five totally different response shapes, two flat-out rejections, and a monthly bill. For a side project. What I actually wanted getProfile ( " tiktok " , " someuser " ) getProfile ( " instagram " , " someuser " ) getProfile ( " twitter " , " someuser " ) Same call shape, same auth, same error handling. That's it. I don't care that each platform structures things differently internally — I want one boundary that hides that from me. The consolidation I switched to SociaVault , which puts public data from all of these behind one API and one key. My entire client became this: const API_KEY = process . env . SOCIAVAULT_API_KEY ; const BASE = " https://api.sociavault.com " ; async function sv ( path , params = {}) { const url = new URL ( BASE + path ); Object . entries ( params ). forEach (([ k , v ]) => url . searchParams . set ( k , v )); const res = await fetch ( url , { headers : { " X-API-Key " : API_KEY } }); if ( ! res . ok ) throw new Error ( ` $