<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Kevin Keller</title><link>https://kevinkeller.org/</link><description>Recent content on Kevin Keller</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>kellerkev@gmail.com (Kevin Keller)</managingEditor><webMaster>kellerkev@gmail.com (Kevin Keller)</webMaster><copyright>© 2026 Kevin Keller</copyright><lastBuildDate>Fri, 05 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://kevinkeller.org/index.xml" rel="self" type="application/rss+xml"/><item><title>DuckIceLake: An Iceberg v3 REST Catalog Proxy on Top of DuckLake</title><link>https://kevinkeller.org/posts/duckicelake-iceberg-v3-rest-catalog-ducklake/</link><pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/duckicelake-iceberg-v3-rest-catalog-ducklake/</guid><description>A full Iceberg REST Catalog proxy that materialises DuckLake&amp;rsquo;s snapshot state into Iceberg manifests on demand — giving standard Iceberg clients (PyIceberg, DuckDB, Trino, Spark) read/write access to a DuckLake-backed lakehouse.</description></item><item><title>lakesh: A DuckDB SQL Shell for Iceberg REST Catalogs with MCP Support</title><link>https://kevinkeller.org/posts/lakesh-duckdb-sql-shell-iceberg-rest-mcp/</link><pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/lakesh-duckdb-sql-shell-iceberg-rest-mcp/</guid><description>A DuckDB-powered SQL shell for Iceberg REST catalogs and DuckLake metastores — profile-based connection management, psql-style meta-commands, and an MCP server so LLM agents can query your catalogs directly.</description></item><item><title>Nanocortex Web Agent: An AI Knowledge Management Agent with Zettelkasten-Powered Retrieval</title><link>https://kevinkeller.org/posts/nanocortex-web-agent-production-ai-knowledge-management/</link><pubDate>Fri, 05 Jun 2026 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/nanocortex-web-agent-production-ai-knowledge-management/</guid><description>An AI knowledge management agent with a web interface, zettelkasten knowledge graph ingestion, document approval workflow, optional web search, and a skills system — powered by the Snowflake Cortex Agent API.</description></item><item><title>TurboQuant KV Cache — Running 128B Models on Consumer Hardware</title><link>https://kevinkeller.org/posts/turboquant-kv-cache-local-llm-consumer-hardware/</link><pubDate>Thu, 30 Apr 2026 10:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/turboquant-kv-cache-local-llm-consumer-hardware/</guid><description>KV cache is the memory wall that limits context length on consumer hardware. TurboQuant shrinks it 5x with minimal quality loss — here&amp;rsquo;s a ready-to-run build that packages llama.cpp with TurboQuant KV compression into a single conda install.</description></item><item><title>Site-to-Site VPN with SoftEther -- Connecting On-Premise, AWS, and Azure Networks</title><link>https://kevinkeller.org/posts/softether-site-to-site-vpn-onprem-aws-azure/</link><pubDate>Fri, 03 Apr 2026 07:30:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/softether-site-to-site-vpn-onprem-aws-azure/</guid><description>How to build a multi-site VPN mesh with SoftEther &amp;ndash; connecting an on-premise network, an AWS VPC, and an Azure VNet through a central VPN hub. Full setup: SoftEther server, TAP interfaces, iptables routing, dnsmasq, and site-to-site bridge configuration.</description></item><item><title>Snowflake Container Services Deep Dive — Security, Networking, and Tunneling</title><link>https://kevinkeller.org/posts/snowflake-container-services-deep-dive/</link><pubDate>Fri, 03 Apr 2026 06:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-container-services-deep-dive/</guid><description>A comprehensive deep dive into Snowflake Container Services — security architecture, compute isolation, ingress/egress controls, PAT authentication, CORS, private connectivity, and tunneling approaches (SSH, WebSocket, Tailscale, ngrok) to connect SPCS to your own infrastructure.</description></item><item><title>SSH Tunnels from Snowflake Container Services — Bidirectional Access to Your DMZ, Home Lab, or PC</title><link>https://kevinkeller.org/posts/snowflake-container-services-ssh-tunnel-dmz/</link><pubDate>Thu, 02 Apr 2026 10:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-container-services-ssh-tunnel-dmz/</guid><description>How to establish persistent, bidirectional SSH tunnels from Snowflake Container Services to any machine you control — using base64-encoded keys in Snowflake Secrets, autossh for resilience, reverse port forwards, and nginx to expose SPCS services with SSL on your own domain.</description></item><item><title>Beyond RBAC — Why AI Agents Need Purpose-Aware Access Control</title><link>https://kevinkeller.org/posts/beyond-rbac-purpose-aware-access-control-ai-agents/</link><pubDate>Tue, 31 Mar 2026 12:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/beyond-rbac-purpose-aware-access-control-ai-agents/</guid><description>RBAC tells you if a role can access a table. But can this agent invoke this tool on this data for this purpose? The industry is building the pieces — Cedar, Proofpoint, Cisco, Immuta — but the unified policy engine that evaluates all attributes across all layers doesn&amp;rsquo;t exist yet.</description></item><item><title>DuckLake on Hetzner with Pixi — A Governed Data Lake for Under 10 Euros a Month</title><link>https://kevinkeller.org/posts/ducklake-pixi-data-lake-under-10-euros/</link><pubDate>Mon, 30 Mar 2026 12:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/ducklake-pixi-data-lake-under-10-euros/</guid><description>A complete data lake with row-level access control, S3 storage, and SQL analytics — managed entirely through pixi, running on Hetzner for under 10 euros a month.</description></item><item><title>Snowflake Managed MCP Servers Support External OAuth — Here's How</title><link>https://kevinkeller.org/posts/snowflake-mcp-external-oauth-authentication/</link><pubDate>Mon, 30 Mar 2026 10:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-mcp-external-oauth-authentication/</guid><description>Snowflake&amp;rsquo;s managed MCP servers work with external OAuth tokens — JWT-signed, role-scoped, and RBAC-enforced. Tested end-to-end with tool discovery and SQL execution.</description></item><item><title>A Layered Architecture for Python and Conda Supply Chain Security</title><link>https://kevinkeller.org/posts/layered-architecture-python-conda-supply-chain-security/</link><pubDate>Sat, 28 Mar 2026 10:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/layered-architecture-python-conda-supply-chain-security/</guid><description>Signing alone wouldn&amp;rsquo;t have stopped the LiteLLM backdoor — the attacker used the real credentials. This article explores a layered defense architecture for the Python and conda supply chain: Sigstore signing, Anaconda curation, Chainguard rebuilt-from-source, and runtime containment.</description></item><item><title>TurboQuant — What 6x Vector Compression Means for AI Agents</title><link>https://kevinkeller.org/posts/turboquant-vector-compression-ai-agents/</link><pubDate>Sat, 28 Mar 2026 10:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/turboquant-vector-compression-ai-agents/</guid><description>Google&amp;rsquo;s TurboQuant compresses embedding vectors to 3-4 bits with under 2% recall loss — no training required. Here&amp;rsquo;s why that matters for AI agent memory systems.</description></item><item><title>Federal Zero Trust Architecture Blueprint — Snowflake as the AI + Data Control Plane</title><link>https://kevinkeller.org/posts/snowflake-federal-zero-trust-architecture/</link><pubDate>Fri, 27 Mar 2026 10:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-federal-zero-trust-architecture/</guid><description>Snowflake provides a unified Zero Trust control plane for both data and AI inference. This blueprint maps Snowflake and Cortex to NIST 800-207, CISA&amp;rsquo;s Zero Trust Maturity Model, and OMB M-22-09 — one governance layer, one policy stack, no shadow AI.</description></item><item><title>Zettelkasten Memory for AI Agents — Semantic Knowledge Graphs That Grow With Every Conversation</title><link>https://kevinkeller.org/posts/zettelkasten-memory-layer-ai-agents/</link><pubDate>Fri, 27 Mar 2026 10:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/zettelkasten-memory-layer-ai-agents/</guid><description>A pluggable semantic memory layer for AI agents inspired by the Zettelkasten method — auto-linking, importance scoring, and graph traversal across CrewAI, LangGraph, and Claude Code.</description></item><item><title>SMCP: Adding Security to the Model Context Protocol</title><link>https://kevinkeller.org/posts/smcp-secure-model-context-protocol/</link><pubDate>Thu, 26 Mar 2026 08:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/smcp-secure-model-context-protocol/</guid><description>A proof-of-concept that layers authentication, encryption, and multi-agent coordination onto MCP — with four security tiers from API keys to enterprise OAuth2 with audit trails.</description></item><item><title>Robyn Extensions: Rust-Powered Validation, Auth, and Rate Limiting for Python APIs</title><link>https://kevinkeller.org/posts/robyn-extensions-rust-powered-python-api/</link><pubDate>Thu, 26 Mar 2026 07:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/robyn-extensions-rust-powered-python-api/</guid><description>A set of Rust-backed extensions for the Robyn web framework — Pydantic v2 validation, JWT/OAuth2 auth, token-bucket rate limiting, and auto-generated OpenAPI docs. Sub-microsecond overhead.</description></item><item><title>AES-CBC Column-Level Encryption in Snowflake: Four Key Management Strategies</title><link>https://kevinkeller.org/posts/snowflake-aes-cbc-column-encryption-key-management/</link><pubDate>Thu, 26 Mar 2026 06:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-aes-cbc-column-encryption-key-management/</guid><description>Four sample methods for managing encryption keys in Snowflake — from session variables to cloud KMS to HYOK key wrapping — ensuring sensitive data is protected with keys you control. Postgres pgcrypto compatible.</description></item><item><title>Federated Queries Between Snowflake Accounts Using Service Accounts and OAuth</title><link>https://kevinkeller.org/posts/snowflake-federated-queries-cross-account-oauth/</link><pubDate>Mon, 23 Mar 2026 10:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-federated-queries-cross-account-oauth/</guid><description>How to execute SQL across Snowflake accounts using the SQL API with OAuth — covering Client Credentials (Entra ID), Self-Signed JWT (GCP), PAT, and Key-Pair authentication with full architecture diagrams and code.</description></item><item><title>Snowflake Native Webhook Notifications for SIEM: Splunk and Microsoft Sentinel</title><link>https://kevinkeller.org/posts/snowflake-siem-webhook-notifications/</link><pubDate>Mon, 23 Mar 2026 10:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-siem-webhook-notifications/</guid><description>How to send security alerts from Snowflake directly to your SIEM using native webhook notification integrations — with working examples for Splunk HEC and Microsoft Sentinel, plus a hybrid approach for dynamic OAuth tokens.</description></item><item><title>Automate Google Workspace with AI Coding Agents: Slides, Sheets, Docs, and More</title><link>https://kevinkeller.org/posts/google-productivity-skill-ai-coding-agents/</link><pubDate>Mon, 23 Mar 2026 09:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/google-productivity-skill-ai-coding-agents/</guid><description>An open-source skill that teaches any AI coding agent — Cortex Code, Claude Code, or others — to automate Google Slides, Sheets, Docs, Drive, and Forms using natural language prompts.</description></item><item><title>Security Operations AI Skill: Turn Snowflake into a Cybersecurity Data Lake</title><link>https://kevinkeller.org/posts/snowflake-security-ops-skill-cybersecurity/</link><pubDate>Mon, 23 Mar 2026 08:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-security-ops-skill-cybersecurity/</guid><description>An open-source AI skill that teaches any coding agent to build threat detection pipelines, hunt anomalies, and automate incident response in Snowflake — with OWASP, MITRE ATT&amp;amp;CK, and NIST CSF built in.</description></item><item><title>Splunk + Snowflake: Building a Hybrid Security Data Lake with Federated Queries</title><link>https://kevinkeller.org/posts/splunk-snowflake-security-datalake/</link><pubDate>Mon, 23 Mar 2026 07:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/splunk-snowflake-security-datalake/</guid><description>A better-together reference architecture combining Splunk&amp;rsquo;s real-time detection with Snowflake&amp;rsquo;s cost-effective data lake — federated search via DB Connect, 70-80% cost optimization, and years of historical retention.</description></item><item><title>Postgres Agent Orchestrator: Coordinating AI Agents with pgmq, LISTEN/NOTIFY, and ltree</title><link>https://kevinkeller.org/posts/postgres-agent-orchestrator-pgmq-llm/</link><pubDate>Fri, 20 Mar 2026 14:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/postgres-agent-orchestrator-pgmq-llm/</guid><description>An open-source demo that coordinates multiple AI agents using only PostgreSQL — pgmq for task queuing, LISTEN/NOTIFY for event-driven coordination, ltree for lineage tracking. No Redis, no Kafka, no vector database.</description></item><item><title>How AWS PrivateLink and Private DNS Actually Work</title><link>https://kevinkeller.org/posts/how-privatelink-and-dns-work/</link><pubDate>Fri, 20 Mar 2026 12:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/how-privatelink-and-dns-work/</guid><description>A visual walkthrough of private connectivity — how PrivateLink creates private endpoints, how DNS resolution steers traffic off the public internet, and why this matters for regulated workloads.</description></item><item><title>How JWT Tokens Actually Work — And How Snowflake Uses Them</title><link>https://kevinkeller.org/posts/how-jwt-tokens-work/</link><pubDate>Fri, 20 Mar 2026 10:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/how-jwt-tokens-work/</guid><description>A visual, hands-on explanation of JSON Web Tokens — what they contain, how signing works, why they expire, and how Snowflake uses them for External OAuth authentication.</description></item><item><title>Postgres Analyst: Natural Language SQL with Ollama — No Cloud Required</title><link>https://kevinkeller.org/posts/postgres-analyst-natural-language-sql-ollama/</link><pubDate>Fri, 20 Mar 2026 10:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/postgres-analyst-natural-language-sql-ollama/</guid><description>An open-source semantic layer that lets you query PostgreSQL in plain English using local LLM inference via Ollama. No API keys, no cloud — just your database and a local model.</description></item><item><title>Containing AI Agents: A Defense-in-Depth Architecture for Production</title><link>https://kevinkeller.org/posts/containing-ai-agents-production/</link><pubDate>Thu, 19 Mar 2026 12:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/containing-ai-agents-production/</guid><description>Generic agents can do anything — which is exactly the problem. Custom agents in containers behind an inference proxy create a production architecture where security is structural, not aspirational.</description></item><item><title>Building the Agentic Enterprise: From Protocol Hype to Production-Grade AI Agents</title><link>https://kevinkeller.org/posts/building-agentic-enterprise-custom-agents-production/</link><pubDate>Thu, 19 Mar 2026 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/building-agentic-enterprise-custom-agents-production/</guid><description>The agentic enterprise is real. But getting there requires a shift from generic protocol-based integrations to purpose-built agents with native tooling, embedded security, and domain-specific intelligence.</description></item><item><title>Cortex Proxy: Route Any AI Coding Agent Through Snowflake Cortex, OpenAI, Anthropic, or Ollama — With Prompt Policy Enforcement</title><link>https://kevinkeller.org/posts/snowflake-cortex-proxy-ai-coding-agents/</link><pubDate>Wed, 18 Mar 2026 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-cortex-proxy-ai-coding-agents/</guid><description>A high-performance Rust proxy that lets Claude Code, Continue.dev, ZeroClaw, Mistral Vibe — or any AI coding agent — use Snowflake Cortex, OpenAI, Anthropic, or Ollama as their backend. Optional prompt policy enforcement included.</description></item><item><title>Governing AI Inference in the Data Cloud: A Security Architecture Guide for EMEA Enterprises</title><link>https://kevinkeller.org/posts/governing-ai-inference-data-cloud/</link><pubDate>Tue, 17 Mar 2026 12:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/governing-ai-inference-data-cloud/</guid><description>A defense-in-depth security architecture for AI agents and inference workloads — covering network isolation, identity propagation, authorization, data protection, and auditing under the EU AI Act, DORA, and NIS2.</description></item><item><title>Data Sovereignty First: Integrating an On-Premise Apache Iceberg into Snowflake Through a Direct Outbound Tunnel</title><link>https://kevinkeller.org/posts/data-sovereignty-querying-onprem-iceberg-from-snowflake/</link><pubDate>Mon, 16 Mar 2026 12:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/data-sovereignty-querying-onprem-iceberg-from-snowflake/</guid><description>Some data cannot move to the cloud. Here&amp;rsquo;s how to bring Snowflake&amp;rsquo;s analytics power to the data — without surrendering control of it.</description></item><item><title>Nanocortex: A Blueprint for Building Custom Snowflake Cortex Agents</title><link>https://kevinkeller.org/posts/nanocortex-blueprint-snowflake-cortex-agents/</link><pubDate>Mon, 16 Mar 2026 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/nanocortex-blueprint-snowflake-cortex-agents/</guid><description>How a 1,600-line Python file can teach you everything about the Cortex Agent API</description></item><item><title>Snowflake OAuth &amp; PAT Toolkit: JWT-to-PAT Exchange for MCP Authentication</title><link>https://kevinkeller.org/posts/snowflake-oauth-pat-mcp-authentication-toolkit/</link><pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-oauth-pat-mcp-authentication-toolkit/</guid><description>The core challenge of AI agents: passing the human user&amp;rsquo;s identity through to Snowflake. This toolkit demonstrates JWT-to-PAT token exchange so agents execute as the actual user — with their roles, permissions, and full audit trail.</description></item><item><title>SPCS Dev Container: A Full Linux IDE Running Inside Snowflake</title><link>https://kevinkeller.org/posts/spcs-devcontainer-cloud-ide-snowflake/</link><pubDate>Sat, 14 Mar 2026 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/spcs-devcontainer-cloud-ide-snowflake/</guid><description>Turn Snowflake Container Services into your personal cloud development environment — VS Code in the browser, web terminal, persistent storage, and direct Snowflake access.</description></item><item><title>Running Apache NiFi on Snowflake Container Services</title><link>https://kevinkeller.org/posts/apache-nifi-snowflake-container-services/</link><pubDate>Fri, 13 Mar 2026 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/apache-nifi-snowflake-container-services/</guid><description>A patched, ready-to-deploy Apache NiFi 2.6.0 on SPCS — with fixes for ingress compatibility, a token debug UI, and a sample PostgreSQL-to-Snowflake CDC flow.</description></item><item><title>Column-Level Encryption for Snowflake Using Postgres as an On-Premise Crypto Proxy</title><link>https://kevinkeller.org/posts/snowflake-column-encryption-postgres-proxy/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-column-encryption-postgres-proxy/</guid><description>How to use Postgres 17 as a transparent encryption proxy so that data stored in Snowflake is always AES-256 encrypted at the column level — with your own key, under your own control.</description></item><item><title>Decrypting PGP Files Inside Snowflake: Zero-Infrastructure MFT Ingestion</title><link>https://kevinkeller.org/posts/snowflake-pgp-decryption-mft-pipeline/</link><pubDate>Sat, 14 Dec 2024 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-pgp-decryption-mft-pipeline/</guid><description>How to decrypt PGP/GPG-encrypted files directly inside Snowflake using Python UDFs and the pgpy library — no external compute, no middleware, no key in transit.</description></item><item><title>Query Your On-Premise DataLake Through a Private Tunnel with Snowflake</title><link>https://kevinkeller.org/posts/snowflake-ssh-tunnel-query-onprem-datalake/</link><pubDate>Tue, 10 Dec 2024 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-ssh-tunnel-query-onprem-datalake/</guid><description>Hybrid Cloud Architecture Series with Snowflake Part 1 — How to setup an SSH tunnel from Snowflake Container Services to query on-premise Iceberg data lakes, databases, APIs, or AI models behind your firewall.</description></item><item><title>Python Camouflage: Format-Preserving Encryption for Snowflake Using FF3-1</title><link>https://kevinkeller.org/posts/snowflake-format-preserving-encryption-python-camouflage/</link><pubDate>Fri, 15 Nov 2024 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-format-preserving-encryption-python-camouflage/</guid><description>Tokenize PII in Snowflake so that encrypted data still looks and behaves like real data — joinable, sortable, format-correct — all with your own AES-256 key, enforced through tag-based masking policies.</description></item><item><title>Ingest OpenTelemetry Logs, Traces and Metrics Directly into Snowflake</title><link>https://kevinkeller.org/posts/opentelemetry-snowflake-observability-datalake/</link><pubDate>Sat, 09 Nov 2024 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/opentelemetry-snowflake-observability-datalake/</guid><description>Build your next generation security and observability Iceberg data lake by ingesting OpenTelemetry data directly into Snowflake</description></item><item><title>How to Let Snowflake Raise Security Incidents in Your SIEM or XDR Automatically</title><link>https://kevinkeller.org/posts/snowflake-siem-xdr-automated-security-incidents/</link><pubDate>Thu, 25 Jul 2024 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/posts/snowflake-siem-xdr-automated-security-incidents/</guid><description>A step-by-step guide to having Snowflake automatically detect failed login attempts and raise incidents in your SIEM or XDR — no external code required.</description></item><item><title/><link>https://kevinkeller.org/immuta-interview-demo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/immuta-interview-demo/</guid><description>Hidden presentation deck for an Immuta solution presentation.</description></item><item><title>AI Embeddings, pgvector &amp; AI Coding Playground</title><link>https://kevinkeller.org/playground-ai-embeddings/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-ai-embeddings/</guid><description/></item><item><title>AI Python Editor</title><link>https://kevinkeller.org/playground-ai-code/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-ai-code/</guid><description>A Claude Code-like experience in your browser — Monaco editor with AI-powered completions, chat, and Python execution. All local via WebGPU.</description></item><item><title>Chat with the Blog</title><link>https://kevinkeller.org/chat/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/chat/</guid><description>Ask questions about any article — powered by AI running entirely in your browser.</description></item><item><title>Contact</title><link>https://kevinkeller.org/contact/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/contact/</guid><description/></item><item><title>Crypto &amp; JWT Playground</title><link>https://kevinkeller.org/playground-crypto/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-crypto/</guid><description>Practice encryption, key pairs, JWTs, and hashing — all running in your browser via WebAssembly. No server, no setup.</description></item><item><title>Daily Digest</title><link>https://kevinkeller.org/daily/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/daily/</guid><description/></item><item><title>Data Lab</title><link>https://kevinkeller.org/playground-datalab/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-datalab/</guid><description>DuckDB SQL + Python + Local AI in one browser-based data analysis environment. Upload CSV/Parquet/JSON, query with SQL, analyze with pandas, ask AI about your data — all running locally.</description></item><item><title>Device Code Flow Playground</title><link>https://kevinkeller.org/playground-devicecode/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-devicecode/</guid><description>Experience the OAuth 2.0 Device Authorization Grant (RFC 8628) interactively. Request device codes, authenticate at a verification URL, and receive JWTs with optional Snowflake-compatible claims.</description></item><item><title>Device Code Verification</title><link>https://kevinkeller.org/playground-devicecode-verify/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-devicecode-verify/</guid><description>Authenticate a device code request — enter the code shown on your device, choose a username, and grant access.</description></item><item><title>Encryption Pipeline Builder</title><link>https://kevinkeller.org/playground-encryption-pipeline/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-encryption-pipeline/</guid><description>Chain cryptographic operations visually — generate keys, encrypt with AES-GCM, sign with RSA, wrap in JWT, base64 encode. Each step shows input/output in real time. All client-side via Web Crypto API.</description></item><item><title>Events</title><link>https://kevinkeller.org/events/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/events/</guid><description/></item><item><title>Excalidraw Whiteboard</title><link>https://kevinkeller.org/playground-excalidraw/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-excalidraw/</guid><description/></item><item><title>Finds</title><link>https://kevinkeller.org/finds/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/finds/</guid><description/></item><item><title>Interactive Playgrounds</title><link>https://kevinkeller.org/playground/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground/</guid><description/></item><item><title>Jupyter Notebook</title><link>https://kevinkeller.org/playground-jupyter/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-jupyter/</guid><description/></item><item><title>JWT Playground</title><link>https://kevinkeller.org/playground-jwt/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-jwt/</guid><description/></item><item><title>Learn Python</title><link>https://kevinkeller.org/playground-futurecoder/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-futurecoder/</guid><description>Interactive Python course running in your browser — learn from scratch with hands-on exercises. Powered by futurecoder (open source, MIT license).</description></item><item><title>Learning</title><link>https://kevinkeller.org/learning/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/learning/</guid><description/></item><item><title>Links</title><link>https://kevinkeller.org/links/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/links/</guid><description/></item><item><title>Marimo Reactive Notebook</title><link>https://kevinkeller.org/playground-marimo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-marimo/</guid><description/></item><item><title>OIDC Authorization Code Flow</title><link>https://kevinkeller.org/playground-oidc-flow/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-oidc-flow/</guid><description>Step-by-step simulator for the OpenID Connect Authorization Code Flow — real JWTs, real HTTP request shapes, configurable IdP parameters. Runs entirely in your browser.</description></item><item><title>Personal &amp; Philosophical</title><link>https://kevinkeller.org/personal/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/personal/</guid><description/></item><item><title>PostgreSQL Connection String Builder</title><link>https://kevinkeller.org/playground-connstr/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-connstr/</guid><description/></item><item><title>PostgreSQL EXPLAIN Visualizer</title><link>https://kevinkeller.org/playground-explain/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-explain/</guid><description/></item><item><title>PostgreSQL Playground</title><link>https://kevinkeller.org/playground-postgres/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-postgres/</guid><description/></item><item><title>Privacy &amp; Legal</title><link>https://kevinkeller.org/privacy/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/privacy/</guid><description/></item><item><title>py.corner Editor</title><link>https://kevinkeller.org/py-corner/editor/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/py-corner/editor/</guid><description/></item><item><title>py.corner Viewer</title><link>https://kevinkeller.org/py-corner/view/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/py-corner/view/</guid><description/></item><item><title>Pygame Playground</title><link>https://kevinkeller.org/playground-pygame/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-pygame/</guid><description/></item><item><title>PyScript Playground</title><link>https://kevinkeller.org/playground-pyscript/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-pyscript/</guid><description/></item><item><title>Python &amp; Streamlit Playground</title><link>https://kevinkeller.org/playground-streamlit/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-streamlit/</guid><description/></item><item><title>Python Sandbox</title><link>https://kevinkeller.org/playground-python/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-python/</guid><description/></item><item><title>RBAC Visualizer</title><link>https://kevinkeller.org/playground-rbac/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-rbac/</guid><description>Visualize Snowflake role hierarchies and privileges interactively. Define roles, grants, and users — see the hierarchy as a graph, click to inspect effective permissions, and generate SQL.</description></item><item><title>Resume</title><link>https://kevinkeller.org/resume/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/resume/</guid><description/></item><item><title>Slingcode</title><link>https://kevinkeller.org/playground-slingcode/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-slingcode/</guid><description>A personal computing platform in a single HTML file. Build and run web apps entirely in your browser — HTML, CSS, JavaScript. No server, no build tools, no accounts.</description></item><item><title>Snowflake Entitlements Demo</title><link>https://kevinkeller.org/playground-snowflake-entitlements-demo/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-snowflake-entitlements-demo/</guid><description>Hidden demo: simulate step-up authentication, then grant a 30-second Snowflake PII entitlement window.</description></item><item><title>Snowflake External OAuth Generator</title><link>https://kevinkeller.org/playground-oauth-generator/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-oauth-generator/</guid><description>Generate a complete Snowflake External OAuth setup — RSA key pair, security integration SQL, token generator UDF, MCP server, and RBAC grants. All in your browser.</description></item><item><title>Snowflake Report Builder</title><link>https://kevinkeller.org/playground-snowflake-report/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-snowflake-report/</guid><description>Build Streamlit dashboards against your Snowflake account using External OAuth — SQL API queries, charts, and tables, all in your browser.</description></item><item><title>SQL Playground</title><link>https://kevinkeller.org/playground-sql/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-sql/</guid><description/></item><item><title>Subscribe</title><link>https://kevinkeller.org/subscribe/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/subscribe/</guid><description/></item><item><title>TiddlyWiki</title><link>https://kevinkeller.org/playground-tiddlywiki/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-tiddlywiki/</guid><description>A non-linear personal notebook — capture, organize, and share ideas in a single-page wiki that runs in your browser. Create tiddlers, link them, build your own knowledge base.</description></item><item><title>x86 Virtual Machines</title><link>https://kevinkeller.org/playground-x86/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><author>kellerkev@gmail.com (Kevin Keller)</author><guid>https://kevinkeller.org/playground-x86/</guid><description>Run real operating systems in your browser — Linux, BSD, Android, Windows, and 60+ more. Full x86 emulation via v86 WebAssembly. No installs, no server, nothing leaves your machine.</description></item></channel></rss>