<?xml version="1.0" encoding="UTF-8"?><?xml-stylesheet type="text/xsl" href="rss.xsl"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Serhii Smetanskyi</title><description>Serhii Smetanskyi, Software Test &amp; Automation Engineer: a blog and knowledge base on QA, test automation, API testing and testing LLMs and AI agents.</description><link>https://serhiismetanskyi.com/</link><atom:link href="https://serhiismetanskyi.com/feed_rss_created.xml" rel="self" type="application/rss+xml" /><managingEditor>Serhii Smetanskyi</managingEditor><language>en</language><pubDate>Tue, 29 Sep 2026 21:00:51 +0000</pubDate><lastBuildDate>Tue, 29 Sep 2026 21:00:51 +0000</lastBuildDate><ttl>1440</ttl><generator>Zensical RSS</generator><item><title>Jinja — Syntax Basics</title><category>jinja</category><category>libraries</category><category>python</category><description>&lt;h1&gt;Jinja — Syntax Basics&lt;/h1&gt;
&lt;p&gt;All examples render with a default &lt;code&gt;Environment()&lt;/code&gt; unless the text says otherwise:&lt;/p&gt;
&lt;p&gt;```python
from jinja2 import Environment&lt;/p&gt;
&lt;p&gt;env = ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/jinja/01-syntax-basics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/jinja/01-syntax-basics/</guid></item><item><title>Jinja — Environment, Loaders &amp; Inheritance</title><category>jinja</category><category>libraries</category><category>python</category><description>&lt;h1&gt;Jinja — Environment, Loaders &amp;amp; Inheritance&lt;/h1&gt;
&lt;h2&gt;Environment&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;Environment&lt;/code&gt; holds the configuration and the template cache. Create it once (module level or a...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/jinja/02-environment-inheritance/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/jinja/02-environment-inheritance/</guid></item><item><title>Jinja — Filters, Escaping &amp; Security</title><category>appsec</category><category>jinja</category><category>libraries</category><category>python</category><category>security</category><description>&lt;h1&gt;Jinja — Filters, Escaping &amp;amp; Security&lt;/h1&gt;
&lt;h2&gt;Custom Filters, Tests &amp;amp; Globals&lt;/h2&gt;
&lt;p&gt;A filter is any Python function: the value before &lt;code&gt;|&lt;/code&gt; is the first argument. A te...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/jinja/03-customization-security/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/jinja/03-customization-security/</guid></item><item><title>Jinja — QA Recipes</title><category>jinja</category><category>libraries</category><category>llm</category><category>pytest</category><category>python</category><category>test-automation</category><category>test-data</category><description>&lt;h1&gt;Jinja — QA Recipes&lt;/h1&gt;
&lt;p&gt;Each recipe uses a strict environment: &lt;code&gt;StrictUndefined&lt;/code&gt;, &lt;code&gt;trim_blocks&lt;/code&gt;, &lt;code&gt;lstrip_blocks&lt;/code&gt;, &lt;code&gt;keep_trailing_newline&lt;/code&gt;. Autoescape is on onl...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/jinja/04-qa-recipes/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/jinja/04-qa-recipes/</guid></item><item><title>Jinja — Testing Templates</title><category>code-quality</category><category>jinja</category><category>libraries</category><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Jinja — Testing Templates&lt;/h1&gt;
&lt;p&gt;Templates are code: they have branches, loops and escaping rules, and they break on refactoring. Test them at three levels:&lt;/p&gt;
&lt;p&gt;| L...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/jinja/05-testing-templates/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/jinja/05-testing-templates/</guid></item><item><title>Jinja — Templates for Python</title><category>jinja</category><category>libraries</category><category>python</category><category>test-automation</category><category>test-data</category><description>&lt;h1&gt;Jinja — Templates for Python&lt;/h1&gt;
&lt;p&gt;Jinja (package &lt;code&gt;Jinja2&lt;/code&gt;) is a text template engine: it takes a template with placeholders and logic, adds data from Python, a...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/jinja/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/jinja/</guid></item><item><title>LangGraph — Graph Design &amp; State</title><category>ai-agents</category><category>langgraph</category><category>libraries</category><category>llm</category><category>python</category><description>&lt;h1&gt;LangGraph — Graph Design &amp;amp; State&lt;/h1&gt;
&lt;p&gt;A LangGraph app is a &lt;strong&gt;state schema&lt;/strong&gt; plus &lt;strong&gt;nodes&lt;/strong&gt; that return partial updates plus &lt;strong&gt;edges&lt;/strong&gt; that decide what runs nex...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langgraph/01-graph-design-state/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langgraph/01-graph-design-state/</guid></item><item><title>LangGraph — Persistence, Memory &amp; Interrupts</title><category>ai-agents</category><category>langgraph</category><category>libraries</category><category>llm</category><category>python</category><description>&lt;h1&gt;LangGraph — Persistence, Memory &amp;amp; Interrupts&lt;/h1&gt;
&lt;p&gt;A checkpointer turns a graph into a &lt;strong&gt;durable, resumable process&lt;/strong&gt;: state is saved after every super-step per...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langgraph/02-persistence-memory-interrupts/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langgraph/02-persistence-memory-interrupts/</guid></item><item><title>LangGraph — Streaming &amp; Runtime</title><category>ai-agents</category><category>langgraph</category><category>libraries</category><category>llm</category><category>python</category><description>&lt;h1&gt;LangGraph — Streaming &amp;amp; Runtime&lt;/h1&gt;
&lt;p&gt;How to watch a graph while it runs, pass per-run dependencies into nodes, and make nodes resilient: retries, caching, time...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langgraph/03-streaming-runtime/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langgraph/03-streaming-runtime/</guid></item><item><title>LangGraph — Multi-Agent Patterns</title><category>ai-agents</category><category>langchain</category><category>langgraph</category><category>libraries</category><category>llm</category><category>python</category><description>&lt;h1&gt;LangGraph — Multi-Agent Patterns&lt;/h1&gt;
&lt;p&gt;From a single tool-calling agent to supervisors and handoffs. Architecture-level trade-offs of multi-agent systems are co...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langgraph/04-multi-agent-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langgraph/04-multi-agent-patterns/</guid></item><item><title>LangGraph — Testing LangGraph Apps</title><category>ai-agents</category><category>langgraph</category><category>libraries</category><category>llm</category><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;LangGraph — Testing LangGraph Apps&lt;/h1&gt;
&lt;p&gt;A LangGraph app is ordinary Python around a non-deterministic model. Test the deterministic parts (nodes, routing, stat...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langgraph/05-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langgraph/05-testing/</guid></item><item><title>LangGraph — Observability &amp; Deployment</title><category>ai-agents</category><category>deployment</category><category>langgraph</category><category>libraries</category><category>llm</category><category>observability</category><category>python</category><description>&lt;h1&gt;LangGraph — Observability &amp;amp; Deployment&lt;/h1&gt;
&lt;p&gt;Every LangGraph run is a tree of runnables: graph → nodes → model calls → tools. Any LangChain-compatible tracer sh...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langgraph/06-observability-deployment/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langgraph/06-observability-deployment/</guid></item><item><title>LangGraph — Stateful Agent Orchestration</title><category>ai-agents</category><category>langchain</category><category>langgraph</category><category>libraries</category><category>llm</category><category>python</category><description>&lt;h1&gt;LangGraph — Stateful Agent Orchestration&lt;/h1&gt;
&lt;p&gt;Low-level framework for building agents and workflows as &lt;strong&gt;graphs of steps over a shared state&lt;/strong&gt;: loops, branchin...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langgraph/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langgraph/</guid></item><item><title>SDD — Open Knowledge Format (OKF)</title><category>ai-agents</category><category>coding-agents</category><category>spec-driven-development</category><description>&lt;h1&gt;SDD — Open Knowledge Format (OKF)&lt;/h1&gt;
&lt;h2&gt;What OKF Is&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Open Knowledge Format (OKF)&lt;/strong&gt; is an open specification from Google Cloud for giving AI agents curated ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/spec-driven-development/05-open-knowledge-format/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/spec-driven-development/05-open-knowledge-format/</guid></item><item><title>Jaeger — Setup &amp; Architecture</title><category>docker</category><category>jaeger</category><category>observability</category><category>opentelemetry</category><category>tools</category><description>&lt;h1&gt;Jaeger — Setup &amp;amp; Architecture&lt;/h1&gt;
&lt;p&gt;Jaeger v2 is a distribution of the OpenTelemetry Collector: one &lt;code&gt;jaeger&lt;/code&gt; binary with OTel receivers and processors plus Jaeg...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/jaeger/01-setup-architecture/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/jaeger/01-setup-architecture/</guid></item><item><title>Jaeger — Sending Traces from Python</title><category>jaeger</category><category>observability</category><category>opentelemetry</category><category>python</category><category>tools</category><description>&lt;h1&gt;Jaeger — Sending Traces from Python&lt;/h1&gt;
&lt;p&gt;Jaeger has no Python client of its own: services and tests use the OpenTelemetry SDK with an OTLP exporter. This page ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/jaeger/02-sending-traces-python/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/jaeger/02-sending-traces-python/</guid></item><item><title>Jaeger — UI &amp; Trace Analysis</title><category>jaeger</category><category>observability</category><category>opentelemetry</category><category>tools</category><description>&lt;h1&gt;Jaeger — UI &amp;amp; Trace Analysis&lt;/h1&gt;
&lt;p&gt;The Jaeger UI at &lt;code&gt;http://localhost:16686&lt;/code&gt; has four main views: &lt;strong&gt;Search&lt;/strong&gt;, &lt;strong&gt;Trace&lt;/strong&gt; (one trace in detail), &lt;strong&gt;Compare&lt;/strong&gt;, and ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/jaeger/03-ui-trace-analysis/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/jaeger/03-ui-trace-analysis/</guid></item><item><title>Jaeger — Testing, CI &amp; Troubleshooting</title><category>jaeger</category><category>observability</category><category>opentelemetry</category><category>pytest</category><category>testing</category><category>tools</category><description>&lt;h1&gt;Jaeger — Testing, CI &amp;amp; Troubleshooting&lt;/h1&gt;
&lt;p&gt;What Jaeger gives a test suite for a distributed system:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;One trace per test&lt;/strong&gt; — the test is the root span; ev...&lt;/li&gt;
&lt;/ol&gt;</description><link>https://serhiismetanskyi.com/docs/tools/jaeger/04-testing-ci-troubleshooting/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/jaeger/04-testing-ci-troubleshooting/</guid></item><item><title>Jaeger — Distributed Tracing for OpenTelemetry</title><category>jaeger</category><category>observability</category><category>opentelemetry</category><category>tools</category><description>&lt;h1&gt;Jaeger — Distributed Tracing for OpenTelemetry&lt;/h1&gt;
&lt;p&gt;Open-source (Apache 2.0, CNCF graduated) backend for distributed traces: it receives OTLP spans, stores the...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/jaeger/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/jaeger/</guid></item><item><title>MLflow — Setup &amp; Architecture</title><category>docker</category><category>mlflow</category><category>observability</category><category>tools</category><description>&lt;h1&gt;MLflow — Setup &amp;amp; Architecture&lt;/h1&gt;
&lt;p&gt;The MLflow tracking server is one Python process (uvicorn with several workers) that serves the UI and the REST API. It keep...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/mlflow/01-setup-architecture/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/mlflow/01-setup-architecture/</guid></item><item><title>MLflow — Experiment Tracking</title><category>mlflow</category><category>python</category><category>testing</category><category>tools</category><description>&lt;h1&gt;MLflow — Experiment Tracking&lt;/h1&gt;
&lt;p&gt;Experiment tracking is the original core of MLflow: every execution is a &lt;strong&gt;run&lt;/strong&gt; with its inputs (params), results (metrics),...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/mlflow/02-experiment-tracking/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/mlflow/02-experiment-tracking/</guid></item><item><title>MLflow — GenAI Tracing</title><category>llm</category><category>mlflow</category><category>observability</category><category>opentelemetry</category><category>tools</category><description>&lt;h1&gt;MLflow — GenAI Tracing&lt;/h1&gt;
&lt;p&gt;MLflow Tracing records what an LLM app or agent did on one request: every LLM call, tool call, retrieval and custom step as a span,...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/mlflow/03-genai-tracing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/mlflow/03-genai-tracing/</guid></item><item><title>MLflow — Evaluation &amp; Prompts</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>mlflow</category><category>tools</category><description>&lt;h1&gt;MLflow — Evaluation &amp;amp; Prompts&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;mlflow.genai.evaluate()&lt;/code&gt; runs an app over a dataset, traces every call and applies &lt;strong&gt;scorers&lt;/strong&gt; to the results. Each evaluat...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/mlflow/04-evaluation-prompts/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/mlflow/04-evaluation-prompts/</guid></item><item><title>MLflow — Testing, CI &amp; Model Registry</title><category>ci-cd</category><category>deepeval</category><category>mlflow</category><category>pytest</category><category>testing</category><category>tools</category><description>&lt;h1&gt;MLflow — Testing, CI &amp;amp; Model Registry&lt;/h1&gt;
&lt;p&gt;What MLflow gives an automated test suite for LLM apps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;One run per CI job&lt;/strong&gt; — pass rate, eval scores and repo...&lt;/li&gt;
&lt;/ol&gt;</description><link>https://serhiismetanskyi.com/docs/tools/mlflow/05-testing-ci-registry/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/mlflow/05-testing-ci-registry/</guid></item><item><title>MLflow — Experiment Tracking, LLM Tracing &amp;amp; Evaluation</title><category>evaluation</category><category>llm</category><category>mlflow</category><category>observability</category><category>tools</category><description>&lt;h1&gt;MLflow — Experiment Tracking, LLM Tracing &amp;amp; Evaluation&lt;/h1&gt;
&lt;p&gt;Open-source (Apache 2.0, Linux Foundation) platform for the ML and GenAI lifecycle: experiment trac...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/mlflow/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 29 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/mlflow/</guid></item><item><title>How to Test Voice AI Agents: TTS, STT, Audio Metrics and LLM-as-a-Judge Evals in Practice</title><author>Serhii Smetanskyi</author><category>AI Testing</category><category>ai-evaluation</category><category>ai-testing</category><category>ai-voice-agent</category><category>llm-evaluation</category><description>A pytest framework for testing voice AI agents through real calls: TTS caller, Whisper STT, audio and latency metrics, WER and LLM-as-a-judge evals.</description><link>https://serhiismetanskyi.com/blog/2026/09/27/how-to-test-voice-ai-agents-tts-stt-audio-metrics-and-llm-as-a-judge-evals-in-practice/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/blog/2026/09/27/how-to-test-voice-ai-agents-tts-stt-audio-metrics-and-llm-as-a-judge-evals-in-practice/</guid></item><item><title>Guardrails AI — Guards &amp; Validators</title><category>guardrails</category><category>libraries</category><category>llm</category><category>python</category><category>security</category><description>&lt;h1&gt;Guardrails AI — Guards &amp;amp; Validators&lt;/h1&gt;
&lt;h2&gt;Core Objects&lt;/h2&gt;
&lt;p&gt;| Object | Role |
|--------|------|
| &lt;code&gt;Guard&lt;/code&gt; / &lt;code&gt;AsyncGuard&lt;/code&gt; | Container of validators; runs them on ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/guardrails/01-guards-validators/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/guardrails/01-guards-validators/</guid></item><item><title>Guardrails AI — Structured Output</title><category>guardrails</category><category>libraries</category><category>llm</category><category>python</category><category>security</category><description>&lt;h1&gt;Guardrails AI — Structured Output&lt;/h1&gt;
&lt;h2&gt;Why a Guard for JSON&lt;/h2&gt;
&lt;p&gt;A typed output contract has two layers — Guardrails checks both and reports them separately:&lt;/p&gt;
&lt;p&gt;|...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/guardrails/02-structured-output/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/guardrails/02-structured-output/</guid></item><item><title>Guardrails AI — Input &amp; Output Safety</title><category>guardrails</category><category>libraries</category><category>llm</category><category>python</category><category>security</category><description>&lt;h1&gt;Guardrails AI — Input &amp;amp; Output Safety&lt;/h1&gt;
&lt;h2&gt;Input vs Output Validation&lt;/h2&gt;
&lt;p&gt;| | Input (&lt;code&gt;on=&quot;messages&quot;&lt;/code&gt;) | Output (&lt;code&gt;on=&quot;output&quot;&lt;/code&gt;, default) |
|---|---|---|
| Runs ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/guardrails/03-input-output-safety/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/guardrails/03-input-output-safety/</guid></item><item><title>Guardrails AI — Custom Validators</title><category>guardrails</category><category>libraries</category><category>llm</category><category>python</category><category>security</category><description>&lt;h1&gt;Guardrails AI — Custom Validators&lt;/h1&gt;
&lt;h2&gt;Anatomy of a Validator&lt;/h2&gt;
&lt;p&gt;| Piece | Purpose |
|-------|---------|
| `@register_validator(name=&quot;org/name&quot;, data_type=&quot;st...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/guardrails/04-custom-validators/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/guardrails/04-custom-validators/</guid></item><item><title>Guardrails AI — Server &amp; Production</title><category>guardrails</category><category>libraries</category><category>llm</category><category>python</category><category>security</category><description>&lt;h1&gt;Guardrails AI — Server &amp;amp; Production&lt;/h1&gt;
&lt;h2&gt;Library or Server?&lt;/h2&gt;
&lt;p&gt;| | In-process library | Guardrails server (&lt;code&gt;guardrails-api&lt;/code&gt;) |
|---|---|---|
| Runs | Inside y...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/guardrails/05-server-production/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/guardrails/05-server-production/</guid></item><item><title>Guardrails AI — Testing Guardrails</title><category>guardrails</category><category>libraries</category><category>llm</category><category>pytest</category><category>python</category><category>security</category><category>testing</category><description>&lt;h1&gt;Guardrails AI — Testing Guardrails&lt;/h1&gt;
&lt;h2&gt;What to Test&lt;/h2&gt;
&lt;p&gt;| Level | Question | Tooling | LLM calls |
|-------|----------|---------|-----------|
| Wiring | Right...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/guardrails/06-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/guardrails/06-testing/</guid></item><item><title>Guardrails AI — Input &amp;amp; Output Guards for LLMs</title><category>guardrails</category><category>libraries</category><category>llm</category><category>python</category><category>security</category><description>&lt;h1&gt;Guardrails AI — Input &amp;amp; Output Guards for LLMs&lt;/h1&gt;
&lt;p&gt;Open-source Python framework (Apache-2.0) that wraps LLM calls with &lt;strong&gt;validators&lt;/strong&gt;: checks run on the promp...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/guardrails/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/guardrails/</guid></item><item><title>LiteLLM — Completion &amp; Providers</title><category>libraries</category><category>litellm</category><category>llm</category><category>python</category><description>&lt;h1&gt;LiteLLM — Completion &amp;amp; Providers&lt;/h1&gt;
&lt;h2&gt;Model Names&lt;/h2&gt;
&lt;p&gt;The model string is &lt;code&gt;&amp;lt;provider&amp;gt;/&amp;lt;model&amp;gt;&lt;/code&gt;. The provider prefix selects the adapter, auth and endpoint.&lt;/p&gt;
&lt;p&gt;| ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/litellm/01-completion-providers/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/litellm/01-completion-providers/</guid></item><item><title>LiteLLM — Tools &amp; Structured Output</title><category>libraries</category><category>litellm</category><category>llm</category><category>pydantic</category><category>python</category><description>&lt;h1&gt;LiteLLM — Tools &amp;amp; Structured Output&lt;/h1&gt;
&lt;h2&gt;Function Calling&lt;/h2&gt;
&lt;p&gt;Tools are always described in the &lt;strong&gt;OpenAI format&lt;/strong&gt;. LiteLLM converts them to Anthropic `tool_use...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/litellm/02-tools-structured-output/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/litellm/02-tools-structured-output/</guid></item><item><title>LiteLLM — Router &amp; Reliability</title><category>libraries</category><category>litellm</category><category>llm</category><category>python</category><description>&lt;h1&gt;LiteLLM — Router &amp;amp; Reliability&lt;/h1&gt;
&lt;h2&gt;Retries, Timeouts, Fallbacks per Call&lt;/h2&gt;
&lt;p&gt;```python
response = completion(
    model=&quot;anthropic/claude-sonnet-5&quot;,
    messa...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/litellm/03-router-reliability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/litellm/03-router-reliability/</guid></item><item><title>LiteLLM — Proxy (AI Gateway)</title><category>docker</category><category>libraries</category><category>litellm</category><category>llm</category><category>python</category><description>&lt;h1&gt;LiteLLM — Proxy (AI Gateway)&lt;/h1&gt;
&lt;h2&gt;What the Proxy Adds&lt;/h2&gt;
&lt;p&gt;```mermaid
flowchart LR
  A[&quot;Service A&lt;br/&gt;(OpenAI SDK, Python)&quot;] --&amp;gt; P
  B[&quot;Service B&lt;br/&gt;(TypeScrip...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/litellm/04-proxy-gateway/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/litellm/04-proxy-gateway/</guid></item><item><title>LiteLLM — Observability &amp; Testing</title><category>libraries</category><category>litellm</category><category>llm</category><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;LiteLLM — Observability &amp;amp; Testing&lt;/h1&gt;
&lt;h2&gt;Built-in Callbacks&lt;/h2&gt;
&lt;p&gt;One line sends every call (input, output, tokens, cost, latency, errors) to an observability back...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/litellm/05-observability-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/litellm/05-observability-testing/</guid></item><item><title>LiteLLM — One API for 100+ LLM Providers</title><category>libraries</category><category>litellm</category><category>llm</category><category>python</category><description>&lt;h1&gt;LiteLLM — One API for 100+ LLM Providers&lt;/h1&gt;
&lt;p&gt;Python SDK and AI gateway that calls OpenAI, Anthropic, Gemini, Bedrock, Azure, Ollama and many more through one ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/litellm/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/litellm/</guid></item><item><title>OpenTelemetry — Core Concepts</title><category>libraries</category><category>observability</category><category>opentelemetry</category><category>python</category><description>&lt;h1&gt;OpenTelemetry — Core Concepts&lt;/h1&gt;
&lt;h2&gt;Signals&lt;/h2&gt;
&lt;p&gt;OpenTelemetry defines independent signals that share one context and one resource model.&lt;/p&gt;
&lt;p&gt;| Signal | Answers | U...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/opentelemetry/01-core-concepts/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/opentelemetry/01-core-concepts/</guid></item><item><title>OpenTelemetry — Tracing</title><category>libraries</category><category>observability</category><category>opentelemetry</category><category>python</category><description>&lt;h1&gt;OpenTelemetry — Tracing&lt;/h1&gt;
&lt;h2&gt;Tracer Provider Setup&lt;/h2&gt;
&lt;p&gt;Configure the SDK once, as early as possible in the entry point (&lt;code&gt;main.py&lt;/code&gt;, app factory).&lt;/p&gt;
&lt;p&gt;```python&lt;/p&gt;
&lt;h1&gt;t...&lt;/h1&gt;</description><link>https://serhiismetanskyi.com/docs/libs/opentelemetry/02-tracing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/opentelemetry/02-tracing/</guid></item><item><title>OpenTelemetry — Metrics &amp; Logs</title><category>libraries</category><category>observability</category><category>opentelemetry</category><category>python</category><description>&lt;h1&gt;OpenTelemetry — Metrics &amp;amp; Logs&lt;/h1&gt;
&lt;h2&gt;Meter Provider Setup&lt;/h2&gt;
&lt;p&gt;```python
from opentelemetry import metrics
from opentelemetry.exporter.otlp.proto.grpc.metric_exp...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/opentelemetry/03-metrics-logs/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/opentelemetry/03-metrics-logs/</guid></item><item><title>OpenTelemetry — Auto-Instrumentation</title><category>fastapi</category><category>libraries</category><category>observability</category><category>opentelemetry</category><category>python</category><description>&lt;h1&gt;OpenTelemetry — Auto-Instrumentation&lt;/h1&gt;
&lt;h2&gt;Two Ways to Instrument Libraries&lt;/h2&gt;
&lt;p&gt;| Approach | How | Pros | Cons |
|----------|-----|------|------|
| *&lt;em&gt;Zero-code&lt;/em&gt;...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/opentelemetry/04-auto-instrumentation/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/opentelemetry/04-auto-instrumentation/</guid></item><item><title>OpenTelemetry — Collector &amp; Backends</title><category>docker</category><category>libraries</category><category>observability</category><category>opentelemetry</category><category>python</category><description>&lt;h1&gt;OpenTelemetry — Collector &amp;amp; Backends&lt;/h1&gt;
&lt;h2&gt;Why a Collector&lt;/h2&gt;
&lt;p&gt;| Without Collector | With Collector |
|-------------------|----------------|
| Every service hol...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/opentelemetry/05-collector-backends/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/opentelemetry/05-collector-backends/</guid></item><item><title>OpenTelemetry — Testing with OpenTelemetry</title><category>libraries</category><category>observability</category><category>opentelemetry</category><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;OpenTelemetry — Testing with OpenTelemetry&lt;/h1&gt;
&lt;p&gt;Two different goals:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Test the instrumentation&lt;/strong&gt; — unit tests assert that code emits the right spans, attr...&lt;/li&gt;
&lt;/ol&gt;</description><link>https://serhiismetanskyi.com/docs/libs/opentelemetry/06-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/opentelemetry/06-testing/</guid></item><item><title>OpenTelemetry — Python Observability</title><category>libraries</category><category>observability</category><category>opentelemetry</category><category>python</category><description>&lt;h1&gt;OpenTelemetry — Python Observability&lt;/h1&gt;
&lt;p&gt;Vendor-neutral standard for traces, metrics and logs: one API in the code, any backend behind the Collector.&lt;/p&gt;
&lt;h2&gt;Inst...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/libs/opentelemetry/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/opentelemetry/</guid></item><item><title>Langfuse — Setup &amp; Architecture</title><category>langfuse</category><category>llm</category><category>observability</category><category>tools</category><description>&lt;h1&gt;Langfuse — Setup &amp;amp; Architecture&lt;/h1&gt;
&lt;h2&gt;Cloud vs Self-Hosted&lt;/h2&gt;
&lt;p&gt;| Aspect | Langfuse Cloud | Self-hosted (OSS / Enterprise Edition) |
|--------|----------------|-...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/langfuse/01-setup-architecture/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/langfuse/01-setup-architecture/</guid></item><item><title>Langfuse — Tracing with the Python SDK</title><category>langfuse</category><category>llm</category><category>observability</category><category>tools</category><description>&lt;h1&gt;Langfuse — Tracing with the Python SDK&lt;/h1&gt;
&lt;p&gt;The current Python SDK (&lt;code&gt;langfuse&lt;/code&gt; &lt;strong&gt;v4&lt;/strong&gt;) is built on OpenTelemetry: every Langfuse observation is an OTel span, e...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/langfuse/02-tracing-sdk/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/langfuse/02-tracing-sdk/</guid></item><item><title>Langfuse — Prompt Management</title><category>langfuse</category><category>llm</category><category>observability</category><category>tools</category><description>&lt;h1&gt;Langfuse — Prompt Management&lt;/h1&gt;
&lt;p&gt;Prompts live in Langfuse, not in the code. The application fetches a prompt &lt;strong&gt;by label&lt;/strong&gt;, compiles variables in, and links th...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/langfuse/03-prompt-management/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/langfuse/03-prompt-management/</guid></item><item><title>Langfuse — Datasets &amp; Evaluations</title><category>langfuse</category><category>llm</category><category>observability</category><category>tools</category><description>&lt;h1&gt;Langfuse — Datasets &amp;amp; Evaluations&lt;/h1&gt;
&lt;p&gt;Datasets are the LLM equivalent of a regression suite: fixed inputs with expected outputs. &lt;strong&gt;Experiments&lt;/strong&gt; run your appl...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/langfuse/04-datasets-evaluations/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/langfuse/04-datasets-evaluations/</guid></item><item><title>Langfuse — Testing, CI &amp; Production</title><category>langfuse</category><category>llm</category><category>observability</category><category>tools</category><description>&lt;h1&gt;Langfuse — Testing, CI &amp;amp; Production&lt;/h1&gt;
&lt;p&gt;Three ways Langfuse shows up in a QA workflow:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Tests as traced traffic&lt;/strong&gt; — every pytest case produces a trace, t...&lt;/li&gt;
&lt;/ol&gt;</description><link>https://serhiismetanskyi.com/docs/tools/langfuse/05-testing-ci-production/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/langfuse/05-testing-ci-production/</guid></item><item><title>Langfuse — LLM Tracing, Prompts &amp;amp; Evals</title><category>langfuse</category><category>llm</category><category>observability</category><category>tools</category><description>&lt;h1&gt;Langfuse — LLM Tracing, Prompts &amp;amp; Evals&lt;/h1&gt;
&lt;p&gt;Open-source LLM engineering platform: trace every LLM call, version prompts outside the code, build datasets from ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/langfuse/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/langfuse/</guid></item><item><title>Phoenix — Setup &amp; Architecture</title><category>llm</category><category>observability</category><category>phoenix</category><category>tools</category><description>&lt;h1&gt;Phoenix — Setup &amp;amp; Architecture&lt;/h1&gt;
&lt;p&gt;Phoenix is one Python process (FastAPI + gRPC) that serves the UI, the REST/GraphQL API and the OTLP collector, backed by S...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/phoenix/01-setup-architecture/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/phoenix/01-setup-architecture/</guid></item><item><title>Phoenix — Tracing &amp; Instrumentation</title><category>llm</category><category>observability</category><category>phoenix</category><category>tools</category><description>&lt;h1&gt;Phoenix — Tracing &amp;amp; Instrumentation&lt;/h1&gt;
&lt;p&gt;Three layers, usually combined: &lt;code&gt;register()&lt;/code&gt; configures OpenTelemetry, OpenInference &lt;strong&gt;instrumentors&lt;/strong&gt; trace SDK calls...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/phoenix/02-tracing-instrumentation/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/phoenix/02-tracing-instrumentation/</guid></item><item><title>Phoenix — Datasets &amp; Experiments</title><category>llm</category><category>observability</category><category>phoenix</category><category>tools</category><description>&lt;h1&gt;Phoenix — Datasets &amp;amp; Experiments&lt;/h1&gt;
&lt;p&gt;A &lt;strong&gt;dataset&lt;/strong&gt; is a versioned set of examples (&lt;code&gt;input&lt;/code&gt;, &lt;code&gt;output&lt;/code&gt; = expected, &lt;code&gt;metadata&lt;/code&gt;). An &lt;strong&gt;experiment&lt;/strong&gt; runs a task ov...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/phoenix/03-datasets-experiments/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/phoenix/03-datasets-experiments/</guid></item><item><title>Phoenix — Evaluations</title><category>llm</category><category>observability</category><category>phoenix</category><category>tools</category><description>&lt;h1&gt;Phoenix — Evaluations&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;arize-phoenix-evals&lt;/code&gt; is a standalone library: evaluators run in &lt;strong&gt;your&lt;/strong&gt; process (notebook, pytest, CI job), and their scores go to...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/phoenix/04-evaluations/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/phoenix/04-evaluations/</guid></item><item><title>Phoenix — Testing, CI &amp; Production</title><category>llm</category><category>observability</category><category>phoenix</category><category>tools</category><description>&lt;h1&gt;Phoenix — Testing, CI &amp;amp; Production&lt;/h1&gt;
&lt;p&gt;Three ways Phoenix helps a test suite for an LLM system:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Trace test runs&lt;/strong&gt; — every test gets its own session in P...&lt;/li&gt;
&lt;/ol&gt;</description><link>https://serhiismetanskyi.com/docs/tools/phoenix/05-testing-ci-production/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/phoenix/05-testing-ci-production/</guid></item><item><title>Arize Phoenix — LLM Tracing &amp;amp; Evaluation</title><category>llm</category><category>observability</category><category>phoenix</category><category>tools</category><description>&lt;h1&gt;Arize Phoenix — LLM Tracing &amp;amp; Evaluation&lt;/h1&gt;
&lt;p&gt;Open-source (Elastic License 2.0) platform for tracing, evaluating and testing LLM applications: agents, RAG pipe...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/phoenix/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 27 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/phoenix/</guid></item><item><title>Agent Harness — Concepts &amp; Components</title><category>ai-agents</category><category>harness</category><category>llm</category><description>&lt;h1&gt;Agent Harness — Concepts &amp;amp; Components&lt;/h1&gt;
&lt;h2&gt;What Is an Agent Harness&lt;/h2&gt;
&lt;p&gt;An &lt;strong&gt;agent harness&lt;/strong&gt; (also called a &lt;em&gt;scaffold&lt;/em&gt;) is the system that lets a model act as ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-harness/01-agent-harness-concepts/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-harness/01-agent-harness-concepts/</guid></item><item><title>Agent Harness — Patterns &amp; Anti-Patterns</title><category>ai-agents</category><category>context-engineering</category><category>harness</category><category>llm</category><description>&lt;h1&gt;Agent Harness — Patterns &amp;amp; Anti-Patterns&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Harness engineering&lt;/strong&gt; is the practice of improving an agent by changing its harness — prompts, tools,
context, ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-harness/02-agent-harness-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-harness/02-agent-harness-patterns/</guid></item><item><title>Eval Harness — Concepts &amp; Metrics</title><category>evaluation</category><category>harness</category><category>llm</category><category>metrics</category><category>testing</category><description>&lt;h1&gt;Eval Harness — Concepts &amp;amp; Metrics&lt;/h1&gt;
&lt;h2&gt;What Is an Evaluation Harness&lt;/h2&gt;
&lt;p&gt;An &lt;strong&gt;evaluation harness&lt;/strong&gt; is the infrastructure that runs evals end to end:
it gives t...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-harness/03-eval-harness-concepts/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-harness/03-eval-harness-concepts/</guid></item><item><title>Eval Harness — Tools, Testing &amp; CI</title><category>ci-cd</category><category>evaluation</category><category>harness</category><category>llm</category><category>testing</category><description>&lt;h1&gt;Eval Harness — Tools, Testing &amp;amp; CI&lt;/h1&gt;
&lt;h2&gt;Tool Landscape&lt;/h2&gt;
&lt;p&gt;| Tool | Best for | Style | License |
|---|---|---|---|
| &lt;strong&gt;EleutherAI lm-evaluation-harness&lt;/strong&gt; | Aca...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-harness/04-eval-harness-tools-ci/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-harness/04-eval-harness-tools-ci/</guid></item><item><title>Building a Harness with Jev</title><category>ai-agents</category><category>harness</category><category>langchain</category><category>llm</category><description>&lt;h1&gt;Building a Harness with Jev (System One Models)&lt;/h1&gt;
&lt;h2&gt;The Problem: Every Decision Is a Model Call&lt;/h2&gt;
&lt;p&gt;A typical agent loop asks the LLM for &lt;em&gt;every&lt;/em&gt; small decisi...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-harness/05-jev-system-one-harness/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-harness/05-jev-system-one-harness/</guid></item><item><title>AI Harness</title><category>ai-agents</category><category>evaluation</category><category>harness</category><category>llm</category><description>&lt;h1&gt;AI Harness&lt;/h1&gt;
&lt;p&gt;A &lt;strong&gt;harness&lt;/strong&gt; is everything around the model that turns it into a working system.
The word is used for two different things, and both matter to...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-harness/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-harness/</guid></item><item><title>REST: The HTTP QUERY Method (RFC 10008)</title><category>api</category><category>api-testing</category><category>architecture</category><category>rest</category><description>&lt;h1&gt;REST: The HTTP QUERY Method (RFC 10008)&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;QUERY&lt;/strong&gt; is a new HTTP method for &lt;strong&gt;safe, idempotent requests with a body&lt;/strong&gt;. It was published as
[RFC 10008](http...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/01-rest/08-query-method/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/01-rest/08-query-method/</guid></item><item><title>uv — Scripts &amp; Tools</title><category>libraries</category><category>python</category><category>uv</category><description>&lt;h1&gt;uv — Scripts &amp;amp; Tools&lt;/h1&gt;
&lt;h2&gt;uv run&lt;/h2&gt;
&lt;p&gt;```bash
uv run python main.py          # run in project venv (auto-syncs deps)
uv run pytest                  # run instal...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/uv/02-scripts-tools/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/uv/02-scripts-tools/</guid></item><item><title>uv — Python &amp; Environments</title><category>libraries</category><category>python</category><category>uv</category><description>&lt;h1&gt;uv — Python &amp;amp; Environments&lt;/h1&gt;
&lt;h2&gt;Python Versions&lt;/h2&gt;
&lt;p&gt;```bash
uv python install 3.13          # download + install
uv python install 3.12 3.13    # multiple vers...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/uv/03-python-environments/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/uv/03-python-environments/</guid></item><item><title>uv — Workspaces &amp; Docker</title><category>libraries</category><category>python</category><category>uv</category><description>&lt;h1&gt;uv — Workspaces &amp;amp; Docker&lt;/h1&gt;
&lt;h2&gt;Workspaces (Monorepo)&lt;/h2&gt;
&lt;p&gt;```toml&lt;/p&gt;
&lt;h1&gt;root pyproject.toml&lt;/h1&gt;
&lt;p&gt;[tool.uv.workspace]
members = [&quot;packages/&lt;em&gt;&quot;, &quot;services/&lt;/em&gt;&quot;]
```&lt;/p&gt;
&lt;p&gt;```bash
u...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/uv/04-workspaces-docker/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/uv/04-workspaces-docker/</guid></item><item><title>uv — Build &amp; Publish</title><category>libraries</category><category>python</category><category>uv</category><description>&lt;h1&gt;uv — Build &amp;amp; Publish&lt;/h1&gt;
&lt;h2&gt;Build Backend&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;toml
[build-system]
requires = [&quot;uv_build&amp;gt;=0.11,&amp;lt;0.12&quot;]
build-backend = &quot;uv_build&quot;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;| Backend | Best for |
|...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/uv/05-build-publish/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/uv/05-build-publish/</guid></item><item><title>SDD — Concepts &amp; Workflow</title><category>ai-agents</category><category>coding-agents</category><category>spec-driven-development</category><description>&lt;h1&gt;SDD — Concepts &amp;amp; Workflow&lt;/h1&gt;
&lt;h2&gt;What Is Spec-Driven Development&lt;/h2&gt;
&lt;p&gt;Thoughtworks Technology Radar describes SDD as workflows that &quot;begin with a structured funct...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/spec-driven-development/01-concepts-workflow/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/spec-driven-development/01-concepts-workflow/</guid></item><item><title>SDD — Writing Good Specs</title><category>coding-agents</category><category>spec-driven-development</category><category>test-design</category><description>&lt;h1&gt;SDD — Writing Good Specs&lt;/h1&gt;
&lt;p&gt;A spec is only as useful as it is &lt;strong&gt;clear, testable and short enough to review&lt;/strong&gt;.
The agent reads it literally — every vague sent...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/spec-driven-development/02-writing-specs/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/spec-driven-development/02-writing-specs/</guid></item><item><title>SDD — Tools</title><category>coding-agents</category><category>spec-driven-development</category><category>tools</category><description>&lt;h1&gt;SDD — Tools&lt;/h1&gt;
&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;| Tool | Type | Workflow | Best for | License |
|---|---|---|---|---|
| &lt;strong&gt;GitHub Spec Kit&lt;/strong&gt; | CLI + agent commands for 50+ agents...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/spec-driven-development/03-tools/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/spec-driven-development/03-tools/</guid></item><item><title>SDD — QA, Testing &amp; Best Practices</title><category>qa</category><category>spec-driven-development</category><category>testing</category><description>&lt;h1&gt;SDD — QA, Testing &amp;amp; Best Practices&lt;/h1&gt;
&lt;h2&gt;Why SDD Matters for QA&lt;/h2&gt;
&lt;p&gt;In spec-driven development the spec already contains what QA needs most: **acceptance criter...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/spec-driven-development/04-qa-testing-best-practices/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/spec-driven-development/04-qa-testing-best-practices/</guid></item><item><title>Spec-Driven Development</title><category>ai-agents</category><category>coding-agents</category><category>spec-driven-development</category><description>&lt;h1&gt;Spec-Driven Development&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Spec-driven development (SDD)&lt;/strong&gt; is a way of working with AI coding agents where you start from a
structured, behaviour-oriented ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/spec-driven-development/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 25 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/spec-driven-development/</guid></item><item><title>SQLAlchemy — Alembic Migrations</title><category>databases</category><category>libraries</category><category>python</category><category>sqlalchemy</category><description>&lt;h1&gt;SQLAlchemy — Alembic Migrations&lt;/h1&gt;
&lt;h2&gt;Setup&lt;/h2&gt;
&lt;p&gt;```bash
uv add alembic
alembic init alembic           # sync template
alembic init -t async alembic  # async tem...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/sqlalchemy/05-alembic-migrations/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 24 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/sqlalchemy/05-alembic-migrations/</guid></item><item><title>SQLAlchemy — Advanced Recipes</title><category>databases</category><category>libraries</category><category>python</category><category>sqlalchemy</category><description>&lt;h1&gt;SQLAlchemy — Advanced Recipes&lt;/h1&gt;
&lt;h2&gt;Hybrid Properties&lt;/h2&gt;
&lt;p&gt;Attributes that behave differently at instance level (Python) and class level (SQL).&lt;/p&gt;
&lt;p&gt;```python
from s...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/sqlalchemy/06-advanced-recipes/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 24 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/sqlalchemy/06-advanced-recipes/</guid></item><item><title>uv — Projects &amp; Dependencies</title><category>libraries</category><category>python</category><category>uv</category><description>&lt;h1&gt;uv — Projects &amp;amp; Dependencies&lt;/h1&gt;
&lt;h2&gt;Create Project&lt;/h2&gt;
&lt;p&gt;```bash
uv init my-api              # new directory
uv init                     # current directory
uv ini...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/uv/01-projects-dependencies/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 24 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/uv/01-projects-dependencies/</guid></item><item><title>uv — Fast Python Project Manager</title><category>libraries</category><category>python</category><category>uv</category><description>&lt;h1&gt;uv — Fast Python Project Manager&lt;/h1&gt;
&lt;p&gt;Rust-based tool that replaces pip, poetry, pyenv, pipx, virtualenv, twine. 10–100x faster than pip.&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;```...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/uv/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 24 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/uv/</guid></item><item><title>SQLAlchemy — Engine &amp; Models</title><category>databases</category><category>libraries</category><category>python</category><category>sqlalchemy</category><description>&lt;h1&gt;SQLAlchemy — Engine &amp;amp; Models&lt;/h1&gt;
&lt;h2&gt;Engine Configuration&lt;/h2&gt;
&lt;p&gt;```python
from sqlalchemy import create_engine&lt;/p&gt;
&lt;p&gt;engine = create_engine(
    &quot;postgresql+psycopg2://u...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/sqlalchemy/01-engine-models/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/sqlalchemy/01-engine-models/</guid></item><item><title>SQLAlchemy — Relationships &amp; Queries</title><category>databases</category><category>libraries</category><category>python</category><category>sqlalchemy</category><description>&lt;h1&gt;SQLAlchemy — Relationships &amp;amp; Queries&lt;/h1&gt;
&lt;h2&gt;One-to-Many Relationship&lt;/h2&gt;
&lt;p&gt;```python
from sqlalchemy import ForeignKey, String, select
from sqlalchemy.orm import M...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/sqlalchemy/02-relationships-queries/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/sqlalchemy/02-relationships-queries/</guid></item><item><title>SQLAlchemy — Sessions &amp; Transactions</title><category>databases</category><category>libraries</category><category>python</category><category>sqlalchemy</category><description>&lt;h1&gt;SQLAlchemy — Sessions &amp;amp; Transactions&lt;/h1&gt;
&lt;h2&gt;Session Basics&lt;/h2&gt;
&lt;p&gt;```python
from sqlalchemy import create_engine
from sqlalchemy.orm import Session&lt;/p&gt;
&lt;p&gt;engine = create...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/sqlalchemy/03-sessions-transactions/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/sqlalchemy/03-sessions-transactions/</guid></item><item><title>SQLAlchemy — Async Patterns</title><category>databases</category><category>libraries</category><category>python</category><category>sqlalchemy</category><description>&lt;h1&gt;SQLAlchemy — Async Patterns&lt;/h1&gt;
&lt;h2&gt;Async Engine &amp;amp; Session&lt;/h2&gt;
&lt;p&gt;```python
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_async_engine
...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/sqlalchemy/04-async-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/sqlalchemy/04-async-patterns/</guid></item><item><title>Requests — Fundamentals &amp; Methods</title><category>api-testing</category><category>libraries</category><category>python</category><category>requests</category><description>&lt;h1&gt;Requests — Fundamentals &amp;amp; Methods&lt;/h1&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;bash
uv add requests&lt;/code&gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;GET — Read Data&lt;/h2&gt;
&lt;h3&gt;Basic GET&lt;/h3&gt;
&lt;p&gt;```python
import requests&lt;/p&gt;
&lt;p&gt;r = req...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/requests-http/01-fundamentals-methods/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/requests-http/01-fundamentals-methods/</guid></item><item><title>Requests — Advanced Patterns &amp; Best Practices</title><category>api-testing</category><category>libraries</category><category>python</category><category>requests</category><description>&lt;h1&gt;Requests — Advanced Patterns &amp;amp; Best Practices&lt;/h1&gt;
&lt;h2&gt;Authentication&lt;/h2&gt;
&lt;h3&gt;Basic Auth&lt;/h3&gt;
&lt;p&gt;```python
import requests
from requests.auth import HTTPBasicAuth&lt;/p&gt;
&lt;h1&gt;two ...&lt;/h1&gt;</description><link>https://serhiismetanskyi.com/docs/libs/requests-http/02-advanced-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/requests-http/02-advanced-patterns/</guid></item><item><title>Requests — Python HTTP Client</title><category>api-testing</category><category>libraries</category><category>python</category><category>requests</category><description>&lt;h1&gt;Requests — Python HTTP Client&lt;/h1&gt;
&lt;p&gt;Standard synchronous HTTP client for Python. Simple API, connection pooling, auth, retries.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;For async or HTTP/2, use `htt...&lt;/p&gt;
&lt;/blockquote&gt;</description><link>https://serhiismetanskyi.com/docs/libs/requests-http/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/requests-http/</guid></item><item><title>SQLAlchemy — Python ORM &amp;amp; SQL Toolkit</title><category>databases</category><category>libraries</category><category>python</category><category>sqlalchemy</category><description>&lt;h1&gt;SQLAlchemy — Python ORM &amp;amp; SQL Toolkit&lt;/h1&gt;
&lt;p&gt;Modern database toolkit for Python. Two layers: &lt;strong&gt;Core&lt;/strong&gt; (SQL expression language) and &lt;strong&gt;ORM&lt;/strong&gt; (object-relational ma...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/sqlalchemy/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 22 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/sqlalchemy/</guid></item><item><title>Pytest Playbook — Real-World Recipes</title><category>libraries</category><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Pytest Playbook — Real-World Recipes&lt;/h1&gt;
&lt;p&gt;Copy-paste templates for common testing scenarios.&lt;/p&gt;
&lt;h2&gt;1) FastAPI Endpoint Test&lt;/h2&gt;
&lt;p&gt;```python
import pytest
from httpx i...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pytest/02-practical-playbooks/01-real-world-recipes/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pytest/02-practical-playbooks/01-real-world-recipes/</guid></item><item><title>Pytest Playbook — Test Data Factories</title><category>libraries</category><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Pytest Playbook — Test Data Factories&lt;/h1&gt;
&lt;p&gt;Patterns for creating consistent, readable test data.&lt;/p&gt;
&lt;h2&gt;Minimal Valid Object Rule&lt;/h2&gt;
&lt;p&gt;Every factory should return the...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pytest/02-practical-playbooks/02-test-data-factories/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pytest/02-practical-playbooks/02-test-data-factories/</guid></item><item><title>Pytest Playbook — Flakiness Debugging</title><category>libraries</category><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Pytest Playbook — Flakiness Debugging&lt;/h1&gt;
&lt;p&gt;Workflow for tests that pass locally but fail randomly in CI.&lt;/p&gt;
&lt;h2&gt;Common Causes&lt;/h2&gt;
&lt;p&gt;| Cause | Symptom |
|-------|------...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pytest/02-practical-playbooks/03-flakiness-debugging/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pytest/02-practical-playbooks/03-flakiness-debugging/</guid></item><item><title>Pytest Playbook — Config Template</title><category>libraries</category><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Pytest Playbook — Config Template&lt;/h1&gt;
&lt;p&gt;Production-ready &lt;code&gt;pyproject.toml&lt;/code&gt; baseline for Python projects.&lt;/p&gt;
&lt;h2&gt;Template&lt;/h2&gt;
&lt;p&gt;```toml
[tool.pytest.ini_options]
testpath...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pytest/02-practical-playbooks/04-pytest-config-template/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 21 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pytest/02-practical-playbooks/04-pytest-config-template/</guid></item><item><title>Pytest — Fundamentals</title><category>libraries</category><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Pytest — Fundamentals&lt;/h1&gt;
&lt;h2&gt;Test Discovery&lt;/h2&gt;
&lt;p&gt;Pytest auto-discovers tests by convention:&lt;/p&gt;
&lt;p&gt;| Convention | Pattern |
|------------|---------|
| File names | `tes...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pytest/01-core-guides/01-fundamentals/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 20 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pytest/01-core-guides/01-fundamentals/</guid></item><item><title>Pytest — Advanced Patterns &amp; Best Practices</title><category>libraries</category><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Pytest — Advanced Patterns &amp;amp; Best Practices&lt;/h1&gt;
&lt;h2&gt;Mocking&lt;/h2&gt;
&lt;h3&gt;unittest.mock (built-in)&lt;/h3&gt;
&lt;p&gt;```python
from unittest.mock import MagicMock, patch&lt;/p&gt;
&lt;p&gt;def test_fetc...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pytest/01-core-guides/02-advanced-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 20 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pytest/01-core-guides/02-advanced-patterns/</guid></item><item><title>Core Guides</title><category>libraries</category><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Core Guides&lt;/h1&gt;
&lt;p&gt;Core Guides covers practical usage patterns for core Python libraries and engineering tooling, with focused guides on Fundamentals, Advanced P...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pytest/01-core-guides/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 20 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pytest/01-core-guides/</guid></item><item><title>Practical Playbooks</title><category>libraries</category><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Practical Playbooks&lt;/h1&gt;
&lt;p&gt;Practical Playbooks covers practical usage patterns for core Python libraries and engineering tooling, with focused guides on Real Wor...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pytest/02-practical-playbooks/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 20 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pytest/02-practical-playbooks/</guid></item><item><title>Pydantic — Validators &amp; Serialization</title><category>libraries</category><category>pydantic</category><category>python</category><description>&lt;h1&gt;Pydantic — Validators &amp;amp; Serialization&lt;/h1&gt;
&lt;h2&gt;Field Validators&lt;/h2&gt;
&lt;p&gt;Run on a single field after type parsing. Must be &lt;code&gt;@classmethod&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;```python
from pydantic impo...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pydantic/02-validators-serialization/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pydantic/02-validators-serialization/</guid></item><item><title>Pydantic — Advanced Patterns</title><category>libraries</category><category>pydantic</category><category>python</category><description>&lt;h1&gt;Pydantic — Advanced Patterns&lt;/h1&gt;
&lt;h2&gt;Discriminated Unions&lt;/h2&gt;
&lt;p&gt;Use a literal field to select the correct model variant — faster and more predictable than untagged ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pydantic/03-advanced-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pydantic/03-advanced-patterns/</guid></item><item><title>Pydantic — Config &amp; Performance</title><category>libraries</category><category>pydantic</category><category>python</category><description>&lt;h1&gt;Pydantic — Config &amp;amp; Performance&lt;/h1&gt;
&lt;h2&gt;ConfigDict&lt;/h2&gt;
&lt;p&gt;```python
from pydantic import BaseModel, ConfigDict&lt;/p&gt;
&lt;p&gt;class StrictUser(BaseModel):
    model_config = Conf...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pydantic/04-config-performance/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pydantic/04-config-performance/</guid></item><item><title>Pytest — Python Testing Framework</title><category>libraries</category><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Pytest — Python Testing Framework&lt;/h1&gt;
&lt;p&gt;Standard testing framework for Python: fixtures, parametrize, markers, mocking, coverage.&lt;/p&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;```bash
uv a...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pytest/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 19 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pytest/</guid></item><item><title>Playwright — UI Practical Playbook</title><category>libraries</category><category>playwright</category><category>python</category><category>ui-testing</category><description>&lt;h1&gt;Playwright — UI Practical Playbook&lt;/h1&gt;
&lt;p&gt;Copy-paste recipes for common UI testing scenarios.&lt;/p&gt;
&lt;h2&gt;1) Auth with Storage State Reuse&lt;/h2&gt;
&lt;p&gt;Authenticate once, reuse acro...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/playwright/05-ui-playbook/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/playwright/05-ui-playbook/</guid></item><item><title>Playwright — API Practical Playbook</title><category>libraries</category><category>playwright</category><category>python</category><category>ui-testing</category><description>&lt;h1&gt;Playwright — API Practical Playbook&lt;/h1&gt;
&lt;p&gt;Copy-paste recipes for common API testing scenarios with &lt;code&gt;APIRequestContext&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;1) Full CRUD Lifecycle&lt;/h2&gt;
&lt;p&gt;```python
fr...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/playwright/06-api-playbook/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/playwright/06-api-playbook/</guid></item><item><title>Pydantic — Models &amp; Fields</title><category>libraries</category><category>pydantic</category><category>python</category><description>&lt;h1&gt;Pydantic — Models &amp;amp; Fields&lt;/h1&gt;
&lt;h2&gt;BaseModel Basics&lt;/h2&gt;
&lt;p&gt;```python
from pydantic import BaseModel&lt;/p&gt;
&lt;p&gt;class User(BaseModel):
    id: int
    name: str
    email: str...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pydantic/01-models-fields/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pydantic/01-models-fields/</guid></item><item><title>Pydantic — Data Validation &amp;amp; Settings</title><category>libraries</category><category>pydantic</category><category>python</category><description>&lt;h1&gt;Pydantic — Data Validation &amp;amp; Settings&lt;/h1&gt;
