<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>python on Ikoma's Blog</title><link>https://blog.yusukeikoma.com/tags/python/</link><description>Recent content in python on Ikoma's Blog</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 05 Oct 2026 13:20:23 +0900</lastBuildDate><atom:link href="https://blog.yusukeikoma.com/tags/python/index.xml" rel="self" type="application/rss+xml"/><item><title>UDP connect() Sends Nothing, and getsockname() Gives You Your Local IP</title><link>https://blog.yusukeikoma.com/posts/udp-connect-local-ip/</link><pubDate>Mon, 05 Oct 2026 13:20:23 +0900</pubDate><guid>https://blog.yusukeikoma.com/posts/udp-connect-local-ip/</guid><description>A machine with Wi-Fi, a VPN and a container bridge has several addresses, and a hostname lookup can return the wrong one. Connecting a UDP socket to a destination makes the kernel pick the source address it would use, and getsockname() reads it back without a single packet being sent. Checked on Linux with three interfaces: five destinations, five answers, no IPv4 or ARP frames on the wire.</description></item><item><title>Hardening a Go Daemon and a Python API</title><link>https://blog.yusukeikoma.com/posts/go-daemon-and-python-api-hardening/</link><pubDate>Sat, 01 Aug 2026 14:11:31 +0900</pubDate><guid>https://blog.yusukeikoma.com/posts/go-daemon-and-python-api-hardening/</guid><description>Five techniques from a polyglot codebase: rolling out golangci-lint on existing Go code, running the race detector in CI, bounding subprocess lifetimes, re-registering launchd services without the bootout race, and choosing PostgreSQL row-lock strength around foreign keys.</description></item></channel></rss>