{
  "items": [
    {
      "id": "2026-08-31-making-a-personal-site-readable-to-llms.md",
      "collection": "blog",
      "slug": "2026-08-31-making-a-personal-site-readable-to-llms",
      "url": "https://emasuriano.com/blog/2026-08-31-making-a-personal-site-readable-to-llms",
      "data": {
        "title": "Making a personal site readable to LLMs",
        "summary": "I watched a talk about getting LLMs to recommend an open source library, then tried the same idea on my portfolio. The homepage did not change. The scores did.",
        "publishedAt": "2026-08-31T00:00:00.000Z"
      }
    },
    {
      "id": "2026-08-31-pr-previews-on-github-pages-without-netlify.md",
      "collection": "til",
      "slug": "2026-08-31-pr-previews-on-github-pages-without-netlify",
      "url": "https://emasuriano.com/til/2026-08-31-pr-previews-on-github-pages-without-netlify",
      "data": {
        "title": "PR previews on GitHub Pages without Netlify",
        "summary": "GitHub Pages can host a live preview for every pull request if you deploy from a gh-pages branch, so you don't need Netlify just for that.",
        "publishedAt": "2026-08-31T00:00:00.000Z"
      }
    },
    {
      "id": "2026-05-12-sesame-wake.md",
      "collection": "blog",
      "slug": "2026-05-12-sesame-wake",
      "url": "https://emasuriano.com/blog/2026-05-12-sesame-wake",
      "data": {
        "title": "Sesame Wake: A Bring-Your-Own Wake Word Launcher for Sesame",
        "summary": "How I built a local wake-word launcher for Sesame with configurable ONNX models, a Textual TUI, and reliable browser automation.",
        "publishedAt": "2026-05-12T00:00:00.000Z"
      }
    },
    {
      "id": "2026-01-25-ollama-launch-free-claude-code.md",
      "collection": "til",
      "slug": "2026-01-25-ollama-launch-free-claude-code",
      "url": "https://emasuriano.com/til/2026-01-25-ollama-launch-free-claude-code",
      "data": {
        "title": "Ollama Launch lets you run Claude Code for free",
        "summary": "Ollama’s Launch feature lets you spin up Claude locally, so you can use Claude Code without an Anthropic subscription. I’m running the powerful `gpt-oss:120b-cloud` model and it feels amazing.",
        "publishedAt": "2026-01-25T00:00:00.000Z"
      }
    },
    {
      "id": "2025-07-11-building-a-universal-ai-chat-interface-with-streamlit-and-litellm.md",
      "collection": "blog",
      "slug": "2025-07-11-building-a-universal-ai-chat-interface-with-streamlit-and-litellm",
      "url": "https://emasuriano.com/blog/2025-07-11-building-a-universal-ai-chat-interface-with-streamlit-and-litellm",
      "data": {
        "title": "Building a Universal AI Chat Interface with Streamlit and LiteLLM",
        "summary": "Creating a flexible AI chat application that works with 100+ language models from different providers using Streamlit's interactive interface and LiteLLM's unified API abstraction.",
        "publishedAt": "2025-07-11T00:00:00.000Z"
      }
    },
    {
      "id": "2025-04-23-the-silent-struggle:-my-journey-with-background-noise-dependency.md",
      "collection": "blog",
      "slug": "2025-04-23-the-silent-struggle-my-journey-with-background-noise-dependency",
      "url": "https://emasuriano.com/blog/2025-04-23-the-silent-struggle-my-journey-with-background-noise-dependency",
      "data": {
        "title": "The Silent Struggle: My Journey with Background Noise Dependency",
        "summary": "A personal journey from constant audio stimulation to rediscovering the value of silence through mindful consumption practices",
        "publishedAt": "2025-04-23T00:00:00.000Z"
      }
    },
    {
      "id": "2025-03-27-running-ollama-in-github-actions---automating-llm-workflows.md",
      "collection": "blog",
      "slug": "2025-03-27-running-ollama-in-github-actions---automating-llm-workflows",
      "url": "https://emasuriano.com/blog/2025-03-27-running-ollama-in-github-actions---automating-llm-workflows",
      "data": {
        "title": "Running Ollama in GitHub Actions - Automating LLM Workflows",
        "summary": "How I integrated Ollama into GitHub Actions to run LLMs in CI/CD pipelines opening up new possibilities for automated content generation and AI-powered workflows",
        "publishedAt": "2025-03-27T00:00:00.000Z"
      }
    },
    {
      "id": "2025-01-23-vs-code-profiles---a-game-changer-for-managing-different-development-setups.md",
      "collection": "til",
      "slug": "2025-01-23-vs-code-profiles---a-game-changer-for-managing-different-development-setups",
      "url": "https://emasuriano.com/til/2025-01-23-vs-code-profiles---a-game-changer-for-managing-different-development-setups",
      "data": {
        "title": "VS Code Profiles - A Game-Changer for Managing Different Development Setups",
        "summary": "The profile feature lets you create separate environments with different extensions and settings for each tech stack helping keep your IDE fast and organized by loading only what you need for each project.",
        "publishedAt": "2025-01-23T00:00:00.000Z"
      }
    },
    {
      "id": "2025-01-21-simplifying-python-development-with-uv:-a-modern-package-management-tool.md",
      "collection": "blog",
      "slug": "2025-01-21-simplifying-python-development-with-uv-a-modern-package-management-tool",
      "url": "https://emasuriano.com/blog/2025-01-21-simplifying-python-development-with-uv-a-modern-package-management-tool",
      "data": {
        "title": "Simplifying Python Development with uv: A Modern Package Management Tool",
        "summary": "uv is a blazingly fast Python package manager that simplifies dependency management and virtual environment workflows through modern tooling written in Rust.",
        "publishedAt": "2025-01-21T00:00:00.000Z"
      }
    },
    {
      "id": "2024-11-07-deploying-and-using-your-ml-model-with-streamlit.md",
      "collection": "til",
      "slug": "2024-11-07-deploying-and-using-your-ml-model-with-streamlit",
      "url": "https://emasuriano.com/til/2024-11-07-deploying-and-using-your-ml-model-with-streamlit",
      "data": {
        "title": "Deploying and using your ML model with Streamlit",
        "summary": "I stumble across one of the easiest ways of deploying  ML models online so anyone can use it",
        "publishedAt": "2024-11-07T00:00:00.000Z"
      }
    },
    {
      "id": "2024-07-04-supervised-learning-in-a-nutshell.md",
      "collection": "blog",
      "slug": "2024-07-04-supervised-learning-in-a-nutshell",
      "url": "https://emasuriano.com/blog/2024-07-04-supervised-learning-in-a-nutshell",
      "data": {
        "title": "Supervised Learning in a Nutshell",
        "summary": "Key steps and improvements in supervised learning, from data splitting to advanced techniques for better performance",
        "publishedAt": "2024-10-07T00:00:00.000Z"
      }
    },
    {
      "id": "2024-09-26-running-locall-llm-is-not-that-hard.md",
      "collection": "til",
      "slug": "2024-09-26-running-locall-llm-is-not-that-hard",
      "url": "https://emasuriano.com/til/2024-09-26-running-locall-llm-is-not-that-hard",
      "data": {
        "title": "Running local LLM is not as hard as I expected",
        "summary": "During the past days I've tried different models locally and it turns out that it was easier than I expected!",
        "publishedAt": "2024-09-26T00:00:00.000Z"
      }
    },
    {
      "id": "2024-09-26-easily-obtain-github-repository-preview-images.md",
      "collection": "til",
      "slug": "2024-09-26-easily-obtain-github-repository-preview-images",
      "url": "https://emasuriano.com/til/2024-09-26-easily-obtain-github-repository-preview-images",
      "data": {
        "title": "Get Github repository preview images",
        "summary": "You can use the Opengraph API of Github to get always up to date preview of any repository",
        "publishedAt": "2024-09-26T00:00:00.000Z"
      }
    },
    {
      "id": "2024-08-05-setup-birthday-reminder-via-email.md",
      "collection": "til",
      "slug": "2024-08-05-setup-birthday-reminder-via-email",
      "url": "https://emasuriano.com/til/2024-08-05-setup-birthday-reminder-via-email",
      "data": {
        "title": "Remind yourself of Birthdays Using Google Calendar and Apps Script",
        "summary": "How to automate birthday email reminders using Google Calendar and Apps Script by leveraging Google Contacts to create a birthday calendar and setting up a script to send notifications on each birthday.",
        "publishedAt": "2024-08-05T00:00:00.000Z"
      }
    },
    {
      "id": "2024-07-31-install-fuzzy-clips.md",
      "collection": "blog",
      "slug": "2024-07-31-install-fuzzy-clips",
      "url": "https://emasuriano.com/blog/2024-07-31-install-fuzzy-clips",
      "data": {
        "title": "How to Install Fuzzy CLIPS: A Quick and Easy Setup Tutorial",
        "summary": "How to set up and use Fuzzy CLIPS to create a fuzzy logic system for controlling fan speed based on temperature and humidity.",
        "publishedAt": "2024-07-31T00:00:00.000Z"
      }
    },
    {
      "id": "2024-07-24-setting-up-a-decent-recording-setup-without-spending.md",
      "collection": "til",
      "slug": "2024-07-24-setting-up-a-decent-recording-setup-without-spending",
      "url": "https://emasuriano.com/til/2024-07-24-setting-up-a-decent-recording-setup-without-spending",
      "data": {
        "title": "Setting up a decent recording setup without spending",
        "summary": "Boosting video recording setup using NVIDIA's app to save on hardware expenses.",
        "publishedAt": "2024-07-24T00:00:00.000Z"
      }
    },
    {
      "id": "2024-07-01-create-presentations-from-notebook.md",
      "collection": "til",
      "slug": "2024-07-01-create-presentations-from-notebook",
      "url": "https://emasuriano.com/til/2024-07-01-create-presentations-from-notebook",
      "data": {
        "title": "Interactive presentations from a Jupyter Notebook",
        "summary": "I explained how you can easily convert your notebooks into well animated presentations powered by Reveal.js",
        "publishedAt": "2024-07-02T00:00:00.000Z"
      }
    },
    {
      "id": "2024-06-24-adding-support-for-latex-in-astrojs.md",
      "collection": "til",
      "slug": "2024-06-24-adding-support-for-latex-in-astrojs",
      "url": "https://emasuriano.com/til/2024-06-24-adding-support-for-latex-in-astrojs",
      "data": {
        "title": "Adding support for LaTeX in Astro.js",
        "summary": "Enhance your Markdown with LaTeX math thanks to remark-math project",
        "publishedAt": "2024-06-24T00:00:00.000Z"
      }
    },
    {
      "id": "2024-06-23-drawing-3d-functions-with-plotly-correctly.md",
      "collection": "blog",
      "slug": "2024-06-23-drawing-3d-functions-with-plotly-correctly",
      "url": "https://emasuriano.com/blog/2024-06-23-drawing-3d-functions-with-plotly-correctly",
      "data": {
        "title": "Drawing 3D functions with Plotly",
        "summary": "I found JupyterLite for embedding Python code in websites, enabling easy sharing and local execution.",
        "publishedAt": "2024-06-23T00:00:00.000Z"
      }
    },
    {
      "id": "2024-06-21-running-jupyter-notebook-in-the-browser.md",
      "collection": "til",
      "slug": "2024-06-21-running-jupyter-notebook-in-the-browser",
      "url": "https://emasuriano.com/til/2024-06-21-running-jupyter-notebook-in-the-browser",
      "data": {
        "title": "Running Jupyter notebook in the browser",
        "summary": "I found JupyterLite for embedding Python code in websites, enabling easy sharing and local execution.",
        "publishedAt": "2024-06-21T00:00:00.000Z"
      }
    }
  ],
  "has_more": true,
  "next_cursor": "20",
  "total": 37,
  "limit": 20
}