{
  "version": 1,
  "site": {
    "name": "Gürkan Özkan",
    "url": "https://gurkanozkan.ai",
    "description": "Essays and notes on AI, analytics and finance.",
    "author": "Gürkan Özkan",
    "mcp": "https://gurkanozkan.ai/mcp"
  },
  "essays": [
    {
      "kind": "essay",
      "slug": "compiling-a-company-into-an-ontology-for-agents",
      "id": "post:compiling-a-company-into-an-ontology-for-agents",
      "title": "Compiling company documents into an ontology for agents: the model added 0.017",
      "date": "2026-11-14",
      "url": "https://gurkanozkan.ai/writing/compiling-a-company-into-an-ontology-for-agents/",
      "markdown_url": "https://gurkanozkan.ai/writing/compiling-a-company-into-an-ontology-for-agents.md",
      "summary": "On two held-out invented companies a rule-based reader scored 0.833 and the same pipeline with a local language model 0.850. On a real public handbook it fully found 58 of the 166 items that blind reader agents listed. Measure what each part adds before you build on it.",
      "topics": [
        "ai"
      ],
      "tags": [
        "ontology",
        "agents",
        "evaluation",
        "postgres",
        "pgvector",
        "mcp",
        "retrieval",
        "dgx-spark"
      ],
      "concepts": [
        "data-leakage",
        "evaluation-harness",
        "inference-serving",
        "llm-agents",
        "model-evaluation",
        "overfitting"
      ]
    },
    {
      "kind": "essay",
      "slug": "fifteen-ways-i-mis-measured-two-coding-models",
      "id": "post:fifteen-ways-i-mis-measured-two-coding-models",
      "title": "Fifteen ways my coding agent and I mis-measured two models on one DGX Spark",
      "date": "2026-11-13",
      "url": "https://gurkanozkan.ai/writing/fifteen-ways-i-mis-measured-two-coding-models/",
      "markdown_url": "https://gurkanozkan.ai/writing/fifteen-ways-i-mis-measured-two-coding-models.md",
      "summary": "Before you compare models on your own hardware, fix the sampling, the token budget, the harness and the number of runs: on one DGX Spark, three of the four moved a score by more than the gap between the models.",
      "topics": [
        "ai",
        "analytics"
      ],
      "tags": [
        "benchmarks",
        "coding-models",
        "dgx-spark",
        "vllm",
        "evaluation",
        "coding-agents"
      ],
      "concepts": [
        "benchmark-saturation",
        "evaluation-harness",
        "large-language-models",
        "model-evaluation",
        "sampling-temperature",
        "statistical-power"
      ]
    },
    {
      "kind": "essay",
      "slug": "small-agent-teams-win-by-trying-more",
      "id": "post:small-agent-teams-win-by-trying-more",
      "title": "Small agent teams win by trying more, not by coordinating",
      "date": "2026-11-13",
      "url": "https://gurkanozkan.ai/writing/small-agent-teams-win-by-trying-more/",
      "markdown_url": "https://gurkanozkan.ai/writing/small-agent-teams-win-by-trying-more.md",
      "summary": "A six-worker GLM-5.3 team proved more Lean statements than one agent of the same model, but four copies that could not talk to each other matched it. Here there is no evidence that coordination adds: try independent attempts with a verifier first.",
      "topics": [
        "ai",
        "analytics"
      ],
      "tags": [
        "agents",
        "lean",
        "pre-registration",
        "evaluation"
      ],
      "concepts": [
        "data-leakage",
        "formal-verification",
        "llm-agents",
        "model-evaluation",
        "multi-agent-systems",
        "paired-tests",
        "pre-registration",
        "repeated-sampling",
        "statistical-power"
      ]
    },
    {
      "kind": "essay",
      "slug": "speculative-decoding-draft-width-on-gb10",
      "id": "post:speculative-decoding-draft-width-on-gb10",
      "title": "Speculative decoding on GB10: a wider draft speeds up one stream and slows sixteen",
      "date": "2026-11-13",
      "url": "https://gurkanozkan.ai/writing/speculative-decoding-draft-width-on-gb10/",
      "markdown_url": "https://gurkanozkan.ai/writing/speculative-decoding-draft-width-on-gb10.md",
      "summary": "Choose the speculative-decoding draft width for the number of users you serve: in darkdatter's sweep on a DGX Spark, 16 draft tokens instead of 8 made one stream 28% faster and sixteen streams 10% slower.",
      "topics": [
        "ai"
      ],
      "tags": [
        "dgx-spark",
        "gb10",
        "sglang",
        "dflash2",
        "benchmarking"
      ],
      "concepts": [
        "batching",
        "inference-serving",
        "kv-cache",
        "memory-bandwidth",
        "model-evaluation",
        "speculative-decoding"
      ]
    },
    {
      "kind": "essay",
      "slug": "what-128-gb-of-unified-memory-buys-you",
      "id": "post:what-128-gb-of-unified-memory-buys-you",
      "title": "What 128 GB of unified memory buys you: serving LLMs on a DGX Spark",
      "date": "2026-11-13",
      "url": "https://gurkanozkan.ai/writing/what-128-gb-of-unified-memory-buys-you/",
      "markdown_url": "https://gurkanozkan.ai/writing/what-128-gb-of-unified-memory-buys-you.md",
      "summary": "On a GB10 the GPU memory fraction is a share of the whole machine: size the KV cache from the workload, and expect bandwidth and prefill, not capacity, to set the limits.",
      "topics": [
        "ai"
      ],
      "tags": [
        "dgx-spark",
        "gb10",
        "vllm",
        "sglang",
        "serving"
      ],
      "concepts": [
        "batching",
        "hybrid-architectures",
        "inference-serving",
        "kv-cache",
        "memory-bandwidth",
        "mixture-of-experts",
        "prefix-caching",
        "quantization",
        "state-space-models",
        "unified-memory"
      ]
    }
  ],
  "notes": [
    {
      "kind": "note",
      "slug": "the-1802-second-hang",
      "id": "note:the-1802-second-hang",
      "title": "The 1,802-second hang: serving a hybrid linear-attention MoE under agent load",
      "date": "2026-11-13",
      "url": "https://gurkanozkan.ai/notes/the-1802-second-hang/",
      "markdown_url": "https://gurkanozkan.ai/notes/the-1802-second-hang.md",
      "summary": "In July I ran coding-agent evaluations on SWE-bench Verified against Qwen3.6-35B-A3B, served by vLLM 0.21 (nvcr.io/nvidia/vllm:26.05.post1-py3) on one DGX Spark, four requests at a time. The model is a Mixture of experts and a hybrid: three…",
      "topics": [
        "ai"
      ],
      "tags": [
        "vllm",
        "serving",
        "dgx-spark",
        "agents"
      ],
      "concepts": [
        "cold-start",
        "hybrid-architectures",
        "inference-serving",
        "mixture-of-experts",
        "model-evaluation",
        "prefix-caching"
      ]
    }
  ],
  "concepts": [
    {
      "id": "formal-verification",
      "name": "Formal verification",
      "domain": "ai",
      "definition": "Establishing with a mechanical checker, such as the kernel of a proof assistant like Lean, that a statement or a program meets a precise mathematical specification.",
      "url": "https://gurkanozkan.ai/concepts/formal-verification/",
      "markdown_url": "https://gurkanozkan.ai/concepts/formal-verification.md"
    },
    {
      "id": "machine-learning",
      "name": "Machine learning",
      "domain": "ai",
      "definition": "The field that studies how computers improve their performance on a task by learning patterns from data rather than being explicitly programmed.",
      "url": "https://gurkanozkan.ai/concepts/machine-learning/",
      "markdown_url": "https://gurkanozkan.ai/concepts/machine-learning.md"
    },
    {
      "id": "large-language-models",
      "name": "Large language models",
      "domain": "ai",
      "definition": "Neural network models, typically with billions of parameters, trained on very large text corpora to predict the next token.",
      "url": "https://gurkanozkan.ai/concepts/large-language-models/",
      "markdown_url": "https://gurkanozkan.ai/concepts/large-language-models.md",
      "parent": "machine-learning"
    },
    {
      "id": "hybrid-architectures",
      "name": "Hybrid architectures",
      "domain": "ai",
      "definition": "Language model designs that interleave attention layers with layers of another kind, typically state-space or linear-attention layers, to lower the cost of long contexts.",
      "url": "https://gurkanozkan.ai/concepts/hybrid-architectures/",
      "markdown_url": "https://gurkanozkan.ai/concepts/hybrid-architectures.md",
      "parent": "large-language-models"
    },
    {
      "id": "inference-serving",
      "name": "Inference serving",
      "domain": "ai",
      "definition": "Running a trained model as a service that accepts requests and returns outputs, scheduling computation and memory so that many requests can be answered with acceptable latency and throughput.",
      "url": "https://gurkanozkan.ai/concepts/inference-serving/",
      "markdown_url": "https://gurkanozkan.ai/concepts/inference-serving.md",
      "parent": "large-language-models"
    },
    {
      "id": "batching",
      "name": "Batching",
      "domain": "ai",
      "definition": "Processing several requests together in one pass of a model, so that each read of the weights from memory serves more than one sequence, raising total throughput at some cost to the latency of each request.",
      "url": "https://gurkanozkan.ai/concepts/batching/",
      "markdown_url": "https://gurkanozkan.ai/concepts/batching.md",
      "parent": "inference-serving"
    },
    {
      "id": "cold-start",
      "name": "Cold start",
      "domain": "ai",
      "definition": "The period after a service or model server starts, before its caches are filled and its kernels compiled or loaded, during which the first requests run slower or behave differently from later ones.",
      "url": "https://gurkanozkan.ai/concepts/cold-start/",
      "markdown_url": "https://gurkanozkan.ai/concepts/cold-start.md",
      "parent": "inference-serving"
    },
    {
      "id": "kv-cache",
      "name": "KV cache",
      "domain": "ai",
      "definition": "The attention keys and values of the tokens a transformer has already processed, kept in memory so that they are not recomputed for every new token it generates.",
      "url": "https://gurkanozkan.ai/concepts/kv-cache/",
      "markdown_url": "https://gurkanozkan.ai/concepts/kv-cache.md",
      "parent": "inference-serving"
    },
    {
      "id": "prefix-caching",
      "name": "Prefix caching",
      "domain": "ai",
      "definition": "Reusing the key-value cache already computed for a prompt prefix, such as a shared system prompt or the earlier turns of a conversation, for later requests that begin with the same tokens.",
      "url": "https://gurkanozkan.ai/concepts/prefix-caching/",
      "markdown_url": "https://gurkanozkan.ai/concepts/prefix-caching.md",
      "parent": "inference-serving"
    },
    {
      "id": "speculative-decoding",
      "name": "Speculative decoding",
      "domain": "ai",
      "definition": "A decoding method in which a cheaper drafter proposes several tokens ahead and the target model checks them in one forward pass, accepting a prefix of them without changing the target model's output distribution.",
      "url": "https://gurkanozkan.ai/concepts/speculative-decoding/",
      "markdown_url": "https://gurkanozkan.ai/concepts/speculative-decoding.md",
      "parent": "inference-serving"
    },
    {
      "id": "llm-agents",
      "name": "LLM agents",
      "domain": "ai",
      "definition": "Systems in which a language model works in a loop, choosing actions such as tool calls, observing their results and deciding the next step towards a goal.",
      "url": "https://gurkanozkan.ai/concepts/llm-agents/",
      "markdown_url": "https://gurkanozkan.ai/concepts/llm-agents.md",
      "parent": "large-language-models"
    },
    {
      "id": "multi-agent-systems",
      "name": "Multi-agent systems",
      "domain": "ai",
      "definition": "Arrangements of several agents, usually separate instances of one or more language models, that divide, share or coordinate the work on a task.",
      "url": "https://gurkanozkan.ai/concepts/multi-agent-systems/",
      "markdown_url": "https://gurkanozkan.ai/concepts/multi-agent-systems.md",
      "parent": "llm-agents"
    },
    {
      "id": "mixture-of-experts",
      "name": "Mixture of experts",
      "domain": "ai",
      "definition": "A model design in which a router sends each token to a small subset of specialised sub-networks, the experts, so that only a fraction of the total parameters is active for any one token.",
      "url": "https://gurkanozkan.ai/concepts/mixture-of-experts/",
      "markdown_url": "https://gurkanozkan.ai/concepts/mixture-of-experts.md",
      "parent": "large-language-models"
    },
    {
      "id": "repeated-sampling",
      "name": "Repeated sampling",
      "domain": "ai",
      "definition": "Drawing many independent attempts from a model for the same problem and keeping any that a verifier accepts, so that the share of problems solved grows with the number of attempts.",
      "url": "https://gurkanozkan.ai/concepts/repeated-sampling/",
      "markdown_url": "https://gurkanozkan.ai/concepts/repeated-sampling.md",
      "parent": "large-language-models"
    },
    {
      "id": "sampling-temperature",
      "name": "Sampling temperature",
      "domain": "ai",
      "definition": "A parameter that rescales a model's output probabilities before a token is drawn; lower values make generation more deterministic, and a temperature of zero always takes the most likely token (greedy decoding).",
      "url": "https://gurkanozkan.ai/concepts/sampling-temperature/",
      "markdown_url": "https://gurkanozkan.ai/concepts/sampling-temperature.md",
      "parent": "large-language-models"
    },
    {
      "id": "state-space-models",
      "name": "State-space models",
      "domain": "ai",
      "definition": "Sequence models, such as Mamba, that carry a fixed-size recurrent state through a sequence instead of attending to every earlier token, so that their memory per sequence does not grow with context length.",
      "url": "https://gurkanozkan.ai/concepts/state-space-models/",
      "markdown_url": "https://gurkanozkan.ai/concepts/state-space-models.md",
      "parent": "large-language-models"
    },
    {
      "id": "model-evaluation",
      "name": "Model evaluation",
      "domain": "ai",
      "definition": "Methods and metrics used to estimate how well a model will perform on data it has not seen.",
      "url": "https://gurkanozkan.ai/concepts/model-evaluation/",
      "markdown_url": "https://gurkanozkan.ai/concepts/model-evaluation.md",
      "parent": "machine-learning"
    },
    {
      "id": "benchmark-saturation",
      "name": "Benchmark saturation",
      "domain": "ai",
      "definition": "The state of a benchmark on which current models score so close to the maximum that it no longer separates them.",
      "url": "https://gurkanozkan.ai/concepts/benchmark-saturation/",
      "markdown_url": "https://gurkanozkan.ai/concepts/benchmark-saturation.md",
      "parent": "model-evaluation"
    },
    {
      "id": "data-leakage",
      "name": "Data leakage",
      "domain": "ai",
      "definition": "Information that would not be available in real use reaching the model during training or evaluation, making performance look better than it is.",
      "url": "https://gurkanozkan.ai/concepts/data-leakage/",
      "markdown_url": "https://gurkanozkan.ai/concepts/data-leakage.md",
      "parent": "model-evaluation"
    },
    {
      "id": "evaluation-harness",
      "name": "Evaluation harness",
      "domain": "ai",
      "definition": "The software that runs a model on a benchmark: it builds the prompts, calls the model, executes or scores the outputs and aggregates the results.",
      "url": "https://gurkanozkan.ai/concepts/evaluation-harness/",
      "markdown_url": "https://gurkanozkan.ai/concepts/evaluation-harness.md",
      "parent": "model-evaluation"
    },
    {
      "id": "overfitting",
      "name": "Overfitting",
      "domain": "ai",
      "definition": "A model learning the noise in its training data as well, and therefore generalising worse to new data.",
      "url": "https://gurkanozkan.ai/concepts/overfitting/",
      "markdown_url": "https://gurkanozkan.ai/concepts/overfitting.md",
      "parent": "machine-learning"
    },
    {
      "id": "quantization",
      "name": "Quantisation",
      "domain": "ai",
      "definition": "Storing a model's weights, and sometimes its activations or cache, with fewer bits per number, such as 8 or 4 instead of 16, to cut memory use and speed up computation at some possible cost in accuracy.",
      "url": "https://gurkanozkan.ai/concepts/quantization/",
      "markdown_url": "https://gurkanozkan.ai/concepts/quantization.md",
      "parent": "machine-learning"
    },
    {
      "id": "memory-bandwidth",
      "name": "Memory bandwidth",
      "domain": "ai",
      "definition": "The rate at which data can be moved between memory and the processor, usually given in gigabytes per second; generating text one token at a time is often limited by it rather than by arithmetic.",
      "url": "https://gurkanozkan.ai/concepts/memory-bandwidth/",
      "markdown_url": "https://gurkanozkan.ai/concepts/memory-bandwidth.md"
    },
    {
      "id": "unified-memory",
      "name": "Unified memory",
      "domain": "ai",
      "definition": "A memory architecture in which the CPU and the GPU share one physical pool of memory instead of having separate system and device memory.",
      "url": "https://gurkanozkan.ai/concepts/unified-memory/",
      "markdown_url": "https://gurkanozkan.ai/concepts/unified-memory.md"
    },
    {
      "id": "heavy-tails",
      "name": "Heavy tails",
      "domain": "analytics",
      "definition": "The property of distributions in which extreme values occur far more often than a normal distribution would predict.",
      "url": "https://gurkanozkan.ai/concepts/heavy-tails/",
      "markdown_url": "https://gurkanozkan.ai/concepts/heavy-tails.md"
    },
    {
      "id": "outliers",
      "name": "Outliers",
      "domain": "analytics",
      "definition": "Observations that lie markedly far from most other observations in a dataset.",
      "url": "https://gurkanozkan.ai/concepts/outliers/",
      "markdown_url": "https://gurkanozkan.ai/concepts/outliers.md"
    },
    {
      "id": "paired-tests",
      "name": "Paired tests",
      "domain": "analytics",
      "definition": "Statistical tests that compare two conditions measured on the same units, such as two models on the same problems, using the differences within each pair rather than the two totals.",
      "note": "For pass/fail outcomes McNemar's test is the usual choice: it uses only the *discordant* pairs, the items that one condition solved and the other did not.",
      "url": "https://gurkanozkan.ai/concepts/paired-tests/",
      "markdown_url": "https://gurkanozkan.ai/concepts/paired-tests.md"
    },
    {
      "id": "pre-registration",
      "name": "Pre-registration",
      "domain": "analytics",
      "definition": "Recording a study's hypotheses, data, tests and decision rules before the outcome data are seen, so that confirmatory results can be told apart from exploratory ones.",
      "url": "https://gurkanozkan.ai/concepts/pre-registration/",
      "markdown_url": "https://gurkanozkan.ai/concepts/pre-registration.md"
    },
    {
      "id": "statistical-power",
      "name": "Statistical power",
      "domain": "analytics",
      "definition": "The probability that a test detects an effect of a given size when the effect is really there; it grows with the sample size and the size of the effect.",
      "url": "https://gurkanozkan.ai/concepts/statistical-power/",
      "markdown_url": "https://gurkanozkan.ai/concepts/statistical-power.md"
    },
    {
      "id": "summary-statistics",
      "name": "Summary statistics",
      "domain": "analytics",
      "definition": "Measures that summarise the location, spread and shape of a dataset in a few numbers, such as the mean, the median and the quartiles.",
      "url": "https://gurkanozkan.ai/concepts/summary-statistics/",
      "markdown_url": "https://gurkanozkan.ai/concepts/summary-statistics.md"
    }
  ],
  "pages": [
    {
      "slug": "about",
      "title": "About",
      "description": "Gürkan Özkan — AI Researcher. Writing on AI, analytics and finance.",
      "url": "https://gurkanozkan.ai/about/",
      "markdown_url": "https://gurkanozkan.ai/about.md"
    }
  ]
}
