41554 blogs · [
{
"id": "01a087c3-0a02-721f-932d-f9d6a0e8c415",
"title": "A Model That Asks Does Not Invent",
"url": "https://blog.nette.org/en/php-tool-calling-structured-output",
"published_at": "2026-08-17T15:07:00+00:00"
},
{
"id": "01a08d7b-7ee0-722e-8bf9-49777eb1ec71",
"title": "A Model That Asks Does Not Invent",
"url": "http://blog.nette.org/en/php-tool-calling-structured-output",
"published_at": "2026-08-17T15:07:00+00:00"
},
{
"id": "01a087c3-09fc-7102-8834-58da5ab45194",
"title": "AI-Access: One PHP API for Five Language Models",
"url": "https://phpfashion.com/en/ai-access-php-library-for-openai-claude-gemini",
"published_at": "2026-08-16T16:46:00+00:00"
},
{
"id": "01a087c3-09ff-7263-8134-4354f0096bce",
"title": "A replacement for PHP ext-imap that has no dependencies",
"url": "https://phpfashion.com/en/a-replacement-for-php-ext-imap-that-has-no-dependencies",
"published_at": "2026-08-11T16:30:00+00:00"
},
{
"id": "01a087c3-0a00-736b-a82d-d1df64720f80",
"title": "MySQL: Ten Rules for a Schema That Won't Betray You",
"url": "https://phpfashion.com/en/ten-rules-for-a-mysql-schema-that-wont-betray-you",
"published_at": "2026-07-28T08:00:00+00:00"
},
{
"id": "01a087c3-0a02-721f-932d-f9d6a13dc05b",
"title": "Nette Mail 4.2.0: So Your Emails Actually Arrive",
"url": "https://blog.nette.org/en/nette-mail-email-deliverability",
"published_at": "2026-07-27T16:23:00+00:00"
},
{
"id": "01a08d7b-7ee0-722e-8bf9-49777eeaaf26",
"title": "Nette Mail 4.2.0: So Your Emails Actually Arrive",
"url": "http://blog.nette.org/en/nette-mail-email-deliverability",
"published_at": "2026-07-27T16:23:00+00:00"
},
{
"id": "01a087c3-0a02-721f-932d-f9d6a214038f",
"title": "A form inside a form? HTML says no, Nette 3.3 says yes",
"url": "https://blog.nette.org/en/nested-forms",
"published_at": "2026-06-29T21:31:00+00:00"
},
{
"id": "01a08d7b-7ee0-722e-8bf9-49777fcce27b",
"title": "A form inside a form? HTML says no, Nette 3.3 says yes",
"url": "http://blog.nette.org/en/nested-forms",
"published_at": "2026-06-29T21:31:00+00:00"
},
{
"id": "01a087c3-0a02-721f-932d-f9d6a29b102f",
"title": "Your AI Agent Is Only as Good as Your Types",
"url": "https://blog.nette.org/en/ai-agent-only-as-good-as-your-types",
"published_at": "2026-06-26T07:15:00+00:00"
},
{
"id": "01a08d7b-7ee0-722e-8bf9-4977805455c0",
"title": "Your AI Agent Is Only as Good as Your Types",
"url": "http://blog.nette.org/en/ai-agent-only-as-good-as-your-types",
"published_at": "2026-06-26T07:15:00+00:00"
},
{
"id": "01a087c3-0a02-721f-932d-f9d6a336e839",
"title": "Component Model 4.0: top-down and no more magic",
"url": "https://blog.nette.org/en/nette-component-model-4-0",
"published_at": "2026-06-25T21:30:01+00:00"
},
{
"id": "01a08d7b-7ee0-722e-8bf9-4977812d90bc",
"title": "Component Model 4.0: top-down and no more magic",
"url": "http://blog.nette.org/en/nette-component-model-4-0",
"published_at": "2026-06-25T21:30:01+00:00"
},
{
"id": "01a087c3-0a02-721f-932d-f9d6a41b89cb",
"title": "A Quarter Century of CSRF. Now the Browser Finally Handles It",
"url": "https://blog.nette.org/en/quarter-century-of-csrf",
"published_at": "2026-06-13T13:19:00+00:00"
},
{
"id": "01a08d7b-7ee0-722e-8bf9-497781420186",
"title": "A Quarter Century of CSRF. Now the Browser Finally Handles It",
"url": "http://blog.nette.org/en/quarter-century-of-csrf",
"published_at": "2026-06-13T13:19:00+00:00"
},
{
"id": "01a087c3-0a02-721f-932d-f9d6a41fe14e",
"title": "Nette Http 3.4.0 Brings Protection Against SSRF Attacks",
"url": "https://blog.nette.org/en/nette-http-ssrf-protection",
"published_at": "2026-06-13T12:30:00+00:00"
},
{
"id": "01a08d7b-7ee0-722e-8bf9-4977816671c2",
"title": "Nette Http 3.4.0 Brings Protection Against SSRF Attacks",
"url": "http://blog.nette.org/en/nette-http-ssrf-protection",
"published_at": "2026-06-13T12:30:00+00:00"
},
{
"id": "01a087c3-0a02-721f-932d-f9d6a4624975",
"title": "Tracy Learned to Speak with AI Agents",
"url": "https://blog.nette.org/en/tracy-debugger-ai-agents",
"published_at": "2026-05-25T17:43:00+00:00"
},
{
"id": "01a08d7b-7ee0-722e-8bf9-4977818d59d7",
"title": "Tracy Learned to Speak with AI Agents",
"url": "http://blog.nette.org/en/tracy-debugger-ai-agents",
"published_at": "2026-05-25T17:43:00+00:00"
},
{
"id": "01a087c3-0a02-721f-932d-f9d6a49c6fe4",
"title": "Process: running external programs from PHP without the pain",
"url": "https://blog.nette.org/en/running-external-programs-in-php",
"published_at": "2026-05-11T19:41:00+00:00"
},
{
"id": "01a08d7b-7ee0-722e-8bf9-497781e9588d",
"title": "Process: running external programs from PHP without the pain",
"url": "http://blog.nette.org/en/running-external-programs-in-php",
"published_at": "2026-05-11T19:41:00+00:00"
},
{
"id": "01a087c3-0a00-736b-a82d-d1df64d95197",
"title": "100vw is a trap! It can't measure the viewport width",
"url": "https://phpfashion.com/en/how-to-fix-100vw-scrollbar",
"published_at": "2026-05-04T14:39:00+00:00"
},
{
"id": "01a087c3-0a03-7075-8323-d5579fca365c",
"title": "Latte as a Ghost in the Machine: a Template Compiler for Tracy",
"url": "https://blog.nette.org/en/latte-template-compiler-for-tracy",
"published_at": "2026-04-25T12:04:00+00:00"
},
{
"id": "01a08d7b-7ee0-722e-8bf9-4977824177d3",
"title": "Latte as a Ghost in the Machine: a Template Compiler for Tracy",
"url": "http://blog.nette.org/en/latte-template-compiler-for-tracy",
"published_at": "2026-04-25T12:04:00+00:00"
},
{
"id": "01a087c3-0a00-736b-a82d-d1df6589b52a",
"title": "Duck Typing Is Dead, Dave!",
"url": "https://phpfashion.com/en/duck-typing-is-dead",
"published_at": "2026-04-06T21:58:00+00:00"
},
{
"id": "01a087c3-0a02-721f-932d-f9d69cfe263e",
"title": "How to Make Your Code Worse by Fixing PHPStan Errors",
"url": "https://phpfashion.com/en/phpstan-fix-making-things-worse",
"published_at": "2026-02-21T14:25:00+00:00"
},
{
"id": "01a087c3-0a02-721f-932d-f9d69db13369",
"title": "What Claude Code Can Do",
"url": "https://phpfashion.com/en/what-claude-code-can-do",
"published_at": "2026-01-09T15:21:00+00:00"
},
{
"id": "01a087c3-0a02-721f-932d-f9d69e4fc486",
"title": "The Ultimate PHP Comparison Reference is Here!",
"url": "https://phpfashion.com/en/ultimate-php-comparison-reference",
"published_at": "2025-12-26T19:37:00+00:00"
},
{
"id": "01a087c3-0a02-721f-932d-f9d69f497cd2",
"title": "How to Install Claude Code: A Beginner's Guide",
"url": "https://phpfashion.com/en/how-to-install-claude-code-beginners-guide",
"published_at": "2025-05-19T13:44:00+00:00"
},
{
"id": "01a087c3-0a02-721f-932d-f9d69ff20156",
"title": "100 minutes is less than 50? PHP paradoxes during time changes",
"url": "https://phpfashion.com/en/php-daylight-saving-datetime",
"published_at": "2025-04-04T09:01:00+00:00"
}
] posts Claim your blog