Skip to content

AI Tool Guides, Comparisons & Latest News

Beginner-friendly guides, comparisons, and the latest news on AI tools

Featured Article

'ThinkingBlock' object has no attribute 'text': Why a Newer Claude Model No Longer Starts Its Response with Text, and How to Fix It
Claude AI Dev & Programming

'ThinkingBlock' object has no attribute 'text': Why a Newer Claude Model No Longer Starts Its Response with Text, and How to Fix It

You switched your Claude API calls to a newer model, and now you get AttributeError: 'ThinkingBlock' object has no attribute 'text', or the response text comes back empty. The cause is that Claude 5 and later models think when needed even if you don't set thinking, so the first block of the response becomes a thinking block. Claude 4 models didn't think unless you set it, so changing only the model name changes the shape of the response. With simple inputs the first block is still text, so tests that use light inputs pass. Based on Anthropic's documentation and my own tests of four models (November 1, 2026), this article covers the cause, how to fix it by finding text blocks by type (Python and TypeScript), what to do when max_tokens leaves you with no text, which models can and can't turn thinking off, and how not to miss it in testing.

Latest Articles

276 articles
Claude Keeps Replying in English? 4 Patterns and How to Fix Each

Claude Keeps Replying in English? 4 Patterns and How to Fix Each

You write to Claude in Spanish, Japanese or Portuguese, and the answer comes back in English. The official Claude Code repository keeps receiving the same report, and research has found that when the request and the answer are in different languages, even the strongest models fail to answer consistently in the language they were asked for. But there is more than one cause. Replies can drift into English gradually as Claude reads code and tool output, snap back to English right after compaction summarizes the conversation, turn into a different language altogether, or, since late September 2026 with Opus 5.5, switch to English only in the short messages between tool runs, and each pattern responds to a different fix. This article shows how to tell the four apart, explains why the Claude Code language setting keeps working after compaction by pinning the instruction in the system prompt, covers the hook reported to stop Pattern 4 where the setting alone did not, along with the author's logs in which English in those mid-task messages rose from about 11% to about 50%, and sorts out the problem reported from September 2026 of long sessions where the output itself breaks down, keeping confirmed information separate from what is still unconfirmed.

Claude Code: What Is Actually Eating Your Context? How to Measure It, and What to Cut First

Claude Code: What Is Actually Eating Your Context? How to Measure It, and What to Cut First

Install too many skills and they crowd out your context: half of that is right and half of it is wrong. According to the Claude Code documentation, the skill listing draws on a fixed budget of 1% of the model context window, and no matter how many skills you add, it stops there. Instead of growing, the listing starts dropping descriptions, beginning with the least frequently invoked skills, and keeps only their names. A skill that has lost its description no longer connects to what you asked for, and yet no error appears and nothing gets slower. This article works through the different jobs of the three measurement tools (/context, /usage and /skill-doctor), the definition of a cache miss as 5% and 2,000 tokens, how the cache lifetime falls from one hour to five minutes depending on your plan, why a CLI is still lighter than MCP now that tool definitions are lazy-loaded by default, the reasoning behind keeping CLAUDE.md under 200 lines, and what to cut first once you have measured, restricted throughout to what could be confirmed in the official documentation.

Does an AI-Written Article Need an "AI-Generated" Label? Reading EU AI Act Article 50 in Practice

Does an AI-Written Article Need an "AI-Generated" Label? Reading EU AI Act Article 50 in Practice

The remaining provisions of the EU AI Act became generally applicable on August 2, 2026, and with them came a sudden wave of claims that publishing an AI-written article without a label is now illegal. The short answer is that for most independent writers and company blogs, no disclosure duty arises. Article 50(4) states in plain terms that the duty does not apply where the content has undergone human review or editorial control and someone holds editorial responsibility for the publication. That is where the legal text stops; the practical guide to Article 50 adds that the review must be substantive and not confined to superficial matters or a formal sign-off, so auto-posting text nobody has read is unlikely to qualify. This article works through why providers and deployers owe completely different duties, why disclosure for AI-generated text turns on the purpose of publication rather than the topic, the deepfake disclosure duty and the softened treatment of artistic and satirical work, chatbot notices, why machine-readable marking such as C2PA Content Credentials is a provider obligation, and the December 2, 2026 and February 2, 2027 deadlines, restricted throughout to what could be confirmed against the legal text and European Commission material.

