<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: mhils</title><link>https://news.ycombinator.com/user?id=mhils</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Wed, 09 Sep 2026 17:55:06 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=mhils" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by mhils in "Pdoc – Generate API documentation for Python projects"]]></title><description><![CDATA[
<p>FWIW I agree that the Rust way is nicer, but I can't impose the Rust way on Python. I guess the secret hack is to use PyO3, which pdoc supports quite well. ;)</p>
]]></description><pubDate>Tue, 07 Oct 2025 17:08:40 +0000</pubDate><link>https://news.ycombinator.com/item?id=45505807</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=45505807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45505807</guid></item><item><title><![CDATA[New comment by mhils in "Pdoc – Generate API documentation for Python projects"]]></title><description><![CDATA[
<p>pdoc3 is not pdoc, see <a href="https://github.com/mitmproxy/pdoc?tab=readme-ov-file#pdoc-vs-pdoc3" rel="nofollow">https://github.com/mitmproxy/pdoc?tab=readme-ov-file#pdoc-vs...</a>.</p>
]]></description><pubDate>Tue, 07 Oct 2025 17:06:59 +0000</pubDate><link>https://news.ycombinator.com/item?id=45505775</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=45505775</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45505775</guid></item><item><title><![CDATA[New comment by mhils in "Pdoc – Generate API documentation for Python projects"]]></title><description><![CDATA[
<p>Let me try to explain why it is that way: First, it's consistent with Python functions. The docstring for functions is below the signature as well. Second, consider a file with only a docstring and then a variable declaration. Here it would be ambiguous if that's the module or the variable docstring. Finally, this behavior is consistent with other tools (and failed standardization efforts) in the space. So yeah - I share your sentiment, but I think it's the most pragmatic approach for pdoc. :)</p>
]]></description><pubDate>Tue, 07 Oct 2025 09:08:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=45500951</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=45500951</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45500951</guid></item><item><title><![CDATA[New comment by mhils in "Pdoc – Generate API documentation for Python projects"]]></title><description><![CDATA[
<p>pdoc maintainer here. Pleasant surprise to see us on HN again, and happy to answer any questions! :)</p>
]]></description><pubDate>Tue, 07 Oct 2025 08:54:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=45500864</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=45500864</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45500864</guid></item><item><title><![CDATA[New comment by mhils in "Pdoc – Generate API documentation for Python projects"]]></title><description><![CDATA[
<p>I'd say neither fork as made great strides since then, but I'm also biased here as the maintainer of pdoc.<p>There is no pdoc-specific library for link checking as far as I'm aware. It's all plain HTML though, so you can use a more general tool like <a href="https://lychee.cli.rs/" rel="nofollow">https://lychee.cli.rs/</a>. :)</p>
]]></description><pubDate>Tue, 07 Oct 2025 08:34:45 +0000</pubDate><link>https://news.ycombinator.com/item?id=45500741</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=45500741</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=45500741</guid></item><item><title><![CDATA[New comment by mhils in "Show HN: Subtrace – Wireshark for Docker Containers"]]></title><description><![CDATA[
<p>Congrats on the seccomp-based interception, that's a really neat way to solve this problem! We did some BPF_PROG_TYPE_CGROUP_SOCK eBPF shenanigans in mitmproxy for redirection, but that doesn't work with containers at all. Cool to see that intercepting all relevant syscalls works that well.</p>
]]></description><pubDate>Thu, 20 Feb 2025 14:12:48 +0000</pubDate><link>https://news.ycombinator.com/item?id=43114840</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=43114840</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=43114840</guid></item><item><title><![CDATA[New comment by mhils in "Httptap: View HTTP/HTTPS requests made by any Linux program"]]></title><description><![CDATA[
<p>This is really cool, thank you for sharing! We've built a similar feature for mitmproxy lately, but with different tradeoffs. Our approach does require root and we don't have automated certificate install (yet), but we don't require apps to run in a dedicated namespace (so you can capture already-running processes). Super awesome to see this now, excited to dive into the code and see how you do TCP reassembly etc. :)</p>
]]></description><pubDate>Mon, 03 Feb 2025 22:11:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=42923987</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=42923987</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42923987</guid></item><item><title><![CDATA[New comment by mhils in "Httptap: View HTTP/HTTPS requests made by any Linux program"]]></title><description><![CDATA[
<p>> so you have to configure your program to use a proxy server.<p>That's not true for local capture mode: <a href="https://mitmproxy.org/posts/local-capture/linux/" rel="nofollow">https://mitmproxy.org/posts/local-capture/linux/</a>. :)</p>
]]></description><pubDate>Mon, 03 Feb 2025 22:03:06 +0000</pubDate><link>https://news.ycombinator.com/item?id=42923884</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=42923884</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42923884</guid></item><item><title><![CDATA[New comment by mhils in "PyPI now supports digital attestations"]]></title><description><![CDATA[
<p>Fully reproducible builds would of course be nicer from a security standpoint, but attestations have vastly lower implementation costs and scale much better while still raising the bar meaningfully.</p>
]]></description><pubDate>Fri, 15 Nov 2024 14:42:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=42147338</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=42147338</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=42147338</guid></item><item><title><![CDATA[New comment by mhils in "Mitmproxy 11: Full HTTP/3 Support"]]></title><description><![CDATA[
<p>One of the main promises of HTTP/3 is better performance under worse network conditions (e.g. no head-of-line blocking as in HTTP/2, connection migration, 0-RTT). For all of that HTTP/3 between client and proxy is really great. HTTP/3 between proxy and server is not required for that.</p>
]]></description><pubDate>Sat, 05 Oct 2024 03:45:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=41747572</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=41747572</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41747572</guid></item><item><title><![CDATA[New comment by mhils in "Mitmproxy 11: Full HTTP/3 Support"]]></title><description><![CDATA[
<p>Thank you for your work on Hickory! It's super exciting to see how PyO3's Python <-> Rust interop enables us to use a production-grade DNS library with Hickory and also a really solid user-space networking stack with smoltcp. These things wouldn't be available in Python otherwise.</p>
]]></description><pubDate>Sat, 05 Oct 2024 03:37:54 +0000</pubDate><link>https://news.ycombinator.com/item?id=41747534</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=41747534</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41747534</guid></item><item><title><![CDATA[Mitmproxy 11: Full HTTP/3 Support]]></title><description><![CDATA[
<p>Article URL: <a href="https://mitmproxy.org/posts/releases/mitmproxy-11/">https://mitmproxy.org/posts/releases/mitmproxy-11/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=41744434">https://news.ycombinator.com/item?id=41744434</a></p>
<p>Points: 388</p>
<p># Comments: 75</p>
]]></description><pubDate>Fri, 04 Oct 2024 18:52:46 +0000</pubDate><link>https://mitmproxy.org/posts/releases/mitmproxy-11/</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=41744434</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41744434</guid></item><item><title><![CDATA[New comment by mhils in "Intent to end OCSP service"]]></title><description><![CDATA[
<p>There's OCSP Must-Staple, which makes MITM without stapling impossible. That is, if the client implements it and does not fail open. :)</p>
]]></description><pubDate>Tue, 23 Jul 2024 20:56:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=41050738</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=41050738</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=41050738</guid></item><item><title><![CDATA[New comment by mhils in "Libera IRC Channels Sorted by Number of Users"]]></title><description><![CDATA[
<p>It does. It also optionally supports notifications if someone messages you while you have all tabs closed (using <a href="https://developer.mozilla.org/en-US/docs/Web/API/Notification" rel="nofollow">https://developer.mozilla.org/en-US/docs/Web/API/Notificatio...</a>).</p>
]]></description><pubDate>Wed, 17 Jul 2024 10:58:31 +0000</pubDate><link>https://news.ycombinator.com/item?id=40984561</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=40984561</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=40984561</guid></item><item><title><![CDATA[New comment by mhils in "Upside-Down-Ternet (2006)"]]></title><description><![CDATA[
<p>TIL this goes back to 2006, how cool! We nowadays have a much simpler version as a mitmproxy example: <a href="https://github.com/mitmproxy/mitmproxy/blob/main/examples/addons/internet-in-mirror.py">https://github.com/mitmproxy/mitmproxy/blob/main/examples/ad...</a>. Although it obviously does not work as well anymore with everything being HTTPS nowadays (unless you trust the cert of course). :)</p>
]]></description><pubDate>Mon, 02 Oct 2023 09:09:10 +0000</pubDate><link>https://news.ycombinator.com/item?id=37735698</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=37735698</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37735698</guid></item><item><title><![CDATA[New comment by mhils in "Block YouTube ads on AppleTV by decrypting and stripping ads from Profobuf"]]></title><description><![CDATA[
<p>I can answer this as one of the mitmproxy devs: We're doing this for 10+ years as FOSS, we're a relatively well-known project (so lots of eyes hopefully), our software has absolutely zero telemetry / phone home functionality, and we're developing under our real names. We also have relevant backgrounds in either the security industry and academia, and absolutely no plans to monetize mitmproxy.<p>Does that make it guaranteed to be safe? Not really. I'd personally trust our TLS stack over most IoT TLS implementations, but Chrome/Firefox/Safari will do a better job at e.g. revocation checking. That being said, I'd argue that this is unlikely to be the weakest link in your threat model.</p>
]]></description><pubDate>Sun, 27 Aug 2023 22:41:58 +0000</pubDate><link>https://news.ycombinator.com/item?id=37287337</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=37287337</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37287337</guid></item><item><title><![CDATA[New comment by mhils in "Mitmproxy 10: First Bits of HTTP/3"]]></title><description><![CDATA[
<p>Performance of our HTTP/3 stack is not very good yet, and the benefits of HTTP/3 don't play out in this particular example. :)</p>
]]></description><pubDate>Fri, 04 Aug 2023 22:55:50 +0000</pubDate><link>https://news.ycombinator.com/item?id=37006928</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=37006928</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=37006928</guid></item><item><title><![CDATA[Mitmproxy 10: First Bits of HTTP/3]]></title><description><![CDATA[
<p>Article URL: <a href="https://mitmproxy.org/posts/releases/mitmproxy10/">https://mitmproxy.org/posts/releases/mitmproxy10/</a></p>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=36999169">https://news.ycombinator.com/item?id=36999169</a></p>
<p>Points: 80</p>
<p># Comments: 7</p>
]]></description><pubDate>Fri, 04 Aug 2023 12:42:29 +0000</pubDate><link>https://mitmproxy.org/posts/releases/mitmproxy10/</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=36999169</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36999169</guid></item><item><title><![CDATA[New comment by mhils in "“Our paying customers need X, when will you fix it?”"]]></title><description><![CDATA[
<p>Asking for a release date is a perfectly reasonable request! My response was highly influenced by the context. I came back with "email me for a support contract" because 1) I previously stated in the thread that we will not ship a patch release for this[^1] and 2) the commenter emphasized the impact on their paying customers. So this was all I had to add there. I agree that I could have phrased this more nicely, but I personally don't feel my reply was totally over the top.<p>[^1]: the CVE itself is bogus and we don't use that part of the dependency.</p>
]]></description><pubDate>Sat, 15 Jul 2023 17:38:08 +0000</pubDate><link>https://news.ycombinator.com/item?id=36739222</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=36739222</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36739222</guid></item><item><title><![CDATA[New comment by mhils in "“Our paying customers need X, when will you fix it?”"]]></title><description><![CDATA[
<p>We transitioned from S3 to R2 for downloads.mitmproxy.org because egress got prohibitively expensive for a hobby ($300/month). CI for 9.x still points to the old infrastructure. This does not mean we couldn't ship a patch release right now, but it would take me 1-2 hours.<p>The vulnerability in question is in parts not used by mitmproxy. We looked at it when it came out, and I'd even say it's more of a bug than a security vulnerability. Again, in either case it's not used by mitmproxy.</p>
]]></description><pubDate>Sat, 15 Jul 2023 16:39:42 +0000</pubDate><link>https://news.ycombinator.com/item?id=36738562</link><dc:creator>mhils</dc:creator><comments>https://news.ycombinator.com/item?id=36738562</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=36738562</guid></item></channel></rss>