41554 blogs · [ { "id": "01a087df-6342-72d6-b331-f291064af106", "title": "Cultural Alignment of Open-Weight LLMs on the Inglehart-Welzel Map", "url": "https://shav.dev/blog/cultural-alignment-of-open-weight-llms-on-the-inglehart-welzel-map", "published_at": "2026-08-04T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f291065ad4ed", "title": "The Last Moats", "url": "https://shav.dev/blog/the-last-moats", "published_at": "2026-07-07T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29106b6ff0f", "title": "The Tech Frontier", "url": "https://shav.dev/blog/the-tech-frontier", "published_at": "2026-07-06T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29106eb1c70", "title": "The Trust Barrier", "url": "https://shav.dev/blog/the-trust-barrier", "published_at": "2026-07-04T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29107d54f29", "title": "I Open-Sourced My Coding Agents' Memory", "url": "https://shav.dev/blog/i-open-sourced-my-coding-agents-memory", "published_at": "2026-06-24T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2910852b420", "title": "How I Gave My Coding Agents Persistent Memory", "url": "https://shav.dev/blog/how-i-gave-my-coding-agents-persistent-memory", "published_at": "2026-03-12T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29109026a2b", "title": "Multi‑Agent Web Exploration with Shared Graph Memory", "url": "https://shav.dev/blog/dora", "published_at": "2026-02-19T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f291097687f0", "title": "Our Lessons from Building Production Voice AI", "url": "https://shav.dev/blog/voice-ai-lessons", "published_at": "2026-01-11T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29109c5b929", "title": "Reinforcement Learning, Memory and Law", "url": "https://shav.dev/blog/rlhf", "published_at": "2025-12-10T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29109e15222", "title": "Automating Secret Management", "url": "https://shav.dev/blog/secret-management", "published_at": "2025-10-23T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29109fe3050", "title": "The Knowledge Layer", "url": "https://shav.dev/blog/the-knowledge-layer", "published_at": "2025-10-05T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2910a2a26b8", "title": "OTel Sidecars on Fargate", "url": "https://shav.dev/blog/otel-traces", "published_at": "2025-09-11T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2910a930b63", "title": "Git Disasters and Process Debt", "url": "https://shav.dev/blog/git-learnings", "published_at": "2025-09-07T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2910b3070ad", "title": "Is Code Rotting Due To AI?", "url": "https://shav.dev/blog/is-code-rotting-due-to-ai", "published_at": "2025-09-03T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2910bc3494f", "title": "The Integration Illusion", "url": "https://shav.dev/blog/building-integrations", "published_at": "2025-08-30T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2910c1aa3b0", "title": "When MCP Fails", "url": "https://shav.dev/blog/when-mcp-fails", "published_at": "2025-08-26T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2910c60d04c", "title": "Context Engineering", "url": "https://shav.dev/blog/context-engineering", "published_at": "2025-08-22T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2910d1d12dc", "title": "Stop Email Spoofing with DMARC", "url": "https://shav.dev/blog/email-security", "published_at": "2025-08-05T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2910d99a976", "title": "SOTA Embedding Retrieval: Gemini + pgvector for Production Chat", "url": "https://shav.dev/blog/state-of-the-art-embedding-retrieval", "published_at": "2025-07-21T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2910df86f46", "title": "Agentic Design Patterns", "url": "https://shav.dev/blog/agentic-design-patterns", "published_at": "2025-06-21T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2910ee0c2d1", "title": "Building AI Agents for Automated Podcasts", "url": "https://shav.dev/blog/podcast-agent", "published_at": "2025-01-01T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2910f26af16", "title": "Rediscovering Cursor", "url": "https://shav.dev/blog/rediscovering-cursor", "published_at": "2024-12-02T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2910fb396fb", "title": "GraphRAG > Traditional Vector RAG", "url": "https://shav.dev/blog/graphrag", "published_at": "2024-08-08T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f291105f8d2b", "title": "Cultural Bias in LLMs", "url": "https://shav.dev/blog/cultural-bias", "published_at": "2024-07-20T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f291107501af", "title": "Mapping out the AI Landscape with Topic Modelling", "url": "https://shav.dev/blog/topic-modelling", "published_at": "2024-07-07T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f291116b5a6c", "title": "Sustainable Cloud Computing: Carbon-Aware AI", "url": "https://shav.dev/blog/carbon-aware-ai", "published_at": "2024-06-27T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f291116ff99d", "title": "Defensive Technology for the Next Decade of AI", "url": "https://shav.dev/blog/defensive-technology-ai", "published_at": "2024-06-24T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2911186e52d", "title": "Situational Awareness: The Decade Ahead", "url": "https://shav.dev/blog/situational-awareness", "published_at": "2024-06-13T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2911232492f", "title": "Mechanistic Interpretability: A Survey", "url": "https://shav.dev/blog/mechanistic-interpretability-a-survey", "published_at": "2024-06-07T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f291131448c9", "title": "Why I Left Ubuntu", "url": "https://shav.dev/blog/why-i-left-ubuntu", "published_at": "2024-05-24T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f291137c1652", "title": "Multi-Agent Collaboration", "url": "https://shav.dev/blog/autonomous-agents-multi-agent-collaboration", "published_at": "2024-04-16T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2911433bd3d", "title": "Building Better Retrieval Systems", "url": "https://shav.dev/blog/enhancing-rag", "published_at": "2024-03-28T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2911452b41d", "title": "Building an Automated Newsletter-to-Summary Pipeline with Zapier AI Actions vs AWS SES & Lambda", "url": "https://shav.dev/blog/building-an-automated-newsletter-to-summary-pipeline", "published_at": "2024-02-03T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29114f37012", "title": "Local AI Image Generation", "url": "https://shav.dev/blog/ai-image-generation", "published_at": "2023-12-15T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29115203b65", "title": "Deploying a Distributed Ray Python Server with Kubernetes, EKS & KubeRay", "url": "https://shav.dev/blog/mlops-deploying-a-distributed-ray-python-server-kubernetes-eks-kuberay", "published_at": "2023-11-15T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29115ef6a64", "title": "Making the Switch to Linux for Development", "url": "https://shav.dev/blog/switching-from-windows-to-linux", "published_at": "2023-10-24T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2911614fd59", "title": "Scaling Options Pricing with Ray", "url": "https://shav.dev/blog/scaling-options-pricing-ray", "published_at": "2023-10-01T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f291171072c6", "title": "The Async Worker Pool", "url": "https://shav.dev/blog/pool-of-workers", "published_at": "2023-09-23T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f291174dec5d", "title": "Browser Fingerprinting: Introducing My First NPM Package", "url": "https://shav.dev/blog/browser-fingerprinting", "published_at": "2023-09-08T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f291178dd6d5", "title": "Reading Data from @socket.io/redis-emitter without Using a Socket.io Client", "url": "https://shav.dev/blog/redis-emitter", "published_at": "2023-07-06T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f291188a7868", "title": "Socket.io Middleware for Redux Store Integration", "url": "https://shav.dev/blog/socket-io-and-redux-middleware", "published_at": "2023-07-01T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2911981ab18", "title": "Sharing TypeScript Code Between Microservices: A Guide Using Git Submodules", "url": "https://shav.dev/blog/git-submodules", "published_at": "2023-04-21T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29119ada99e", "title": "Efficient Dataset Storage: Beyond CSVs", "url": "https://shav.dev/blog/efficient-dataset-storage-for-data-scientists", "published_at": "2023-02-03T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29119b9632c", "title": "Why I switched from Plain React to Next.js 13", "url": "https://shav.dev/blog/why-i-switched-from-react-to-next", "published_at": "2022-11-08T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29119d813b8", "title": "Deploy & Scale Socket.io Containers in ECS with Elasticache", "url": "https://shav.dev/blog/deploy-and-scale-socketio-with-ecs", "published_at": "2022-11-03T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f29119ee2244", "title": "Implementing TOTP Authentication in Python using PyOTP", "url": "https://shav.dev/blog/implementing-totp-authentication-in-python-using-pyotp", "published_at": "2022-09-13T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2911a832f14", "title": "Simplifying Lambda Layer ARNs and Creating Custom Layers in AWS", "url": "https://shav.dev/blog/lambda-layers", "published_at": "2022-09-09T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2911b044d5c", "title": "TimeScaleDB Deployment: Docker Containers and EC2 Setup", "url": "https://shav.dev/blog/local-docker-container-with-passthrough-mount-and-cloud-configuration-in-an-ec2", "published_at": "2022-06-23T00:00:00+00:00" }, { "id": "01a087df-6342-72d6-b331-f2911b87ec52", "title": "How to SSH into an EC2 Instance Using PuTTY", "url": "https://shav.dev/blog/how-to-ssh-into-an-ec2-with-putty", "published_at": "2021-12-16T00:00:00+00:00" } ] posts Claim your blog
Back to shav.dev
Blog · corpus.blog/blogs/shav.dev/posts

shav.dev

shav.dev

2026

2025

2024

2023

2022

2021