GPT-6 Astra Release: The Complete Guide — Pricing, Plan Availability, Migration Changes, and vs. Claude

GPT-6 Astra Release: The Complete Guide — Pricing, Plan Availability, Migration Changes, and vs. Claude

OpenAI released GPT-6 Astra on September 3, 2026. The API is generally available with no gating, the model ID is gpt-6-astra, the context window is 1,050,000 tokens, pricing is $10 in / $50 out per million tokens, and the knowledge cutoff is April 30, 2026. But "it launched" and "your plan can use it" are two different things: on ChatGPT Plus it does not appear in the regular chat interface, and the way in is ChatGPT Work and Codex. This article covers availability by plan, how to think about pricing when a 2x unit price can still be cheaper per task, the benchmarks OpenAI actually named, the cybersecurity capability that reached "Critical" under the Preparedness Framework for the first time and the line OpenAI drew around it, the four things that break when you migrate (sampling parameters removed, Responses API, no none reasoning effort, the renamed cache setting), and a comparison with Claude Opus 5, Fable 5.1, and Gemini 3.8 Flash — restricted throughout to what could be confirmed against primary sources. It also shows, with each publisher named, how the same DeepSWE v1.1 gives Claude Opus 5 73.7% in the OpenAI table but 68.8% in the Anthropic announcement.

The model returned no content — Causes and Fixes: a Claude Error Message Means Something Different Depending on Who Wrote It

The model returned no content — Causes and Fixes: a Claude Error Message Means Something Different Depending on Who Wrote It

You hit a wall while using Claude, you search the exact message that appeared, and almost nothing comes back. Five strings behave this way: The model returned no content because the response was blocked by content filtering, The response was blocked by the provider's content filter, Streaming response ended before any complete data was received, Could not locate the Claude CLI on PATH, and Connection to Claude's response was lost. Claude may still be working. What they share is that they appeared while you were using Claude, yet searching Claude's own material seems to turn up nothing, and the reason is simple: the program that wrote the message on your screen is not necessarily the one you think it is. This article does not explain each individual cause from scratch. It is an entrance hall that identifies who wrote the message and routes you to the right article. It first splits the possible writers into four layers, the backend that serves the model, Claude Code itself, the launching IDE extension or wrapper, and third-party clients, and then does the matching. Two of the five turn out to be entries in Claude Code's official error reference. The official definition of the streaming message is that the headers came back but the body held no Claude API message, which is not a mid-way cut at all, and reading it as a dropped connection sends you down the wrong path. Could not locate the Claude CLI on PATH sits in a separate chapter, Wrapper and IDE errors, described as printed by the launching program rather than by Claude Code, and the real display string can be four sentences long where the official heading is one, which is why searching it returns nothing. The two content-filter strings, meanwhile, are third-party vocabulary, and OpenCode Issue #35736 reports that three completely separate failures, a Vertex 404, a socket drop, and a genuine refusal, all surface as the same blocked by content filter sentence. The wording is correct for only one of the three, so believing it and softening your prompt will never fix a misconfigured model ID. GitHub official documentation also states that input prompts and output completions pass through GitHub Copilot content filters when Claude is used, so using Claude does not mean Anthropic filtering is what stopped you. The remaining string appears in neither the official error reference nor the Remote Control documentation, so its source could not be identified; no tool is named for it, and four steps for tracing it in your own environment are given instead. What is settled and what is not is labelled throughout.

API Error: Connection lost mid-response — Causes and Fixes for the Error v2.1.227 Renamed

API Error: Connection lost mid-response — Causes and Fixes for the Error v2.1.227 Renamed

