{
  "version": "https://jsonfeed.org/version/1.1",
  "title": "andy pai's tils",
  "home_page_url": "https://til.andyp.ai/",
  "feed_url": "https://til.andyp.ai/feed.json",
  "items": [
    {
      "id": "https://til.andyp.ai/using-cloudflared-database-tunnels-in-github-actions/",
      "url": "https://til.andyp.ai/using-cloudflared-database-tunnels-in-github-actions/",
      "title": "Using Cloudflared Database Tunnels in GitHub Actions",
      "summary": "Automating Cloudflared database tunnels in GitHub Actions for secure database connections.",
      "content_text": "Automating Cloudflared database tunnels in GitHub Actions for secure database connections.",
      "date_published": "2025-05-21T00:00:00.000Z",
      "tags": ["devops","productivity"]
    },
    {
      "id": "https://til.andyp.ai/how-to-test-github-actions-locally-using-act/",
      "url": "https://til.andyp.ai/how-to-test-github-actions-locally-using-act/",
      "title": "How to Test GitHub Actions Locally Using act",
      "summary": "Setting up and testing GitHub Actions workflows locally with `act` for smoother deployments.",
      "content_text": "Setting up and testing GitHub Actions workflows locally with `act` for smoother deployments.",
      "date_published": "2025-05-20T00:00:00.000Z",
      "tags": ["devops","productivity"]
    },
    {
      "id": "https://til.andyp.ai/parallel-development-with-git-worktrees-and-codex-cli/",
      "url": "https://til.andyp.ai/parallel-development-with-git-worktrees-and-codex-cli/",
      "title": "Parallel Development with Git Worktrees and Codex CLI",
      "summary": "Exploring how to use Git worktrees and the Codex CLI to develop multiple features concurrently.",
      "content_text": "Exploring how to use Git worktrees and the Codex CLI to develop multiple features concurrently.",
      "date_published": "2025-05-14T19:00:07.000Z",
      "tags": ["git","code","productivity"]
    },
    {
      "id": "https://til.andyp.ai/notes-from-duolingo-founder-no-priors-interview/",
      "url": "https://til.andyp.ai/notes-from-duolingo-founder-no-priors-interview/",
      "title": "Notes from Duolingo Founder No Priors Interview",
      "summary": "Duolingo's CEO shares some surprising retention tactics and insights into the future of education and AI.",
      "content_text": "Duolingo's CEO shares some surprising retention tactics and insights into the future of education and AI.",
      "date_published": "2025-05-10T00:00:00.000Z",
      "tags": ["strategy","ai"]
    },
    {
      "id": "https://til.andyp.ai/how-temperature-controls-ai-creativity/",
      "url": "https://til.andyp.ai/how-temperature-controls-ai-creativity/",
      "title": "How Temperature Controls AI Creativity",
      "summary": "A quick reminder of how the temperature parameter works in large language models to control the randomness and creativity of predictions.",
      "content_text": "A quick reminder of how the temperature parameter works in large language models to control the randomness and creativity of predictions.",
      "date_published": "2025-05-09T00:00:00.000Z",
      "tags": ["ai","ml","code"]
    },
    {
      "id": "https://til.andyp.ai/why-cross-entropy-still-rules-loss-functions/",
      "url": "https://til.andyp.ai/why-cross-entropy-still-rules-loss-functions/",
      "title": "Why Cross‑Entropy Still Rules Loss Functions",
      "summary": "Negative log‑likelihood beats MSE for classification—here’s an intuitive recap",
      "content_text": "Negative log‑likelihood beats MSE for classification—here’s an intuitive recap",
      "date_published": "2025-05-08T00:00:00.000Z",
      "tags": ["ml","math","code"]
    },
    {
      "id": "https://til.andyp.ai/exploring-two-tower-models/",
      "url": "https://til.andyp.ai/exploring-two-tower-models/",
      "title": "Exploring Two-Tower Ranking Models",
      "summary": "Generating synthetic data and exploring the two-tower ranking model setup with Margin and InfoNCE loss",
      "content_text": "Generating synthetic data and exploring the two-tower ranking model setup with Margin and InfoNCE loss",
      "date_published": "2025-05-04T00:00:00.000Z",
      "tags": ["ml","code"]
    },
    {
      "id": "https://til.andyp.ai/setting-up-postgres-for-cloudflare-hyperdrive/",
      "url": "https://til.andyp.ai/setting-up-postgres-for-cloudflare-hyperdrive/",
      "title": "Setting Up Postgres for Cloudflare Hyperdrive",
      "summary": "Steps to set up a Postgres instance on Hetzner for Cloudflare Hyperdrive, pgvector, and Cloudflare Functions.",
      "content_text": "Steps to set up a Postgres instance on Hetzner for Cloudflare Hyperdrive, pgvector, and Cloudflare Functions.",
      "date_published": "2025-04-28T00:00:00.000Z",
      "tags": ["devops"]
    },
    {
      "id": "https://til.andyp.ai/how-to-classify-gmail-messages-with-llms-v2/",
      "url": "https://til.andyp.ai/how-to-classify-gmail-messages-with-llms-v2/",
      "title": "How To Classify Gmail Messages With LLMs (v2)",
      "summary": "An upgraded Google Apps Script that uses structured outputs and lean labels to keep your inbox zen",
      "content_text": "An upgraded Google Apps Script that uses structured outputs and lean labels to keep your inbox zen",
      "date_published": "2025-04-27T00:00:00.000Z",
      "tags": ["gmail","productivity"]
    },
    {
      "id": "https://til.andyp.ai/style-vs-substance-in-chatbot-arena/",
      "url": "https://til.andyp.ai/style-vs-substance-in-chatbot-arena/",
      "title": "Style vs Substance in Chatbot Arena",
      "summary": "How LMSYS corrects for \"pretty formatting\" bias when ranking LLMs.",
      "content_text": "How LMSYS corrects for \"pretty formatting\" bias when ranking LLMs.",
      "date_published": "2025-03-24T00:00:00.000Z",
      "tags": ["ai","ml"]
    },
    {
      "id": "https://til.andyp.ai/skip-husky-a-tiny-git-pre-commit-hook-with-pnpm/",
      "url": "https://til.andyp.ai/skip-husky-a-tiny-git-pre-commit-hook-with-pnpm/",
      "title": "Skip Husky – A Tiny Git Pre‑Commit Hook with PNPM",
      "summary": "How I replaced the Husky dependency with a 6‑line shell script and one post‑install tweak",
      "content_text": "How I replaced the Husky dependency with a 6‑line shell script and one post‑install tweak",
      "date_published": "2025-03-21T16:13:40.000Z",
      "tags": ["node-js","git","productivity"]
    },
    {
      "id": "https://til.andyp.ai/fixing-unknown-at-rule-warnings-for-tailwind-css-in-vscode/",
      "url": "https://til.andyp.ai/fixing-unknown-at-rule-warnings-for-tailwind-css-in-vscode/",
      "title": "Fixing \"Unknown at rule\" warnings for Tailwind CSS in VSCode",
      "summary": "How to resolve VSCode CSS lint warnings for Tailwind CSS at-rules by adjusting settings and installing extensions.",
      "content_text": "How to resolve VSCode CSS lint warnings for Tailwind CSS at-rules by adjusting settings and installing extensions.",
      "date_published": "2025-03-15T00:50:24.000Z",
      "tags": ["devops","code"]
    },
    {
      "id": "https://til.andyp.ai/brewer-s-yeast-for-immune-support-how-it-compares-to-nutritional-yeast/",
      "url": "https://til.andyp.ai/brewer-s-yeast-for-immune-support-how-it-compares-to-nutritional-yeast/",
      "title": "Yeast for Immune Support?",
      "summary": "Brewer's yeast can boost immune health similarly to nutritional yeast.",
      "content_text": "Brewer's yeast can boost immune health similarly to nutritional yeast.",
      "date_published": "2025-02-28T03:06:50.000Z",
      "tags": ["health"]
    },
    {
      "id": "https://til.andyp.ai/llms-almost-always-use-adamw-with-emerging-alternatives/",
      "url": "https://til.andyp.ai/llms-almost-always-use-adamw-with-emerging-alternatives/",
      "title": "Most LLMs Still Lean on AdamW",
      "summary": "From BERT to today's open-source GPT clones, the de-coupled weight-decay trick in AdamW remains the default.  (T5 is the main outlier, preferring Adafactor at pre-train time.)",
      "content_text": "From BERT to today's open-source GPT clones, the de-coupled weight-decay trick in AdamW remains the default.  (T5 is the main outlier, preferring Adafactor at pre-train time.)",
      "date_published": "2025-02-24T00:00:00.000Z",
      "tags": ["ai","ml"]
    },
    {
      "id": "https://til.andyp.ai/dead-internet-theory-are-bots-running-the-web/",
      "url": "https://til.andyp.ai/dead-internet-theory-are-bots-running-the-web/",
      "title": "Dead Internet Theory - Bots Run the Web",
      "summary": "TIL about the claim that bots now outnumber humans online—and what the numbers actually say.",
      "content_text": "TIL about the claim that bots now outnumber humans online—and what the numbers actually say.",
      "date_published": "2025-02-16T00:00:00.000Z",
      "tags": ["ai","security"]
    },
    {
      "id": "https://til.andyp.ai/key-concepts-behind-qlora-fine-tuning/",
      "url": "https://til.andyp.ai/key-concepts-behind-qlora-fine-tuning/",
      "title": "Key Concepts Behind QLoRA Fine-Tuning",
      "summary": "Quantization + low-rank adapters let you fine-tune huge LLMs on a single GPU.",
      "content_text": "Quantization + low-rank adapters let you fine-tune huge LLMs on a single GPU.",
      "date_published": "2025-02-13T00:00:00.000Z",
      "tags": ["ai","ml","code"]
    },
    {
      "id": "https://til.andyp.ai/relationship-between-l1-norm-and-l1-regularization/",
      "url": "https://til.andyp.ai/relationship-between-l1-norm-and-l1-regularization/",
      "title": "Relationship Between L1 Norm and L1 Regularization",
      "summary": "Exploring how L1 and L2 norms form the basis of L1 (lasso) and L2 (ridge) regularization, with concrete examples and geometric intuition.",
      "content_text": "Exploring how L1 and L2 norms form the basis of L1 (lasso) and L2 (ridge) regularization, with concrete examples and geometric intuition.",
      "date_published": "2025-02-10T05:25:06.000Z",
      "tags": ["ml","code"]
    },
    {
      "id": "https://til.andyp.ai/parenting-s-3-gs-govern-garden-guide/",
      "url": "https://til.andyp.ai/parenting-s-3-gs-govern-garden-guide/",
      "title": "Govern, Garden, Guide",
      "summary": "Dividing parenting into Govern (0-6), Garden (6-12), and Guide (12+), aligning roles with developmental stages.",
      "content_text": "Dividing parenting into Govern (0-6), Garden (6-12), and Guide (12+), aligning roles with developmental stages.",
      "date_published": "2025-02-07T00:00:00.000Z",
      "tags": ["parenting"]
    },
    {
      "id": "https://til.andyp.ai/why-logits-exp-equals-counts/",
      "url": "https://til.andyp.ai/why-logits-exp-equals-counts/",
      "title": "Why logits.exp() Equals Counts",
      "summary": "Understanding neural network computations as log-domain operations, making multiplicative interactions additive through logs",
      "content_text": "Understanding neural network computations as log-domain operations, making multiplicative interactions additive through logs",
      "date_published": "2025-01-20T00:00:00.000Z",
      "tags": ["ai","math","code"]
    },
    {
      "id": "https://til.andyp.ai/floating-point-precision-and-exploding-gradients/",
      "url": "https://til.andyp.ai/floating-point-precision-and-exploding-gradients/",
      "title": "Floating-Point Precision & Exploding Gradients",
      "summary": "Floating-point rounding errors in backpropagation can accumulate and magnify across layers, leading to exploding gradients in deep networks.",
      "content_text": "Floating-point rounding errors in backpropagation can accumulate and magnify across layers, leading to exploding gradients in deep networks.",
      "date_published": "2025-01-19T04:30:20.000Z",
      "tags": ["ml","python"]
    },
    {
      "id": "https://til.andyp.ai/check-routing-tables-quickly-with-netstat-nr/",
      "url": "https://til.andyp.ai/check-routing-tables-quickly-with-netstat-nr/",
      "title": "Check routing tables quickly with netstat -nr",
      "summary": "A quick tip to display—and actually **read**—your routing table with `netstat -nr`.",
      "content_text": "A quick tip to display—and actually **read**—your routing table with `netstat -nr`.",
      "date_published": "2025-01-06T00:00:00.000Z",
      "tags": ["devops"]
    },
    {
      "id": "https://til.andyp.ai/batch-convert-m4b-to-m4a-with-ffmpeg/",
      "url": "https://til.andyp.ai/batch-convert-m4b-to-m4a-with-ffmpeg/",
      "title": "Batch convert m4b to m4a with ffmpeg",
      "summary": "Easily batch-convert .m4b audiobooks to .m4a for compatibility with apps like NotebookLM using ffmpeg on macOS.",
      "content_text": "Easily batch-convert .m4b audiobooks to .m4a for compatibility with apps like NotebookLM using ffmpeg on macOS.",
      "date_published": "2024-12-24T00:00:00.000Z",
      "tags": ["code","productivity"]
    },
    {
      "id": "https://til.andyp.ai/sslip/",
      "url": "https://til.andyp.ai/sslip/",
      "title": "Easy Local DNS and SSL Certificates with sslip.io",
      "summary": "Quickly get domain names for local IP addresses without editing hosts files or DNS",
      "content_text": "Quickly get domain names for local IP addresses without editing hosts files or DNS",
      "date_published": "2024-11-16T00:00:00.000Z",
      "tags": ["devops"]
    },
    {
      "id": "https://til.andyp.ai/understanding-perplexity-in-language-model-evaluation/",
      "url": "https://til.andyp.ai/understanding-perplexity-in-language-model-evaluation/",
      "title": "Understanding Perplexity in Language Model Evaluation",
      "summary": "A concise guide to perplexity metric, its calculation, and significance for LLMs.",
      "content_text": "A concise guide to perplexity metric, its calculation, and significance for LLMs.",
      "date_published": "2024-08-31T00:00:00.000Z",
      "tags": ["ai","ml"]
    },
    {
      "id": "https://til.andyp.ai/kl-divergence-and-cross-entropy-loss/",
      "url": "https://til.andyp.ai/kl-divergence-and-cross-entropy-loss/",
      "title": "KL divergence and cross-entropy loss",
      "summary": "How cross-entropy loss is just KL divergence in disguise—and when to use each.",
      "content_text": "How cross-entropy loss is just KL divergence in disguise—and when to use each.",
      "date_published": "2024-08-13T00:00:00.000Z",
      "tags": ["ai","ml"]
    },
    {
      "id": "https://til.andyp.ai/understanding-the-curse-of-dimensionality-in-machine-learning/",
      "url": "https://til.andyp.ai/understanding-the-curse-of-dimensionality-in-machine-learning/",
      "title": "Curse of Dimensionality",
      "summary": "Why high-dimensional data quickly becomes sparse, distances stop making sense, and ML algorithms struggle",
      "content_text": "Why high-dimensional data quickly becomes sparse, distances stop making sense, and ML algorithms struggle",
      "date_published": "2024-08-01T12:05:12.000Z",
      "tags": ["ml","code"]
    },
    {
      "id": "https://til.andyp.ai/when-to-use-powertransformer-vs-standardscaler/",
      "url": "https://til.andyp.ai/when-to-use-powertransformer-vs-standardscaler/",
      "title": "When to Use PowerTransformer vs StandardScaler",
      "summary": "A concise comparison of StandardScaler and PowerTransformer, their purposes, effects, and when to choose each in a Python ML pipeline.",
      "content_text": "A concise comparison of StandardScaler and PowerTransformer, their purposes, effects, and when to choose each in a Python ML pipeline.",
      "date_published": "2024-07-05T00:00:00.000Z",
      "tags": ["python","ml"]
    },
    {
      "id": "https://til.andyp.ai/difference-between-bayesian-credible-intervals-and-frequentist-confidence-interv/",
      "url": "https://til.andyp.ai/difference-between-bayesian-credible-intervals-and-frequentist-confidence-interv/",
      "title": "Difference Between Bayesian Credible Intervals and Frequentist Confidence Intervals",
      "summary": "A practical comparison of Bayesian credible intervals versus frequentist confidence intervals and how to interpret them.",
      "content_text": "A practical comparison of Bayesian credible intervals versus frequentist confidence intervals and how to interpret them.",
      "date_published": "2024-06-22T00:00:00.000Z",
      "tags": ["math"]
    },
    {
      "id": "https://til.andyp.ai/dot-product-s-role-in-similarity-projections-and-gradients/",
      "url": "https://til.andyp.ai/dot-product-s-role-in-similarity-projections-and-gradients/",
      "title": "Dot Product's Role in Similarity, Projections, and Gradients",
      "summary": "Exploring how the dot product's measure of vector alignment underpins similarity metrics, projections, and gradients in ML and calculus",
      "content_text": "Exploring how the dot product's measure of vector alignment underpins similarity metrics, projections, and gradients in ML and calculus",
      "date_published": "2024-06-12T00:00:00.000Z",
      "tags": ["math","ml"]
    },
    {
      "id": "https://til.andyp.ai/why-sharing-gpu-power-between-ai-servers-and-personal-pcs-is-impractical/",
      "url": "https://til.andyp.ai/why-sharing-gpu-power-between-ai-servers-and-personal-pcs-is-impractical/",
      "title": "Why sharing GPU power between AI servers and personal PCs doesn't really work",
      "summary": "A practical look at why latency, hardware variety, and security issues make distributed GPU computing impractical",
      "content_text": "A practical look at why latency, hardware variety, and security issues make distributed GPU computing impractical",
      "date_published": "2024-06-10T07:17:26.000Z",
      "tags": ["ai","devops"]
    },
    {
      "id": "https://til.andyp.ai/neuroflow-optimizations-for-mnist-dataset/",
      "url": "https://til.andyp.ai/neuroflow-optimizations-for-mnist-dataset/",
      "title": "Neuroflow Optimizations for the MNIST Dataset",
      "summary": "Updates required to optimize Neuroflow for the MNIST dataset",
      "content_text": "Updates required to optimize Neuroflow for the MNIST dataset",
      "date_published": "2024-06-07T00:00:00.000Z",
      "tags": ["ml"]
    },
    {
      "id": "https://til.andyp.ai/dynamically-filtering-google-sheets-with-query-and-optional-criteria/",
      "url": "https://til.andyp.ai/dynamically-filtering-google-sheets-with-query-and-optional-criteria/",
      "title": "Dynamically Filtering Google Sheets with QUERY and Optional Criteria",
      "summary": "How to build a dynamic Google Sheets QUERY that applies optional filters and supports multiple values using IN clauses.",
      "content_text": "How to build a dynamic Google Sheets QUERY that applies optional filters and supports multiple values using IN clauses.",
      "date_published": "2024-06-07T00:00:00.000Z",
      "tags": ["productivity","code"]
    },
    {
      "id": "https://til.andyp.ai/working-with-the-mnist-dataset-in-javascript/",
      "url": "https://til.andyp.ai/working-with-the-mnist-dataset-in-javascript/",
      "title": "Working with the MNIST Dataset in JavaScript",
      "summary": "Notes on working with the famous MNIST Dataset in JavaScript",
      "content_text": "Notes on working with the famous MNIST Dataset in JavaScript",
      "date_published": "2024-05-29T00:00:00.000Z",
      "tags": ["javascript","ml"]
    },
    {
      "id": "https://til.andyp.ai/supporting-multiclass-classification-neuroflow/",
      "url": "https://til.andyp.ai/supporting-multiclass-classification-neuroflow/",
      "title": "Supporting Multi-class Classification with Neuroflow",
      "summary": "Extend Neuroflow to support multi-class classification by implementing the softmax activation function and cross-entropy loss.",
      "content_text": "Extend Neuroflow to support multi-class classification by implementing the softmax activation function and cross-entropy loss.",
      "date_published": "2024-05-26T00:00:00.000Z",
      "tags": ["ml"]
    },
    {
      "id": "https://til.andyp.ai/porting-micrograd-to-create-neuroflow/",
      "url": "https://til.andyp.ai/porting-micrograd-to-create-neuroflow/",
      "title": "Porting Micrograd To Create Neuroflow",
      "summary": "Creating Neuroflow by porting Andrej Karpathy's micrograd to JavaScript",
      "content_text": "Creating Neuroflow by porting Andrej Karpathy's micrograd to JavaScript",
      "date_published": "2024-05-22T00:00:00.000Z",
      "tags": ["ml"]
    },
    {
      "id": "https://til.andyp.ai/understanding-py-torch-transforms-to-tensor-and-normalize/",
      "url": "https://til.andyp.ai/understanding-py-torch-transforms-to-tensor-and-normalize/",
      "title": "Understanding PyTorch Transforms - ToTensor() and Normalize()",
      "summary": "A look at common PyTorch transforms for image preprocessing.",
      "content_text": "A look at common PyTorch transforms for image preprocessing.",
      "date_published": "2024-05-10T00:00:00.000Z",
      "tags": ["ml"]
    },
    {
      "id": "https://til.andyp.ai/using-promise-race-for-timeouts-and-more/",
      "url": "https://til.andyp.ai/using-promise-race-for-timeouts-and-more/",
      "title": "Using Promise.race for Timeouts and More",
      "summary": "Exploring the Promise.race method and its practical applications",
      "content_text": "Exploring the Promise.race method and its practical applications",
      "date_published": "2024-05-08T00:00:00.000Z",
      "tags": ["javascript","web-dev"]
    },
    {
      "id": "https://til.andyp.ai/quick-reference-for-managing-robots-txt/",
      "url": "https://til.andyp.ai/quick-reference-for-managing-robots-txt/",
      "title": "Quick Reference for Managing robots.txt",
      "summary": "Notes on setting up a robots.txt file",
      "content_text": "Notes on setting up a robots.txt file",
      "date_published": "2024-05-04T00:00:00.000Z",
      "tags": ["web-dev"]
    },
    {
      "id": "https://til.andyp.ai/convenient-gmail-shortcuts/",
      "url": "https://til.andyp.ai/convenient-gmail-shortcuts/",
      "title": "Convenient Gmail Keyboard Shortcuts",
      "summary": "Some of my most used gmail keyboard shortcuts",
      "content_text": "Some of my most used gmail keyboard shortcuts",
      "date_published": "2024-05-02T00:00:00.000Z",
      "tags": ["gmail","productivity"]
    },
    {
      "id": "https://til.andyp.ai/configuring-amazon-s3-for-use-with-cloudflare-dns/",
      "url": "https://til.andyp.ai/configuring-amazon-s3-for-use-with-cloudflare-dns/",
      "title": "Configuring Amazon S3 for Use with Cloudflare DNS",
      "summary": "Notes on some quirks of configuring an AWS S3 bucket when using Cloudflare for DNS management.",
      "content_text": "Notes on some quirks of configuring an AWS S3 bucket when using Cloudflare for DNS management.",
      "date_published": "2024-04-30T00:00:00.000Z",
      "tags": ["devops"]
    },
    {
      "id": "https://til.andyp.ai/how-to-update-__dirname-nodejs-with-es-modules/",
      "url": "https://til.andyp.ai/how-to-update-__dirname-nodejs-with-es-modules/",
      "title": "How to Update __dirname in Node.js for ES Modules",
      "summary": "Options on how to update __dirname in Node.js for ES modules",
      "content_text": "Options on how to update __dirname in Node.js for ES modules",
      "date_published": "2024-04-29T00:00:00.000Z",
      "tags": ["node-js"]
    },
    {
      "id": "https://til.andyp.ai/chain-of-draft-speeding-up-llm-reasoning-with-concise-steps/",
      "url": "https://til.andyp.ai/chain-of-draft-speeding-up-llm-reasoning-with-concise-steps/",
      "title": "Chain of Draft to Speed Up LLM Reasoning",
      "summary": "Chain of Draft (CoD) prompts LLMs to use short, minimal reasoning steps, achieving near-CoT accuracy with far lower token use and latency.",
      "content_text": "Chain of Draft (CoD) prompts LLMs to use short, minimal reasoning steps, achieving near-CoT accuracy with far lower token use and latency.",
      "date_published": "2024-04-02T00:00:00.000Z",
      "tags": ["ai","code","productivity"]
    },
    {
      "id": "https://til.andyp.ai/how-to-classify-gmail-messages-with-llms/",
      "url": "https://til.andyp.ai/how-to-classify-gmail-messages-with-llms/",
      "title": "How To Classify Gmail Messages With LLMs",
      "summary": "Useful Google script to classify all incoming emails using OpenAI",
      "content_text": "Useful Google script to classify all incoming emails using OpenAI",
      "date_published": "2024-02-21T00:00:00.000Z",
      "tags": ["gmail","productivity"]
    },
    {
      "id": "https://til.andyp.ai/working-with-dot-product-and-cosine-similarirty-for-unit-vectors/",
      "url": "https://til.andyp.ai/working-with-dot-product-and-cosine-similarirty-for-unit-vectors/",
      "title": "Working With Dot Product And Cosine Similarity For Unit Vectors",
      "summary": "Why dot product is equal to cosine similarity when working with unit vectors",
      "content_text": "Why dot product is equal to cosine similarity when working with unit vectors",
      "date_published": "2024-01-26T00:00:00.000Z",
      "tags": ["math","ml"]
    },
    {
      "id": "https://til.andyp.ai/faiss-vs-pgvector-why-one-s-a-library-and-the-other-s-a-database/",
      "url": "https://til.andyp.ai/faiss-vs-pgvector-why-one-s-a-library-and-the-other-s-a-database/",
      "title": "FAISS vs pgvector - why one's a library and the other's a database",
      "summary": "FAISS is a rocket-fast in-memory index, pgvector is Postgres with vectors. Here's when to pick each, with code.",
      "content_text": "FAISS is a rocket-fast in-memory index, pgvector is Postgres with vectors. Here's when to pick each, with code.",
      "date_published": "2024-01-02T00:00:00.000Z",
      "tags": ["ai","code"]
    },
    {
      "id": "https://til.andyp.ai/absorbing-data-and-overcoming-information-blindness/",
      "url": "https://til.andyp.ai/absorbing-data-and-overcoming-information-blindness/",
      "title": "Absorbing Data and Overcoming Information Blindness",
      "summary": "How to design data systems that help users absorb information and avoid information blindness, with actionable strategies.",
      "content_text": "How to design data systems that help users absorb information and avoid information blindness, with actionable strategies.",
      "date_published": "2023-11-07T00:00:00.000Z",
      "tags": ["productivity","strategy"]
    },
    {
      "id": "https://til.andyp.ai/how-the-us-got-guantanamo-bay-in-cuba/",
      "url": "https://til.andyp.ai/how-the-us-got-guantanamo-bay-in-cuba/",
      "title": "How the U.S. Got Guantanamo Bay in Cuba",
      "summary": "The history and impact of the U.S. lease of Guantanamo Bay from Cuba, and how it shapes relations today.",
      "content_text": "The history and impact of the U.S. lease of Guantanamo Bay from Cuba, and how it shapes relations today.",
      "date_published": "2023-11-04T00:00:00.000Z",
      "tags": ["strategy"]
    },
    {
      "id": "https://til.andyp.ai/what-does-ordinary-mean-in-ordinary-least-squares/",
      "url": "https://til.andyp.ai/what-does-ordinary-mean-in-ordinary-least-squares/",
      "title": "What Does 'Ordinary' Mean in Ordinary Least Squares?",
      "summary": "Why “ordinary” is used in OLS and how it distinguishes it from other least-squares methods.",
      "content_text": "Why “ordinary” is used in OLS and how it distinguishes it from other least-squares methods.",
      "date_published": "2023-06-25T00:00:00.000Z",
      "tags": ["math","code"]
    },
    {
      "id": "https://til.andyp.ai/python-asyncio-for-javascript-developers/",
      "url": "https://til.andyp.ai/python-asyncio-for-javascript-developers/",
      "title": "Python's asyncio as a JS Dev",
      "summary": "Some quick notes on Python's asyncio module coming from JavaScript.",
      "content_text": "Some quick notes on Python's asyncio module coming from JavaScript.",
      "date_published": "2023-05-31T00:00:00.000Z",
      "tags": ["code","python","javascript"]
    },
    {
      "id": "https://til.andyp.ai/numpy-dimensions/",
      "url": "https://til.andyp.ai/numpy-dimensions/",
      "title": "Understanding Array Dimensions in NumPy",
      "summary": "Clarifying what \"dimension\" really means in NumPy arrays and broadcasting.",
      "content_text": "Clarifying what \"dimension\" really means in NumPy arrays and broadcasting.",
      "date_published": "2023-05-02T00:00:00.000Z",
      "tags": ["ml","code"]
    },
    {
      "id": "https://til.andyp.ai/pushing-data-to-parent-window-from-an-iframe/",
      "url": "https://til.andyp.ai/pushing-data-to-parent-window-from-an-iframe/",
      "title": "Pushing Data to Parent Window from an iframe",
      "summary": "How to push data from an iframe to the parent window's dataLayer",
      "content_text": "How to push data from an iframe to the parent window's dataLayer",
      "date_published": "2023-04-11T00:00:00.000Z",
      "tags": ["javascript","web-dev"]
    },
    {
      "id": "https://til.andyp.ai/what-does-super-child-self-init-do-in-python/",
      "url": "https://til.andyp.ai/what-does-super-child-self-init-do-in-python/",
      "title": "What does super(Child, self) init do in Python?",
      "summary": "Exploring the role and usage of super() in Python class constructors",
      "content_text": "Exploring the role and usage of super() in Python class constructors",
      "date_published": "2023-03-20T00:00:00.000Z",
      "tags": ["python"]
    },
    {
      "id": "https://til.andyp.ai/pytorch-basics-and-quick-reference/",
      "url": "https://til.andyp.ai/pytorch-basics-and-quick-reference/",
      "title": "PyTorch Basics & Quick Reference",
      "summary": "A quick walk-through and overview of using PyTorch",
      "content_text": "A quick walk-through and overview of using PyTorch",
      "date_published": "2023-01-12T00:00:00.000Z",
      "tags": ["ml"]
    },
    {
      "id": "https://til.andyp.ai/setting-up-parcel-pug-marked/",
      "url": "https://til.andyp.ai/setting-up-parcel-pug-marked/",
      "title": "Setting up Parcel + Pug + Marked",
      "summary": "Notes on setting up Parcel, Pug, and Markdown",
      "content_text": "Notes on setting up Parcel, Pug, and Markdown",
      "date_published": "2023-01-02T00:00:00.000Z",
      "tags": ["web-dev"]
    }
  ]
}
