GitHub Actions Self-Hosted Runner on Linux: Setup Guide
When my GitHub Actions minutes ran out, I made a Linux server a self-hosted runner: dedicated user, SHA256 check, systemd, labels and security trade-offs.
All posts: MCP servers, AI agents, open-source contributions, Python, trading bots and DevOps.
When my GitHub Actions minutes ran out, I made a Linux server a self-hosted runner: dedicated user, SHA256 check, systemd, labels and security trade-offs.
My TypeScript MCP server that exposes the Freqtrade REST API to Claude and other MCP clients: 19 tools, setup, code layout and live-trading caveats.
How my open source tracker scrapes GitHub Trending every day, compares it with past snapshots and publishes a React dashboard to GitHub Pages with Actions.
How PR #118 added browser automation to CLI-Anything through the DOMShell MCP server: architecture, review, bugs found after merge, and a security fix.
Two merged PRs to Keploy: a function that read from a closed file and HTTP response bodies that were never closed. What they taught me about defer in Go.
Four PRs to Jules SDK, notebooklm-py, cli-agent and Mission Control: two merged, two closed. The code, the design choices, and why each one ended as it did.
A Cypher injection in LightRAG, a wrong enum value in the OpenAI Python SDK and hardcoded decimals in Coinbase AgentKit: three PRs, how each ended, and why.
My PRs to Playwright MCP, the GitHub MCP Server and LobeHub: which were merged, which were closed, and what the reviews taught me. With code and links.
AI Face Detector classifies a face photo as real or StyleGAN-generated: MobileNetV2 transfer learning, a FastAPI service, and an honest look at its limits.
For the Built with Google Gemini challenge, an AI agent wrote my entry and published it to DEV through DevTo-MCP. What worked, and the errors that slipped in.
Unofficial Python and Node.js SDKs plus an MCP server for Telegram Wallet's read-only P2P market API, with notes on decimals, pagination and rate limits.
DevTo-MCP connects the DEV Community (Forem) API to assistants like Claude: Zod input checks, a retrying API client, a draft fallback and an npm naming lesson.
OmniWire-MCP serves RSS, Atom, JSON and HTML sources to AI assistants, with a circuit breaker per source, content sniffing, Zod schemas and a bumpy npm release.
How I built Memoryze in one night: the SM-2 algorithm, Supabase auth and row level security, a 3D card flip in Framer Motion, and two bugs I still need to fix.
My fork that adds bounded lookaround to Google RE2 without backtracking, the #585 issue I opened, and what EPFL's unbounded lookbehind work showed me.
My two pull requests to GitHub's official MCP server: a create_discussion tool that is still open, and a read-only fix closed in favor of the maintainer's.
When my GitHub account was suspended I moved my repos and Jekyll blog to GitLab, then came back. How GitLab CI and GitHub Actions differed, and what I kept.
Event streaming on Kafka 4 without ZooKeeper (KRaft): partition sizing, a no-loss producer, offset commits and rebalance tuning, with confluent-kafka in Python.
Git branching strategies compared: GitFlow, trunk-based development, merge queues, squash merges, Conventional Commits, pre-commit hooks and git bisect.
A practical guide to Python context managers: __enter__ and __exit__, contextlib.contextmanager, ExitStack, async with, FastAPI lifespan, locks and common bugs.
A modern web UI without a framework: container queries, :has() and CSS nesting, popover and dialog, Web Components, islands, and measuring Core Web Vitals.
Python email automation done right: EmailMessage, smtplib with app passwords, aiosmtplib for batches, Jinja2 templates, and SPF, DKIM and DMARC for delivery.
Database connection pooling for PostgreSQL: SQLAlchemy 2 async pool settings, sizing limits per process, leaks, timeouts and PgBouncer transaction mode.
Service-to-service APIs with gRPC and Protobuf: grpcio asyncio server and client, streaming, deadlines, interceptors, schema evolution, HTTP/2 load balancing.
Advanced testing with pytest 8: fixture scopes, parametrize, mocking with mocker and respx, async tests, Hypothesis property tests, snapshots and CI settings.
Object storage with MinIO: stateless apps, boto3 and presigned URLs, erasure coding, object lock, and what to run now that the community edition is archived.
Build a FastAPI WebSocket server, scale it across instances with Redis Pub/Sub, and handle pings, auth, Nginx proxying and client reconnects with backoff.
Prometheus and Grafana monitoring in practice: avoiding cardinality blowups, PromQL for the golden signals, recording rules, Alertmanager routing, Thanos.
How to stop losing messages in RabbitMQ: prefetch, publisher confirms, quorum queues and dead letter exchanges, with working Python aio-pika examples.
Full-text search with Elasticsearch 8/9 and the Python client: strict mappings, language analyzers, zero-downtime reindexing with aliases, shards, pagination.
Nginx as reverse proxy and load balancer: micro-caching, rate limiting, HTTP/2 and HTTP/3, security headers and JSON logs. A practical guide for nginx 1.30.
What to get right before running Kubernetes in production: resources and QoS, probes, CrashLoopBackOff debugging, Gateway API, Secrets, HPA and pod security.
Image processing in Python with Pillow 11+ and OpenCV 4.x: safe uploads, EXIF rotation, WebP, headless OpenCV in Docker and a background processing pipeline.
API authentication strategies by caller: storing API keys safely, JWT pitfalls, OAuth 2.1 with PKCE, passkeys, mTLS between services, and FastAPI dependencies.
Read, split, merge, encrypt and generate PDFs in Python: pypdf, pdfplumber for tables, WeasyPrint for HTML to PDF, OCRmyPDF for scans and pyHanko for signing.
A GitHub Actions CI/CD pipeline for Python: tests with uv, Docker images on GHCR, approval-gated deploys, reusable workflows, OIDC and security hardening.
A practical Python asyncio guide: TaskGroup, asyncio.timeout, Semaphore, to_thread, except* and what Python 3.12 to 3.14 changed, with runnable examples.
A practical guide to Python performance profiling: cProfile for functions, py-spy for live processes, Scalene for line-level CPU and memory, plus memray.
Python logging best practices: stdlib logging rules, JSON logs with structlog, request IDs, redacting secrets, OpenTelemetry trace IDs, common mistakes.
Graceful shutdown for Python services: catching SIGTERM in plain Python and asyncio, the Docker PID 1 trap, Kubernetes preStop and systemd services.
Celery vs Arq for Python task queues: safe Celery settings, an async Arq worker, idempotency, visibility timeouts, retries and Arq's maintenance mode.
Self-hosted monitoring with Uptime Kuma 2: Docker setup, reverse proxy, keyword and push monitors, Telegram and webhook alerts, hardening and backups.
A reliable webhook handler in Python and FastAPI: HMAC signature checks, replay protection, a durable inbox table, idempotent processing and event fan-out.
API rate limiting in Python: token bucket vs sliding window, an atomic Redis Lua limiter, a FastAPI dependency, 429 with Retry-After, and client-side backoff.
MongoDB schema design in practice: embed or reference, schema validation, ESR index ordering, aggregation and transactions, with Python's async PyMongo API.
Poetry and uv for Python project management: lock files, dependency groups, Docker and CI setups, publishing. An honest comparison of when to use which.
SQLAlchemy 2.0 with MySQL and PostgreSQL: typed Mapped models, async sessions, eager loading against N+1 queries, Alembic migrations and connection pool tuning.
A practical Traefik v3 setup for Docker: label-based routing, automatic Let's Encrypt SSL, middlewares, sticky sessions, canary releases and v2 migration traps.
Redis caching and session management with redis-py asyncio: cache-aside with stampede protection, server-side sessions, Streams, locks and eviction policies.
Crypto OHLCV analysis in pandas 3 without loops: the real cost of iterrows and apply, rolling signals, sane dtypes, Parquet, and a measured Polars test.
How I dockerize Python apps: a multi-stage Dockerfile with uv, a non-root user, a healthcheck without curl, Docker Compose for local dev and SHA image tags.
Structuring an automated trading system in Python with CCXT and asyncio: WebSocket data, order precision, testnet, position sizing and honest backtests.
Testing Solidity contracts with Hardhat 3, ethers v6 and Mocha: fixtures, time travel, custom errors, fuzzing, coverage, gas stats, mainnet forking and CI.
A private Telegram price-alert bot with python-telegram-bot v22 and async CCXT: JobQueue, user filters, persistence, token hygiene, and why it never trades.
Solana program development with Rust and Anchor 1.x: accounts, PDAs, constraints, tests, security, and where Proof of History stands after Alpenglow.
Web3 wallet integration today: EIP-6963 wallet discovery, ethers v6 BrowserProvider, chain switching, Reown AppKit for mobile, Sign-In with Ethereum.
How Polygon PoS works: Bor, Heimdall v2, checkpoints, POL and ~5-second finality. How it differs from rollups, the zkEVM shutdown, and notes for developers.
Talking to Ethereum with web3.py v7: HTTP, async and WebSocket providers, signing EIP-1559 transactions, reading ERC-20s, chunked event logs and PoA chains.
My AI-powered trading experiments: a walk-forward validated ML model, a simple data leakage test, and lessons from Quorum, where LLM agents vote on trades.
A practical FastAPI REST API guide: Pydantic v2 schemas, Annotated dependencies, async SQLAlchemy, testing and a lean Docker setup, with code that runs.
DEX arbitrage with Aave V3 flash loans: what my Python bot did and didn't do, a Solidity contract that enforces profit on-chain, and mainnet fork tests.
The parts of a DEX aggregator: Uniswap V2/V3 quotes with ethers v6, gas-adjusted comparison, split routing, a safe swap contract and MEV protection.
Reentrancy, access control, proxy pitfalls, oracle manipulation and gas optimization in Solidity 0.8 with OpenZeppelin 5, plus Foundry tests and a checklist.
On-chain data with Python: event subscriptions in web3.py, a small SQLAlchemy 2 indexer, The Graph and Dune APIs, and Telegram alerts for large transfers.
An allowlist NFT contract with ERC721A and OpenZeppelin 5: Merkle proofs, IPFS metadata, Foundry tests, an ethers v6 mint button and a Sepolia deploy.