Claude Code stops partway through a response with "API Error: Connection lost mid-response. The response above may be incomplete." and searching that exact string turns up almost nothing, because the string itself is new. The official error reference states it plainly: before v2.1.227, Connection lost mid-response appeared as Connection closed mid-response, and in the same batch Response stalled mid-stream became The response stopped arriving, while Connection closed while thinking, before producing a response became Connection lost before a response was produced. The event is not new; only the word on screen changed, which is why material written under the old name still applies unchanged and why an issue search has to use both strings. Starting from that rename, this article works only from the official documentation and public issues. It covers the official definitions of the six "cut off mid-response" messages (Server error, Connection lost, Your computer went to sleep, The response stopped arriving, Part of the response never arrived, and The response stream was malformed), why the output already on screen is kept deliberately - re-sending the request could execute the same tool call twice - and why the recovery step is to reply continue rather than to start over. It then explains why nothing is retried automatically, using the official Automatic retries branch: a break before anything has completed is re-sent with exponential backoff up to ten times, a break after thinking but before any output is re-sent at most twice and then ends the turn with Connection lost before a response was produced, and a break after a block has completed is not re-sent at all. From there it maps the three layers where a stream can break - your machine and line, the path through proxies and gateways, and the server side with connection reuse - adds the easily missed fourth case of mTLS certificate rotation and its reload behaviour from v2.1.232, and gives a nine-step isolation checklist. It lists the four stream watchdog timers with their defaults (first byte 180s, event level 300s, byte level 180s, body idle five minutes) alongside CLAUDE_CODE_MAX_RETRIES, CLAUDE_CODE_RETRY_WATCHDOG, API_TIMEOUT_MS and the two stream timeout variables, while making clear that raising the retry count does not reduce this particular message. A comparison table separates eight confusable messages, and two public reports, #86473 and #85979, show raw HTTPS and curl completing while only the CLI dies with ECONNRESET. It closes by separating what is officially confirmed from what is only reported, including that builds before v2.1.222 could show this notice even when the response was in fact complete.

The 3 Breaking Changes in Claude Fable 5.1, and How to Migrate

The 3 Breaking Changes in Claude Fable 5.1, and How to Migrate

Migrating to Claude Fable 5.1 is not a matter of swapping the model ID and calling it done. Anthropic marks three of the changes as breaking, and two of them surface far from where they originate. The first throws immediately: passing type any or type tool to tool_choice returns 400 invalid_request_error, because forcing a call skips the reasoning this model always does and the argument quality drops with it. The second is the quiet one. Thinking blocks now record which model produced them and only carry over in one direction, so a conversation moving onto Fable 5.1 keeps its reasoning while a router or fallback that moves it back to an earlier generation loses that turn entirely. By default the API discards the unreadable blocks before the model sees them, and because the discarded tokens are neither counted in input_tokens nor billed, nothing shows up on the invoice. Making it visible takes the thinking-binding-controls-2026-08-01 beta header. The third one is the broadest: changing anything before a Fable 5.1 thinking block, including the system prompt, the tools array or any earlier message, invalidates it and every block after it. Whether that is enforced depends on when your account was created, which means a staging environment you just spun up can fail while production does not. The article also covers what did not get worse: input stays at $10 and output at $50 per million tokens, while cache reads drop to $0.25, or 0.025x base input against the 0.1x every other Claude model charges. Anthropic quotes roughly 25% lower cost on typical workloads and up to about 45% on agent-heavy work. Seven behaviors change without any code change, including fewer parallel tool calls, less progress narration at high effort, and more answers from memory at low effort, and Anthropic counts five additions, one of which is the cache read price cut handled on its own in section 5, with beta features among the remaining four that exist specifically to replace the patterns the breaking changes forbid.

What AI Did to IT Freelancers: 5 Studies on How Getting Chosen Changed

What AI Did to IT Freelancers: 5 Studies on How Getting Chosen Changed

The question "will AI take my job" no longer fits this story. Siddiq and Zhang at UCLA Anderson followed 49,610 freelancers and 2.26 million contracts on Upwork from January 2021 to March 2026, and what they found was not a change in whether the work exists but a change in how you get chosen: the weight clients put on human-capital signals fell 7.8% while the weight on price rose 1.1%, and contract counts fell 7.0%. Verified credentials, work history, portfolio and client ratings all lost their power to predict who wins the contract, and the decline is steeper the more recent you look, at -10.1% on signals and +1.8% on price over the most recent four quarters. At the same time the supply side is moving the other way: Upwork reports that the freelance share of skilled US knowledge workers went from 28% to 38% in a single year, with 58% of full-time employees considering the switch. Two paradoxes sit at the center. First, experience is a shield in employment and not in contract work, because Stanford finds employment for workers aged 22 to 25 in AI-exposed occupations about 19% lower with no comparable gap for the experienced, while an Organization Science study of freelancers finds the drop largest among the most experienced. A company hires a role; a client buys a deliverable. Second, the work has not disappeared, the middle has: Management Science reports postings most open to automation down 21%, with the jobs that remain more complex and better paid. The article uses only peer-reviewed papers, preprints and official platform research, each checked against the publisher itself, flags Upwork as an interested party, corrects the widely repeated claim that its February release reported a 44% hourly premium (it does not mention one), and carries the researchers own caveats, including Stanford stating that some of the timing is driven by factors other than AI. Three forecasts come with confidence labels and falsification conditions, and the closing chapter on what to do is labeled speculation.