&lt;p&gt;Python&apos;s most widely used data validation library. Powered by Rust core in v2 (5–50x faster than v1). Type-hint-driv...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/pydantic/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 18 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/pydantic/</guid></item><item><title>Playwright — UI Testing</title><category>libraries</category><category>playwright</category><category>python</category><category>ui-testing</category><description>&lt;h1&gt;Playwright — UI Testing&lt;/h1&gt;
&lt;h2&gt;Locators&lt;/h2&gt;
&lt;p&gt;Locators are live objects that auto-wait and re-evaluate when DOM changes.&lt;/p&gt;
&lt;h3&gt;Priority (most resilient first)&lt;/h3&gt;
&lt;p&gt;```p...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/playwright/01-ui-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/playwright/01-ui-testing/</guid></item><item><title>Playwright — API Testing</title><category>libraries</category><category>playwright</category><category>python</category><category>ui-testing</category><description>&lt;h1&gt;Playwright — API Testing&lt;/h1&gt;
&lt;p&gt;Playwright can send HTTP requests directly via &lt;code&gt;APIRequestContext&lt;/code&gt; — no browser needed.&lt;/p&gt;
&lt;h2&gt;Use Cases&lt;/h2&gt;
&lt;p&gt;| Scenario | Why Playwrigh...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/playwright/02-api-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/playwright/02-api-testing/</guid></item><item><title>Playwright — Page Object Model</title><category>libraries</category><category>playwright</category><category>python</category><category>ui-testing</category><description>&lt;h1&gt;Playwright — Page Object Model&lt;/h1&gt;
&lt;p&gt;POM encapsulates page structure and interactions in classes. Tests stay readable; locators live in one place.&lt;/p&gt;
&lt;h2&gt;Basic Pag...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/libs/playwright/03-page-objects/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/playwright/03-page-objects/</guid></item><item><title>Playwright — Advanced Patterns</title><category>libraries</category><category>playwright</category><category>python</category><category>ui-testing</category><description>&lt;h1&gt;Playwright — Advanced Patterns&lt;/h1&gt;
&lt;h2&gt;Network Mocking&lt;/h2&gt;
&lt;p&gt;Intercept requests and return fake data — no real backend needed.&lt;/p&gt;
&lt;h3&gt;Mock an API Endpoint&lt;/h3&gt;
&lt;p&gt;```python
...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/playwright/04-advanced-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 17 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/playwright/04-advanced-patterns/</guid></item><item><title>LangChain — LangGraph &amp; Production</title><category>langchain</category><category>libraries</category><category>llm</category><category>python</category><description>&lt;h1&gt;LangChain — LangGraph &amp;amp; Production&lt;/h1&gt;
&lt;h2&gt;LangGraph Overview&lt;/h2&gt;
&lt;p&gt;!!! tip &quot;Full LangGraph guide&quot;
    This page covers the basics. For state design, &lt;code&gt;Command&lt;/code&gt; / `S...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langchain/06-langgraph-production/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langchain/06-langgraph-production/</guid></item><item><title>LangChain — Security, Evaluation &amp; Operations</title><category>evaluation</category><category>langchain</category><category>libraries</category><category>llm</category><category>python</category><category>security</category><description>&lt;h1&gt;LangChain — Security, Evaluation &amp;amp; Operations&lt;/h1&gt;
&lt;h2&gt;Tool Safety Baseline&lt;/h2&gt;
&lt;p&gt;Tools are the highest-risk surface in agent systems. Apply allowlist-first controls...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langchain/07-security-evaluation-operations/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langchain/07-security-evaluation-operations/</guid></item><item><title>LangChain — Practical Playbooks</title><category>langchain</category><category>libraries</category><category>llm</category><category>python</category><description>&lt;h1&gt;LangChain — Practical Playbooks&lt;/h1&gt;
&lt;p&gt;Three ready-to-use scenarios for fast start: simple Q&amp;amp;A bot, documentation RAG bot, and agent with two tools.&lt;/p&gt;
&lt;h2&gt;Playbook...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langchain/08-practical-playbooks/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langchain/08-practical-playbooks/</guid></item><item><title>Playwright — Python Browser &amp;amp; API Testing</title><category>libraries</category><category>playwright</category><category>python</category><category>ui-testing</category><description>&lt;h1&gt;Playwright — Python Browser &amp;amp; API Testing&lt;/h1&gt;
&lt;p&gt;End-to-end testing framework: UI automation, API testing, network mocking, cross-browser support.&lt;/p&gt;
&lt;h2&gt;Installati...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/libs/playwright/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 16 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/playwright/</guid></item><item><title>LangChain — Models, Prompts &amp; Parsers</title><category>langchain</category><category>libraries</category><category>llm</category><category>python</category><description>&lt;h1&gt;LangChain — Models, Prompts &amp;amp; Parsers&lt;/h1&gt;
&lt;h2&gt;Chat Models&lt;/h2&gt;
&lt;p&gt;```python
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic&lt;/p&gt;
&lt;p&gt;ope...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langchain/01-models-prompts-parsers/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 15 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langchain/01-models-prompts-parsers/</guid></item><item><title>LangChain — LCEL &amp; Chains</title><category>langchain</category><category>libraries</category><category>llm</category><category>python</category><description>&lt;h1&gt;LangChain — LCEL &amp;amp; Chains&lt;/h1&gt;
&lt;h2&gt;LCEL Overview&lt;/h2&gt;
&lt;p&gt;LangChain Expression Language (LCEL) is the declarative way to compose components using the pipe operator &lt;code&gt;|&lt;/code&gt;....&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langchain/02-lcel-chains/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 15 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langchain/02-lcel-chains/</guid></item><item><title>LangChain — RAG &amp; Retrieval</title><category>evaluation</category><category>langchain</category><category>libraries</category><category>llm</category><category>python</category><category>rag</category><description>&lt;h1&gt;LangChain — RAG &amp;amp; Retrieval&lt;/h1&gt;
&lt;h2&gt;RAG Pipeline Overview&lt;/h2&gt;
&lt;p&gt;Retrieval-Augmented Generation grounds LLM responses in external documents. Two phases:&lt;/p&gt;
&lt;p&gt;**Indexing ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langchain/03-rag-retrieval/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 15 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langchain/03-rag-retrieval/</guid></item><item><title>LangChain — Agents &amp; Tools</title><category>langchain</category><category>libraries</category><category>llm</category><category>python</category><description>&lt;h1&gt;LangChain — Agents &amp;amp; Tools&lt;/h1&gt;
&lt;h2&gt;Tools Overview&lt;/h2&gt;
&lt;p&gt;Tools are Python functions the LLM can invoke. LangChain auto-generates the JSON schema from the function si...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langchain/04-agents-tools/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 15 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langchain/04-agents-tools/</guid></item><item><title>LangChain — Memory &amp; State</title><category>langchain</category><category>libraries</category><category>llm</category><category>python</category><description>&lt;h1&gt;LangChain — Memory &amp;amp; State&lt;/h1&gt;
&lt;h2&gt;Memory Overview&lt;/h2&gt;
&lt;p&gt;LLMs are stateless — every call is independent. Memory components inject conversation history or context in...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langchain/05-memory-state/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 15 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langchain/05-memory-state/</guid></item><item><title>HTTPX — Fundamentals</title><category>api-testing</category><category>httpx</category><category>libraries</category><category>python</category><description>&lt;h1&gt;HTTPX — Fundamentals&lt;/h1&gt;
&lt;h2&gt;Client vs Module-Level Functions&lt;/h2&gt;
&lt;p&gt;```python
import httpx&lt;/p&gt;
&lt;h1&gt;module-level: new connection per request (fine for one-off scripts)&lt;/h1&gt;
&lt;p&gt;r ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/httpx/01-fundamentals/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/httpx/01-fundamentals/</guid></item><item><title>HTTPX — Async Patterns</title><category>api-testing</category><category>httpx</category><category>libraries</category><category>python</category><description>&lt;h1&gt;HTTPX — Async Patterns&lt;/h1&gt;
&lt;h2&gt;AsyncClient Basics&lt;/h2&gt;
&lt;p&gt;Same API as sync &lt;code&gt;Client&lt;/code&gt;, but with &lt;code&gt;await&lt;/code&gt; and &lt;code&gt;async with&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;```python
import httpx&lt;/p&gt;
&lt;p&gt;async def fetch_user...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/httpx/02-async-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/httpx/02-async-patterns/</guid></item><item><title>HTTPX — Advanced Configuration</title><category>api-testing</category><category>httpx</category><category>libraries</category><category>python</category><description>&lt;h1&gt;HTTPX — Advanced Configuration&lt;/h1&gt;
&lt;h2&gt;Timeouts (Granular)&lt;/h2&gt;
&lt;p&gt;Default is 5 seconds. Use &lt;code&gt;httpx.Timeout(default, connect=..., read=..., write=..., pool=...)&lt;/code&gt; on t...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/httpx/03-advanced-config/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/httpx/03-advanced-config/</guid></item><item><title>LangChain — LLM Application Framework</title><category>langchain</category><category>libraries</category><category>llm</category><category>python</category><description>&lt;h1&gt;LangChain — LLM Application Framework&lt;/h1&gt;
&lt;p&gt;Framework for building applications powered by large language models. Composable components for prompts, chains, age...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/langchain/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 14 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/langchain/</guid></item><item><title>FastAPI — Testing</title><category>api</category><category>fastapi</category><category>libraries</category><category>python</category><description>&lt;h1&gt;FastAPI — Testing&lt;/h1&gt;
&lt;h2&gt;TestClient Basics&lt;/h2&gt;
&lt;p&gt;```python
from fastapi import FastAPI
from fastapi.testclient import TestClient&lt;/p&gt;
&lt;p&gt;app = FastAPI()&lt;/p&gt;
&lt;p&gt;@app.get(&quot;/heal...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/fastapi/05-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 13 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/fastapi/05-testing/</guid></item><item><title>FastAPI — Production Patterns</title><category>api</category><category>fastapi</category><category>libraries</category><category>python</category><description>&lt;h1&gt;FastAPI — Production Patterns&lt;/h1&gt;
&lt;h2&gt;Project Structure&lt;/h2&gt;
&lt;p&gt;```
app/
├── main.py              # FastAPI app, lifespan, router includes
├── config.py            # ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/fastapi/06-production-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 13 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/fastapi/06-production-patterns/</guid></item><item><title>FastAPI — ASGI, Uvicorn, Starlette</title><category>api</category><category>fastapi</category><category>libraries</category><category>python</category><description>&lt;h1&gt;ASGI vs WSGI, Uvicorn, Starlette, Litestar&lt;/h1&gt;
&lt;h2&gt;Why This Matters&lt;/h2&gt;
&lt;p&gt;When you run FastAPI in production, you are not running &quot;just FastAPI&quot;. You run:
- an ASGI...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/fastapi/07-asgi-uvicorn-starlette/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 13 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/fastapi/07-asgi-uvicorn-starlette/</guid></item><item><title>HTTPX — Modern Python HTTP Client</title><category>api-testing</category><category>httpx</category><category>libraries</category><category>python</category><description>&lt;h1&gt;HTTPX — Modern Python HTTP Client&lt;/h1&gt;
&lt;p&gt;Async-capable HTTP client with full sync support. Drop-in &lt;code&gt;requests&lt;/code&gt; replacement with HTTP/2, type hints, and granular t...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/httpx/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 13 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/httpx/</guid></item><item><title>FastAPI — App &amp; Routing</title><category>api</category><category>fastapi</category><category>libraries</category><category>python</category><description>&lt;h1&gt;FastAPI — App &amp;amp; Routing&lt;/h1&gt;
&lt;h2&gt;App Configuration&lt;/h2&gt;
&lt;p&gt;```python
from fastapi import FastAPI&lt;/p&gt;
&lt;p&gt;app = FastAPI(
    title=&quot;My Service&quot;,
    version=&quot;1.0.0&quot;,
    docs_...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/fastapi/01-app-routing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 12 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/fastapi/01-app-routing/</guid></item><item><title>FastAPI — Dependencies &amp; Middleware</title><category>api</category><category>fastapi</category><category>libraries</category><category>python</category><description>&lt;h1&gt;FastAPI — Dependencies &amp;amp; Middleware&lt;/h1&gt;
&lt;h2&gt;Dependency Injection Basics&lt;/h2&gt;
&lt;p&gt;```python
from fastapi import Depends, FastAPI&lt;/p&gt;
&lt;p&gt;app = FastAPI()&lt;/p&gt;
&lt;p&gt;async def common_par...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/fastapi/02-dependencies-middleware/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 12 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/fastapi/02-dependencies-middleware/</guid></item><item><title>FastAPI — Database Integration</title><category>api</category><category>fastapi</category><category>libraries</category><category>python</category><description>&lt;h1&gt;FastAPI — Database Integration&lt;/h1&gt;
&lt;h2&gt;Async Engine &amp;amp; Session Setup&lt;/h2&gt;
&lt;p&gt;```python
from sqlalchemy.ext.asyncio import AsyncSession, async_sessionmaker, create_asyn...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/fastapi/03-database-integration/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 12 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/fastapi/03-database-integration/</guid></item><item><title>FastAPI — Auth &amp; Security</title><category>api</category><category>fastapi</category><category>libraries</category><category>python</category><category>security</category><description>&lt;h1&gt;FastAPI — Auth &amp;amp; Security&lt;/h1&gt;
&lt;h2&gt;OAuth2 Password Flow&lt;/h2&gt;
&lt;p&gt;```python
from fastapi import Depends, FastAPI, HTTPException, status
from fastapi.security import OAut...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/fastapi/04-auth-security/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 12 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/fastapi/04-auth-security/</guid></item><item><title>Pre-Commit Hooks</title><category>code-quality</category><category>libraries</category><category>python</category><description>&lt;h1&gt;Pre-Commit Hooks&lt;/h1&gt;
&lt;p&gt;Run linters, formatters, and type checkers automatically on every &lt;code&gt;git commit&lt;/code&gt; — and heavier checks, such as tests, on &lt;code&gt;git push&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;In...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/libs/code-quality/03-pre-commit-hooks/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 11 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/code-quality/03-pre-commit-hooks/</guid></item><item><title>Test Coverage — Measurement, Enforcement, Mutation Testing</title><category>code-quality</category><category>libraries</category><category>python</category><category>rag</category><description>&lt;h1&gt;Test Coverage — Measurement, Enforcement, Mutation Testing&lt;/h1&gt;
&lt;h2&gt;pytest-cov + coverage.py&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;pytest-cov&lt;/code&gt; is the pytest plugin that wraps &lt;code&gt;coverage.py&lt;/code&gt; for sea...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/code-quality/04-test-coverage/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 11 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/code-quality/04-test-coverage/</guid></item><item><title>Config Template — pyproject.toml + Pre-Commit</title><category>code-quality</category><category>libraries</category><category>python</category><description>&lt;h1&gt;Config Template — pyproject.toml + Pre-Commit&lt;/h1&gt;
&lt;p&gt;Copy-paste baseline for a new Python project with full quality stack.&lt;/p&gt;
&lt;h2&gt;&lt;code&gt;pyproject.toml&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;```toml
[project...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/code-quality/05-pyproject-template/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 11 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/code-quality/05-pyproject-template/</guid></item><item><title>FastAPI — Modern Async Web Framework</title><category>api</category><category>fastapi</category><category>libraries</category><category>python</category><description>&lt;h1&gt;FastAPI — Modern Async Web Framework&lt;/h1&gt;
&lt;p&gt;High-performance Python web framework built on Starlette and Pydantic. Automatic OpenAPI docs, type-safe request vali...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/fastapi/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 11 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/fastapi/</guid></item><item><title>Ruff — Linting &amp; Formatting</title><category>code-quality</category><category>libraries</category><category>python</category><description>&lt;h1&gt;Ruff — Linting &amp;amp; Formatting&lt;/h1&gt;
&lt;p&gt;Rust-based all-in-one tool. Replaces Flake8, Black, isort, bandit, pyupgrade, pydocstyle, and 20+ others. 10–100x faster.&lt;/p&gt;
&lt;h2&gt;...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/libs/code-quality/01-ruff-linting-formatting/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/code-quality/01-ruff-linting-formatting/</guid></item><item><title>Static Analysis — mypy, Pyright, wemake-python-styleguide</title><category>code-quality</category><category>libraries</category><category>python</category><description>&lt;h1&gt;Static Analysis — mypy, Pyright, wemake-python-styleguide&lt;/h1&gt;
&lt;h2&gt;mypy — Static Type Checker (CI Standard)&lt;/h2&gt;
&lt;p&gt;```bash
uv add --dev mypy
uv run mypy .
uv run mypy...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/code-quality/02-type-checkers/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/code-quality/02-type-checkers/</guid></item><item><title>Code Quality — Linters, Formatters, Type Checkers, Coverage</title><category>code-quality</category><category>libraries</category><category>python</category><description>&lt;h1&gt;Code Quality — Linters, Formatters, Type Checkers, Coverage&lt;/h1&gt;
&lt;p&gt;Practical guide to the modern Python quality stack: what to use, how to configure, how to enfo...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/code-quality/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/code-quality/</guid></item><item><title>Python Libraries</title><category>libraries</category><category>python</category><description>&lt;h1&gt;Python Libraries&lt;/h1&gt;
&lt;p&gt;Practical guides for key Python libraries: core API, patterns, and production best practices.&lt;/p&gt;
&lt;h2&gt;Section Map&lt;/h2&gt;
&lt;p&gt;| Library | Focus |
|-----...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/libs/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 10 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/libs/</guid></item><item><title>Services &amp; Networking</title><category>kubernetes</category><category>tools</category><description>&lt;h1&gt;Services &amp;amp; Networking&lt;/h1&gt;
&lt;h2&gt;Networking Model&lt;/h2&gt;
&lt;p&gt;Every Pod gets a unique cluster-wide IP address. Pods communicate directly — no NAT required. A CNI (Container ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/kubernetes/03-services-networking/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/kubernetes/03-services-networking/</guid></item><item><title>Configuration &amp; Storage</title><category>kubernetes</category><category>rag</category><category>tools</category><description>&lt;h1&gt;Configuration &amp;amp; Storage&lt;/h1&gt;
&lt;h2&gt;ConfigMaps&lt;/h2&gt;
&lt;p&gt;Store non-sensitive configuration data as key-value pairs, consumed as environment variables or mounted files.&lt;/p&gt;
&lt;h3&gt;...&lt;/h3&gt;</description><link>https://serhiismetanskyi.com/docs/tools/kubernetes/04-config-storage/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/kubernetes/04-config-storage/</guid></item><item><title>Helm &amp; Deployment Strategies</title><category>kubernetes</category><category>tools</category><description>&lt;h1&gt;Helm &amp;amp; Deployment Strategies&lt;/h1&gt;
&lt;h2&gt;Helm&lt;/h2&gt;
&lt;p&gt;Helm is the package manager for Kubernetes. A &lt;strong&gt;chart&lt;/strong&gt; is a collection of templates that produce Kubernetes manifes...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/kubernetes/05-helm-deployments/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/kubernetes/05-helm-deployments/</guid></item><item><title>Security &amp; Observability</title><category>kubernetes</category><category>observability</category><category>security</category><category>tools</category><description>&lt;h1&gt;Security &amp;amp; Observability&lt;/h1&gt;
&lt;h2&gt;RBAC (Role-Based Access Control)&lt;/h2&gt;
&lt;p&gt;RBAC controls who can do what in the cluster. Two scopes: namespace-level (Role) and cluster...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/kubernetes/06-security-observability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/kubernetes/06-security-observability/</guid></item><item><title>kubectl Fundamentals</title><category>kubernetes</category><category>tools</category><description>&lt;h1&gt;kubectl Fundamentals&lt;/h1&gt;
&lt;h2&gt;Installation&lt;/h2&gt;
&lt;p&gt;```bash&lt;/p&gt;
&lt;h1&gt;Linux (latest stable)&lt;/h1&gt;
&lt;p&gt;curl -LO &quot;https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.tx...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/kubernetes/01-kubectl-fundamentals/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 08 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/kubernetes/01-kubectl-fundamentals/</guid></item><item><title>Workloads &amp; Scheduling</title><category>kubernetes</category><category>tools</category><description>&lt;h1&gt;Workloads &amp;amp; Scheduling&lt;/h1&gt;
&lt;h2&gt;Pod&lt;/h2&gt;
&lt;p&gt;The smallest deployable unit. A Pod runs one or more containers sharing the same network namespace and storage volumes.&lt;/p&gt;
&lt;p&gt;``...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/kubernetes/02-workloads-scheduling/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 08 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/kubernetes/02-workloads-scheduling/</guid></item><item><title>Kubernetes (K8s) — Overview</title><category>kubernetes</category><category>tools</category><description>&lt;h1&gt;Kubernetes (K8s) — Overview&lt;/h1&gt;
&lt;h2&gt;What Is Kubernetes&lt;/h2&gt;
&lt;p&gt;Kubernetes is an open-source container orchestration platform that automates deploying, scaling, and ma...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/kubernetes/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 08 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/kubernetes/</guid></item><item><title>Administration &amp; Scripting Basics</title><category>linux</category><category>tools</category><description>&lt;h1&gt;Administration &amp;amp; Scripting Basics&lt;/h1&gt;
&lt;h2&gt;Package management (Debian/Ubuntu)&lt;/h2&gt;
&lt;p&gt;```bash
sudo apt update                  # refresh package index
sudo apt upgrade...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/linux-terminal/05-admin-scripting/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 08 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/linux-terminal/05-admin-scripting/</guid></item><item><title>Navigation, Files &amp; Shell Basics</title><category>linux</category><category>tools</category><description>&lt;h1&gt;Navigation, Files &amp;amp; Shell Basics&lt;/h1&gt;
&lt;h2&gt;Get help&lt;/h2&gt;
&lt;p&gt;```bash
man ls                   # open manual page for ls
man grep                 # open manual page for g...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/linux-terminal/01-navigation-files/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/linux-terminal/01-navigation-files/</guid></item><item><title>Search, Pipes &amp; Text Processing</title><category>linux</category><category>tools</category><description>&lt;h1&gt;Search, Pipes &amp;amp; Text Processing&lt;/h1&gt;
&lt;h2&gt;Find files&lt;/h2&gt;
&lt;p&gt;```bash
find . -name &quot;&lt;em&gt;.py&quot;              # find by name pattern
find . -name &quot;name&lt;/em&gt;&quot;             # find fil...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/linux-terminal/02-search-text-processing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/linux-terminal/02-search-text-processing/</guid></item><item><title>Processes &amp; System Monitoring</title><category>linux</category><category>observability</category><category>tools</category><description>&lt;h1&gt;Processes &amp;amp; System Monitoring&lt;/h1&gt;
&lt;h2&gt;View running processes&lt;/h2&gt;
&lt;p&gt;```bash
ps                       # processes in current shell
ps aux                   # all proc...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/linux-terminal/03-processes-system-monitoring/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/linux-terminal/03-processes-system-monitoring/</guid></item><item><title>Network Basics</title><category>linux</category><category>tools</category><description>&lt;h1&gt;Network Basics&lt;/h1&gt;
&lt;h2&gt;Local network info&lt;/h2&gt;
&lt;p&gt;```bash
ip a                     # show interfaces and IP addresses
ip route                 # show routing table
ss...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/linux-terminal/04-network-ssh-downloads/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 07 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/linux-terminal/04-network-ssh-downloads/</guid></item><item><title>Git — Advanced Workflows</title><category>git</category><category>tools</category><description>&lt;h1&gt;Git — Advanced Workflows&lt;/h1&gt;
&lt;h2&gt;Interactive Rebase&lt;/h2&gt;
&lt;p&gt;Rewrite local commit history before pushing — squash, reorder, edit, drop.&lt;/p&gt;
&lt;p&gt;```bash
git rebase -i HEAD~5  ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/git/04-advanced-workflows/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/git/04-advanced-workflows/</guid></item><item><title>Git — Hooks &amp; Configuration</title><category>git</category><category>tools</category><description>&lt;h1&gt;Git — Hooks &amp;amp; Configuration&lt;/h1&gt;
&lt;h2&gt;Git Hooks Overview&lt;/h2&gt;
&lt;p&gt;Scripts that Git executes automatically at specific points in the workflow.&lt;/p&gt;
&lt;p&gt;| Hook | Trigger | Common ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/git/05-hooks-configuration/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/git/05-hooks-configuration/</guid></item><item><title>Git — Troubleshooting &amp; Recovery</title><category>git</category><category>tools</category><description>&lt;h1&gt;Git — Troubleshooting &amp;amp; Recovery&lt;/h1&gt;
&lt;h2&gt;Undo Cheat Sheet&lt;/h2&gt;
&lt;p&gt;| What happened | Fix command | Safe? |
|--------------|-------------|-------|
| Unstage a file | `g...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/git/06-troubleshooting-recovery/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/git/06-troubleshooting-recovery/</guid></item><item><title>Linux Terminal — Essential Commands</title><category>linux</category><category>tools</category><description>&lt;h1&gt;Linux Terminal — Essential Commands&lt;/h1&gt;
&lt;p&gt;Core Linux terminal commands for everyday use, plus basic networking and system administration.&lt;/p&gt;
&lt;h2&gt;Section Map&lt;/h2&gt;
&lt;p&gt;| Fil...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/linux-terminal/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 06 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/linux-terminal/</guid></item><item><title>Git — Commands &amp; Fundamentals</title><category>git</category><category>tools</category><description>&lt;h1&gt;Git — Commands &amp;amp; Fundamentals&lt;/h1&gt;
&lt;h2&gt;Repository Setup&lt;/h2&gt;
&lt;p&gt;```bash
git init                                       # Initialize new repo in current dir
git init my...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/git/01-commands-fundamentals/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 05 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/git/01-commands-fundamentals/</guid></item><item><title>Git — Branching Strategies</title><category>git</category><category>tools</category><description>&lt;h1&gt;Git — Branching Strategies&lt;/h1&gt;
&lt;h2&gt;GitHub Flow (Recommended Default)&lt;/h2&gt;
&lt;p&gt;Simplest model. One permanent branch (&lt;code&gt;main&lt;/code&gt;), short-lived feature branches.&lt;/p&gt;
&lt;p&gt;```
main ──...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/git/02-branching-strategies/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 05 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/git/02-branching-strategies/</guid></item><item><title>Git — Commit Conventions &amp; PR Practices</title><category>git</category><category>tools</category><description>&lt;h1&gt;Git — Commit Conventions &amp;amp; PR Practices&lt;/h1&gt;
&lt;h2&gt;Conventional Commits&lt;/h2&gt;
&lt;p&gt;Standard format adopted by most open-source projects and enforced by tools like `commitli...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/git/03-commit-conventions/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 05 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/git/03-commit-conventions/</guid></item><item><title>Git — Overview</title><category>git</category><category>tools</category><description>&lt;h1&gt;Git — Overview&lt;/h1&gt;
&lt;h2&gt;What Is Git&lt;/h2&gt;
&lt;p&gt;Git is a &lt;strong&gt;distributed version control system&lt;/strong&gt; — every developer has a full copy of the repository, including its entire h...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/git/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 05 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/git/</guid></item><item><title>Docker — Dockerfile Best Practices</title><category>docker</category><category>tools</category><description>&lt;h1&gt;Docker — Dockerfile Best Practices&lt;/h1&gt;
&lt;h2&gt;Multi-Stage Builds&lt;/h2&gt;
&lt;p&gt;Separate build-time dependencies from the final runtime image. Reduces size by 80–97%.&lt;/p&gt;
&lt;p&gt;```docke...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/docker/02-dockerfile-best-practices/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/docker/02-dockerfile-best-practices/</guid></item><item><title>Docker — Docker Compose</title><category>docker</category><category>tools</category><description>&lt;h1&gt;Docker — Docker Compose&lt;/h1&gt;
&lt;h2&gt;Compose File Structure&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;compose.yaml&lt;/code&gt; (preferred name since Compose v2; &lt;code&gt;version&lt;/code&gt; field is deprecated):&lt;/p&gt;
&lt;p&gt;```yaml
services:
  a...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/docker/03-docker-compose/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/docker/03-docker-compose/</guid></item><item><title>Docker — Networking &amp; Volumes</title><category>docker</category><category>tools</category><description>&lt;h1&gt;Docker — Networking &amp;amp; Volumes&lt;/h1&gt;
&lt;h2&gt;Network Drivers&lt;/h2&gt;
&lt;p&gt;| Driver | Scope | Use Case |
|--------|-------|----------|
| &lt;strong&gt;bridge&lt;/strong&gt; | Single host | Default; contai...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/docker/04-networking-volumes/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/docker/04-networking-volumes/</guid></item><item><title>Docker — Security &amp; Production</title><category>docker</category><category>security</category><category>tools</category><description>&lt;h1&gt;Docker — Security &amp;amp; Production&lt;/h1&gt;
&lt;h2&gt;Non-Root Containers&lt;/h2&gt;
&lt;p&gt;Running as root inside a container = running as root on the host (if the container escapes).&lt;/p&gt;
&lt;p&gt;```do...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/docker/05-security-production/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/docker/05-security-production/</guid></item><item><title>Docker — Debugging &amp; Troubleshooting</title><category>docker</category><category>tools</category><description>&lt;h1&gt;Docker — Debugging &amp;amp; Troubleshooting&lt;/h1&gt;
&lt;h2&gt;Container Won&apos;t Start&lt;/h2&gt;
&lt;p&gt;```bash
docker logs myapp                                # Check startup errors
docker log...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/docker/06-debugging-troubleshooting/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 04 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/docker/06-debugging-troubleshooting/</guid></item><item><title>PostgreSQL — Basic Query Commands</title><category>databases</category><category>postgresql</category><category>sql</category><description>&lt;h1&gt;PostgreSQL — Basic Query Commands&lt;/h1&gt;
&lt;p&gt;Quick-reference for daily SQL work. For performance tuning see &lt;a href=&quot;./03-queries-performance.md&quot;&gt;03 — Queries &amp;amp; Performance&lt;/a&gt;...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/databases/postgresql/05-basic-query-commands/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/databases/postgresql/05-basic-query-commands/</guid></item><item><title>Docker — Commands &amp; Fundamentals</title><category>docker</category><category>tools</category><description>&lt;h1&gt;Docker — Commands &amp;amp; Fundamentals&lt;/h1&gt;
&lt;h2&gt;Image Commands&lt;/h2&gt;
&lt;p&gt;```bash
docker build -t myapp:1.0 .                          # Build from Dockerfile in current dir
d...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/docker/01-commands-fundamentals/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/docker/01-commands-fundamentals/</guid></item><item><title>Docker &amp;amp; Docker Compose — Overview</title><category>docker</category><category>tools</category><description>&lt;h1&gt;Docker &amp;amp; Docker Compose — Overview&lt;/h1&gt;
&lt;h2&gt;What Is Docker&lt;/h2&gt;
&lt;p&gt;Docker packages applications and their dependencies into lightweight, portable &lt;strong&gt;containers&lt;/strong&gt; that r...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/docker/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/docker/</guid></item><item><title>Tools — Practical Reference Guides</title><category>tools</category><description>&lt;h1&gt;Tools — Practical Reference Guides&lt;/h1&gt;
&lt;p&gt;Hands-on command references, configuration patterns, and best practices for the tools a software engineer uses daily.&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/tools/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 03 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/tools/</guid></item><item><title>PostgreSQL — Commands &amp; psql</title><category>databases</category><category>postgresql</category><category>sql</category><description>&lt;h1&gt;PostgreSQL — Commands &amp;amp; psql&lt;/h1&gt;
&lt;h2&gt;Connecting&lt;/h2&gt;
&lt;p&gt;```bash
psql -U myuser -d mydb                         # Local connection
psql -U myuser -h localhost -p 5432 ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/databases/postgresql/01-commands-psql/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/databases/postgresql/01-commands-psql/</guid></item><item><title>PostgreSQL — Schema &amp; Data Types</title><category>databases</category><category>postgresql</category><category>sql</category><description>&lt;h1&gt;PostgreSQL — Schema &amp;amp; Data Types&lt;/h1&gt;
&lt;h2&gt;Common Data Types&lt;/h2&gt;
&lt;p&gt;| Category | Type | Description |
|----------|------|-------------|
| &lt;strong&gt;Integer&lt;/strong&gt; | &lt;code&gt;INTEGER&lt;/code&gt; / `IN...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/databases/postgresql/02-schema-data-types/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/databases/postgresql/02-schema-data-types/</guid></item><item><title>PostgreSQL — Queries &amp; Performance</title><category>databases</category><category>postgresql</category><category>sql</category><description>&lt;h1&gt;PostgreSQL — Queries &amp;amp; Performance&lt;/h1&gt;
&lt;p&gt;For baseline SQL syntax see &lt;a href=&quot;./05-basic-query-commands.md&quot;&gt;05 — Basic Query Commands&lt;/a&gt;. This file focuses on **query dia...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/databases/postgresql/03-queries-performance/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/databases/postgresql/03-queries-performance/</guid></item><item><title>PostgreSQL — Admin &amp; Operations</title><category>databases</category><category>postgresql</category><category>sql</category><description>&lt;h1&gt;PostgreSQL — Admin &amp;amp; Operations&lt;/h1&gt;
&lt;h2&gt;Users &amp;amp; Roles&lt;/h2&gt;
&lt;p&gt;```sql
-- Create user (role with LOGIN)
CREATE ROLE myuser WITH LOGIN PASSWORD &apos;strongpass&apos;;&lt;/p&gt;
&lt;p&gt;-- Create ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/databases/postgresql/04-admin-operations/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/databases/postgresql/04-admin-operations/</guid></item><item><title>Anti-Patterns &amp; Risks</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Anti-Patterns &amp;amp; Risks&lt;/h1&gt;
&lt;h2&gt;Anti-Patterns&lt;/h2&gt;
&lt;h3&gt;Slow Pipelines&lt;/h3&gt;
&lt;p&gt;A pipeline that takes 45 minutes teaches developers to batch changes.
Batched changes mean lar...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/07-patterns-decisions/03-antipatterns-risks/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/07-patterns-decisions/03-antipatterns-risks/</guid></item><item><title>Real-World Architectures, Heuristics &amp; Decision Factors</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Real-World Architectures, Heuristics &amp;amp; Decision Factors&lt;/h1&gt;
&lt;h2&gt;Real-World CI/CD Architectures&lt;/h2&gt;
&lt;h3&gt;Microservices&lt;/h3&gt;
&lt;p&gt;Each service has its own independent pipelin...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/07-patterns-decisions/04-real-world-decisions/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/07-patterns-decisions/04-real-world-decisions/</guid></item><item><title>Databases — Types, Differences &amp;amp; Selection Guide</title><category>databases</category><description>&lt;h1&gt;Databases — Types, Differences &amp;amp; Selection Guide&lt;/h1&gt;
&lt;h2&gt;Database Categories at a Glance&lt;/h2&gt;
&lt;p&gt;| Category | Data Model | Query Language | Examples |
|----------|---...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/databases/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/databases/</guid></item><item><title>PostgreSQL — Overview</title><category>databases</category><category>postgresql</category><category>sql</category><description>&lt;h1&gt;PostgreSQL — Overview&lt;/h1&gt;
&lt;h2&gt;What Is PostgreSQL&lt;/h2&gt;
&lt;p&gt;PostgreSQL is an open-source &lt;strong&gt;object-relational database&lt;/strong&gt; focused on reliability and flexibility. In practi...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/databases/postgresql/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 01 Sep 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/databases/postgresql/</guid></item><item><title>Testing in Production</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Testing in Production&lt;/h1&gt;
&lt;h2&gt;Why Test in Production&lt;/h2&gt;
&lt;p&gt;Staging is not production. No matter how well staging mirrors production,
the real environment has real d...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/06-release-production/03-testing-in-production/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 31 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/06-release-production/03-testing-in-production/</guid></item><item><title>Advanced CI/CD Patterns</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Advanced CI/CD Patterns&lt;/h1&gt;
&lt;h2&gt;GitOps&lt;/h2&gt;
&lt;p&gt;Git is the &lt;strong&gt;single source of truth&lt;/strong&gt; for both application code and infrastructure state.
Every change to production is...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/07-patterns-decisions/01-advanced-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 31 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/07-patterns-decisions/01-advanced-patterns/</guid></item><item><title>Failure Handling in CI/CD</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Failure Handling in CI/CD&lt;/h1&gt;
&lt;h2&gt;Pipeline Failure Categories&lt;/h2&gt;
&lt;p&gt;| Category | Example | Response |
|----------|---------|---------|
| Transient failure | Flaky t...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/07-patterns-decisions/02-failure-handling/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 31 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/07-patterns-decisions/02-failure-handling/</guid></item><item><title>Patterns Decisions</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Patterns Decisions&lt;/h1&gt;
&lt;p&gt;Patterns Decisions covers pipeline architecture, testing gates, deployment, and release controls, with focused guides on Advanced Patte...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/07-patterns-decisions/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 31 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/07-patterns-decisions/</guid></item><item><title>Pipeline Performance &amp; Optimisation</title><category>ci-cd</category><category>devops</category><category>observability</category><category>security</category><description>&lt;h1&gt;Pipeline Performance &amp;amp; Optimisation&lt;/h1&gt;
&lt;h2&gt;Why Pipeline Speed Matters&lt;/h2&gt;
&lt;p&gt;A 30-minute pipeline discourages small commits. Developers batch changes to avoid waiti...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/05-security-observability/03-pipeline-performance/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 30 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/05-security-observability/03-pipeline-performance/</guid></item><item><title>Release Management</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Release Management&lt;/h1&gt;
&lt;h2&gt;Semantic Versioning&lt;/h2&gt;
&lt;p&gt;The standard versioning scheme for software releases.&lt;/p&gt;
&lt;p&gt;```
MAJOR.MINOR.PATCH&lt;/p&gt;
&lt;p&gt;2.1.3
│ │ └── 3: Backwards-compat...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/06-release-production/01-release-management/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 30 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/06-release-production/01-release-management/</guid></item><item><title>Rollback Strategies</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Rollback Strategies&lt;/h1&gt;
&lt;h2&gt;Why Rollback Must Be Instant&lt;/h2&gt;
&lt;p&gt;Every deployment can fail. The question is how quickly you recover.
A rollback plan designed in advan...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/06-release-production/02-rollback-strategies/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 30 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/06-release-production/02-rollback-strategies/</guid></item><item><title>Release Production</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Release Production&lt;/h1&gt;
&lt;p&gt;Release Production covers pipeline architecture, testing gates, deployment, and release controls, with focused guides on Release Manage...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/06-release-production/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 30 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/06-release-production/</guid></item><item><title>Environment Management</title><category>ci-cd</category><category>deployment</category><category>devops</category><description>&lt;h1&gt;Environment Management&lt;/h1&gt;
&lt;h2&gt;Environment Model&lt;/h2&gt;
&lt;p&gt;Most systems use three tiers. The artifact is promoted unchanged between them.&lt;/p&gt;
&lt;p&gt;```
Developer → [Dev] → [Stag...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/04-deployment/03-environment-management/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 29 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/04-deployment/03-environment-management/</guid></item><item><title>Security in CI/CD</title><category>ci-cd</category><category>devops</category><category>observability</category><category>security</category><description>&lt;h1&gt;Security in CI/CD&lt;/h1&gt;
&lt;h2&gt;Security Belongs in the Pipeline&lt;/h2&gt;
&lt;p&gt;Security checks that run only at the end are too late.
Shift left: catch vulnerabilities at the PR ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/05-security-observability/01-security/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 29 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/05-security-observability/01-security/</guid></item><item><title>Pipeline Observability</title><category>ci-cd</category><category>devops</category><category>observability</category><category>security</category><description>&lt;h1&gt;Pipeline Observability&lt;/h1&gt;
&lt;h2&gt;What to Observe&lt;/h2&gt;
&lt;p&gt;Running a pipeline without observability is flying blind.
Two dimensions matter: &lt;strong&gt;pipeline health&lt;/strong&gt; and **depl...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/05-security-observability/02-observability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 29 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/05-security-observability/02-observability/</guid></item><item><title>Security Observability</title><category>ci-cd</category><category>devops</category><category>observability</category><category>security</category><description>&lt;h1&gt;Security Observability&lt;/h1&gt;
&lt;p&gt;Security Observability covers pipeline architecture, testing gates, deployment, and release controls, with focused guides on Securi...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/05-security-observability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 29 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/05-security-observability/</guid></item><item><title>Quality Gates</title><category>ci-cd</category><category>devops</category><category>testing</category><description>&lt;h1&gt;Quality Gates&lt;/h1&gt;
&lt;h2&gt;What Is a Quality Gate&lt;/h2&gt;
&lt;p&gt;A quality gate is an automated threshold that blocks pipeline progression when not met.
Not a warning. A hard sto...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/03-testing/02-quality-gates/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/03-testing/02-quality-gates/</guid></item><item><title>Deployment Strategies</title><category>ci-cd</category><category>deployment</category><category>devops</category><description>&lt;h1&gt;Deployment Strategies&lt;/h1&gt;
&lt;h2&gt;Recreate (Big Bang)&lt;/h2&gt;
&lt;p&gt;Stop everything. Deploy new version. Start everything.&lt;/p&gt;
&lt;p&gt;```
v1 running
    ↓ stop all
    ↓ deploy v2
    ↓ ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/04-deployment/01-deployment-strategies/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/04-deployment/01-deployment-strategies/</guid></item><item><title>Infrastructure &amp; Infrastructure as Code</title><category>ci-cd</category><category>deployment</category><category>devops</category><description>&lt;h1&gt;Infrastructure &amp;amp; Infrastructure as Code&lt;/h1&gt;
&lt;h2&gt;Containers — Docker&lt;/h2&gt;
&lt;p&gt;Docker packages an application and all its dependencies into an immutable image.
The same ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/04-deployment/02-infrastructure-iac/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/04-deployment/02-infrastructure-iac/</guid></item><item><title>Deployment</title><category>ci-cd</category><category>deployment</category><category>devops</category><description>&lt;h1&gt;Deployment&lt;/h1&gt;
&lt;p&gt;Deployment covers pipeline architecture, testing gates, deployment, and release controls, with focused guides on Deployment Strategies, Infrast...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/04-deployment/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/04-deployment/</guid></item><item><title>Build Stage</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Build Stage&lt;/h1&gt;
&lt;h2&gt;What the Build Stage Does&lt;/h2&gt;
&lt;p&gt;The build stage transforms source code into a deployable artifact.
It must be &lt;strong&gt;fast&lt;/strong&gt;, &lt;strong&gt;deterministic&lt;/strong&gt;, and *...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/02-build-artifacts/01-build-stage/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/02-build-artifacts/01-build-stage/</guid></item><item><title>Artifact Management</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Artifact Management&lt;/h1&gt;
&lt;h2&gt;What Is an Artifact&lt;/h2&gt;
&lt;p&gt;An artifact is the &lt;strong&gt;immutable output&lt;/strong&gt; of a build stage that is promoted through environments.&lt;/p&gt;
&lt;p&gt;```
Build onc...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/02-build-artifacts/02-artifact-management/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/02-build-artifacts/02-artifact-management/</guid></item><item><title>Testing in CI/CD — Layers &amp; Strategy</title><category>ci-cd</category><category>devops</category><category>testing</category><description>&lt;h1&gt;Testing in CI/CD — Layers &amp;amp; Strategy&lt;/h1&gt;
&lt;h2&gt;Test Layers in the Pipeline&lt;/h2&gt;
&lt;p&gt;Each test layer has different speed, coverage, and placement in the pipeline.&lt;/p&gt;
&lt;p&gt;```
┌─...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/03-testing/01-test-layers-strategy/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/03-testing/01-test-layers-strategy/</guid></item><item><title>Testing</title><category>ci-cd</category><category>devops</category><category>testing</category><description>&lt;h1&gt;Testing&lt;/h1&gt;
&lt;p&gt;Testing covers pipeline architecture, testing gates, deployment, and release controls, with focused guides on Test Layers Strategy, Quality Gates....&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/03-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 27 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/03-testing/</guid></item><item><title>CI/CD — Concepts &amp; Goals</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;CI/CD — Concepts &amp;amp; Goals&lt;/h1&gt;
&lt;h2&gt;Continuous Integration (CI)&lt;/h2&gt;
&lt;p&gt;Developers integrate code into a shared repository &lt;strong&gt;frequently&lt;/strong&gt; — multiple times per day.
Each ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/01-fundamentals/01-concepts-goals/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 26 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/01-fundamentals/01-concepts-goals/</guid></item><item><title>Pipeline Architecture</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Pipeline Architecture&lt;/h1&gt;
&lt;h2&gt;Pipeline Stages&lt;/h2&gt;
&lt;p&gt;A pipeline is a sequence of automated stages. Each stage must pass for the next to run.&lt;/p&gt;
&lt;p&gt;```
Source → Build → Te...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/01-fundamentals/02-pipeline-architecture/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 26 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/01-fundamentals/02-pipeline-architecture/</guid></item><item><title>Fundamentals</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Fundamentals&lt;/h1&gt;
&lt;p&gt;Fundamentals covers pipeline architecture, testing gates, deployment, and release controls, with focused guides on Concepts Goals, Pipeline A...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/01-fundamentals/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 26 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/01-fundamentals/</guid></item><item><title>Build Artifacts</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;Build Artifacts&lt;/h1&gt;
&lt;p&gt;Build Artifacts covers pipeline architecture, testing gates, deployment, and release controls, with focused guides on Build Stage, Artifac...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/02-build-artifacts/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 26 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/02-build-artifacts/</guid></item><item><title>CI/CD</title><category>ci-cd</category><category>devops</category><description>&lt;h1&gt;CI/CD&lt;/h1&gt;
&lt;p&gt;Complete technical reference for Continuous Integration, Continuous Delivery, and Continuous Deployment.&lt;/p&gt;
&lt;h2&gt;Sections&lt;/h2&gt;
&lt;h3&gt;1. [Fundamentals](01-fund...&lt;/h3&gt;</description><link>https://serhiismetanskyi.com/docs/ci-cd-approaches/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ci-cd-approaches/</guid></item><item><title>Shared Libraries</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;Shared Libraries&lt;/h1&gt;
&lt;p&gt;Reuse pipeline code across multiple projects with Jenkins Shared Libraries.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Why Shared Libraries?&lt;/h2&gt;
&lt;p&gt;When 3+ projects have similar...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/03-advanced-features/03-shared-libraries/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/03-advanced-features/03-shared-libraries/</guid></item><item><title>Security &amp; Performance</title><category>ci-cd</category><category>jenkins</category><category>security</category><description>&lt;h1&gt;Security &amp;amp; Performance&lt;/h1&gt;
&lt;p&gt;How to keep pipelines secure and fast.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Security&lt;/h2&gt;
&lt;h3&gt;Credential Management&lt;/h3&gt;
&lt;p&gt;```groovy
// GOOD: Use Jenkins credentials
env...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/04-patterns-best-practices/01-security-performance/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/04-patterns-best-practices/01-security-performance/</guid></item><item><title>Real-World Templates</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;Real-World Templates&lt;/h1&gt;
&lt;p&gt;Complete Jenkinsfile examples you can copy and adapt for your projects.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Python Project Pipeline&lt;/h2&gt;
&lt;p&gt;```groovy
pipeline {
    ag...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/04-patterns-best-practices/02-real-world-templates/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/04-patterns-best-practices/02-real-world-templates/</guid></item><item><title>Patterns &amp;amp; Best Practices</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;Patterns &amp;amp; Best Practices&lt;/h1&gt;
&lt;p&gt;Real-world patterns, security guidelines, performance tips, and complete pipeline templates.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Topics&lt;/h2&gt;
&lt;p&gt;| Page | What You ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/04-patterns-best-practices/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/04-patterns-best-practices/</guid></item><item><title>Post, Triggers &amp; Tools</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;Post, Triggers &amp;amp; Tools&lt;/h1&gt;
&lt;p&gt;Actions after pipeline finishes, automatic triggers, and tool configuration.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Post Block&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;post&lt;/code&gt; block runs after stage...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/02-declarative-syntax/03-post-triggers-tools/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 24 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/02-declarative-syntax/03-post-triggers-tools/</guid></item><item><title>Parameters &amp; Environment</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;Parameters &amp;amp; Environment&lt;/h1&gt;
&lt;p&gt;Make your pipelines configurable with parameters, environment variables, and credentials.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Parameters&lt;/h2&gt;
&lt;p&gt;Parameters let use...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/03-advanced-features/01-parameters-environment/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 24 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/03-advanced-features/01-parameters-environment/</guid></item><item><title>When Conditions &amp; Parallel</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;When Conditions &amp;amp; Parallel Stages&lt;/h1&gt;
&lt;p&gt;Control which stages run and execute independent stages at the same time.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;When Conditions&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;when&lt;/code&gt; block dec...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/03-advanced-features/02-when-parallel/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 24 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/03-advanced-features/02-when-parallel/</guid></item><item><title>Advanced Features</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;Advanced Features&lt;/h1&gt;
&lt;p&gt;This section covers features that make pipelines flexible and powerful: parameters, credentials, conditions, parallel execution, and sha...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/03-advanced-features/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 24 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/03-advanced-features/</guid></item><item><title>Declarative vs Scripted</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;Declarative vs Scripted&lt;/h1&gt;
&lt;p&gt;Jenkins has two pipeline syntaxes. This page explains both and helps you choose.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Quick Comparison&lt;/h2&gt;
&lt;p&gt;| Feature | Declarativ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/01-fundamentals/02-declarative-vs-scripted/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 23 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/01-fundamentals/02-declarative-vs-scripted/</guid></item><item><title>Pipeline, Agent &amp; Options</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;Pipeline, Agent &amp;amp; Options&lt;/h1&gt;
&lt;p&gt;The three blocks that set up your pipeline: where it runs and how it behaves.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;The &lt;code&gt;pipeline&lt;/code&gt; Block&lt;/h2&gt;
&lt;p&gt;Every declarative J...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/02-declarative-syntax/01-pipeline-agent-options/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 23 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/02-declarative-syntax/01-pipeline-agent-options/</guid></item><item><title>Stages &amp; Steps</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;Stages &amp;amp; Steps&lt;/h1&gt;
&lt;p&gt;Stages define &lt;strong&gt;what&lt;/strong&gt; your pipeline does. Steps define &lt;strong&gt;how&lt;/strong&gt; each stage does it.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Stages Block&lt;/h2&gt;
&lt;p&gt;All stages live inside a single ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/02-declarative-syntax/02-stages-steps/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 23 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/02-declarative-syntax/02-stages-steps/</guid></item><item><title>Declarative Syntax</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;Declarative Syntax&lt;/h1&gt;
&lt;p&gt;This section covers every block available in a declarative Jenkinsfile. Each page explains one concept with practical examples.&lt;/p&gt;
&lt;hr /&gt;
&lt;h1&gt;...&lt;/h1&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/02-declarative-syntax/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 23 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/02-declarative-syntax/</guid></item><item><title>What Is a Jenkinsfile</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;What Is a Jenkinsfile&lt;/h1&gt;
&lt;p&gt;A Jenkinsfile is a text file that defines your CI/CD pipeline. It lives in your repository and Jenkins reads it automatically.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/01-fundamentals/01-what-is-jenkinsfile/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/01-fundamentals/01-what-is-jenkinsfile/</guid></item><item><title>Fundamentals</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;Fundamentals&lt;/h1&gt;
&lt;p&gt;This section explains what Jenkins Pipeline is, why we use Jenkinsfiles, and the difference between declarative and scripted syntax.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/01-fundamentals/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/01-fundamentals/</guid></item><item><title>Jenkins Pipeline Guide</title><category>ci-cd</category><category>jenkins</category><description>&lt;h1&gt;Jenkins Pipeline Guide&lt;/h1&gt;
&lt;p&gt;A practical guide to writing Jenkinsfiles — from basic syntax to production-ready pipelines.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What You Will Learn&lt;/h2&gt;
&lt;p&gt;| Sectio...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/jenkins-guide/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/jenkins-guide/</guid></item><item><title>Further Learning</title><category>python</category><description>&lt;h1&gt;Further Learning&lt;/h1&gt;
&lt;p&gt;This page gives you a clear path to keep learning after this guide.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Official Sources&lt;/h2&gt;
&lt;p&gt;Start with official documentation first:&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/07-best-practices/05-further-learning/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/07-best-practices/05-further-learning/</guid></item><item><title>Security</title><category>python</category><category>security</category><description>&lt;h1&gt;Security&lt;/h1&gt;
&lt;p&gt;Security in Python means protecting secrets, validating input, and following safe coding practices.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Never Store Secrets in Code&lt;/h2&gt;
&lt;p&gt;Secrets...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/07-best-practices/01-security/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/07-best-practices/01-security/</guid></item><item><title>Common Pitfalls</title><category>python</category><description>&lt;h1&gt;Common Pitfalls&lt;/h1&gt;
&lt;p&gt;These are mistakes that even experienced Python developers make. Know them to avoid them.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;1. Mutable Default Arguments&lt;/h2&gt;
&lt;p&gt;```python...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/07-best-practices/02-common-pitfalls/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/07-best-practices/02-common-pitfalls/</guid></item><item><title>Interview Readiness</title><category>python</category><description>&lt;h1&gt;Interview Readiness&lt;/h1&gt;
&lt;p&gt;Prepare for Python Automation QA interviews with these topics, questions, and tasks.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Core Python Questions&lt;/h2&gt;
&lt;h3&gt;Data Types &amp;amp; ...&lt;/h3&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/07-best-practices/03-interview-readiness/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/07-best-practices/03-interview-readiness/</guid></item><item><title>Recommended Stack</title><category>python</category><description>&lt;h1&gt;Recommended Stack&lt;/h1&gt;
&lt;p&gt;A modern Python stack for Automation QA Engineers in 2026.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Core&lt;/h2&gt;
&lt;p&gt;| Tool | Purpose | Install |
|------|---------|---------|
| **...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/07-best-practices/04-recommended-stack/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/07-best-practices/04-recommended-stack/</guid></item><item><title>Decorators &amp; Generators</title><category>python</category><description>&lt;h1&gt;Decorators &amp;amp; Generators&lt;/h1&gt;
&lt;p&gt;Decorators and generators are powerful Python features used often in test automation.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Decorators&lt;/h2&gt;
&lt;p&gt;A decorator is a functi...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/06-advanced-topics/01-decorators-generators/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/06-advanced-topics/01-decorators-generators/</guid></item><item><title>Context Managers &amp; Async</title><category>context-engineering</category><category>python</category><description>&lt;h1&gt;Context Managers &amp;amp; Async&lt;/h1&gt;
&lt;p&gt;Context managers handle setup and cleanup. Async programming speeds up I/O-bound tasks.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Context Managers&lt;/h2&gt;
&lt;p&gt;A context mana...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/06-advanced-topics/02-context-managers-async/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/06-advanced-topics/02-context-managers-async/</guid></item><item><title>Performance &amp; Optimization</title><category>python</category><description>&lt;h1&gt;Performance &amp;amp; Optimization&lt;/h1&gt;
&lt;p&gt;Write fast code by choosing the right tools and avoiding common mistakes.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Measure First&lt;/h2&gt;
&lt;p&gt;!!! warning &quot;Do not guess — m...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/06-advanced-topics/03-performance/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/06-advanced-topics/03-performance/</guid></item><item><title>Best Practices</title><category>python</category><description>&lt;h1&gt;Best Practices&lt;/h1&gt;
&lt;p&gt;This section covers security, common mistakes, interview tips, and the recommended tool stack.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Topics&lt;/h2&gt;
&lt;p&gt;| Page | What You Will Lear...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/07-best-practices/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/07-best-practices/</guid></item><item><title>Code Quality Tools</title><category>ci-cd</category><category>code-quality</category><category>python</category><description>&lt;h1&gt;Code Quality Tools&lt;/h1&gt;
&lt;p&gt;Code quality tools catch bugs, enforce style, and keep your codebase consistent.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;PEP 8 — Python Style Guide&lt;/h2&gt;
&lt;p&gt;PEP 8 is the offi...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/05-quality-cicd/01-code-quality-tools/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/05-quality-cicd/01-code-quality-tools/</guid></item><item><title>Dependency Management</title><category>ci-cd</category><category>code-quality</category><category>python</category><description>&lt;h1&gt;Dependency Management&lt;/h1&gt;
&lt;p&gt;Managing dependencies correctly makes your project reproducible and safe.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Virtual Environments&lt;/h2&gt;
&lt;p&gt;A virtual environment is an...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/05-quality-cicd/02-dependency-management/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/05-quality-cicd/02-dependency-management/</guid></item><item><title>CI/CD Integration</title><category>ci-cd</category><category>code-quality</category><category>python</category><description>&lt;h1&gt;CI/CD Integration&lt;/h1&gt;
&lt;p&gt;CI/CD runs your tests and checks automatically on every code change.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What Is CI/CD?&lt;/h2&gt;
&lt;p&gt;| Term | Meaning |
|------|---------|
| **...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/05-quality-cicd/03-cicd-integration/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/05-quality-cicd/03-cicd-integration/</guid></item><item><title>Advanced Topics</title><category>python</category><description>&lt;h1&gt;Advanced Topics&lt;/h1&gt;
&lt;p&gt;This section covers powerful Python features that make your code more elegant and efficient.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Topics&lt;/h2&gt;
&lt;p&gt;| Page | What You Will Learn...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/06-advanced-topics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 19 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/06-advanced-topics/</guid></item><item><title>API Testing</title><category>python</category><category>test-automation</category><description>&lt;h1&gt;API Testing&lt;/h1&gt;
&lt;p&gt;API testing checks that your backend works correctly. You send HTTP requests and verify the responses.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;HTTP Basics&lt;/h2&gt;
&lt;p&gt;| Method | Purpos...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/04-automation/01-api-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 18 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/04-automation/01-api-testing/</guid></item><item><title>UI Automation</title><category>python</category><category>test-automation</category><description>&lt;h1&gt;UI Automation&lt;/h1&gt;
&lt;p&gt;UI automation tests your application through a real browser, like a real user would.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Tool Comparison&lt;/h2&gt;
&lt;p&gt;| Feature | Playwright | Sele...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/04-automation/02-ui-automation/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 18 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/04-automation/02-ui-automation/</guid></item><item><title>Test Design Patterns</title><category>python</category><category>test-automation</category><description>&lt;h1&gt;Test Design Patterns&lt;/h1&gt;
&lt;p&gt;Design patterns keep your test code organized, reusable, and easy to maintain.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Page Object Model (POM)&lt;/h2&gt;
&lt;p&gt;The most important p...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/04-automation/03-test-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 18 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/04-automation/03-test-patterns/</guid></item><item><title>Code Quality &amp;amp; CI/CD</title><category>ci-cd</category><category>code-quality</category><category>python</category><description>&lt;h1&gt;Code Quality &amp;amp; CI/CD&lt;/h1&gt;
&lt;p&gt;This section covers tools that keep your code clean and pipelines that run your tests automatically.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Topics&lt;/h2&gt;
&lt;p&gt;| Page | What Y...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/05-quality-cicd/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 18 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/05-quality-cicd/</guid></item><item><title>Fixtures &amp; Parametrize</title><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Fixtures &amp;amp; Parametrize&lt;/h1&gt;
&lt;p&gt;Fixtures provide test data and setup. Parametrize runs the same test with different inputs.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Fixtures&lt;/h2&gt;
&lt;p&gt;A fixture is a funct...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/03-testing-pytest/03-fixtures-parametrize/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/03-testing-pytest/03-fixtures-parametrize/</guid></item><item><title>Test Architecture</title><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Test Architecture&lt;/h1&gt;
&lt;p&gt;Good test architecture keeps your test code organized, maintainable, and scalable.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Project Structure&lt;/h2&gt;
&lt;p&gt;```
project/
├── src/
│  ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/03-testing-pytest/04-test-architecture/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/03-testing-pytest/04-test-architecture/</guid></item><item><title>Assertions &amp; Mocking</title><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Assertions &amp;amp; Mocking&lt;/h1&gt;
&lt;p&gt;Custom assertions make tests more readable. Mocking isolates code from external dependencies.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Built-in Assertions&lt;/h2&gt;
&lt;p&gt;pytest re...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/03-testing-pytest/05-assertions-mocking/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/03-testing-pytest/05-assertions-mocking/</guid></item><item><title>Automation</title><category>python</category><category>test-automation</category><description>&lt;h1&gt;Automation&lt;/h1&gt;
&lt;p&gt;This section covers practical test automation — API testing, UI automation, and design patterns.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Topics&lt;/h2&gt;
&lt;p&gt;| Page | What You Will Learn ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/04-automation/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 17 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/04-automation/</guid></item><item><title>Files &amp; Data Formats</title><category>python</category><description>&lt;h1&gt;Files &amp;amp; Data Formats&lt;/h1&gt;
&lt;p&gt;Python makes it easy to read and write files. This page covers text files, JSON, and CSV.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Reading and Writing Text Files&lt;/h2&gt;
&lt;h2&gt;...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/02-oop-error-handling/04-files-data-formats/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 16 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/02-oop-error-handling/04-files-data-formats/</guid></item><item><title>Testing Fundamentals</title><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Testing Fundamentals&lt;/h1&gt;
&lt;p&gt;Before writing tests, you need to understand the different types and levels of testing.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Why We Test&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Find bugs &lt;strong&gt;early&lt;/strong&gt; (...&lt;/li&gt;
&lt;/ul&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/03-testing-pytest/01-testing-fundamentals/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 16 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/03-testing-pytest/01-testing-fundamentals/</guid></item><item><title>pytest Basics</title><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;pytest Basics&lt;/h1&gt;
&lt;p&gt;&lt;code&gt;pytest&lt;/code&gt; is the most popular testing framework in Python. It is simple, powerful, and has a large plugin ecosystem.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Install pytest&lt;/h2&gt;
&lt;p&gt;...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/03-testing-pytest/02-pytest-basics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 16 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/03-testing-pytest/02-pytest-basics/</guid></item><item><title>Testing with pytest</title><category>pytest</category><category>python</category><category>testing</category><description>&lt;h1&gt;Testing with pytest&lt;/h1&gt;
&lt;p&gt;This section covers testing fundamentals and the &lt;code&gt;pytest&lt;/code&gt; framework — the standard testing tool in Python.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Topics&lt;/h2&gt;
&lt;p&gt;| Page | W...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/03-testing-pytest/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 16 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/03-testing-pytest/</guid></item><item><title>Classes &amp; Objects</title><category>python</category><description>&lt;h1&gt;Classes &amp;amp; Objects&lt;/h1&gt;
&lt;p&gt;A class is a blueprint for creating objects. Objects have data (attributes) and behavior (methods).&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Creating a Class&lt;/h2&gt;
&lt;p&gt;```python...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/02-oop-error-handling/01-classes-objects/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 15 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/02-oop-error-handling/01-classes-objects/</guid></item><item><title>Inheritance &amp; Composition</title><category>python</category><description>&lt;h1&gt;Inheritance &amp;amp; Composition&lt;/h1&gt;
&lt;p&gt;Inheritance and composition are two ways to reuse code. Each has its place.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Inheritance&lt;/h2&gt;
&lt;p&gt;A child class gets all attribu...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/02-oop-error-handling/02-inheritance-composition/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 15 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/02-oop-error-handling/02-inheritance-composition/</guid></item><item><title>Exceptions &amp; Logging</title><category>python</category><description>&lt;h1&gt;Exceptions &amp;amp; Logging&lt;/h1&gt;
&lt;p&gt;Good error handling makes your code reliable. Good logging makes debugging easy.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Exception Handling Basics&lt;/h2&gt;
&lt;p&gt;```python
try:
 ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/02-oop-error-handling/03-exceptions-logging/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 15 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/02-oop-error-handling/03-exceptions-logging/</guid></item><item><title>OOP &amp;amp; Error Handling</title><category>python</category><description>&lt;h1&gt;OOP &amp;amp; Error Handling&lt;/h1&gt;
&lt;p&gt;This section covers object-oriented programming, exception handling, logging, and working with files.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Topics&lt;/h2&gt;
&lt;p&gt;| Page | What ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/02-oop-error-handling/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 15 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/02-oop-error-handling/</guid></item><item><title>Environment Setup</title><category>python</category><description>&lt;h1&gt;Environment Setup&lt;/h1&gt;
&lt;p&gt;This page explains how to set up a Python project using &lt;code&gt;uv&lt;/code&gt; — a modern, fast package manager.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What Is uv?&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;uv&lt;/code&gt; is a Python pa...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/01-setup-fundamentals/01-environment-setup/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/01-setup-fundamentals/01-environment-setup/</guid></item><item><title>Data Types &amp; Variables</title><category>python</category><description>&lt;h1&gt;Data Types &amp;amp; Variables&lt;/h1&gt;
&lt;p&gt;Python has simple and powerful data types. This page covers the basics you use every day.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Basic Data Types&lt;/h2&gt;
&lt;p&gt;| Type | Examp...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/01-setup-fundamentals/02-data-types-variables/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/01-setup-fundamentals/02-data-types-variables/</guid></item><item><title>Control Flow &amp; Loops</title><category>python</category><description>&lt;h1&gt;Control Flow &amp;amp; Loops&lt;/h1&gt;
&lt;p&gt;Control flow lets you make decisions in your code. Loops let you repeat actions.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Conditional Statements&lt;/h2&gt;
&lt;h3&gt;Basic if/elif/e...&lt;/h3&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/01-setup-fundamentals/03-control-flow-loops/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/01-setup-fundamentals/03-control-flow-loops/</guid></item><item><title>Data Structures</title><category>python</category><description>&lt;h1&gt;Data Structures&lt;/h1&gt;
&lt;p&gt;Python has four main built-in data structures. Each one is good for different tasks.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;| Structure | Ordered | Mutable | ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/01-setup-fundamentals/04-data-structures/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/01-setup-fundamentals/04-data-structures/</guid></item><item><title>Functions &amp; Modules</title><category>python</category><description>&lt;h1&gt;Functions &amp;amp; Modules&lt;/h1&gt;
&lt;p&gt;Functions help you organize code into reusable pieces. Modules help you split code across files.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Defining Functions&lt;/h2&gt;
&lt;p&gt;```pytho...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/01-setup-fundamentals/05-functions-modules/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 14 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/01-setup-fundamentals/05-functions-modules/</guid></item><item><title>Interpreting Results</title><category>load-testing</category><category>performance</category><description>&lt;h1&gt;Interpreting Results&lt;/h1&gt;
&lt;h2&gt;Healthy System&lt;/h2&gt;
&lt;p&gt;A system behaving correctly under load shows:&lt;/p&gt;
&lt;p&gt;| Signal | What It Looks Like |
|--------|-------------------|
| St...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/04-execution-results/03-interpreting-results/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/04-execution-results/03-interpreting-results/</guid></item><item><title>Pitfalls, Real-World Scenarios &amp; Heuristics</title><category>load-testing</category><category>performance</category><description>&lt;h1&gt;Pitfalls, Real-World Scenarios &amp;amp; Heuristics&lt;/h1&gt;
&lt;h2&gt;Common Pitfalls&lt;/h2&gt;
&lt;h3&gt;Ignoring Percentiles&lt;/h3&gt;
&lt;p&gt;Using average response time as the success metric. Average hides...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/04-execution-results/04-pitfalls-heuristics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/04-execution-results/04-pitfalls-heuristics/</guid></item><item><title>Setup &amp;amp; Fundamentals</title><category>python</category><description>&lt;h1&gt;Setup &amp;amp; Fundamentals&lt;/h1&gt;
&lt;p&gt;This section covers everything you need to start writing Python code.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Topics&lt;/h2&gt;
&lt;p&gt;| Page | What You Will Learn |
|------|-------...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/01-setup-fundamentals/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/01-setup-fundamentals/</guid></item><item><title>Python Guide for Automation QA</title><category>python</category><description>&lt;h1&gt;Python Guide for Automation QA&lt;/h1&gt;
&lt;p&gt;A complete, practical Python guide for Automation QA Engineers (Middle level).&lt;/p&gt;
&lt;p&gt;This guide covers Python from environment s...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/python-guide/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/python-guide/</guid></item><item><title>Monitoring &amp; Observability</title><category>load-testing</category><category>observability</category><category>performance</category><description>&lt;h1&gt;Monitoring &amp;amp; Observability&lt;/h1&gt;
&lt;h2&gt;Why It Matters&lt;/h2&gt;
&lt;p&gt;Locust tells you what users experience. System metrics tell you &lt;strong&gt;why&lt;/strong&gt;.
Running a load test without monitor...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/03-bottlenecks-monitoring/02-monitoring-observability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/03-bottlenecks-monitoring/02-monitoring-observability/</guid></item><item><title>SLA / SLO</title><category>load-testing</category><category>performance</category><description>&lt;h1&gt;SLA / SLO&lt;/h1&gt;
&lt;h2&gt;Definitions&lt;/h2&gt;
&lt;h3&gt;SLA — Service Level Agreement&lt;/h3&gt;
&lt;p&gt;An &lt;strong&gt;external contract&lt;/strong&gt; with customers or partners.
Defines the minimum acceptable performan...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/04-execution-results/01-sla-slo/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/04-execution-results/01-sla-slo/</guid></item><item><title>Test Execution Strategy</title><category>load-testing</category><category>performance</category><description>&lt;h1&gt;Test Execution Strategy&lt;/h1&gt;
&lt;h2&gt;Pre-Test Preparation&lt;/h2&gt;
&lt;p&gt;Running a test against a cold system produces misleading results.
The first requests hit empty caches, tr...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/04-execution-results/02-execution-strategy/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/04-execution-results/02-execution-strategy/</guid></item><item><title>Execution Results</title><category>load-testing</category><category>performance</category><description>&lt;h1&gt;Execution Results&lt;/h1&gt;
&lt;p&gt;Execution Results covers workload modeling, performance metrics, bottleneck analysis, and SLO validation, with focused guides on SLA SLO...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/04-execution-results/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 12 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/04-execution-results/</guid></item><item><title>Metrics Analysis in Locust</title><category>load-testing</category><category>locust</category><category>metrics</category><category>performance</category><description>&lt;h1&gt;Metrics Analysis in Locust&lt;/h1&gt;
&lt;h2&gt;Built-in Metrics&lt;/h2&gt;
&lt;p&gt;Locust tracks and reports the following out of the box:&lt;/p&gt;
&lt;p&gt;| Metric | Description |
|--------|-------------|...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/02-locust/04-metrics-analysis/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/02-locust/04-metrics-analysis/</guid></item><item><title>Advanced Locust Usage</title><category>load-testing</category><category>locust</category><category>performance</category><description>&lt;h1&gt;Advanced Locust Usage&lt;/h1&gt;
&lt;h2&gt;Distributed Testing&lt;/h2&gt;
&lt;p&gt;A single machine can typically simulate 500–5000 users (depends on wait time and request speed).
For larger ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/02-locust/05-advanced-usage/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/02-locust/05-advanced-usage/</guid></item><item><title>Performance Bottlenecks</title><category>load-testing</category><category>observability</category><category>performance</category><description>&lt;h1&gt;Performance Bottlenecks&lt;/h1&gt;
&lt;p&gt;A bottleneck is the &lt;strong&gt;constraint that limits overall throughput&lt;/strong&gt;.
Fixing anything else first is wasted effort. Find the bottlenec...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/03-bottlenecks-monitoring/01-bottlenecks/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/03-bottlenecks-monitoring/01-bottlenecks/</guid></item><item><title>Bottlenecks Monitoring</title><category>load-testing</category><category>observability</category><category>performance</category><description>&lt;h1&gt;Bottlenecks Monitoring&lt;/h1&gt;
&lt;p&gt;Bottlenecks Monitoring covers workload modeling, performance metrics, bottleneck analysis, and SLO validation, with focused guides ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/03-bottlenecks-monitoring/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/03-bottlenecks-monitoring/</guid></item><item><title>Locust — Architecture &amp; Basics</title><category>load-testing</category><category>locust</category><category>performance</category><description>&lt;h1&gt;Locust — Architecture &amp;amp; Basics&lt;/h1&gt;
&lt;h2&gt;What Locust Is&lt;/h2&gt;
&lt;p&gt;Locust is an open-source load testing tool where test scenarios are written in &lt;strong&gt;plain Python&lt;/strong&gt;.
No DSLs...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/02-locust/01-architecture-basics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/02-locust/01-architecture-basics/</guid></item><item><title>Load Modeling</title><category>load-testing</category><category>locust</category><category>performance</category><description>&lt;h1&gt;Load Modeling&lt;/h1&gt;
&lt;h2&gt;User Behavior Modeling&lt;/h2&gt;
&lt;p&gt;A load test that only hammers a single endpoint is not realistic.
Real users follow &lt;strong&gt;flows&lt;/strong&gt;: they log in, brows...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/02-locust/02-load-modeling/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/02-locust/02-load-modeling/</guid></item><item><title>Test Design in Locust</title><category>load-testing</category><category>locust</category><category>performance</category><description>&lt;h1&gt;Test Design in Locust&lt;/h1&gt;
&lt;h2&gt;Scenario Design&lt;/h2&gt;
&lt;p&gt;Design tests around &lt;strong&gt;business flows&lt;/strong&gt;, not individual endpoints.&lt;/p&gt;
&lt;p&gt;| Approach | Problem |
|----------|---------|...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/02-locust/03-test-design/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/02-locust/03-test-design/</guid></item><item><title>Locust</title><category>load-testing</category><category>locust</category><category>performance</category><description>&lt;h1&gt;Locust&lt;/h1&gt;
&lt;p&gt;Locust covers workload modeling, performance metrics, bottleneck analysis, and SLO validation, with focused guides on Architecture Basics, Load Mod...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/02-locust/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/02-locust/</guid></item><item><title>Performance Testing — Goals &amp; Types</title><category>load-testing</category><category>metrics</category><category>performance</category><description>&lt;h1&gt;Performance Testing — Goals &amp;amp; Types&lt;/h1&gt;
&lt;h2&gt;Why We Do It&lt;/h2&gt;
&lt;p&gt;Performance testing is not about proving the system is fast.
It is about understanding **how the syst...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/01-fundamentals-metrics/01-goals-and-types/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/01-fundamentals-metrics/01-goals-and-types/</guid></item><item><title>Core Metrics</title><category>load-testing</category><category>metrics</category><category>performance</category><description>&lt;h1&gt;Core Metrics&lt;/h1&gt;
&lt;h2&gt;Response Time (Latency)&lt;/h2&gt;
&lt;p&gt;Time from the moment a request is sent until the full response is received.&lt;/p&gt;
&lt;h3&gt;Components&lt;/h3&gt;
&lt;p&gt;```
DNS resolution →...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/01-fundamentals-metrics/02-core-metrics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/01-fundamentals-metrics/02-core-metrics/</guid></item><item><title>Metric Relationships</title><category>load-testing</category><category>metrics</category><category>performance</category><description>&lt;h1&gt;Metric Relationships&lt;/h1&gt;
&lt;h2&gt;Little&apos;s Law&lt;/h2&gt;
&lt;p&gt;The fundamental law connecting the three core metrics:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Concurrency = RPS × Response Time (seconds)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;| Scena...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/01-fundamentals-metrics/03-metric-relationships/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/01-fundamentals-metrics/03-metric-relationships/</guid></item><item><title>Fundamentals Metrics</title><category>load-testing</category><category>metrics</category><category>performance</category><description>&lt;h1&gt;Fundamentals Metrics&lt;/h1&gt;
&lt;p&gt;Fundamentals Metrics covers workload modeling, performance metrics, bottleneck analysis, and SLO validation, with focused guides on G...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/01-fundamentals-metrics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/01-fundamentals-metrics/</guid></item><item><title>DeepEval Guide — Part 18: Evaluation Configs, Flags &amp; Reference</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>rag</category><description>&lt;h1&gt;DeepEval Guide — Part 18: Evaluation Configs, Flags &amp;amp; Reference&lt;/h1&gt;
&lt;h2&gt;Configs for &lt;code&gt;evaluate()&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;All configs are optional parameters passed to &lt;code&gt;evaluate()&lt;/code&gt; or...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/18_configs_flags_reference/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/18_configs_flags_reference/</guid></item><item><title>DeepEval Guide — Part 19: Reference Appendix</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>rag</category><description>&lt;h1&gt;DeepEval Guide — Part 19: Reference Appendix&lt;/h1&gt;
&lt;h2&gt;DeepTeam Migration (Red Teaming)&lt;/h2&gt;
&lt;p&gt;Red teaming moved to dedicated package &lt;strong&gt;DeepTeam&lt;/strong&gt; (`pip install deepte...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/19_reference_appendix/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/19_reference_appendix/</guid></item><item><title>DeepEval Guide — Part 20: End-to-End Complex Tests</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>rag</category><description>&lt;h1&gt;DeepEval Guide — Part 20: End-to-End Complex Tests&lt;/h1&gt;
&lt;h2&gt;What Is a Complex E2E Test?&lt;/h2&gt;
&lt;p&gt;A complex end-to-end test covers &lt;strong&gt;one realistic dialogue scenario&lt;/strong&gt; th...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/20_e2e_complex_tests/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/20_e2e_complex_tests/</guid></item><item><title>Performance Testing</title><category>load-testing</category><category>performance</category><description>&lt;h1&gt;Performance Testing&lt;/h1&gt;
&lt;p&gt;Performance testing answers one question: &lt;strong&gt;does the system behave correctly under load?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This section covers the full spectrum — fr...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/performance-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/performance-testing/</guid></item><item><title>DeepEval Guide — Part 14: Practical RAG Testing</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>rag</category><description>&lt;h1&gt;DeepEval Guide — Part 14: Practical RAG Testing&lt;/h1&gt;
&lt;p&gt;Based on the &lt;a href=&quot;https://testerstories.com/2026/02/ai-and-testing-evaluation-and-deepeval/&quot;&gt;AI and Testing&lt;/a&gt;
s...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/14_practical_rag_testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/14_practical_rag_testing/</guid></item><item><title>DeepEval Guide — Part 15: RAG Diagnostic Testing</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>rag</category><description>&lt;h1&gt;DeepEval Guide — Part 15: RAG Diagnostic Testing&lt;/h1&gt;
&lt;p&gt;Based on the [Improving Retrieval Quality](https://testerstories.com/2026/02/ai-and-testing-improving-ret...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/15_rag_diagnostic_testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/15_rag_diagnostic_testing/</guid></item><item><title>DeepEval Guide — Part 16: Datasets and Goldens</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>rag</category><description>&lt;h1&gt;DeepEval Guide — Part 16: Datasets and Goldens&lt;/h1&gt;
&lt;h2&gt;Golden vs Test Case&lt;/h2&gt;
&lt;p&gt;A &lt;strong&gt;Golden&lt;/strong&gt; is a template — it holds input data and expected results
but is missin...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/16_datasets/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/16_datasets/</guid></item><item><title>DeepEval Guide — Part 17: Prompts &amp; Prompt Optimization</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>rag</category><description>&lt;h1&gt;DeepEval Guide — Part 17: Prompts &amp;amp; Prompt Optimization&lt;/h1&gt;
&lt;h2&gt;The Prompt Class&lt;/h2&gt;
&lt;p&gt;A &lt;code&gt;Prompt&lt;/code&gt; in DeepEval is a first-class object that holds your prompt
templat...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/17_prompts_optimization/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/17_prompts_optimization/</guid></item><item><title>DeepEval Guide — Part 12: Testing Workflows</title><category>deepeval</category><category>evaluation</category><category>llm</category><description>&lt;h1&gt;DeepEval Guide — Part 12: Testing Workflows&lt;/h1&gt;
&lt;h2&gt;Synthetic Data Generation (Synthesizer)&lt;/h2&gt;
&lt;p&gt;Manually creating test cases is slow. DeepEval&apos;s &lt;code&gt;Synthesizer&lt;/code&gt; gen...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/12_testing_workflows/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/12_testing_workflows/</guid></item><item><title>DeepEval Guide — Part 13: LLM Benchmarks</title><category>deepeval</category><category>evaluation</category><category>llm</category><description>&lt;h1&gt;DeepEval Guide — Part 13: LLM Benchmarks&lt;/h1&gt;
&lt;h2&gt;What Are LLM Benchmarks?&lt;/h2&gt;
&lt;p&gt;Benchmarks are standardized tests to measure LLM performance on various
skills: reas...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/13_benchmarks/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/13_benchmarks/</guid></item><item><title>DeepEval Guide — Part 14b: Conversational RAG Evaluation</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>rag</category><description>&lt;h1&gt;DeepEval Guide — Part 14b: Conversational RAG Evaluation&lt;/h1&gt;
&lt;p&gt;Based on [Evaluating Conversations](https://testerstories.com/2026/04/ai-and-testing-evaluating-c...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/14_conversational_rag_evaluation/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/14_conversational_rag_evaluation/</guid></item><item><title>Practical</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>rag</category><description>&lt;h1&gt;Practical&lt;/h1&gt;
&lt;p&gt;Practical covers LLM quality, RAG, agent, and safety evaluation methods, with focused guides on Practical RAG Testing, RAG Diagnostic Testing, D...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 06 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/03_practical/</guid></item><item><title>DeepEval Guide — Part 9: Red Teaming LLM Applications</title><category>deepeval</category><category>evaluation</category><category>llm</category><description>&lt;h1&gt;DeepEval Guide — Part 9: Red Teaming LLM Applications&lt;/h1&gt;
&lt;h2&gt;What is Red Teaming?&lt;/h2&gt;
&lt;p&gt;Red teaming is the process of probing your LLM for security vulnerabilities...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/09_red_teaming/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/09_red_teaming/</guid></item><item><title>DeepEval Guide — Part 10: Custom LLMs and Embedding Models</title><category>deepeval</category><category>evaluation</category><category>llm</category><description>&lt;h1&gt;DeepEval Guide — Part 10: Custom LLMs and Embedding Models&lt;/h1&gt;
&lt;h2&gt;Why Use Custom Models?&lt;/h2&gt;
&lt;p&gt;By default, DeepEval uses OpenAI GPT models as the judge LLM. But yo...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/10_custom_llms/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/10_custom_llms/</guid></item><item><title>DeepEval Guide — Part 11: Building Custom Metrics</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>metrics</category><description>&lt;h1&gt;DeepEval Guide — Part 11: Building Custom Metrics&lt;/h1&gt;
&lt;h2&gt;Why Build Custom Metrics?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;GEval is not flexible enough for your use case&lt;/li&gt;
&lt;li&gt;You want a metric that ...&lt;/li&gt;
&lt;/ul&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/11_custom_metrics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/11_custom_metrics/</guid></item><item><title>Testing</title><category>deepeval</category><category>evaluation</category><category>llm</category><description>&lt;h1&gt;Testing&lt;/h1&gt;
&lt;p&gt;Testing covers LLM quality, RAG, agent, and safety evaluation methods, with focused guides on Red Teaming, Custom Llms, Custom Metrics, and more.
...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/02_testing/</guid></item><item><title>DeepEval Guide — Part 5: Chatbot Metrics</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>metrics</category><description>&lt;h1&gt;DeepEval Guide — Part 5: Chatbot Metrics&lt;/h1&gt;
&lt;h2&gt;What Are Chatbot Metrics?&lt;/h2&gt;
&lt;p&gt;Chatbot metrics test MULTI-TURN conversations. They check how well
your chatbot beh...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/05_chatbot_metrics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/05_chatbot_metrics/</guid></item><item><title>DeepEval Guide — Part 6: MCP (Model Context Protocol) Metrics</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>mcp</category><category>metrics</category><description>&lt;h1&gt;DeepEval Guide — Part 6: MCP (Model Context Protocol) Metrics&lt;/h1&gt;
&lt;h2&gt;What is MCP?&lt;/h2&gt;
&lt;p&gt;MCP = Model Context Protocol. It is a standard way for AI agents to connect...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/06_mcp_metrics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/06_mcp_metrics/</guid></item><item><title>DeepEval Guide — Part 7: Extra Metrics and Advanced Patterns</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>metrics</category><description>&lt;h1&gt;DeepEval Guide — Part 7: Extra Metrics and Advanced Patterns&lt;/h1&gt;
&lt;h2&gt;Deterministic Metrics (No LLM Judge Needed)&lt;/h2&gt;
&lt;p&gt;These metrics do NOT use an LLM judge. They a...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/07_extra_metrics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/07_extra_metrics/</guid></item><item><title>DeepEval Guide — Part 8: Multimodal (Image) Metrics</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>metrics</category><description>&lt;h1&gt;DeepEval Guide — Part 8: Multimodal (Image) Metrics&lt;/h1&gt;
&lt;h2&gt;What Are Multimodal Metrics?&lt;/h2&gt;
&lt;p&gt;These metrics evaluate LLM systems that work with IMAGES — not just t...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/08_multimodal_metrics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 04 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/08_multimodal_metrics/</guid></item><item><title>DeepEval Testing Guide for QA Engineers</title><category>deepeval</category><category>evaluation</category><category>llm</category><description>&lt;h1&gt;DeepEval Testing Guide for QA Engineers&lt;/h1&gt;
&lt;h2&gt;Part 1: Introduction&lt;/h2&gt;
&lt;h3&gt;What is DeepEval?&lt;/h3&gt;
&lt;p&gt;DeepEval is a Python testing framework for LLM (Large Language Mod...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/01_introduction/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/01_introduction/</guid></item><item><title>DeepEval Guide — Part 2: RAG Metrics</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>metrics</category><category>rag</category><description>&lt;h1&gt;DeepEval Guide — Part 2: RAG Metrics&lt;/h1&gt;
&lt;h2&gt;What is RAG?&lt;/h2&gt;
&lt;p&gt;RAG = Retrieval-Augmented Generation. Your system:
1. Takes a user question
2. Searches a database f...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/02_rag_metrics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/02_rag_metrics/</guid></item><item><title>DeepEval Guide — Part 3: LLM Output Quality Metrics</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>metrics</category><description>&lt;h1&gt;DeepEval Guide — Part 3: LLM Output Quality Metrics&lt;/h1&gt;
&lt;p&gt;These metrics check the QUALITY of your LLM&apos;s output.
They do not need a RAG system. They work with an...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/03_llm_quality_metrics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/03_llm_quality_metrics/</guid></item><item><title>DeepEval Guide — Part 4: AI Agent Metrics</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>metrics</category><description>&lt;h1&gt;DeepEval Guide — Part 4: AI Agent Metrics&lt;/h1&gt;
&lt;h2&gt;What is an AI Agent?&lt;/h2&gt;
&lt;p&gt;An AI agent is an LLM that can USE TOOLS. For example:
- Search the internet
- Query a ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/04_agent_metrics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/04_agent_metrics/</guid></item><item><title>Metrics</title><category>deepeval</category><category>evaluation</category><category>llm</category><category>metrics</category><description>&lt;h1&gt;Metrics&lt;/h1&gt;
&lt;p&gt;Metrics covers LLM quality, RAG, agent, and safety evaluation methods, with focused guides on RAG Metrics, LLM Quality Metrics, Agent Metrics, and...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 03 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/01_metrics/</guid></item><item><title>DeepEval — LLM Testing Guide</title><category>deepeval</category><category>evaluation</category><category>llm</category><description>&lt;h1&gt;DeepEval — LLM Testing Guide&lt;/h1&gt;
&lt;p&gt;A complete reference for testing LLM systems with DeepEval (v3.8+).
Covers all metric categories, custom models and metrics, ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/llm-evaluation/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 02 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/llm-evaluation/</guid></item><item><title>Scalability &amp; Maintainability</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Scalability &amp;amp; Maintainability&lt;/h1&gt;
&lt;p&gt;Large Robot suites fail for predictable reasons: wall-clock time, merge contention, and unclear ownership. Treat the framewo...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/07-decisions-production/01-scalability-maintainability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 02 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/07-decisions-production/01-scalability-maintainability/</guid></item><item><title>Anti-Patterns, Risks &amp; Limitations</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Anti-Patterns, Risks &amp;amp; Limitations&lt;/h1&gt;
&lt;p&gt;Robot Framework rewards discipline: scenarios stay declarative, complexity moves to keywords and libraries. This page m...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/07-decisions-production/02-antipatterns-risks/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 02 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/07-decisions-production/02-antipatterns-risks/</guid></item><item><title>Maturity Model &amp; Engineering Heuristics</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Maturity Model &amp;amp; Engineering Heuristics&lt;/h1&gt;
&lt;p&gt;Use this as a conversation tool with leadership: where you are today, what the next investment buys, and which pra...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/07-decisions-production/03-maturity-model-heuristics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 02 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/07-decisions-production/03-maturity-model-heuristics/</guid></item><item><title>Configuration &amp; Secrets Management</title><category>ci-cd</category><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Configuration &amp;amp; Secrets Management&lt;/h1&gt;
&lt;p&gt;Keep &lt;strong&gt;what changes per environment&lt;/strong&gt; (URLs, feature flags, timeouts) and &lt;strong&gt;what must never appear in Git&lt;/strong&gt; (tokens, pa...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/06-infrastructure/01-configuration-secrets/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/06-infrastructure/01-configuration-secrets/</guid></item><item><title>Logging, Debugging &amp; Reporting</title><category>ci-cd</category><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Logging, Debugging &amp;amp; Reporting&lt;/h1&gt;
&lt;p&gt;Good infrastructure makes failures &lt;strong&gt;visible&lt;/strong&gt;, &lt;strong&gt;traceable&lt;/strong&gt;, and &lt;strong&gt;machine-consumable&lt;/strong&gt;. Robot Framework’s built-in log a...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/06-infrastructure/02-logging-reporting/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/06-infrastructure/02-logging-reporting/</guid></item><item><title>CI/CD Integration</title><category>ci-cd</category><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;CI/CD Integration&lt;/h1&gt;
&lt;p&gt;Pipelines should give &lt;strong&gt;fast confidence&lt;/strong&gt; on every change and &lt;strong&gt;deeper coverage&lt;/strong&gt; on a schedule, without hiding failures behind slow job...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/06-infrastructure/03-ci-cd-integration/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/06-infrastructure/03-ci-cd-integration/</guid></item><item><title>Robot Framework — Decisions &amp;amp; Production</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Robot Framework — Decisions &amp;amp; Production&lt;/h1&gt;
&lt;p&gt;How to scale large suites, avoid costly anti-patterns, and mature your automation from ad-hoc scripts to an owned...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/07-decisions-production/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 01 Aug 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/07-decisions-production/</guid></item><item><title>DeepEval + Phoenix: Tracking How Agent Metrics Change Between Runs</title><author>Serhii Smetanskyi</author><category>AI Testing</category><category>ai-observability</category><category>ai-testing</category><category>llm-evaluation</category><category>llm-observability</category><description>How to send DeepEval scores to Arize Phoenix so LLM agent metrics get history: run comparisons, traces and annotations to tell a regression from noise.</description><link>https://serhiismetanskyi.com/blog/2026/07/31/deepeval-phoenix-tracking-how-agent-metrics-change-between-runs/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/blog/2026/07/31/deepeval-phoenix-tracking-how-agent-metrics-change-between-runs/</guid></item><item><title>Parallel Execution with Pabot</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Parallel Execution with Pabot&lt;/h1&gt;
&lt;p&gt;&lt;a href=&quot;https://pabot.org/&quot;&gt;Pabot&lt;/a&gt; is a parallel test runner for Robot Framework. It spawns multiple &lt;code&gt;robot&lt;/code&gt; processes and merges l...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/05-execution-reliability/01-parallel-execution/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/05-execution-reliability/01-parallel-execution/</guid></item><item><title>Error Handling &amp; Retry Patterns</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Error Handling &amp;amp; Retry Patterns&lt;/h1&gt;
&lt;p&gt;Robot Framework 5 introduced native &lt;strong&gt;&lt;code&gt;TRY&lt;/code&gt; / &lt;code&gt;EXCEPT&lt;/code&gt; / &lt;code&gt;FINALLY&lt;/code&gt; / &lt;code&gt;ELSE&lt;/code&gt;&lt;/strong&gt; blocks inside keywords and tests. Together w...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/05-execution-reliability/02-error-handling-retries/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/05-execution-reliability/02-error-handling-retries/</guid></item><item><title>Setup, Teardown &amp; Test Organization</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Setup, Teardown &amp;amp; Test Organization&lt;/h1&gt;
&lt;p&gt;Setup and teardown keywords define &lt;strong&gt;lifecycle boundaries&lt;/strong&gt;: what must be true before work starts, and what must run t...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/05-execution-reliability/03-setup-teardown/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/05-execution-reliability/03-setup-teardown/</guid></item><item><title>Robot Framework — Infrastructure</title><category>ci-cd</category><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Robot Framework — Infrastructure&lt;/h1&gt;
&lt;p&gt;Practical patterns for &lt;strong&gt;configuration&lt;/strong&gt;, &lt;strong&gt;observability of test runs&lt;/strong&gt;, and &lt;strong&gt;CI/CD&lt;/strong&gt;. These topics keep suites portabl...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/06-infrastructure/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/06-infrastructure/</guid></item><item><title>Wait Strategies &amp; Flakiness Control</title><category>robot-framework</category><category>test-automation</category><category>ui-testing</category><description>&lt;h1&gt;Wait Strategies &amp;amp; Flakiness Control&lt;/h1&gt;
&lt;p&gt;Flaky UI tests usually come from &lt;strong&gt;assumptions about time&lt;/strong&gt; (DOM, network, animations). Robot Framework gives you expl...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/04-ui-testing/02-wait-strategy-flakiness/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 30 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/04-ui-testing/02-wait-strategy-flakiness/</guid></item><item><title>UI Testing — Step by Step</title><category>robot-framework</category><category>test-automation</category><category>ui-testing</category><description>&lt;h1&gt;UI Testing — Step by Step&lt;/h1&gt;
&lt;p&gt;Progressive path: simple Selenium test -&amp;gt; reusable page keywords -&amp;gt; data-driven -&amp;gt; Browser (Playwright).&lt;/p&gt;
&lt;h2&gt;Level 1 — Simple Se...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/04-ui-testing/03-ui-step-by-step/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 30 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/04-ui-testing/03-ui-step-by-step/</guid></item><item><title>Practical — Full UI Framework</title><category>robot-framework</category><category>test-automation</category><category>ui-testing</category><description>&lt;h1&gt;Practical — Full UI Framework&lt;/h1&gt;
&lt;p&gt;Compact but real end-to-end framework example using &lt;code&gt;Robot Framework + Browser (Playwright) + Python helpers&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For progress...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/04-ui-testing/04-practical-ui-framework/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 30 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/04-ui-testing/04-practical-ui-framework/</guid></item><item><title>Robot Framework — Execution &amp;amp; Reliability</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Robot Framework — Execution &amp;amp; Reliability&lt;/h1&gt;
&lt;p&gt;Short, practical notes on running Robot Framework faster (parallelism), recovering from transient failures (retr...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/05-execution-reliability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 30 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/05-execution-reliability/</guid></item><item><title>API Testing — Step by Step</title><category>api-testing</category><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;API Testing — Step by Step&lt;/h1&gt;
&lt;p&gt;Progressive examples: from a single test to a proper layered architecture.&lt;/p&gt;
&lt;h2&gt;Architecture (goal)&lt;/h2&gt;
&lt;p&gt;```text
tests → keywords → ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/03-api-testing/03-api-step-by-step/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/03-api-testing/03-api-step-by-step/</guid></item><item><title>Practical — Full API Framework</title><category>api-testing</category><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Practical — Full API Framework&lt;/h1&gt;
&lt;p&gt;Compact but real end-to-end framework example using &lt;code&gt;Robot Framework + RequestsLibrary + Python libraries&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;For progressiv...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/03-api-testing/04-practical-api-framework/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/03-api-testing/04-practical-api-framework/</guid></item><item><title>Page Object Pattern &amp; Locators</title><category>robot-framework</category><category>test-automation</category><category>ui-testing</category><description>&lt;h1&gt;Page Object Pattern &amp;amp; Locators&lt;/h1&gt;
&lt;p&gt;In Robot Framework, the common “page object” shape is a &lt;strong&gt;&lt;code&gt;.resource&lt;/code&gt; file&lt;/strong&gt;: locators live in &lt;strong&gt;variables&lt;/strong&gt;, interactions ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/04-ui-testing/01-page-objects-locators/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/04-ui-testing/01-page-objects-locators/</guid></item><item><title>Robot Framework — UI Testing</title><category>robot-framework</category><category>test-automation</category><category>ui-testing</category><description>&lt;h1&gt;Robot Framework — UI Testing&lt;/h1&gt;
&lt;p&gt;Practical notes for structuring UI automation with Robot Framework: page-level &lt;code&gt;.resource&lt;/code&gt; files, locator hygiene, and stable...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/04-ui-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 29 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/04-ui-testing/</guid></item><item><title>Test Data Management</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Test Data Management&lt;/h1&gt;
&lt;p&gt;Reliable RF suites use &lt;strong&gt;isolated&lt;/strong&gt;, &lt;strong&gt;repeatable&lt;/strong&gt; data. Combine patterns from test engineering (builders, factories, fixtures) with...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/02-architecture/03-test-data-management/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/02-architecture/03-test-data-management/</guid></item><item><title>API Testing Architecture &amp; Patterns</title><category>api-testing</category><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;API Testing Architecture &amp;amp; Patterns&lt;/h1&gt;
&lt;p&gt;Treat API automation as &lt;strong&gt;three layers&lt;/strong&gt;. Tests call the &lt;strong&gt;service layer&lt;/strong&gt;; services orchestrate &lt;strong&gt;API client&lt;/strong&gt; calls;...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/03-api-testing/01-api-architecture-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/03-api-testing/01-api-architecture-patterns/</guid></item><item><title>Request Design &amp; Validation Strategy</title><category>api-testing</category><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Request Design &amp;amp; Validation Strategy&lt;/h1&gt;
&lt;p&gt;Use a &lt;strong&gt;consistent validation ladder&lt;/strong&gt; so API suites stay maintainable and failures point to the real defect (transpo...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/03-api-testing/02-request-validation/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/03-api-testing/02-request-validation/</guid></item><item><title>Robot Framework — API Testing</title><category>api-testing</category><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Robot Framework — API Testing&lt;/h1&gt;
&lt;p&gt;This section describes how to structure REST API automation with &lt;strong&gt;Robot Framework&lt;/strong&gt; using a clear separation between HTTP m...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/03-api-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 28 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/03-api-testing/</guid></item><item><title>Libraries &amp; Extensibility</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Libraries &amp;amp; Extensibility&lt;/h1&gt;
&lt;h2&gt;Built-in standard libraries&lt;/h2&gt;
&lt;p&gt;Ship with Robot Framework (Python stdlib-backed). Common ones:&lt;/p&gt;
&lt;p&gt;| Library | Purpose |
|---------...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/01-fundamentals/03-libraries/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/01-fundamentals/03-libraries/</guid></item><item><title>Layered Architecture</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Layered Architecture&lt;/h1&gt;
&lt;p&gt;Enterprise Robot Framework automation stays maintainable when &lt;strong&gt;tests stay thin&lt;/strong&gt;, &lt;strong&gt;keywords express behavior&lt;/strong&gt;, and **technical det...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/02-architecture/01-layered-architecture/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/02-architecture/01-layered-architecture/</guid></item><item><title>Keyword Design Principles</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Keyword Design Principles&lt;/h1&gt;
&lt;p&gt;Well-designed keywords make suites &lt;strong&gt;readable by product owners&lt;/strong&gt; and &lt;strong&gt;cheap to refactor&lt;/strong&gt; when the UI or API changes. Treat ke...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/02-architecture/02-keyword-design/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/02-architecture/02-keyword-design/</guid></item><item><title>Robot Framework — Architecture</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Robot Framework — Architecture&lt;/h1&gt;
&lt;p&gt;This section describes how to structure enterprise Robot Framework (RF) projects: layers, responsibilities, keyword design,...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/02-architecture/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 27 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/02-architecture/</guid></item><item><title>Core Syntax &amp; Test Structure</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Core Syntax &amp;amp; Test Structure&lt;/h1&gt;
&lt;h2&gt;What is Robot Framework?&lt;/h2&gt;
&lt;p&gt;Robot Framework is &lt;strong&gt;open-source&lt;/strong&gt;, &lt;strong&gt;keyword-driven&lt;/strong&gt;, and &lt;strong&gt;Python-centric&lt;/strong&gt;: libraries expose...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/01-fundamentals/01-core-syntax-structure/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 26 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/01-fundamentals/01-core-syntax-structure/</guid></item><item><title>Keywords &amp; Variables</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Keywords &amp;amp; Variables&lt;/h1&gt;
&lt;h2&gt;Built-in keywords (BuiltIn)&lt;/h2&gt;
&lt;p&gt;The &lt;strong&gt;BuiltIn&lt;/strong&gt; library is always available. Common keywords:&lt;/p&gt;
&lt;p&gt;| Keyword | Typical use |
|---------|-...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/01-fundamentals/02-keywords-variables/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 26 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/01-fundamentals/02-keywords-variables/</guid></item><item><title>Fundamentals</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Fundamentals&lt;/h1&gt;
&lt;p&gt;Fundamentals cover Robot Framework’s &lt;strong&gt;data format&lt;/strong&gt;, &lt;strong&gt;keywords &amp;amp; variables&lt;/strong&gt;, and &lt;strong&gt;libraries&lt;/strong&gt; so you can read and write maintainable `.ro...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/01-fundamentals/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 26 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/01-fundamentals/</guid></item><item><title>Robot Framework — Complete Guide</title><category>robot-framework</category><category>test-automation</category><description>&lt;h1&gt;Robot Framework — Complete Guide&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Robot Framework&lt;/strong&gt; is an open-source, &lt;strong&gt;keyword-driven&lt;/strong&gt; automation framework. Tests and tasks are expressed as human-re...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/robot-framework/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 26 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/robot-framework/</guid></item><item><title>CI/CD Integration</title><category>architecture</category><category>ci-cd</category><category>test-automation</category><description>&lt;h1&gt;CI/CD Integration&lt;/h1&gt;
&lt;h2&gt;Pipeline Design Principles&lt;/h2&gt;
&lt;p&gt;Tests in CI must be:
- &lt;strong&gt;Fast&lt;/strong&gt; — fast feedback prevents context switching
- &lt;strong&gt;Reliable&lt;/strong&gt; — false positiv...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/03-ci-cd-integration/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/03-ci-cd-integration/</guid></item><item><title>Performance Testing Support &amp; Security Testing</title><category>architecture</category><category>ci-cd</category><category>security</category><category>test-automation</category><description>&lt;h1&gt;Performance Testing Support &amp;amp; Security Testing&lt;/h1&gt;
&lt;h2&gt;Performance Testing in the Framework&lt;/h2&gt;
&lt;h3&gt;What to Test&lt;/h3&gt;
&lt;p&gt;| Type | Measures | Tool |
|------|---------|---...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/04-performance-security/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/04-performance-security/</guid></item><item><title>Framework Extensibility &amp; Anti-Patterns</title><category>architecture</category><category>ci-cd</category><category>test-automation</category><description>&lt;h1&gt;Framework Extensibility &amp;amp; Anti-Patterns&lt;/h1&gt;
&lt;h2&gt;Framework Extensibility&lt;/h2&gt;
&lt;p&gt;A good framework grows without rewriting its core.&lt;/p&gt;
&lt;h3&gt;Custom pytest Plugins&lt;/h3&gt;
&lt;p&gt;Encapsu...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/05-extensibility-antipatterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/05-extensibility-antipatterns/</guid></item><item><title>Risks, Real-World Patterns &amp; Decision Heuristics</title><category>architecture</category><category>ci-cd</category><category>test-automation</category><description>&lt;h1&gt;Risks, Real-World Patterns &amp;amp; Decision Heuristics&lt;/h1&gt;
&lt;h2&gt;Framework Risks &amp;amp; Limitations&lt;/h2&gt;
&lt;h3&gt;High Maintenance Cost&lt;/h3&gt;
&lt;p&gt;A test automation framework is a product wit...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/06-risks-decisions/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 25 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/06-risks-decisions/</guid></item><item><title>Reliability &amp; Flakiness</title><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;Reliability &amp;amp; Flakiness&lt;/h1&gt;
&lt;h2&gt;What Is a Flaky Test&lt;/h2&gt;
&lt;p&gt;A test that sometimes passes and sometimes fails with no code change.
Flakiness destroys trust. Teams tha...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/06-execution-reliability/02-flakiness/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 24 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/06-execution-reliability/02-flakiness/</guid></item><item><title>Mocking &amp; Test Isolation</title><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;Mocking &amp;amp; Test Isolation&lt;/h1&gt;
&lt;h2&gt;Mock vs Stub vs Fake vs Spy&lt;/h2&gt;
&lt;p&gt;| Type | Definition | Returns | Verifies calls |
|------|-----------|---------|----------------|
...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/06-execution-reliability/03-mocking-isolation/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 24 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/06-execution-reliability/03-mocking-isolation/</guid></item><item><title>Configuration Management</title><category>architecture</category><category>ci-cd</category><category>test-automation</category><description>&lt;h1&gt;Configuration Management&lt;/h1&gt;
&lt;h2&gt;Environment Config&lt;/h2&gt;
&lt;p&gt;Tests run against multiple environments: dev, staging, production.
Config must be environment-aware withou...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/01-config-management/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 24 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/01-config-management/</guid></item><item><title>Logging, Reporting &amp; Observability</title><category>architecture</category><category>ci-cd</category><category>test-automation</category><description>&lt;h1&gt;Logging, Reporting &amp;amp; Observability&lt;/h1&gt;
&lt;h2&gt;Structured Test Logging&lt;/h2&gt;
&lt;p&gt;Tests must produce logs that help diagnose failures without re-running.&lt;/p&gt;
&lt;h3&gt;Logger Setup&lt;/h3&gt;
&lt;p&gt;...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/02-logging-reporting/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 24 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/02-logging-reporting/</guid></item><item><title>Config CI Decisions</title><category>architecture</category><category>ci-cd</category><category>test-automation</category><description>&lt;h1&gt;Config CI Decisions&lt;/h1&gt;
&lt;p&gt;Config CI/CD Decisions covers automation framework architecture, reliability, and CI integration, with focused guides on Config Manage...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 24 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/07-config-ci-decisions/</guid></item><item><title>UI Testing — Tools &amp; Patterns</title><category>architecture</category><category>test-automation</category><category>ui-testing</category><description>&lt;h1&gt;UI Testing — Tools &amp;amp; Patterns&lt;/h1&gt;
&lt;h2&gt;Tool Selection&lt;/h2&gt;
&lt;h3&gt;Playwright (recommended for most projects)&lt;/h3&gt;
&lt;p&gt;| Property | Value |
|----------|-------|
| Language | Py...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/05-ui-testing/01-tools-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 23 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/05-ui-testing/01-tools-patterns/</guid></item><item><title>UI Testing — Wait Strategies, Retry &amp; Selector Abstraction</title><category>architecture</category><category>test-automation</category><category>ui-testing</category><description>&lt;h1&gt;UI Testing — Wait Strategies, Retry &amp;amp; Selector Abstraction&lt;/h1&gt;
&lt;h2&gt;Wait Strategies&lt;/h2&gt;
&lt;p&gt;The #1 cause of flaky UI tests is improper waiting.
&lt;code&gt;sleep()&lt;/code&gt; is never a wa...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/05-ui-testing/02-wait-retry-selectors/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 23 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/05-ui-testing/02-wait-retry-selectors/</guid></item><item><title>Test Execution — Parallel &amp; Test Organisation</title><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;Test Execution — Parallel &amp;amp; Test Organisation&lt;/h1&gt;
&lt;h2&gt;Parallel Execution&lt;/h2&gt;
&lt;h3&gt;Why It Matters&lt;/h3&gt;
&lt;p&gt;500 tests × 0.5s average = 250s sequential.
With 8 workers: ~35s....&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/06-execution-reliability/01-parallel-execution/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 23 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/06-execution-reliability/01-parallel-execution/</guid></item><item><title>Execution Reliability</title><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;Execution Reliability&lt;/h1&gt;
&lt;p&gt;Execution Reliability covers automation framework architecture, reliability, and CI integration, with focused guides on Parallel Exe...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/06-execution-reliability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 23 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/06-execution-reliability/</guid></item><item><title>API Testing — REST &amp; GraphQL</title><category>api-testing</category><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;API Testing — REST &amp;amp; GraphQL&lt;/h1&gt;
&lt;h2&gt;REST Testing Architecture&lt;/h2&gt;
&lt;h3&gt;Client Wrapper&lt;/h3&gt;
&lt;p&gt;Each domain gets its own client. No raw &lt;code&gt;httpx&lt;/code&gt; calls in tests.&lt;/p&gt;
&lt;p&gt;```python
...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/04-api-testing/01-rest-graphql/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 22 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/04-api-testing/01-rest-graphql/</guid></item><item><title>API Testing — gRPC &amp; WebSocket</title><category>api-testing</category><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;API Testing — gRPC &amp;amp; WebSocket&lt;/h1&gt;
&lt;h2&gt;gRPC Testing&lt;/h2&gt;
&lt;h3&gt;Architecture&lt;/h3&gt;
&lt;p&gt;gRPC tests use generated stubs. Never call the raw channel directly from tests.&lt;/p&gt;
&lt;p&gt;```
Tes...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/04-api-testing/02-grpc-websocket/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 22 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/04-api-testing/02-grpc-websocket/</guid></item><item><title>API Testing</title><category>api-testing</category><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;API Testing&lt;/h1&gt;
&lt;p&gt;API Testing covers automation framework architecture, reliability, and CI integration, with focused guides on REST GraphQL, gRPC Websocket.&lt;/p&gt;
&lt;h1&gt;...&lt;/h1&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/04-api-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 22 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/04-api-testing/</guid></item><item><title>UI Testing</title><category>architecture</category><category>test-automation</category><category>ui-testing</category><description>&lt;h1&gt;UI Testing&lt;/h1&gt;
&lt;p&gt;UI Testing covers automation framework architecture, reliability, and CI integration, with focused guides on Tools Patterns, Wait Retry Selecto...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/05-ui-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 22 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/05-ui-testing/</guid></item><item><title>Advanced Framework Patterns</title><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;Advanced Framework Patterns&lt;/h1&gt;
&lt;h2&gt;Fluent Interface&lt;/h2&gt;
&lt;p&gt;Fluent interfaces chain calls to read like a sentence.
Used for builders, request construction, and asser...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/02-design-patterns/03-advanced-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/02-design-patterns/03-advanced-patterns/</guid></item><item><title>Test Data Strategies &amp; Isolation</title><category>architecture</category><category>test-automation</category><category>test-data</category><description>&lt;h1&gt;Test Data Strategies &amp;amp; Isolation&lt;/h1&gt;
&lt;h2&gt;Three Data Strategies&lt;/h2&gt;
&lt;h3&gt;Static Data&lt;/h3&gt;
&lt;p&gt;Predefined, version-controlled. Loaded from YAML or JSON files.
Good for: conf...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/03-test-data/01-strategies-isolation/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/03-test-data/01-strategies-isolation/</guid></item><item><title>Builders, Factories &amp; DB Seeding</title><category>architecture</category><category>test-automation</category><category>test-data</category><description>&lt;h1&gt;Builders, Factories &amp;amp; DB Seeding&lt;/h1&gt;
&lt;h2&gt;Test Data Builder — Full Pattern&lt;/h2&gt;
&lt;p&gt;A builder creates a single domain object with configurable defaults.
The same builde...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/03-test-data/02-builders-factories/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/03-test-data/02-builders-factories/</guid></item><item><title>Test Data</title><category>architecture</category><category>test-automation</category><category>test-data</category><description>&lt;h1&gt;Test Data&lt;/h1&gt;
&lt;p&gt;Test Data covers automation framework architecture, reliability, and CI integration, with focused guides on Strategies Isolation, Builders Facto...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/03-test-data/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 21 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/03-test-data/</guid></item><item><title>Framework Directory Structure</title><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;Framework Directory Structure&lt;/h1&gt;
&lt;h2&gt;Canonical Layout&lt;/h2&gt;
&lt;p&gt;```
project-root/
├── tests/
│   ├── e2e/              # Browser-driven end-to-end tests
│   ├── api/  ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/01-architecture/03-directory-structure/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 20 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/01-architecture/03-directory-structure/</guid></item><item><title>UI Test Design Patterns</title><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;UI Test Design Patterns&lt;/h1&gt;
&lt;h2&gt;Page Object Model (POM)&lt;/h2&gt;
&lt;p&gt;The foundational pattern for UI test automation.
One class per page or significant component. Tests ca...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/02-design-patterns/01-ui-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 20 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/02-design-patterns/01-ui-patterns/</guid></item><item><title>API &amp; Data Test Design Patterns</title><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;API &amp;amp; Data Test Design Patterns&lt;/h1&gt;
&lt;h2&gt;Request Builder&lt;/h2&gt;
&lt;p&gt;Fluent API for constructing HTTP requests without coupling tests to raw HTTP semantics.&lt;/p&gt;
&lt;p&gt;```python
cla...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/02-design-patterns/02-api-data-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 20 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/02-design-patterns/02-api-data-patterns/</guid></item><item><title>Design Patterns</title><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;Design Patterns&lt;/h1&gt;
&lt;p&gt;Design Patterns covers automation framework architecture, reliability, and CI integration, with focused guides on UI Patterns, API Data Pa...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/02-design-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 20 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/02-design-patterns/</guid></item><item><title>Framework Goals &amp; Core Principles</title><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;Framework Goals &amp;amp; Core Principles&lt;/h1&gt;
&lt;h2&gt;What the Framework Must Achieve&lt;/h2&gt;
&lt;p&gt;A test automation framework is not just a test runner with helpers.
It is a product ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/01-architecture/01-goals-principles/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 19 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/01-architecture/01-goals-principles/</guid></item><item><title>Framework Architecture — Layers &amp; Responsibilities</title><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;Framework Architecture — Layers &amp;amp; Responsibilities&lt;/h1&gt;
&lt;h2&gt;High-Level Layer Model&lt;/h2&gt;
&lt;p&gt;```
┌─────────────────────────────────────────────┐
│               TEST LAY...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/01-architecture/02-layers-responsibilities/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 19 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/01-architecture/02-layers-responsibilities/</guid></item><item><title>Architecture</title><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;Architecture&lt;/h1&gt;
&lt;p&gt;Architecture covers automation framework architecture, reliability, and CI integration, with focused guides on Goals Principles, Layers Respo...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/01-architecture/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 19 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/01-architecture/</guid></item><item><title>Test Automation Framework</title><category>architecture</category><category>test-automation</category><description>&lt;h1&gt;Test Automation Framework&lt;/h1&gt;
&lt;p&gt;Complete technical reference for designing, building, and operating a production-grade test automation framework.&lt;/p&gt;
&lt;h2&gt;Sections&lt;/h2&gt;
&lt;p&gt;...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-automation-framework/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 19 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-automation-framework/</guid></item><item><title>E2E Tests — Concept &amp; Examples</title><category>e2e-testing</category><category>test-strategy</category><category>testing</category><description>&lt;h1&gt;E2E Tests — Concept &amp;amp; Examples&lt;/h1&gt;
&lt;h2&gt;What They Test&lt;/h2&gt;
&lt;p&gt;The whole application, from the user&apos;s perspective. A real browser, real clicks,
real page content. Play...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/testing-pyramid/03-e2e-tests/01-concept-and-examples/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 18 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/testing-pyramid/03-e2e-tests/01-concept-and-examples/</guid></item><item><title>E2E Tests — Common Mistakes</title><category>e2e-testing</category><category>test-strategy</category><category>testing</category><description>&lt;h1&gt;E2E Tests — Common Mistakes&lt;/h1&gt;
&lt;h2&gt;Mistake 1: Fragile DOM-Path Selectors&lt;/h2&gt;
&lt;p&gt;Selectors copied from Chrome DevTools describe the DOM structure, not the user inten...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/testing-pyramid/03-e2e-tests/02-common-mistakes/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 18 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/testing-pyramid/03-e2e-tests/02-common-mistakes/</guid></item><item><title>Pyramid Shape, Anti-Patterns &amp; Alternatives</title><category>test-strategy</category><category>testing</category><description>&lt;h1&gt;Pyramid Shape, Anti-Patterns &amp;amp; Alternatives&lt;/h1&gt;
&lt;h2&gt;The Numbers&lt;/h2&gt;
&lt;p&gt;On a typical project with a healthy pyramid:&lt;/p&gt;
&lt;p&gt;| Layer | Count | Time per test | Suite contribu...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/testing-pyramid/04-pyramid-strategy/01-shape-antipatterns-alternatives/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 18 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/testing-pyramid/04-pyramid-strategy/01-shape-antipatterns-alternatives/</guid></item><item><title>Pyramid Strategy</title><category>test-strategy</category><category>testing</category><description>&lt;h1&gt;Pyramid Strategy&lt;/h1&gt;
&lt;p&gt;Pyramid Strategy covers test-level strategy across unit, integration, and end-to-end layers, with focused guides on Shape Antipatterns Al...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/testing-pyramid/04-pyramid-strategy/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 18 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/testing-pyramid/04-pyramid-strategy/</guid></item><item><title>Integration Tests — Concept &amp; Examples</title><category>integration-testing</category><category>test-strategy</category><category>testing</category><description>&lt;h1&gt;Integration Tests — Concept &amp;amp; Examples&lt;/h1&gt;
&lt;h2&gt;What They Test&lt;/h2&gt;
&lt;p&gt;How components work &lt;strong&gt;together&lt;/strong&gt;. The pieces are real — no mocks for the parts being integrated....&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/testing-pyramid/02-integration-tests/01-concept-and-examples/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/testing-pyramid/02-integration-tests/01-concept-and-examples/</guid></item><item><title>Integration Tests — Common Mistakes</title><category>integration-testing</category><category>test-strategy</category><category>testing</category><description>&lt;h1&gt;Integration Tests — Common Mistakes&lt;/h1&gt;
&lt;h2&gt;Mistake 1: Shared State Between Tests&lt;/h2&gt;
&lt;p&gt;One test creates data, another assumes it exists.
Works locally, breaks on C...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/testing-pyramid/02-integration-tests/02-common-mistakes/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/testing-pyramid/02-integration-tests/02-common-mistakes/</guid></item><item><title>Integration Tests</title><category>integration-testing</category><category>test-strategy</category><category>testing</category><description>&lt;h1&gt;Integration Tests&lt;/h1&gt;
&lt;p&gt;Integration Tests covers test-level strategy across unit, integration, and end-to-end layers, with focused guides on Concept And Example...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/testing-pyramid/02-integration-tests/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/testing-pyramid/02-integration-tests/</guid></item><item><title>E2E Tests</title><category>e2e-testing</category><category>test-strategy</category><category>testing</category><description>&lt;h1&gt;E2E Tests&lt;/h1&gt;
&lt;p&gt;E2E Tests covers test-level strategy across unit, integration, and end-to-end layers, with focused guides on Concept And Examples, Common Mistak...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/testing-pyramid/03-e2e-tests/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 17 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/testing-pyramid/03-e2e-tests/</guid></item><item><title>Unit Tests — Concept &amp; Examples</title><category>test-strategy</category><category>testing</category><category>unit-testing</category><description>&lt;h1&gt;Unit Tests — Concept &amp;amp; Examples&lt;/h1&gt;
&lt;h2&gt;What They Test&lt;/h2&gt;
&lt;p&gt;One function, one method, one class. No database, no API calls, no browser.
Code calls code, result is ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/testing-pyramid/01-unit-tests/01-concept-and-examples/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 16 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/testing-pyramid/01-unit-tests/01-concept-and-examples/</guid></item><item><title>Unit Tests — Common Mistakes</title><category>test-strategy</category><category>testing</category><category>unit-testing</category><description>&lt;h1&gt;Unit Tests — Common Mistakes&lt;/h1&gt;
&lt;h2&gt;Mistake 1: Test Without an Assertion&lt;/h2&gt;
&lt;p&gt;The test calls the function, nothing crashes, pytest marks it green.
But the result ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/testing-pyramid/01-unit-tests/02-common-mistakes/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 16 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/testing-pyramid/01-unit-tests/02-common-mistakes/</guid></item><item><title>Unit Tests</title><category>test-strategy</category><category>testing</category><category>unit-testing</category><description>&lt;h1&gt;Unit Tests&lt;/h1&gt;
&lt;p&gt;Unit Tests covers test-level strategy across unit, integration, and end-to-end layers, with focused guides on Concept And Examples, Common Mist...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/testing-pyramid/01-unit-tests/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 16 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/testing-pyramid/01-unit-tests/</guid></item><item><title>Testing Pyramid</title><category>test-strategy</category><category>testing</category><description>&lt;h1&gt;Testing Pyramid&lt;/h1&gt;
&lt;p&gt;Practical reference for test levels, tooling, and strategy.
Based on: [The Testing Pyramid: Everybody Knows It, Nobody Follows It](https:/...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/testing-pyramid/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 16 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/testing-pyramid/</guid></item><item><title>CI/CD Integration and Security Testing</title><category>ci-cd</category><category>design-patterns</category><category>security</category><category>test-automation</category><description>&lt;h1&gt;CI/CD Integration and Security Testing&lt;/h1&gt;
&lt;h2&gt;CI/CD Integration&lt;/h2&gt;
&lt;h3&gt;Pipeline Test Stages&lt;/h3&gt;
&lt;p&gt;Recommended stage order for fast feedback:&lt;/p&gt;
&lt;p&gt;```
Commit push
  │
  ├...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/07-decisions-production/01-ci-cd-security/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/07-decisions-production/01-ci-cd-security/</guid></item><item><title>Test Anti-Patterns and Risks</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Test Anti-Patterns and Risks&lt;/h1&gt;
&lt;h2&gt;Test Anti-Patterns&lt;/h2&gt;
&lt;h3&gt;1. Flaky Tests&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Description:&lt;/strong&gt; Tests that pass or fail non-deterministically.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Causes:&lt;/strong&gt; `time...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/07-decisions-production/02-antipatterns-risks/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/07-decisions-production/02-antipatterns-risks/</guid></item><item><title>Real-World Test Architectures, Decision Factors, and Heuristics</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Real-World Test Architectures, Decision Factors, and Heuristics&lt;/h1&gt;
&lt;h2&gt;Real-World Architectures&lt;/h2&gt;
&lt;h3&gt;Microservices&lt;/h3&gt;
&lt;p&gt;| Challenge | Strategy |
|---|---|
| Many ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/07-decisions-production/03-real-world-decisions-heuristics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/07-decisions-production/03-real-world-decisions-heuristics/</guid></item><item><title>Decisions Production</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Decisions Production&lt;/h1&gt;
&lt;p&gt;Decisions Production covers test architecture patterns, data strategy, and execution reliability, with focused guides on CI/CD Securi...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/07-decisions-production/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 15 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/07-decisions-production/</guid></item><item><title>Test Execution Strategies</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Test Execution Strategies&lt;/h1&gt;
&lt;h2&gt;Parallel Execution&lt;/h2&gt;
&lt;h3&gt;Thread Safety&lt;/h3&gt;
&lt;p&gt;Running tests in parallel requires every test to be fully isolated.&lt;/p&gt;
&lt;p&gt;| Requirement | R...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/06-execution-reliability/01-execution-strategies/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/06-execution-reliability/01-execution-strategies/</guid></item><item><title>Test Reliability and Flakiness</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Test Reliability and Flakiness&lt;/h1&gt;
&lt;h2&gt;Causes of Flakiness&lt;/h2&gt;
&lt;p&gt;| Cause | Description | Example |
|---|---|---|
| Timing issues | Test proceeds before async operat...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/06-execution-reliability/02-reliability-flakiness/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/06-execution-reliability/02-reliability-flakiness/</guid></item><item><title>Performance Testing and Observability in Tests</title><category>design-patterns</category><category>observability</category><category>test-automation</category><description>&lt;h1&gt;Performance Testing and Observability in Tests&lt;/h1&gt;
&lt;h2&gt;Performance Testing&lt;/h2&gt;
&lt;h3&gt;Metrics&lt;/h3&gt;
&lt;p&gt;| Metric | Definition | Typical SLO |
|---|---|---|
| Latency (p50) | ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/06-execution-reliability/03-performance-observability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/06-execution-reliability/03-performance-observability/</guid></item><item><title>Execution Reliability</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Execution Reliability&lt;/h1&gt;
&lt;p&gt;Execution Reliability covers test architecture patterns, data strategy, and execution reliability, with focused guides on Execution ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/06-execution-reliability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 14 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/06-execution-reliability/</guid></item><item><title>API Test Patterns: gRPC and WebSocket</title><category>api-testing</category><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;API Test Patterns: gRPC and WebSocket&lt;/h1&gt;
&lt;h2&gt;gRPC&lt;/h2&gt;
&lt;h3&gt;Stub-Based Testing&lt;/h3&gt;
&lt;p&gt;gRPC tests use generated stubs. Never call the raw channel directly in tests —
wrap...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/04-api-test-patterns/02-grpc-websocket/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/04-api-test-patterns/02-grpc-websocket/</guid></item><item><title>Test Data Management</title><category>design-patterns</category><category>mocking</category><category>test-automation</category><category>test-data</category><description>&lt;h1&gt;Test Data Management&lt;/h1&gt;
&lt;h2&gt;Data Strategies&lt;/h2&gt;
&lt;h3&gt;Static Data&lt;/h3&gt;
&lt;p&gt;Pre-defined, version-controlled data used as-is.&lt;/p&gt;
&lt;p&gt;| Use case | Example |
|---|---|
| Reference l...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/05-data-mocking-env/01-test-data-management/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/05-data-mocking-env/01-test-data-management/</guid></item><item><title>Mocking and Stubbing</title><category>design-patterns</category><category>mocking</category><category>test-automation</category><category>test-data</category><description>&lt;h1&gt;Mocking and Stubbing&lt;/h1&gt;
&lt;h2&gt;Types&lt;/h2&gt;
&lt;h3&gt;Mock&lt;/h3&gt;
&lt;p&gt;A mock is a test double that records calls and allows assertions on how it was used.
It verifies &lt;strong&gt;behaviour&lt;/strong&gt;: w...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/05-data-mocking-env/02-mocking-stubbing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/05-data-mocking-env/02-mocking-stubbing/</guid></item><item><title>Test Environment Design</title><category>design-patterns</category><category>mocking</category><category>test-automation</category><category>test-data</category><description>&lt;h1&gt;Test Environment Design&lt;/h1&gt;
&lt;h2&gt;Environments&lt;/h2&gt;
&lt;h3&gt;Local&lt;/h3&gt;
&lt;p&gt;Developer machine or CI agent running the full stack via Docker Compose.&lt;/p&gt;
&lt;p&gt;| Property | Value |
|---|--...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/05-data-mocking-env/03-environment-design/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/05-data-mocking-env/03-environment-design/</guid></item><item><title>Data Mocking Env</title><category>design-patterns</category><category>mocking</category><category>test-automation</category><category>test-data</category><description>&lt;h1&gt;Data Mocking Env&lt;/h1&gt;
&lt;p&gt;Data Mocking Env covers test architecture patterns, data strategy, and execution reliability, with focused guides on Test Data Management...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/05-data-mocking-env/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 13 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/05-data-mocking-env/</guid></item><item><title>Wrapper / Abstraction Layer and Fluent Interface Pattern</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Wrapper / Abstraction Layer and Fluent Interface Pattern&lt;/h1&gt;
&lt;h2&gt;Wrapper / Abstraction Layer&lt;/h2&gt;
&lt;h3&gt;Concept&lt;/h3&gt;
&lt;p&gt;A wrapper hides the implementation details of a libr...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/03-advanced-patterns/01-wrapper-fluent-interface/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/03-advanced-patterns/01-wrapper-fluent-interface/</guid></item><item><title>Assertion Pattern, Test Template Pattern, Data-Driven Pattern</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Assertion Pattern, Test Template Pattern, Data-Driven Pattern&lt;/h1&gt;
&lt;h2&gt;Assertion Pattern&lt;/h2&gt;
&lt;h3&gt;Concept&lt;/h3&gt;
&lt;p&gt;Centralise assertion logic in reusable helpers or custom ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/03-advanced-patterns/02-assertion-template-data-driven/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/03-advanced-patterns/02-assertion-template-data-driven/</guid></item><item><title>API Test Patterns: REST and GraphQL</title><category>api-testing</category><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;API Test Patterns: REST and GraphQL&lt;/h1&gt;
&lt;h2&gt;REST&lt;/h2&gt;
&lt;h3&gt;Request Builder&lt;/h3&gt;
&lt;p&gt;Encapsulate request construction. Keep tests readable and DRY.&lt;/p&gt;
&lt;p&gt;```python
class RestRequ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/04-api-test-patterns/01-rest-graphql/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/04-api-test-patterns/01-rest-graphql/</guid></item><item><title>API Test Patterns</title><category>api-testing</category><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;API Test Patterns&lt;/h1&gt;
&lt;p&gt;API Test Patterns covers test architecture patterns, data strategy, and execution reliability, with focused guides on REST GraphQL, gRPC...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/04-api-test-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 12 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/04-api-test-patterns/</guid></item><item><title>Screenplay Pattern</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Screenplay Pattern&lt;/h1&gt;
&lt;h2&gt;Concept&lt;/h2&gt;
&lt;p&gt;Screenplay models tests as actors performing tasks using abilities, rather than pages owning actions.&lt;/p&gt;
&lt;p&gt;```
Actor  →  perfor...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/02-core-patterns/02-screenplay-pattern/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/02-core-patterns/02-screenplay-pattern/</guid></item><item><title>Test Data Builder</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Test Data Builder&lt;/h1&gt;
&lt;h2&gt;Concept&lt;/h2&gt;
&lt;p&gt;A Builder provides a fluent interface for constructing test objects with sensible defaults,
overriding only the fields relev...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/02-core-patterns/03-test-data-builder/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/02-core-patterns/03-test-data-builder/</guid></item><item><title>Fixture Pattern and Factory Pattern</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Fixture Pattern and Factory Pattern&lt;/h1&gt;
&lt;h2&gt;Fixture Pattern&lt;/h2&gt;
&lt;h3&gt;Concept&lt;/h3&gt;
&lt;p&gt;A fixture is a reusable piece of setup (and optional teardown) that provides a known,...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/02-core-patterns/04-fixture-factory/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/02-core-patterns/04-fixture-factory/</guid></item><item><title>Advanced Patterns</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Advanced Patterns&lt;/h1&gt;
&lt;p&gt;Advanced Patterns covers test architecture patterns, data strategy, and execution reliability, with focused guides on Wrapper Fluent Int...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/03-advanced-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 11 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/03-advanced-patterns/</guid></item><item><title>Test Pyramid, Trophy and Core Principles</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Test Pyramid, Trophy and Core Principles&lt;/h1&gt;
&lt;h2&gt;Test Pyramid&lt;/h2&gt;
&lt;p&gt;```
        ▲
       /E2E\       ← few, slow, expensive
      /------\
     /  API   \    ← mode...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/01-fundamentals/02-test-pyramid-principles/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 10 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/01-fundamentals/02-test-pyramid-principles/</guid></item><item><title>Test Architecture</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Test Architecture&lt;/h1&gt;
&lt;h2&gt;Test Layers&lt;/h2&gt;
&lt;h3&gt;UI Layer&lt;/h3&gt;
&lt;p&gt;Responsibilities:
- Browser or native app interactions
- User journey validation
- Accessibility and visua...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/01-fundamentals/03-test-architecture/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 10 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/01-fundamentals/03-test-architecture/</guid></item><item><title>Page Object Model (POM)</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Page Object Model (POM)&lt;/h1&gt;
&lt;h2&gt;Concept&lt;/h2&gt;
&lt;p&gt;POM encapsulates all interactions with a UI page or component behind a dedicated class.
Tests call methods on the page...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/02-core-patterns/01-page-object-model/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 10 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/02-core-patterns/01-page-object-model/</guid></item><item><title>Core Patterns</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Core Patterns&lt;/h1&gt;
&lt;p&gt;Core Patterns covers test architecture patterns, data strategy, and execution reliability, with focused guides on Page Object Model, Screenp...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/02-core-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 10 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/02-core-patterns/</guid></item><item><title>Test Types and Levels</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Test Types and Levels&lt;/h1&gt;
&lt;h2&gt;Test Types&lt;/h2&gt;
&lt;h3&gt;Unit Tests&lt;/h3&gt;
&lt;p&gt;| Property | Value |
|---|---|
| Scope | Single function / class / module |
| Speed | Sub-millisecond...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/01-fundamentals/01-test-types-levels/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 09 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/01-fundamentals/01-test-types-levels/</guid></item><item><title>Fundamentals</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Fundamentals&lt;/h1&gt;
&lt;p&gt;Fundamentals covers test architecture patterns, data strategy, and execution reliability, with focused guides on Test Types Levels, Test Pyra...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/01-fundamentals/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 09 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/01-fundamentals/</guid></item><item><title>Test Design Patterns in Test Automation</title><category>design-patterns</category><category>test-automation</category><description>&lt;h1&gt;Test Design Patterns in Test Automation&lt;/h1&gt;
&lt;h2&gt;Section Descriptions&lt;/h2&gt;
&lt;h3&gt;1. &lt;a href=&quot;01-fundamentals/index.md&quot;&gt;Fundamentals&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;| File | Topics |
|------|--------|
| [T...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 09 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-patterns/</guid></item><item><title>Fuzz &amp; Random Testing</title><category>test-design</category><category>testing</category><description>&lt;h1&gt;Fuzz &amp;amp; Random Testing&lt;/h1&gt;
&lt;h2&gt;Concept&lt;/h2&gt;
&lt;p&gt;Fuzz testing sends unexpected, random, or malformed data to a system to expose crashes,
unhandled exceptions, and behavi...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-techniques/03-experience-based/03-fuzz-random-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 09 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-techniques/03-experience-based/03-fuzz-random-testing/</guid></item><item><title>State Transition Testing</title><category>test-design</category><category>testing</category><description>&lt;h1&gt;State Transition Testing&lt;/h1&gt;
&lt;h2&gt;Concept&lt;/h2&gt;
&lt;p&gt;State transition testing verifies that a system moves correctly between states.
It tests both valid transitions (allo...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-techniques/02-logic-state-based/02-state-transition/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 08 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-techniques/02-logic-state-based/02-state-transition/</guid></item><item><title>CRUD Testing</title><category>test-design</category><category>testing</category><description>&lt;h1&gt;CRUD Testing&lt;/h1&gt;
&lt;h2&gt;Concept&lt;/h2&gt;
&lt;p&gt;CRUD testing verifies the full data lifecycle: Create, Read, Update, Delete.
The key insight is to verify **data state after ever...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-techniques/03-experience-based/01-crud-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 08 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-techniques/03-experience-based/01-crud-testing/</guid></item><item><title>Metamorphic Testing</title><category>test-design</category><category>testing</category><description>&lt;h1&gt;Metamorphic Testing&lt;/h1&gt;
&lt;h2&gt;Concept&lt;/h2&gt;
&lt;p&gt;Metamorphic testing is used when there is no easy way to determine the exact expected output,
but you know the **relations...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-techniques/03-experience-based/02-metamorphic-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 08 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-techniques/03-experience-based/02-metamorphic-testing/</guid></item><item><title>Experience Based</title><category>test-design</category><category>testing</category><description>&lt;h1&gt;Experience Based&lt;/h1&gt;
&lt;p&gt;Experience Based covers test case design techniques and input/state coverage strategies, with focused guides on CRUD Testing, Metamorphic...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-techniques/03-experience-based/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 08 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-techniques/03-experience-based/</guid></item><item><title>Boundary Value Analysis</title><category>test-design</category><category>testing</category><description>&lt;h1&gt;Boundary Value Analysis&lt;/h1&gt;
&lt;h2&gt;Concept&lt;/h2&gt;
&lt;p&gt;Most bugs live on the edges of valid ranges. BVA focuses specifically on the minimum, maximum,
and values immediately ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-techniques/01-input-based/02-boundary-value-analysis/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-techniques/01-input-based/02-boundary-value-analysis/</guid></item><item><title>Pairwise Testing</title><category>test-design</category><category>testing</category><description>&lt;h1&gt;Pairwise Testing&lt;/h1&gt;
&lt;h2&gt;Concept&lt;/h2&gt;
&lt;p&gt;When there are many parameters with multiple values, exhaustive testing is impractical.
Pairwise testing covers every possibl...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-techniques/01-input-based/03-pairwise-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-techniques/01-input-based/03-pairwise-testing/</guid></item><item><title>Decision Table Testing</title><category>test-design</category><category>testing</category><description>&lt;h1&gt;Decision Table Testing&lt;/h1&gt;
&lt;h2&gt;Concept&lt;/h2&gt;
&lt;p&gt;When system behaviour depends on multiple conditions with multiple outcomes, a decision table
maps every combination of...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-techniques/02-logic-state-based/01-decision-table/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-techniques/02-logic-state-based/01-decision-table/</guid></item><item><title>Logic State Based</title><category>test-design</category><category>testing</category><description>&lt;h1&gt;Logic State Based&lt;/h1&gt;
&lt;p&gt;Logic State Based covers test case design techniques and input/state coverage strategies, with focused guides on Decision Table, State T...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-techniques/02-logic-state-based/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 07 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-techniques/02-logic-state-based/</guid></item><item><title>Shift-Left Testing</title><category>qa</category><category>test-strategy</category><category>testing</category><description>&lt;h1&gt;Shift-Left Testing&lt;/h1&gt;
&lt;h2&gt;Core Idea&lt;/h2&gt;
&lt;p&gt;Shift-left moves testing, security, and validation to the &lt;strong&gt;earliest possible stage&lt;/strong&gt;
of the development lifecycle. Inste...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/16-shift-left-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/16-shift-left-testing/</guid></item><item><title>Equivalence Partitioning</title><category>test-design</category><category>testing</category><description>&lt;h1&gt;Equivalence Partitioning&lt;/h1&gt;
&lt;h2&gt;Concept&lt;/h2&gt;
&lt;p&gt;Split all possible inputs into groups (partitions) where each value in the group behaves the same way.
Test one repre...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-techniques/01-input-based/01-equivalence-partitioning/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-techniques/01-input-based/01-equivalence-partitioning/</guid></item><item><title>Input Based</title><category>test-design</category><category>testing</category><description>&lt;h1&gt;Input Based&lt;/h1&gt;
&lt;p&gt;Input Based covers test case design techniques and input/state coverage strategies, with focused guides on Equivalence Partitioning, Boundary ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-techniques/01-input-based/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-techniques/01-input-based/</guid></item><item><title>Test Design Techniques</title><category>test-design</category><category>testing</category><description>&lt;h1&gt;Test Design Techniques&lt;/h1&gt;
&lt;hr /&gt;
&lt;h2&gt;Why Test Design Matters&lt;/h2&gt;
&lt;p&gt;Test design techniques are ways to stop testing randomly and start testing with logic.
They reduce...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/test-design-techniques/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 06 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/test-design-techniques/</guid></item><item><title>Defect Triage, Root Cause Analysis &amp; CAPA</title><category>qa</category><category>testing</category><description>&lt;h1&gt;Defect Triage, Root Cause Analysis &amp;amp; CAPA&lt;/h1&gt;
&lt;h2&gt;Defect triage&lt;/h2&gt;
&lt;p&gt;Triage decides what to fix first, what can wait, and what is not a bug.
It is a business-and-e...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/12-defect-triage-rca-capa/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 05 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/12-defect-triage-rca-capa/</guid></item><item><title>Coverage Strategy</title><category>qa</category><category>rag</category><category>testing</category><description>&lt;h1&gt;Coverage Strategy&lt;/h1&gt;
&lt;h2&gt;Coverage is not one number&lt;/h2&gt;
&lt;p&gt;Teams often reduce coverage to line or branch percentage. That is incomplete.
Useful coverage strategy co...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/13-coverage-strategy/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 05 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/13-coverage-strategy/</guid></item><item><title>Test Estimation &amp; Effort Planning</title><category>qa</category><category>testing</category><description>&lt;h1&gt;Test Estimation &amp;amp; Effort Planning&lt;/h1&gt;
&lt;h2&gt;Purpose&lt;/h2&gt;
&lt;p&gt;QA estimation is not guessing test case count. It is forecasting the effort
needed to reduce release risk to...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/14-estimation-effort-planning/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 05 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/14-estimation-effort-planning/</guid></item><item><title>Domain-Specific QA</title><category>qa</category><category>testing</category><description>&lt;h1&gt;Domain-Specific QA&lt;/h1&gt;
&lt;h2&gt;Why domain-specific QA matters&lt;/h2&gt;
&lt;p&gt;General testing principles stay the same, but failure modes change by system type.
Good QA strategy ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/15-domain-specific-qa/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 05 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/15-domain-specific-qa/</guid></item><item><title>Release Quality Gates, Flaky Tests &amp; Templates</title><category>qa</category><category>testing</category><description>&lt;h1&gt;Release Quality Gates, Flaky Tests &amp;amp; Templates&lt;/h1&gt;
&lt;h2&gt;Release Quality Gates (Merge/Deploy)&lt;/h2&gt;
&lt;p&gt;Use strict, measurable gates. If any gate fails, merge/deploy is b...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/08-release-quality-gates-checklists/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 04 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/08-release-quality-gates-checklists/</guid></item><item><title>Shift-Right Testing, SLO/Error Budget &amp; AI-Assisted QA (2026)</title><category>observability</category><category>qa</category><category>test-strategy</category><category>testing</category><description>&lt;h1&gt;Shift-Right Testing, SLO/Error Budget &amp;amp; AI-Assisted QA (2026)&lt;/h1&gt;
&lt;h2&gt;Shift-Right Testing&lt;/h2&gt;
&lt;p&gt;Shift-right extends quality validation into staging/production with ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/09-shift-right-observability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 04 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/09-shift-right-observability/</guid></item><item><title>Exploratory Testing &amp; Session-Based Test Management</title><category>qa</category><category>testing</category><description>&lt;h1&gt;Exploratory Testing &amp;amp; Session-Based Test Management&lt;/h1&gt;
&lt;h2&gt;What exploratory testing is&lt;/h2&gt;
&lt;p&gt;Exploratory testing is simultaneous learning, test design, and executi...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/10-exploratory-session-based-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 04 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/10-exploratory-session-based-testing/</guid></item><item><title>Requirements Quality &amp; Testability</title><category>qa</category><category>testing</category><description>&lt;h1&gt;Requirements Quality &amp;amp; Testability&lt;/h1&gt;
&lt;h2&gt;Why this matters&lt;/h2&gt;
&lt;p&gt;Many defects start before coding. Weak requirements create weak tests,
rework, and late defects. Q...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/11-requirements-quality-testability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 04 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/11-requirements-quality-testability/</guid></item><item><title>Test Execution, Defect Management &amp; Environments</title><category>qa</category><category>testing</category><description>&lt;h1&gt;Test Execution, Defect Management &amp;amp; Environments&lt;/h1&gt;
&lt;h2&gt;Test Execution&lt;/h2&gt;
&lt;h3&gt;Process&lt;/h3&gt;
&lt;p&gt;```
1. Verify entry criteria are met
2. Execute test cases (manual or aut...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/04-execution-defects-envs/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/04-execution-defects-envs/</guid></item><item><title>Test Automation, SDLC, Agile &amp; Risk-Based Testing</title><category>qa</category><category>testing</category><description>&lt;h1&gt;Test Automation, SDLC, Agile &amp;amp; Risk-Based Testing&lt;/h1&gt;
&lt;h2&gt;Test Automation Basics&lt;/h2&gt;
&lt;h3&gt;When to Automate&lt;/h3&gt;
&lt;p&gt;Automation pays off when a test is:&lt;/p&gt;
&lt;p&gt;| Signal | Rationa...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/05-automation-sdlc-agile/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/05-automation-sdlc-agile/</guid></item><item><title>Metrics, Documentation, Best Practices &amp; QA Roles</title><category>metrics</category><category>qa</category><category>testing</category><description>&lt;h1&gt;Metrics, Documentation, Best Practices &amp;amp; QA Roles&lt;/h1&gt;
&lt;h2&gt;Test Metrics&lt;/h2&gt;
&lt;p&gt;Metrics give stakeholders data-driven confidence and help QA improve continuously.&lt;/p&gt;
&lt;p&gt;| M...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/06-metrics-docs-practices-roles/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/06-metrics-docs-practices-roles/</guid></item><item><title>TDD, BDD &amp; ATDD</title><category>qa</category><category>tdd-bdd</category><category>testing</category><description>&lt;h1&gt;TDD, BDD &amp;amp; ATDD&lt;/h1&gt;
&lt;h2&gt;Overview&lt;/h2&gt;
&lt;p&gt;All three are &lt;strong&gt;test-first&lt;/strong&gt; approaches — tests are written before (or alongside)
production code. They differ in scope, audi...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/07-tdd-bdd-atdd/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 03 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/07-tdd-bdd-atdd/</guid></item><item><title>OWASP LLM Security Guide (2026)</title><category>llm</category><category>owasp</category><category>security</category><description>&lt;h1&gt;OWASP LLM Security Guide (2026)&lt;/h1&gt;
&lt;p&gt;Reference baseline: &lt;strong&gt;OWASP Top 10 for LLM Applications (2026)&lt;/strong&gt; from OWASP GenAI Security Project.&lt;/p&gt;
&lt;h2&gt;Why LLM Security I...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/owasp-llm-security/01-owasp-llm-security-guide/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/owasp-llm-security/01-owasp-llm-security-guide/</guid></item><item><title>OWASP LLM Security Testing Checklist (2026)</title><category>llm</category><category>owasp</category><category>security</category><description>&lt;h1&gt;OWASP LLM Security Testing Checklist (2026)&lt;/h1&gt;
&lt;p&gt;Use this checklist for pre-release validation and periodic regression testing.
Priority labels: &lt;strong&gt;[P0]&lt;/strong&gt; must-...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/owasp-llm-security/02-owasp-llm-security-testing-checklist/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/owasp-llm-security/02-owasp-llm-security-testing-checklist/</guid></item><item><title>QA &amp; Testing Fundamentals, Levels &amp; Types</title><category>qa</category><category>testing</category><description>&lt;h1&gt;QA &amp;amp; Testing Fundamentals, Levels &amp;amp; Types&lt;/h1&gt;
&lt;h2&gt;What is QA&lt;/h2&gt;
&lt;h3&gt;Quality Assurance vs Quality Control&lt;/h3&gt;
&lt;p&gt;| | QA | QC |
|---|---|---|
| Focus | &lt;strong&gt;Process&lt;/strong&gt; — pre...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/01-fundamentals-levels-types/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/01-fundamentals-levels-types/</guid></item><item><title>Test Design Techniques, Test Case Design &amp; Test Planning</title><category>qa</category><category>testing</category><description>&lt;h1&gt;Test Design Techniques, Test Case Design &amp;amp; Test Planning&lt;/h1&gt;
&lt;h2&gt;Test Design Techniques&lt;/h2&gt;
&lt;h3&gt;Black-Box Techniques&lt;/h3&gt;
&lt;p&gt;Test without knowledge of internal code. Inp...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/03-design-planning/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/03-design-planning/</guid></item><item><title>QA &amp;amp; Testing Methodology</title><category>qa</category><category>testing</category><description>&lt;h1&gt;QA &amp;amp; Testing Methodology&lt;/h1&gt;
&lt;p&gt;A complete reference for QA fundamentals, testing theory, process, and career growth.
Covers both conceptual knowledge (principle...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/qa-methodology/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 02 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/qa-methodology/</guid></item><item><title>OWASP API Security: Recommendations and Best Practices</title><category>api</category><category>owasp</category><category>security</category><description>&lt;h1&gt;OWASP API Security: Recommendations and Best Practices&lt;/h1&gt;
&lt;p&gt;Reference: &lt;strong&gt;OWASP API Security Top 10 (2023)&lt;/strong&gt; · OWASP REST Security Cheat Sheet.&lt;/p&gt;
&lt;h2&gt;Security Bas...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/owasp-api-security/01-owasp-api-recommendations/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/owasp-api-security/01-owasp-api-recommendations/</guid></item><item><title>OWASP API Security Testing Checklist</title><category>api</category><category>owasp</category><category>security</category><description>&lt;h1&gt;OWASP API Security Testing Checklist&lt;/h1&gt;
&lt;p&gt;Use this checklist for pre-release validation and periodic regression security testing.
Priority labels: &lt;strong&gt;[P0]&lt;/strong&gt; = m...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/owasp-api-security/02-owasp-api-testing-checklist/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/owasp-api-security/02-owasp-api-testing-checklist/</guid></item><item><title>OWASP API Advanced Controls</title><category>api</category><category>owasp</category><category>security</category><description>&lt;h1&gt;OWASP API Advanced Controls&lt;/h1&gt;
&lt;p&gt;Deeper controls that go beyond the per-risk baseline in &lt;a href=&quot;./01-owasp-api-recommendations.md&quot;&gt;01&lt;/a&gt;: token flows, webhooks, gatewa...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/owasp-api-security/03-owasp-api-advanced-controls/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/owasp-api-security/03-owasp-api-advanced-controls/</guid></item><item><title>OWASP LLM Security</title><category>llm</category><category>owasp</category><category>security</category><description>&lt;h1&gt;OWASP LLM Security&lt;/h1&gt;
&lt;p&gt;Practical knowledge-base section focused on &lt;strong&gt;OWASP Top 10 for LLM Applications (2026)&lt;/strong&gt; — risk guidance, architecture controls, and a ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/owasp-llm-security/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 01 Jul 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/owasp-llm-security/</guid></item><item><title>Auth, Config &amp; Security Headers</title><category>appsec</category><category>security</category><description>&lt;h1&gt;Auth, Config &amp;amp; Security Headers&lt;/h1&gt;
&lt;p&gt;&lt;strong&gt;Broken Access Control&lt;/strong&gt; is the &lt;strong&gt;#1 OWASP Top 10&lt;/strong&gt; risk — found in &lt;strong&gt;94% of applications&lt;/strong&gt;. Authentication flaws, miscon...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/code-security/04-auth-config-headers/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 30 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/code-security/04-auth-config-headers/</guid></item><item><title>CI/CD &amp; Monitoring</title><category>appsec</category><category>ci-cd</category><category>observability</category><category>security</category><description>&lt;h1&gt;CI/CD &amp;amp; Monitoring&lt;/h1&gt;
&lt;p&gt;A compromised CI/CD pipeline can &lt;strong&gt;exfiltrate every secret&lt;/strong&gt; and &lt;strong&gt;deploy backdoored code&lt;/strong&gt; to production. Pipeline security is as crit...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/code-security/05-cicd-monitoring/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 30 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/code-security/05-cicd-monitoring/</guid></item><item><title>Security Audit Checklist</title><category>appsec</category><category>security</category><description>&lt;h1&gt;Security Audit Checklist&lt;/h1&gt;
&lt;p&gt;A &lt;strong&gt;40-point&lt;/strong&gt; checklist for auditing code security. Run the full audit &lt;strong&gt;quarterly&lt;/strong&gt;. Between audits, automated scanning handles...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/code-security/06-security-audit-checklist/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 30 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/code-security/06-security-audit-checklist/</guid></item><item><title>OWASP API Security</title><category>api</category><category>owasp</category><category>security</category><description>&lt;h1&gt;OWASP API Security&lt;/h1&gt;
&lt;p&gt;Practical knowledge-base section focused on &lt;strong&gt;OWASP API Security Top 10 (2023)&lt;/strong&gt; — actionable recommendations, advanced controls, and a...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/owasp-api-security/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 30 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/owasp-api-security/</guid></item><item><title>Secrets &amp; Leak Prevention</title><category>appsec</category><category>security</category><description>&lt;h1&gt;Secrets &amp;amp; Leak Prevention&lt;/h1&gt;
&lt;p&gt;Hardcoded secrets are the &lt;strong&gt;easiest vulnerability&lt;/strong&gt; for attackers to exploit and the &lt;strong&gt;most common&lt;/strong&gt; in AI-generated code. In 20...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/code-security/01-secrets-leak-prevention/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/code-security/01-secrets-leak-prevention/</guid></item><item><title>Dependency Security</title><category>appsec</category><category>security</category><description>&lt;h1&gt;Dependency Security&lt;/h1&gt;
&lt;p&gt;Vulnerable dependencies are the &lt;strong&gt;#6 OWASP Top 10&lt;/strong&gt; risk. Your application inherits every vulnerability from every transitive dependen...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/code-security/02-dependency-security/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/code-security/02-dependency-security/</guid></item><item><title>Code Analysis &amp; Secure Review</title><category>appsec</category><category>security</category><description>&lt;h1&gt;Code Analysis &amp;amp; Secure Review&lt;/h1&gt;
&lt;p&gt;Static analysis catches vulnerabilities &lt;strong&gt;before code reaches production&lt;/strong&gt;. Combined with security-focused code review, it p...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/code-security/03-code-analysis-review/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/code-security/03-code-analysis-review/</guid></item><item><title>Code Security</title><category>appsec</category><category>security</category><description>&lt;h1&gt;Code Security&lt;/h1&gt;
&lt;p&gt;Practical guide covering &lt;strong&gt;code-level security&lt;/strong&gt; — secrets leak prevention, dependency hardening, static analysis, authentication patterns, ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/code-security/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 29 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/code-security/</guid></item><item><title>SKILL.md Universal Standard (2026)</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;SKILL.md Universal Standard (2026)&lt;/h1&gt;
&lt;p&gt;A practical guide to writing reusable, cross-agent &lt;code&gt;SKILL.md&lt;/code&gt; files using the &quot;Universal Standard&quot; model.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;What...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/16-skill-md-universal-standard/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/16-skill-md-universal-standard/</guid></item><item><title>Building Skills for Claude: Practical Playbook</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;Building Skills for Claude: Practical Playbook&lt;/h1&gt;
&lt;p&gt;Condensed guide with the most important ideas from the &quot;The Complete Guide to Building Skills for Claude&quot; d...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/17-building-skills-for-claude-playbook/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/17-building-skills-for-claude-playbook/</guid></item><item><title>Skills Troubleshooting &amp; Checklists</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;Skills Troubleshooting &amp;amp; Checklists&lt;/h1&gt;
&lt;p&gt;Operational checklist and failure playbook distilled from the Claude skills guide.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Pre-Build Checklist&lt;/h2&gt;
&lt;p&gt;Befor...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/18-skills-troubleshooting-checklists/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/18-skills-troubleshooting-checklists/</guid></item><item><title>Claude Code Commands Reference</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;Claude Code — Commands Reference&lt;/h1&gt;
&lt;p&gt;Complete reference for all built-in slash commands, keyboard shortcuts, and CLI flags.&lt;/p&gt;
&lt;p&gt;Type &lt;code&gt;/&lt;/code&gt; on an empty prompt to se...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/19-claude-code-commands-reference/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/19-claude-code-commands-reference/</guid></item><item><title>AGENTS.md Standard</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;AGENTS.md — The Universal Agent Instructions Standard&lt;/h1&gt;
&lt;h2&gt;What Is AGENTS.md&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;AGENTS.md&lt;/code&gt; is an open Markdown format — a &quot;README for AI coding agents.&quot; It p...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/12-agents-md/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/12-agents-md/</guid></item><item><title>SKILL.md Playground</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;SKILL.md Playground&lt;/h1&gt;
&lt;p&gt;Hands-on exercises for writing production-quality &lt;code&gt;SKILL.md&lt;/code&gt; files. Each exercise builds on the previous one.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Exercise 1 — Mi...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/13-skill-playground/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/13-skill-playground/</guid></item><item><title>AGENTS.md Playground</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;AGENTS.md Playground&lt;/h1&gt;
&lt;p&gt;Hands-on exercises for writing effective &lt;code&gt;AGENTS.md&lt;/code&gt; files. Each exercise targets a specific section — combine them in Exercise 6.&lt;/p&gt;
&lt;p&gt;-...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/14-agents-md-playground/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/14-agents-md-playground/</guid></item><item><title>Claude Code Project Structure</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;Claude Code Project Structure&lt;/h1&gt;
&lt;p&gt;A modular repository structure designed for building Claude Code projects with structured AI context, reusable skills, and a...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/15-claude-code-project-structure/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 27 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/15-claude-code-project-structure/</guid></item><item><title>Claude Code Hooks &amp; Agents</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;Claude Code Hooks &amp;amp; Agent Personas&lt;/h1&gt;
&lt;h2&gt;Hooks — Deterministic Automation&lt;/h2&gt;
&lt;p&gt;Hooks run deterministically at lifecycle events, while natural-language instructio...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/08-claude-code-hooks-agents/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 26 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/08-claude-code-hooks-agents/</guid></item><item><title>Claude Code Workflow Patterns</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;Claude Code Workflow Patterns&lt;/h1&gt;
&lt;h2&gt;Give Claude a Way to Verify&lt;/h2&gt;
&lt;p&gt;The single highest-leverage practice. Claude performs dramatically better when it can check ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/09-claude-code-workflow-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 26 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/09-claude-code-workflow-patterns/</guid></item><item><title>Claude Code Advanced Config</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;Claude Code Advanced Configuration&lt;/h1&gt;
&lt;h2&gt;Sandbox — OS-Level Isolation&lt;/h2&gt;
&lt;p&gt;Sandbox restricts filesystem and network access for all bash commands:&lt;/p&gt;
&lt;p&gt;```json
{
  &quot;s...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/10-claude-code-advanced-config/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 26 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/10-claude-code-advanced-config/</guid></item><item><title>Model Context Protocol (MCP)</title><category>ai-agents</category><category>coding-agents</category><category>mcp</category><description>&lt;h1&gt;Model Context Protocol (MCP)&lt;/h1&gt;
&lt;p&gt;MCP is an &lt;strong&gt;open protocol&lt;/strong&gt; (Linux Foundation, Dec 2025) that standardizes how AI agents connect to external tools, data sour...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/11-mcp-protocol/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 26 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/11-mcp-protocol/</guid></item><item><title>Orchestration &amp; Workflows</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;Orchestration &amp;amp; Workflows&lt;/h1&gt;
&lt;h2&gt;From Single Skills to Workflows&lt;/h2&gt;
&lt;p&gt;Individual skills solve local tasks. Workflow skills (orchestrators) chain them into end-to-...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/04-orchestration-workflows/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/04-orchestration-workflows/</guid></item><item><title>Evaluation &amp; Security</title><category>ai-agents</category><category>coding-agents</category><category>evaluation</category><category>security</category><description>&lt;h1&gt;Evaluation &amp;amp; Security&lt;/h1&gt;
&lt;h2&gt;Evaluation Strategy&lt;/h2&gt;
&lt;p&gt;Test skills at 3 levels:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Contract tests&lt;/strong&gt;: input/output schema conformance&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Behavior tests&lt;/strong&gt;: task...&lt;/li&gt;
&lt;/ol&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/05-evaluation-security/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/05-evaluation-security/</guid></item><item><title>Cross-Agent Compatibility</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;Cross-Agent Compatibility&lt;/h1&gt;
&lt;h2&gt;The Open Standard&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;SKILL.md&lt;/code&gt; is an open format. A single skill file works across multiple AI coding agents:&lt;/p&gt;
&lt;p&gt;| Agent | Skill...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/06-cross-agent-compatibility/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/06-cross-agent-compatibility/</guid></item><item><title>Claude Code Best Practices</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;Claude Code Best Practices&lt;/h1&gt;
&lt;h2&gt;Anatomy of the &lt;code&gt;.claude/&lt;/code&gt; Folder&lt;/h2&gt;
&lt;p&gt;Everything Claude Code needs to know about your project lives in one place:&lt;/p&gt;
&lt;p&gt;```text
your-...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/07-claude-code-best-practices/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/07-claude-code-best-practices/</guid></item><item><title>What Is a Skill</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;What Is a Skill&lt;/h1&gt;
&lt;h2&gt;Definition&lt;/h2&gt;
&lt;p&gt;A skill is a &lt;strong&gt;reusable, structured capability&lt;/strong&gt; for an AI coding agent. It packages:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;identity&lt;/strong&gt; — name + description ...&lt;/li&gt;
&lt;/ul&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/01-what-is-a-skill/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 24 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/01-what-is-a-skill/</guid></item><item><title>How Agents Load Skills</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;How Agents Load Skills&lt;/h1&gt;
&lt;h2&gt;Progressive Disclosure (3-Level Loading)&lt;/h2&gt;
&lt;p&gt;Skills use a layered loading model to keep the agent&apos;s context window efficient.&lt;/p&gt;
&lt;h3&gt;...&lt;/h3&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/02-how-agents-load-skills/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 24 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/02-how-agents-load-skills/</guid></item><item><title>Skill Packaging</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;Skill Packaging&lt;/h1&gt;
&lt;h2&gt;Standard Folder Layout&lt;/h2&gt;
&lt;p&gt;```text
skills/
  git-commit-creator/
    SKILL.md              ← required: identity + instructions
    README....&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/03-skill-packaging/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 24 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/03-skill-packaging/</guid></item><item><title>AI Skills for Coding Agents</title><category>ai-agents</category><category>coding-agents</category><description>&lt;h1&gt;AI Skills for Coding Agents&lt;/h1&gt;
&lt;p&gt;AI Skills are modular, reusable capabilities that turn general-purpose AI agents into domain specialists.&lt;/p&gt;
&lt;p&gt;A skill is &lt;strong&gt;not&lt;/strong&gt; ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/ai-skills/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 24 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/ai-skills/</guid></item><item><title>LLM Configuration, Model Selection &amp; Security</title><category>ai-agents</category><category>llm</category><category>security</category><description>&lt;h1&gt;LLM Configuration, Model Selection &amp;amp; Security&lt;/h1&gt;
&lt;h2&gt;LLM Parameters&lt;/h2&gt;
&lt;p&gt;| Parameter | Range | Recommendation | Effect |
|-----------|-------|----------------|---...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/agentic-ai-architecture/05-llm-config-security/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 23 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/agentic-ai-architecture/05-llm-config-security/</guid></item><item><title>Testing, Evaluation &amp; Observability</title><category>ai-agents</category><category>llm</category><category>observability</category><description>&lt;h1&gt;Testing, Evaluation &amp;amp; Observability&lt;/h1&gt;
&lt;h2&gt;Quality Metrics&lt;/h2&gt;
&lt;p&gt;| Metric | Measures | How to Measure |
|--------|----------|----------------|
| **Task Success Rat...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/agentic-ai-architecture/06-testing-observability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 23 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/agentic-ai-architecture/06-testing-observability/</guid></item><item><title>Agentic Search &amp; Context Engineering (2025+)</title><category>ai-agents</category><category>context-engineering</category><category>llm</category><description>&lt;h1&gt;Agentic Search &amp;amp; Context Engineering (2025+)&lt;/h1&gt;
&lt;h2&gt;Context Engineering vs Prompt Engineering&lt;/h2&gt;
&lt;p&gt;Prompt engineering optimizes &lt;strong&gt;wording&lt;/strong&gt;. Context engineering o...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/agentic-ai-architecture/07-agentic-search-context-engineering/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 23 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/agentic-ai-architecture/07-agentic-search-context-engineering/</guid></item><item><title>Vectorless RAG</title><category>ai-agents</category><category>llm</category><category>rag</category><description>&lt;h1&gt;Vectorless RAG&lt;/h1&gt;
&lt;h2&gt;What Is Vectorless RAG?&lt;/h2&gt;
&lt;p&gt;Traditional RAG converts documents into vector embeddings and retrieves by similarity search.
Vectorless RAG el...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/agentic-ai-architecture/08-vectorless-rag/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 23 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/agentic-ai-architecture/08-vectorless-rag/</guid></item><item><title>Agentic AI — Fundamentals &amp; Core Components</title><category>ai-agents</category><category>llm</category><description>&lt;h1&gt;Agentic AI — Fundamentals &amp;amp; Core Components&lt;/h1&gt;
&lt;h2&gt;What Is Agentic AI&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Agentic AI&lt;/strong&gt; is a system where an LLM acts as an autonomous agent that:
- Sets sub-go...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/agentic-ai-architecture/01-fundamentals-components/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 22 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/agentic-ai-architecture/01-fundamentals-components/</guid></item><item><title>Multi-Agent Architecture Patterns</title><category>ai-agents</category><category>llm</category><description>&lt;h1&gt;Multi-Agent Architecture Patterns&lt;/h1&gt;
&lt;p&gt;Use multi-agent systems when tasks are complex, multi-stage, or need specialization.
Each agent has its own reasoning lo...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/agentic-ai-architecture/02-multi-agent-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 22 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/agentic-ai-architecture/02-multi-agent-patterns/</guid></item><item><title>Memory &amp; Retrieval-Augmented Generation (RAG)</title><category>ai-agents</category><category>llm</category><category>rag</category><description>&lt;h1&gt;Memory &amp;amp; Retrieval-Augmented Generation (RAG)&lt;/h1&gt;
&lt;h2&gt;Memory Architecture&lt;/h2&gt;
&lt;p&gt;Agents usually use two memory layers:&lt;/p&gt;
&lt;h3&gt;Short-Term Memory (STM)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Holds the curr...&lt;/li&gt;
&lt;/ul&gt;</description><link>https://serhiismetanskyi.com/docs/agentic-ai-architecture/03-memory-rag/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 22 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/agentic-ai-architecture/03-memory-rag/</guid></item><item><title>Tool Integration &amp; Prompt Engineering</title><category>ai-agents</category><category>llm</category><description>&lt;h1&gt;Tool Integration &amp;amp; Prompt Engineering&lt;/h1&gt;
&lt;h2&gt;Tool Integration&lt;/h2&gt;
&lt;h3&gt;Function Calling (OpenAI Style)&lt;/h3&gt;
&lt;p&gt;Define JSON schemas for functions. The LLM decides when an...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/agentic-ai-architecture/04-tool-integration-prompting/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 22 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/agentic-ai-architecture/04-tool-integration-prompting/</guid></item><item><title>Agentic AI Architecture</title><category>ai-agents</category><category>llm</category><description>&lt;h1&gt;Agentic AI Architecture&lt;/h1&gt;
&lt;p&gt;Agentic AI is an architecture where an LLM acts as an &lt;strong&gt;autonomous agent&lt;/strong&gt;.
It plans and executes multi-step tasks with memory and...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/agentic-ai-architecture/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 22 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/agentic-ai-architecture/</guid></item><item><title>Pattern Comparison and Testing Strategies</title><category>architecture</category><category>design-patterns</category><category>testing</category><description>&lt;h1&gt;Pattern Comparison and Testing Strategies&lt;/h1&gt;
&lt;p&gt;Simple English (B1). Comparisons help you pick a pattern. Testing proves the boundaries behave as designed.&lt;/p&gt;
&lt;h2&gt;...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/07-decisions-testing-production/01-comparison-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/07-decisions-testing-production/01-comparison-testing/</guid></item><item><title>Anti-Patterns, Real-World Usage, Heuristics, and Decision Factors</title><category>architecture</category><category>design-patterns</category><category>testing</category><description>&lt;h1&gt;Anti-Patterns, Real-World Usage, Heuristics, and Decision Factors&lt;/h1&gt;
&lt;p&gt;Simple English (B1). Senior readers: names stay standard; text stays short.&lt;/p&gt;
&lt;h2&gt;Producti...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/07-decisions-testing-production/02-antipatterns-real-world/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/07-decisions-testing-production/02-antipatterns-real-world/</guid></item><item><title>Microservice Production Readiness Checklist</title><category>architecture</category><category>design-patterns</category><category>testing</category><description>&lt;h1&gt;Microservice Production Readiness Checklist&lt;/h1&gt;
&lt;p&gt;Use before deploying any new service to production. Each section is a gate.&lt;/p&gt;
&lt;hr /&gt;
&lt;h2&gt;Observability&lt;/h2&gt;
&lt;h3&gt;Loggin...&lt;/h3&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/07-decisions-testing-production/03-production-readiness/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/07-decisions-testing-production/03-production-readiness/</guid></item><item><title>Decisions Testing Production</title><category>architecture</category><category>design-patterns</category><category>testing</category><description>&lt;h1&gt;Decisions Testing Production&lt;/h1&gt;
&lt;p&gt;Decisions Testing Production covers design principles, patterns, architecture decisions, and anti-patterns, with focused guid...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/07-decisions-testing-production/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 21 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/07-decisions-testing-production/</guid></item><item><title>Queues vs Streams: Message Delivery, Ordering &amp; Reliability</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Queues vs Streams: Message Delivery, Ordering &amp;amp; Reliability&lt;/h1&gt;
&lt;h2&gt;Core Distinction&lt;/h2&gt;
&lt;p&gt;The fundamental split is about &lt;strong&gt;message lifecycle&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;| Concept | Queue ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/05-composition-architectural/04-queues-streams-messaging/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/05-composition-architectural/04-queues-streams-messaging/</guid></item><item><title>View Layer Patterns</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;View Layer Patterns&lt;/h1&gt;
&lt;p&gt;Patterns for building the user-facing layer in a Python-centric stack.&lt;/p&gt;
&lt;h2&gt;Template-Based Architecture&lt;/h2&gt;
&lt;p&gt;The view is built from small, ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/06-frontend-cross-layer/01-frontend-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/06-frontend-cross-layer/01-frontend-patterns/</guid></item><item><title>Cross-Layer Design Patterns</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Cross-Layer Design Patterns&lt;/h1&gt;
&lt;p&gt;Patterns that touch both client and server: shared shapes, validation, and types at boundaries.&lt;/p&gt;
&lt;h2&gt;Shared Contracts (DTOs)&lt;/h2&gt;
&lt;p&gt;D...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/06-frontend-cross-layer/02-cross-layer-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/06-frontend-cross-layer/02-cross-layer-patterns/</guid></item><item><title>Frontend Cross Layer</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Frontend Cross Layer&lt;/h1&gt;
&lt;p&gt;Frontend Cross Layer covers design principles, patterns, architecture decisions, and anti-patterns, with focused guides on Frontend P...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/06-frontend-cross-layer/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 20 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/06-frontend-cross-layer/</guid></item><item><title>Composition and Advanced Structuring Patterns</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Composition and Advanced Structuring Patterns&lt;/h1&gt;
&lt;h2&gt;Layout Composer Pattern&lt;/h2&gt;
&lt;p&gt;Compose complex UI from smaller, reusable components. Separate
what a component ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/05-composition-architectural/01-composition-advanced/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/05-composition-architectural/01-composition-advanced/</guid></item><item><title>Architectural Patterns: Layered, Clean, Hexagonal</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Architectural Patterns: Layered, Clean, Hexagonal&lt;/h1&gt;
&lt;h2&gt;Layered Architecture&lt;/h2&gt;
&lt;p&gt;Code is organized in horizontal layers. Each layer has one role.
Dependencies f...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/05-composition-architectural/02-architectural-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/05-composition-architectural/02-architectural-patterns/</guid></item><item><title>Architectural Patterns: Microservices, Event-Driven, Isomorphic</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Architectural Patterns: Microservices, Event-Driven, Isomorphic&lt;/h1&gt;
&lt;h2&gt;Microservices&lt;/h2&gt;
&lt;p&gt;Each domain is a separate service: its own codebase, deployment, and dat...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/05-composition-architectural/03-event-driven-isomorphic/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/05-composition-architectural/03-event-driven-isomorphic/</guid></item><item><title>Composition Architectural</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Composition Architectural&lt;/h1&gt;
&lt;p&gt;Composition Architectural covers design principles, patterns, architecture decisions, and anti-patterns, with focused guides on ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/05-composition-architectural/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 19 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/05-composition-architectural/</guid></item><item><title>Behavioral Patterns: Strategy, Observer, Command</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Behavioral Patterns: Strategy, Observer, Command&lt;/h1&gt;
&lt;p&gt;Behavioral patterns describe how objects talk to each other and share work. This note covers three classi...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/04-behavioral-patterns/01-strategy-observer-command/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/04-behavioral-patterns/01-strategy-observer-command/</guid></item><item><title>Behavioral Patterns: Chain of Responsibility, State, Mediator</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Behavioral Patterns: Chain of Responsibility, State, Mediator&lt;/h1&gt;
&lt;h2&gt;Chain of Responsibility&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Idea:&lt;/strong&gt; Send a request through a line of handlers. Each handle...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/04-behavioral-patterns/02-chain-state-mediator/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/04-behavioral-patterns/02-chain-state-mediator/</guid></item><item><title>Behavioral Patterns: Iterator, Template Method, Visitor</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Behavioral Patterns: Iterator, Template Method, Visitor&lt;/h1&gt;
&lt;h2&gt;Iterator&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Idea:&lt;/strong&gt; Walk through a collection step by step without knowing its inner layout.&lt;/p&gt;
&lt;p&gt;P...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/04-behavioral-patterns/03-iterator-template-visitor/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/04-behavioral-patterns/03-iterator-template-visitor/</guid></item><item><title>Behavioral Patterns</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Behavioral Patterns&lt;/h1&gt;
&lt;p&gt;Behavioral Patterns covers design principles, patterns, architecture decisions, and anti-patterns, with focused guides on Strategy Obs...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/04-behavioral-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 18 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/04-behavioral-patterns/</guid></item><item><title>Creational Patterns</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Creational Patterns&lt;/h1&gt;
&lt;p&gt;Creational patterns control how objects are created. They remove direct coupling between code and specific classes.&lt;/p&gt;
&lt;h2&gt;Singleton&lt;/h2&gt;
&lt;p&gt;Ens...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/02-creational-patterns/01-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/02-creational-patterns/01-patterns/</guid></item><item><title>Structural Patterns: Adapter, Decorator, Facade</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Structural Patterns: Adapter, Decorator, Facade&lt;/h1&gt;
&lt;p&gt;Structural patterns describe how objects and classes are composed to form larger structures.&lt;/p&gt;
&lt;h2&gt;Adapter&lt;/h2&gt;
&lt;p&gt;...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/03-structural-patterns/01-adapter-decorator-facade/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/03-structural-patterns/01-adapter-decorator-facade/</guid></item><item><title>Structural Patterns: Proxy, Composite, Bridge, Flyweight</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Structural Patterns: Proxy, Composite, Bridge, Flyweight&lt;/h1&gt;
&lt;h2&gt;Proxy&lt;/h2&gt;
&lt;p&gt;Controls access to another object. Used for: lazy initialization, access control, cachi...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/03-structural-patterns/02-proxy-composite-bridge-flyweight/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/03-structural-patterns/02-proxy-composite-bridge-flyweight/</guid></item><item><title>Structural Patterns</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Structural Patterns&lt;/h1&gt;
&lt;p&gt;Structural Patterns covers design principles, patterns, architecture decisions, and anti-patterns, with focused guides on Adapter Deco...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/03-structural-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 17 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/03-structural-patterns/</guid></item><item><title>Design Principles: Beyond SOLID</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Design Principles: Beyond SOLID&lt;/h1&gt;
&lt;p&gt;SOLID is not the whole story. These ideas work in any language. They reduce accidental complexity and make systems easier ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/01-design-principles/02-fundamental-principles/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/01-design-principles/02-fundamental-principles/</guid></item><item><title>Clean Code</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Clean Code&lt;/h1&gt;
&lt;p&gt;Clean code is code that a new team member can read and understand without asking questions.
It is not about style preferences — it is about red...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/01-design-principles/03-clean-code/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/01-design-principles/03-clean-code/</guid></item><item><title>Code Quality Tools</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Code Quality Tools&lt;/h1&gt;
&lt;p&gt;Clean code principles are enforced by humans during review — but code quality tools
catch violations **automatically, before review eve...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/01-design-principles/04-code-quality-tools/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/01-design-principles/04-code-quality-tools/</guid></item><item><title>Creational Patterns</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Creational Patterns&lt;/h1&gt;
&lt;p&gt;Creational Patterns covers design principles, patterns, architecture decisions, and anti-patterns, with focused guides on Patterns.&lt;/p&gt;
&lt;h1&gt;...&lt;/h1&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/02-creational-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/02-creational-patterns/</guid></item><item><title>OOP — Fundamentals</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;OOP — Fundamentals&lt;/h1&gt;
&lt;p&gt;Object-Oriented Programming organizes code around &lt;strong&gt;objects&lt;/strong&gt; — entities that bundle
state (data) and behavior (methods) together. Four...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/01-design-principles/00-oop-fundamentals/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/01-design-principles/00-oop-fundamentals/</guid></item><item><title>Design Principles: SOLID</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Design Principles: SOLID&lt;/h1&gt;
&lt;p&gt;SOLID is a set of five principles for writing maintainable, extensible software. Robert C. Martin defined them. Each principle ta...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/01-design-principles/01-solid-principles/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/01-design-principles/01-solid-principles/</guid></item><item><title>Design Principles</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Design Principles&lt;/h1&gt;
&lt;p&gt;Design Principles covers design principles, patterns, architecture decisions, and anti-patterns, with focused guides on Oop Fundamentals...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/01-design-principles/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/01-design-principles/</guid></item><item><title>Software Design Patterns and Principles</title><category>architecture</category><category>design-patterns</category><description>&lt;h1&gt;Software Design Patterns and Principles&lt;/h1&gt;
&lt;h2&gt;Section Descriptions&lt;/h2&gt;
&lt;h3&gt;1. &lt;a href=&quot;01-design-principles/index.md&quot;&gt;Design Principles&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;| File | Topics |
|------|----...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/software-design-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 15 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/software-design-patterns/</guid></item><item><title>Testing</title><category>architecture</category><category>networking</category><category>testing</category><description>&lt;h1&gt;Testing&lt;/h1&gt;
&lt;h2&gt;15.1 API Testing&lt;/h2&gt;
&lt;p&gt;Test every protocol at the HTTP/contract level. Each protocol has specific tools and scenarios.&lt;/p&gt;
&lt;h3&gt;REST and GraphQL&lt;/h3&gt;
&lt;p&gt;Use **...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/07-testing-risks-patterns/01-testing/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/07-testing-risks-patterns/01-testing/</guid></item><item><title>Risks, Limitations, and Anti-Patterns</title><category>architecture</category><category>networking</category><category>testing</category><description>&lt;h1&gt;Risks, Limitations, and Anti-Patterns&lt;/h1&gt;
&lt;h2&gt;16. Architectural Risks&lt;/h2&gt;
&lt;h3&gt;16.1 Distributed Complexity&lt;/h3&gt;
&lt;p&gt;Every service call can fail, be slow, or return unexpec...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/07-testing-risks-patterns/02-risks-anti-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/07-testing-risks-patterns/02-risks-anti-patterns/</guid></item><item><title>Real-World Patterns and Decision Factors</title><category>architecture</category><category>networking</category><category>testing</category><description>&lt;h1&gt;Real-World Patterns and Decision Factors&lt;/h1&gt;
&lt;h2&gt;18. Real-World Patterns&lt;/h2&gt;
&lt;p&gt;These are proven architecture patterns used in production systems.
Each pattern addre...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/07-testing-risks-patterns/03-real-world-decision-factors/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/07-testing-risks-patterns/03-real-world-decision-factors/</guid></item><item><title>Testing Risks Patterns</title><category>architecture</category><category>networking</category><category>testing</category><description>&lt;h1&gt;Testing Risks Patterns&lt;/h1&gt;
&lt;p&gt;Testing Risks Patterns covers client-server boundaries, traffic management, scalability, and resilience, with focused guides on Tes...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/07-testing-risks-patterns/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 14 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/07-testing-risks-patterns/</guid></item><item><title>Reliability</title><category>architecture</category><category>networking</category><category>observability</category><category>reliability</category><category>security</category><description>&lt;h1&gt;Reliability&lt;/h1&gt;
&lt;p&gt;Reliability means the system works correctly under failures. Not if failures happen, but when.&lt;/p&gt;
&lt;h2&gt;12.1 Retry&lt;/h2&gt;
&lt;p&gt;When a request fails, retry aft...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/06-reliability-security-observability/01-reliability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/06-reliability-security-observability/01-reliability/</guid></item><item><title>Security</title><category>architecture</category><category>networking</category><category>observability</category><category>reliability</category><category>security</category><description>&lt;h1&gt;Security&lt;/h1&gt;
&lt;p&gt;Security is defense in depth. Multiple layers. No single layer is sufficient alone.&lt;/p&gt;
&lt;h2&gt;13.1 Authentication&lt;/h2&gt;
&lt;h3&gt;JWT (JSON Web Token)&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Stateless...&lt;/li&gt;
&lt;/ul&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/06-reliability-security-observability/02-security/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/06-reliability-security-observability/02-security/</guid></item><item><title>Observability</title><category>architecture</category><category>networking</category><category>observability</category><category>reliability</category><category>security</category><description>&lt;h1&gt;Observability&lt;/h1&gt;
&lt;p&gt;Observability means you can understand what the system is doing from its outputs. Three pillars: logs, metrics, traces.&lt;/p&gt;
&lt;h2&gt;14.1 Logging&lt;/h2&gt;
&lt;h2&gt;...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/06-reliability-security-observability/03-observability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/06-reliability-security-observability/03-observability/</guid></item><item><title>Reliability Security Observability</title><category>architecture</category><category>networking</category><category>observability</category><category>reliability</category><category>security</category><description>&lt;h1&gt;Reliability Security Observability&lt;/h1&gt;
&lt;p&gt;Reliability Security Observability covers client-server boundaries, traffic management, scalability, and resilience, wi...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/06-reliability-security-observability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 13 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/06-reliability-security-observability/</guid></item><item><title>Client Architecture</title><category>architecture</category><category>networking</category><category>performance</category><description>&lt;h1&gt;Client Architecture&lt;/h1&gt;
&lt;h2&gt;9.1 Data Fetching&lt;/h2&gt;
&lt;p&gt;Modern clients separate data fetching from UI rendering. Use a data-fetching
layer, not raw HTTP calls scattered...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/05-client-scalability-performance/01-client-architecture/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/05-client-scalability-performance/01-client-architecture/</guid></item><item><title>Scalability</title><category>architecture</category><category>networking</category><category>performance</category><description>&lt;h1&gt;Scalability&lt;/h1&gt;
&lt;h2&gt;10.1 Horizontal Scaling&lt;/h2&gt;
&lt;p&gt;Add more instances behind a load balancer. This is the primary scaling strategy
for stateless services.&lt;/p&gt;
&lt;p&gt;**Statele...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/05-client-scalability-performance/02-scalability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/05-client-scalability-performance/02-scalability/</guid></item><item><title>Performance</title><category>architecture</category><category>networking</category><category>performance</category><description>&lt;h1&gt;Performance&lt;/h1&gt;
&lt;h2&gt;11.1 Latency&lt;/h2&gt;
&lt;h3&gt;Sources of latency&lt;/h3&gt;
&lt;p&gt;| Source                  | Typical cost      | Mitigation                                  |
| -----...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/05-client-scalability-performance/03-performance/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/05-client-scalability-performance/03-performance/</guid></item><item><title>Client Scalability Performance</title><category>architecture</category><category>networking</category><category>performance</category><description>&lt;h1&gt;Client Scalability Performance&lt;/h1&gt;
&lt;p&gt;Client Scalability Performance covers client-server boundaries, traffic management, scalability, and resilience, with focus...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/05-client-scalability-performance/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 12 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/05-client-scalability-performance/</guid></item><item><title>Traffic Management</title><category>architecture</category><category>networking</category><category>service-mesh</category><description>&lt;h1&gt;Traffic Management&lt;/h1&gt;
&lt;h2&gt;4.1 Routing&lt;/h2&gt;
&lt;h3&gt;Path-based routing&lt;/h3&gt;
&lt;p&gt;Route requests based on URL path:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;/api/v1/users&lt;/code&gt; → user service&lt;/li&gt;
&lt;li&gt;&lt;code&gt;/api/v1/orders&lt;/code&gt; → order ...&lt;/li&gt;
&lt;/ul&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/03-traffic-service-mesh/01-traffic-management/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/03-traffic-service-mesh/01-traffic-management/</guid></item><item><title>Service Layer and Service Mesh</title><category>architecture</category><category>networking</category><category>service-mesh</category><description>&lt;h1&gt;Service Layer and Service Mesh&lt;/h1&gt;
&lt;h2&gt;5.1 Backend Architecture&lt;/h2&gt;
&lt;h3&gt;Monolith&lt;/h3&gt;
&lt;p&gt;All functionality lives in one deployable unit. One codebase, one database, one ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/03-traffic-service-mesh/02-service-layer-mesh/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/03-traffic-service-mesh/02-service-layer-mesh/</guid></item><item><title>Connection Management</title><category>architecture</category><category>networking</category><description>&lt;h1&gt;Connection Management&lt;/h1&gt;
&lt;p&gt;Connection management is about keeping network connections alive and efficient.
Every new connection costs time (TCP handshake + TLS...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/04-connections-backpressure/01-connection-management/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/04-connections-backpressure/01-connection-management/</guid></item><item><title>Backpressure and Flow Control</title><category>architecture</category><category>networking</category><description>&lt;h1&gt;Backpressure and Flow Control&lt;/h1&gt;
&lt;p&gt;Backpressure is what happens when a producer sends data faster than a consumer can process it.
Without control, memory grows...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/04-connections-backpressure/02-backpressure-flow-control/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/04-connections-backpressure/02-backpressure-flow-control/</guid></item><item><title>Connections Backpressure</title><category>architecture</category><category>networking</category><description>&lt;h1&gt;Connections Backpressure&lt;/h1&gt;
&lt;p&gt;Connections Backpressure covers client-server boundaries, traffic management, scalability, and resilience, with focused guides on...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/04-connections-backpressure/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/04-connections-backpressure/</guid></item><item><title>Edge Layer: CDN and Load Balancers</title><category>architecture</category><category>networking</category><description>&lt;h1&gt;Edge Layer: CDN and Load Balancers&lt;/h1&gt;
&lt;h2&gt;3.1 CDN (Content Delivery Network)&lt;/h2&gt;
&lt;p&gt;A CDN is a network of geographically distributed servers called **PoPs (Points o...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/02-edge-layer/01-cdn-load-balancer/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/02-edge-layer/01-cdn-load-balancer/</guid></item><item><title>Edge Layer: Reverse Proxy, Forward Proxy, API Gateway, WAF</title><category>architecture</category><category>networking</category><description>&lt;h1&gt;Edge Layer: Reverse Proxy, Forward Proxy, API Gateway, WAF&lt;/h1&gt;
&lt;h2&gt;3.3 Reverse Proxy&lt;/h2&gt;
&lt;p&gt;A reverse proxy sits &lt;strong&gt;in front of backend servers&lt;/strong&gt; and receives all inc...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/02-edge-layer/02-reverse-proxy-api-gateway/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/02-edge-layer/02-reverse-proxy-api-gateway/</guid></item><item><title>Edge Layer</title><category>architecture</category><category>networking</category><description>&lt;h1&gt;Edge Layer&lt;/h1&gt;
&lt;p&gt;Edge Layer covers client-server boundaries, traffic management, scalability, and resilience, with focused guides on CDN Load Balancer, Reverse ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/02-edge-layer/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/02-edge-layer/</guid></item><item><title>Traffic Service Mesh</title><category>architecture</category><category>networking</category><category>service-mesh</category><description>&lt;h1&gt;Traffic Service Mesh&lt;/h1&gt;
&lt;p&gt;Traffic Service Mesh covers client-server boundaries, traffic management, scalability, and resilience, with focused guides on Traffic...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/03-traffic-service-mesh/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/03-traffic-service-mesh/</guid></item><item><title>Client-Server Architecture: Core Model</title><category>architecture</category><category>networking</category><description>&lt;h1&gt;Client-Server Architecture: Core Model&lt;/h1&gt;
&lt;h2&gt;1.1 Responsibilities&lt;/h2&gt;
&lt;p&gt;Client and server have clear, separate responsibilities. This separation is fundamental to...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/01-core-model/01-responsibilities-communication/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/01-core-model/01-responsibilities-communication/</guid></item><item><title>Client-Server: API Architectures Overview</title><category>architecture</category><category>networking</category><description>&lt;h1&gt;Client-Server: API Architectures Overview&lt;/h1&gt;
&lt;p&gt;This document gives a quick summary of API architecture choices in the context of
client-server systems. For dee...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/01-core-model/02-api-architectures-overview/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/01-core-model/02-api-architectures-overview/</guid></item><item><title>Core Model</title><category>architecture</category><category>networking</category><description>&lt;h1&gt;Core Model&lt;/h1&gt;
&lt;p&gt;Core Model covers client-server boundaries, traffic management, scalability, and resilience, with focused guides on Responsibilities Communicat...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/01-core-model/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/01-core-model/</guid></item><item><title>Client–Server Architecture</title><category>architecture</category><category>networking</category><description>&lt;h1&gt;Client–Server Architecture&lt;/h1&gt;
&lt;h2&gt;Section Descriptions&lt;/h2&gt;
&lt;h3&gt;1. &lt;a href=&quot;01-core-model/index.md&quot;&gt;Core Model&lt;/a&gt;&lt;/h3&gt;
&lt;p&gt;| File | Topics |
|------|--------|
| [Responsibilities &amp;amp;...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/client-server-architecture/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 09 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/client-server-architecture/</guid></item><item><title>Cross-Cutting: Performance, Scalability and Reliability</title><category>api</category><category>architecture</category><category>observability</category><category>reliability</category><category>security</category><description>&lt;h1&gt;Cross-Cutting: Performance, Scalability and Reliability&lt;/h1&gt;
&lt;h2&gt;Performance&lt;/h2&gt;
&lt;h3&gt;Latency&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Target SLOs&lt;/strong&gt;: p50 &amp;lt; 100ms, p95 &amp;lt; 500ms, p99 &amp;lt; 1000ms for most AP...&lt;/li&gt;
&lt;/ul&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/05-cross-cutting/02-performance-reliability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/05-cross-cutting/02-performance-reliability/</guid></item><item><title>Cross-Cutting: SLO, Error Budget, Incident Playbook</title><category>api</category><category>architecture</category><category>observability</category><category>reliability</category><category>security</category><description>&lt;h1&gt;Cross-Cutting: SLO, Error Budget, Incident Playbook&lt;/h1&gt;
&lt;p&gt;This document adds an actionable reliability policy for API teams.&lt;/p&gt;
&lt;h2&gt;SLO baseline model&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Availabil...&lt;/li&gt;
&lt;/ul&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/05-cross-cutting/03-slo-error-budget-incident-playbook/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/05-cross-cutting/03-slo-error-budget-incident-playbook/</guid></item><item><title>API Architecture: Decision Factors and Comparison Guide</title><category>api</category><category>architecture</category><description>&lt;h1&gt;API Architecture: Decision Factors and Comparison Guide&lt;/h1&gt;
&lt;h2&gt;Comparison Table&lt;/h2&gt;
&lt;p&gt;| Factor | REST | GraphQL | gRPC | WebSocket |
|--------|------|---------|---...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/06-decision-factors/01-comparison-guide/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/06-decision-factors/01-comparison-guide/</guid></item><item><title>Decision Factors</title><category>api</category><category>architecture</category><description>&lt;h1&gt;Decision Factors&lt;/h1&gt;
&lt;p&gt;Decision Factors covers API styles, contracts, performance, and reliability, with focused guides on Comparison Guide.&lt;/p&gt;
&lt;h2&gt;Guides&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;[Comp...&lt;/li&gt;
&lt;/ul&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/06-decision-factors/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 08 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/06-decision-factors/</guid></item><item><title>WebSocket: Code Examples (Python + Pydantic + Playwright)</title><category>api</category><category>architecture</category><category>websocket</category><description>&lt;h1&gt;WebSocket: Code Examples (Python + Pydantic + Playwright)&lt;/h1&gt;
&lt;h2&gt;1. Pydantic Models for WebSocket Messages&lt;/h2&gt;
&lt;p&gt;```python
from pydantic import BaseModel, Field
fr...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/04-websocket/04-code-examples/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/04-websocket/04-code-examples/</guid></item><item><title>WebSocket: Reliability Pattern</title><category>api</category><category>architecture</category><category>websocket</category><description>&lt;h1&gt;WebSocket: Reliability Pattern&lt;/h1&gt;
&lt;p&gt;WebSocket does not provide exactly-once delivery by default.
This document describes a practical &quot;exactly-once-like&quot; patter...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/04-websocket/05-reliability-pattern/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/04-websocket/05-reliability-pattern/</guid></item><item><title>Cross-Cutting: Security and Observability</title><category>api</category><category>architecture</category><category>observability</category><category>reliability</category><category>security</category><description>&lt;h1&gt;Cross-Cutting: Security and Observability&lt;/h1&gt;
&lt;h2&gt;Security&lt;/h2&gt;
&lt;h3&gt;Authentication&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;JWT (JSON Web Token)&lt;/strong&gt;: most common for APIs. Three parts: header.payload.s...&lt;/li&gt;
&lt;/ul&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/05-cross-cutting/01-security-observability/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/05-cross-cutting/01-security-observability/</guid></item><item><title>Cross Cutting</title><category>api</category><category>architecture</category><category>observability</category><category>reliability</category><category>security</category><description>&lt;h1&gt;Cross Cutting&lt;/h1&gt;
&lt;p&gt;Cross Cutting covers API styles, contracts, performance, and reliability, with focused guides on Security Observability, Performance Reliabi...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/05-cross-cutting/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sun, 07 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/05-cross-cutting/</guid></item><item><title>WebSocket: Protocol, Communication and Messages</title><category>api</category><category>architecture</category><category>websocket</category><description>&lt;h1&gt;WebSocket: Protocol, Communication and Messages&lt;/h1&gt;
&lt;h2&gt;4.1 Protocol&lt;/h2&gt;
&lt;p&gt;WebSocket is a protocol for persistent, bidirectional communication between client and se...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/04-websocket/01-protocol-communication/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/04-websocket/01-protocol-communication/</guid></item><item><title>WebSocket: State Management, Scaling and Backpressure</title><category>api</category><category>architecture</category><category>websocket</category><description>&lt;h1&gt;WebSocket: State Management, Scaling and Backpressure&lt;/h1&gt;
&lt;h2&gt;4.4 State&lt;/h2&gt;
&lt;h3&gt;Connection Lifecycle&lt;/h3&gt;
&lt;p&gt;Every WebSocket connection goes through four states:&lt;/p&gt;
&lt;p&gt;```
CO...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/04-websocket/02-state-scaling/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/04-websocket/02-state-scaling/</guid></item><item><title>WebSocket: Testing Plan and Risks</title><category>api</category><category>architecture</category><category>websocket</category><description>&lt;h1&gt;WebSocket: Testing Plan and Risks&lt;/h1&gt;
&lt;h2&gt;4.7 Testing Plan&lt;/h2&gt;
&lt;h3&gt;Connection Tests&lt;/h3&gt;
&lt;p&gt;| Test Case          | Steps                                              | E...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/04-websocket/03-testing-risks/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/04-websocket/03-testing-risks/</guid></item><item><title>Websocket</title><category>api</category><category>architecture</category><category>websocket</category><description>&lt;h1&gt;Websocket&lt;/h1&gt;
&lt;p&gt;Websocket covers API styles, contracts, performance, and reliability, with focused guides on Protocol Communication, State Scaling, Testing Risk...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/04-websocket/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/04-websocket/</guid></item><item><title>gRPC: Communication Patterns, Code Generation and Error Model</title><category>api</category><category>architecture</category><category>grpc</category><description>&lt;h1&gt;gRPC: Communication Patterns, Code Generation and Error Model&lt;/h1&gt;
&lt;h2&gt;3.4 Communication Patterns&lt;/h2&gt;
&lt;h3&gt;Unary RPC&lt;/h3&gt;
&lt;p&gt;Single request, single response. Similar to a ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/03-grpc/02-patterns-codegen-errors/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/03-grpc/02-patterns-codegen-errors/</guid></item><item><title>gRPC: Testing Plan and Risks</title><category>api</category><category>architecture</category><category>grpc</category><description>&lt;h1&gt;gRPC: Testing Plan and Risks&lt;/h1&gt;
&lt;h2&gt;3.7 Testing Plan&lt;/h2&gt;
&lt;h3&gt;Contract Tests&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Backward compatibility&lt;/strong&gt;: add new field to &lt;code&gt;.proto&lt;/code&gt; — old client still works cor...&lt;/li&gt;
&lt;/ul&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/03-grpc/03-testing-risks/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/03-grpc/03-testing-risks/</guid></item><item><title>gRPC: Code Examples (Python + Pydantic + Playwright)</title><category>api</category><category>architecture</category><category>grpc</category><description>&lt;h1&gt;gRPC: Code Examples (Python + Pydantic + Playwright)&lt;/h1&gt;
&lt;p&gt;Playwright is HTTP-based, so for gRPC we use &lt;code&gt;grpcio&lt;/code&gt; for native calls
and Pydantic for validation. W...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/03-grpc/04-code-examples/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/03-grpc/04-code-examples/</guid></item><item><title>gRPC: Retry and Hedging Policy</title><category>api</category><category>architecture</category><category>grpc</category><description>&lt;h1&gt;gRPC: Retry and Hedging Policy&lt;/h1&gt;
&lt;p&gt;This document adds a clear policy for retry and hedging in production gRPC systems.&lt;/p&gt;
&lt;h2&gt;Core rule&lt;/h2&gt;
&lt;p&gt;Retry and hedging must b...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/03-grpc/05-retry-hedging-policy/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/03-grpc/05-retry-hedging-policy/</guid></item><item><title>GraphQL: Code Examples (Python + Pydantic + Playwright)</title><category>api</category><category>architecture</category><category>graphql</category><description>&lt;h1&gt;GraphQL: Code Examples (Python + Pydantic + Playwright)&lt;/h1&gt;
&lt;p&gt;Practical code examples for testing GraphQL APIs. Uses Pydantic for response validation and Playwr...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/02-graphql/04-code-examples/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/02-graphql/04-code-examples/</guid></item><item><title>GraphQL: APQ and Safelisting Rollout</title><category>api</category><category>architecture</category><category>graphql</category><description>&lt;h1&gt;GraphQL: APQ and Safelisting Rollout&lt;/h1&gt;
&lt;p&gt;This document adds a practical production rollout model for persisted operations.&lt;/p&gt;
&lt;h2&gt;APQ vs Safelisting&lt;/h2&gt;
&lt;p&gt;| Topic | A...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/02-graphql/05-apq-safelist-rollout/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/02-graphql/05-apq-safelist-rollout/</guid></item><item><title>gRPC: Contract Layer, Transport and Serialization</title><category>api</category><category>architecture</category><category>grpc</category><description>&lt;h1&gt;gRPC: Contract Layer, Transport and Serialization&lt;/h1&gt;
&lt;h2&gt;3.1 Contract Layer&lt;/h2&gt;
&lt;h3&gt;Protobuf Schema&lt;/h3&gt;
&lt;p&gt;Protocol Buffers (protobuf) is the default serialization for...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/03-grpc/01-contract-transport/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/03-grpc/01-contract-transport/</guid></item><item><title>gRPC</title><category>api</category><category>architecture</category><category>grpc</category><description>&lt;h1&gt;gRPC&lt;/h1&gt;
&lt;p&gt;gRPC covers API styles, contracts, performance, and reliability, with focused guides on Contract Transport, Patterns Codegen Errors, Testing Risks, a...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/03-grpc/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Thu, 04 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/03-grpc/</guid></item><item><title>GraphQL: Schema, Architecture and Execution Model</title><category>api</category><category>architecture</category><category>graphql</category><description>&lt;h1&gt;GraphQL: Schema, Architecture and Execution Model&lt;/h1&gt;
&lt;h2&gt;2.1 Schema &amp;amp; Architecture&lt;/h2&gt;
&lt;p&gt;GraphQL uses a schema as a contract between client and server. The schema ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/02-graphql/01-schema-execution/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/02-graphql/01-schema-execution/</guid></item><item><title>GraphQL: Queries, Performance and Caching</title><category>api</category><category>architecture</category><category>graphql</category><description>&lt;h1&gt;GraphQL: Queries, Performance and Caching&lt;/h1&gt;
&lt;h2&gt;2.3 Query Model&lt;/h2&gt;
&lt;p&gt;GraphQL gives clients full control over what data they receive. The client writes the query,...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/02-graphql/02-queries-performance/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/02-graphql/02-queries-performance/</guid></item><item><title>GraphQL: Testing Plan and Risks</title><category>api</category><category>architecture</category><category>graphql</category><description>&lt;h1&gt;GraphQL: Testing Plan and Risks&lt;/h1&gt;
&lt;h2&gt;2.7 Testing Plan&lt;/h2&gt;
&lt;h3&gt;Schema Tests&lt;/h3&gt;
&lt;p&gt;| Test Case                    | What to Check                                     ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/02-graphql/03-testing-risks/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/02-graphql/03-testing-risks/</guid></item><item><title>GraphQL</title><category>api</category><category>architecture</category><category>graphql</category><description>&lt;h1&gt;GraphQL&lt;/h1&gt;
&lt;p&gt;GraphQL covers API styles, contracts, performance, and reliability, with focused guides on Schema Execution, Queries Performance, Testing Risks, a...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/02-graphql/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 03 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/02-graphql/</guid></item><item><title>REST: Caching, Concurrency and Idempotency</title><category>api</category><category>architecture</category><category>rest</category><description>&lt;h1&gt;REST: Caching, Concurrency and Idempotency&lt;/h1&gt;
&lt;h2&gt;1.5 Caching&lt;/h2&gt;
&lt;p&gt;HTTP caching reduces server load, saves bandwidth, and speeds up responses.
The server tells th...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/01-rest/04-caching-concurrency/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/01-rest/04-caching-concurrency/</guid></item><item><title>REST: Error Model, Security and Versioning</title><category>api</category><category>architecture</category><category>rest</category><category>security</category><description>&lt;h1&gt;REST: Error Model, Security and Versioning&lt;/h1&gt;
&lt;h2&gt;1.8 Error Model&lt;/h2&gt;
&lt;p&gt;A good API returns errors that are easy to read, parse, and act on.
Use a consistent schema...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/01-rest/05-errors-security-versioning/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/01-rest/05-errors-security-versioning/</guid></item><item><title>REST: Testing Plan and Risks</title><category>api</category><category>architecture</category><category>rest</category><description>&lt;h1&gt;REST: Testing Plan and Risks&lt;/h1&gt;
&lt;h2&gt;1.11 Testing Plan&lt;/h2&gt;
&lt;p&gt;Tests are organized by category. Each test describes input and expected result.&lt;/p&gt;
&lt;h3&gt;Schema Validation ...&lt;/h3&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/01-rest/06-testing-risks/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/01-rest/06-testing-risks/</guid></item><item><title>REST API: Code Examples (Python + Pydantic + Playwright)</title><category>api</category><category>architecture</category><category>rest</category><description>&lt;h1&gt;REST API: Code Examples (Python + Pydantic + Playwright)&lt;/h1&gt;
&lt;p&gt;Practical code examples for REST API testing. Each section shows a pattern you can copy into your...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/01-rest/07-code-examples/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 02 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/01-rest/07-code-examples/</guid></item><item><title>REST: Architecture and HTTP Layer</title><category>api</category><category>architecture</category><category>rest</category><description>&lt;h1&gt;REST: Architecture and HTTP Layer&lt;/h1&gt;
&lt;h2&gt;1.1 Architecture &amp;amp; Constraints&lt;/h2&gt;
&lt;h3&gt;Statelessness&lt;/h3&gt;
&lt;p&gt;Each request from a client must contain all information the server...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/01-rest/01-architecture-http/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/01-rest/01-architecture-http/</guid></item><item><title>REST: Data Schema and Validation</title><category>api</category><category>architecture</category><category>rest</category><description>&lt;h1&gt;REST: Data Schema and Validation&lt;/h1&gt;
&lt;h2&gt;1.3 Data Schema&lt;/h2&gt;
&lt;h3&gt;OpenAPI 3.1 / JSON Schema&lt;/h3&gt;
&lt;p&gt;OpenAPI is the standard way to define REST API contracts. Version 3.1 ...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/01-rest/02-data-schema/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/01-rest/02-data-schema/</guid></item><item><title>REST: Querying Layer</title><category>api</category><category>architecture</category><category>rest</category><description>&lt;h1&gt;REST: Querying Layer&lt;/h1&gt;
&lt;h2&gt;Field Selection (Sparse Fieldsets)&lt;/h2&gt;
&lt;p&gt;Select only needed fields to reduce payload size:
&lt;code&gt;GET /users?fields=id,name,email&lt;/code&gt;
Serv...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/01-rest/03-querying/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/01-rest/03-querying/</guid></item><item><title>REST</title><category>api</category><category>architecture</category><category>rest</category><description>&lt;h1&gt;REST&lt;/h1&gt;
&lt;p&gt;REST covers API styles, contracts, performance, and reliability, with focused guides on Architecture HTTP, Data Schema, Querying, and more.&lt;/p&gt;
&lt;h2&gt;Guide...&lt;/h2&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/01-rest/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/01-rest/</guid></item><item><title>API Architectures</title><category>api</category><category>architecture</category><description>&lt;h1&gt;API Architectures&lt;/h1&gt;
&lt;h2&gt;Section Descriptions&lt;/h2&gt;
&lt;h3&gt;1) REST API&lt;/h3&gt;
&lt;p&gt;| File | Topics |
|------|--------|
| &lt;a href=&quot;./01-rest/01-architecture-http.md&quot;&gt;Architecture &amp;amp; HTTP&lt;/a&gt;...&lt;/p&gt;</description><link>https://serhiismetanskyi.com/docs/api-architectures/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 01 Jun 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/docs/api-architectures/</guid></item><item><title>Testing LLM Outputs: A Hands-On Guide to DeepEval Metrics</title><author>Serhii Smetanskyi</author><category>AI Testing</category><category>ai</category><category>ai-testing</category><category>deepeval</category><category>llm</category><category>llm-evaluation</category><description>A hands-on guide to testing LLM outputs with DeepEval and pytest: about thirty metrics for RAG, safety, agents and chatbots, with passing and failing cases.</description><link>https://serhiismetanskyi.com/blog/2026/03/25/testing-llm-outputs-a-hands-on-guide-to-deepeval-metrics/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Wed, 25 Mar 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/blog/2026/03/25/testing-llm-outputs-a-hands-on-guide-to-deepeval-metrics/</guid></item><item><title>Test Design: Stop Clicking, Start Thinking</title><author>Serhii Smetanskyi</author><category>QA</category><category>qa</category><category>test-design-technique</category><category>testing</category><description>Test design techniques in real work, not just before interviews: equivalence partitioning, boundary values, decision tables and state transitions.</description><link>https://serhiismetanskyi.com/blog/2026/03/24/test-design-stop-clicking-start-thinking/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Tue, 24 Mar 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/blog/2026/03/24/test-design-stop-clicking-start-thinking/</guid></item><item><title>n8n for QA: Automate the Boring Stuff You Keep Doing Manually</title><author>Serhii Smetanskyi</author><category>Automation</category><category>automation</category><category>n8n</category><category>qa</category><description>Practical n8n workflows for QA engineers: notifications, test data, smoke checks after deploys, reports and Jira hygiene, automated instead of done by hand.</description><link>https://serhiismetanskyi.com/blog/2026/03/23/n8n-for-qa-automate-the-boring-stuff-you-keep-doing-manually/</link><source url="https://serhiismetanskyi.com/feed_rss_created.xml">Serhii Smetanskyi</source><pubDate>Mon, 23 Mar 2026 00:00:00 +0000</pubDate><guid isPermaLink="true">https://serhiismetanskyi.com/blog/2026/03/23/n8n-for-qa-automate-the-boring-stuff-you-keep-doing-manually/</guid></item></channel></rss>