Local LLM Coding with Ollama and Cline: What Works, and the One Setting That Breaks It

Local LLM Coding with Ollama and Cline: What Works, and the One Setting That Breaks It

Local models have been able to write code for years, but only as completion: finishing the line you were already typing. The agentic pattern, where the model reads the repository, edits several files and runs the tests, was too heavy to run at home. That changed through late 2025 and 2026, and the clearest evidence is that model developers now market for it directly: the Qwen model card names CLINE outright and ships a purpose-built function call format, while Mistral released Devstral Small 2 (24B) under Apache 2.0 alongside the 123B Devstral 2 on December 9, 2025. This article works through what is actually achievable today using primary sources only, because several roundup posts turned out to have attributed one model size's score to another. The central obstacle is a configuration detail almost nobody mentions: Ollama does not use a fixed default context length, it derives one from your VRAM, which means 4k below 24 GiB, 32k from 24 to 48 GiB and 256k above that. A typical gaming PC lands on the first row, so an agent overruns the window immediately and the start of the conversation is silently truncated. No error is raised. It forgets instructions, repeats actions and loses the goal, and the whole thing reads as a stupid model rather than a discarded context. Ollama documents at least 64000 tokens for coding tools, set via OLLAMA_CONTEXT_LENGTH, but raising it raises memory use too, so ollama ps has to confirm the model still fits on the GPU. Also covered: why Continue and Cline are different tools with different hardware demands, published scores for Qwen3.6-35B-A3B (73.4 on SWE-bench Verified, 3B active out of 35B) and Devstral Small 2 (68.0%), download sizes and memory guidance by VRAM tier, a four-step setup, why "local is at X% of the cloud" comparisons no longer hold now that the frontier side is drifting away from publishing SWE-bench Verified, and an honest accounting of what "free" actually costs.

Claude Code Remote Control: Drive Your Own PC From Your Phone

Claude Code Remote Control: Drive Your Own PC From Your Phone

Remote Control connects the Claude mobile app or claude.ai/code to a Claude Code session already running on your own machine, and the point most explanations miss is that nothing moves to the cloud: code execution and filesystem access stay local the whole time, and the phone is only a window into that session. This article works through what that design buys you and what it costs. Your local filesystem, MCP servers, tools and project configuration all stay available (typing @ autocompletes paths from the local project), the conversation and subagent progress stay in sync across terminal, browser and phone, and a sleeping laptop or a dropped connection is survivable because Claude Code reconnects and delivers queued updates once it recovers. The requirements are stricter than they look: Pro, Max, Team or Enterprise (API keys are not supported), a claude.ai login rather than a setup-token, a direct connection to api.anthropic.com, and none of the four telemetry-disabling environment variables set, which is why privacy-minded users who set DO_NOT_TRACK are told the feature is not enabled on their account. Three entry points are covered (/remote-control to carry over the current conversation, claude --remote-control, and server mode with its --spawn, --capacity 32 and --continue flags), along with the split between slash commands that work remotely and the local-only ones such as /resume, the five-minute dialog expiry that does not apply to permission prompts, and the two push-notification toggles. On security, the article is deliberate: no inbound port is ever opened, so the network attack surface all but vanishes and the risk moves to the account, the QR code is a shortcut rather than authentication, and the default gate is exactly one signed-in account, which makes a passkey the highest-value step. Transcript retention (5 years or 30 days), what to do if the phone is lost, Trusted Devices with its 18-hour sign-in window, the ten-minute server-mode timeout, the four-hour resume window, the tmux requirement on remote machines, a troubleshooting table keyed to the actual error messages, and a comparison with Dispatch round it out.

Claude Adaptive Thinking vs Extended Thinking: What Changed

Claude Adaptive Thinking vs Extended Thinking: What Changed

The way Claude thinks went through a generational change. The old extended thinking had you specify a token budget on every request — thinking: {"type": "enabled", "budget_tokens": N} — but the right budget differs per task and can't be guessed in advance, and changing it invalidates the prompt cache. The current adaptive thinking is one line, type: "adaptive": whether to think and how deeply is the model's own decision based on how hard the request looks. The migration was staged: budget_tokens was deprecated on Opus 4.6 / Sonnet 4.6 and is rejected with a 400 error from Opus 4.7 onward. This article condenses the per-model rules into one table — Fable 5.1 and Opus 5.5 think always (cannot be disabled), Sonnet 5.5 defaults to thinking on and rejects disabled with a 400, but between_tools turns off only up-front thinking (effort high or below), the legacy Opus 5 and Sonnet 5 default to thinking on (on Opus 5, disabling is only allowed at effort high or below), Opus 4.8 / 4.7 require an explicit adaptive setting, and models that support only extended thinking, such as Haiku 4.5 / Sonnet 4.5, still use budget_tokens as their only mode. Depth control moved to output_config: {"effort": ...} with five levels (default high on most models, medium on Opus 5.5 and Haiku 5.5), and changing effort busts the cache the same way changing the budget used to. Visibility is governed by display: the new-generation default is "omitted" (empty thinking blocks), and you are billed for the full thinking tokens either way — measure with usage.output_tokens_details.thinking_tokens; no setting ever returns the raw chain of thought. Disabling thinking on Opus 5 carries documented side effects (tool calls written as plain text, internal tags leaking), so lowering effort is the safer cost lever. Interleaved thinking — reasoning between tool calls — is automatic under adaptive, with the old beta header no longer needed. And when you need speed, fast mode runs the same Opus at about 2.5x for 2x the price (Opus 5.5/5/4.8 only, toggled with /fast in Claude Code). Everything is grounded in Anthropic's official Thinking, Extended thinking, and Fast mode documentation.

"GPU process gone" — Claude Desktop freezes and takes every Claude Code session with it

"GPU process gone" — Claude Desktop freezes and takes every Claude Code session with it

Claude Desktop freezes mid-task and every Claude Code session you had open stops at the same moment; you force-quit it, and sometimes the app then refuses to start at all. The last line in %APPDATA%\Claude\logs\main.log is almost always the same one: GPU process gone, with exitCode 101457950 (0x060C201E). This article sets out what that code is, why sessions with nothing to do with each other go down together, and which remedies are real. The first move is a separation: Claude Code (the CLI) is not what crashed — the GPU process of the Electron desktop app that hosts it is. The second is why the damage spreads so far. Chromium concentrates rendering in a single GPU process, and there is exactly one of it per application, shared by every window, tab and session; so one heavy page opened in the in-app browser can take down eight unrelated sessions at the same instant, and no user-facing setting separates them. Triggers come next. The in-app browser dominates the public issues — #80444 records the process dying 15 to 36 seconds after a page ran WebGL/WebGPU feature detection, four times with the same exit code; #82967 pins the trigger on the browser tool's preview screenshot capture; #83478 reproduces it with a continuously refreshing preview left open. But the browser is not the only trigger: #68049 reports the same code at launch on ARM64 with no browser interaction at all, and #83028 reproduces it on an Intel integrated GPU. Diagnosis is then made concrete with three files — main.log, unknown-window.log (a CONTEXT_LOST_WEBGL at the same timestamp) and the Crashpad folder — plus a table separating 101457950 from the exit codes that mean a clean shutdown, and a warning that the requestAdapter powerPreference line in the same log is a normal Chromium message rather than a sign of a crash. Recovery covers Repair for the case where Windows marks the package Modified and refuses to launch it, alongside the report where the state reached Modified, NeedsRemediation and only a complete removal and reinstall brought the app back; saved transcripts survive, but work that was in flight does not (#81698 lost a set of parallel subagent results). It closes with what helps and what does not — --disable-gpu is rejected on the MSIX build, updating the app did not stop it here, isolating the GPU process is structurally impossible — the hybrid-GPU pinning tip and why no report of it helping with this symptom has been found, and how to tell a Store update's forced quit apart from a real crash.

Browse by Category

Claude

View All

ChatGPT

View All

Gemini

View All

GitHub Copilot

View All

Midjourney

View All

Stable Diffusion

View All

Other AI

View All

Beginners

View All

AI Dev & Programming

View All

Dev Environment & Infra

View All

AI Agents & Automation

View All

Work Efficiency

View All

Writing

View All

Design

View All

Data Analysis

View All

Learning & Education

View All

Side Income & Monetization

View All

Game Development

View All

Security & Governance

View All

AI Risks & Social Impact

View All

Indie Development

View All