Top all-time · #3164
Jesse Li
Personal blog · blog.jse.liprogrammingsecurity
Jesse Li's personal blog at blog.jse.li covers programming and security. Since 2018, 23 different Hacker News readers have linked it 37 times, most often “Building a BitTorrent client from the ground up in Go”. It is still writing: the last post was on 2026-08-30, and you can follow it by feed.
Jesse Li's blog
Most-linked posts?
- Building a BitTorrent client from the ground up in Go8 people · 8 mentions · first linked 2020-01-04
- Where Did Software Go Wrong?5 people · 7 mentions · first linked 2020-05-27
- Finding secrets by decompiling Python bytecode in public repositories5 people · 5 mentions · first linked 2020-05-12
- Reverse Engineering a Piece of JavaScript Malware2 people · 3 mentions · first linked 2018-07-19
- Approve merge requests with your eyes closed2 people · 2 mentions · first linked 2025-07-28
What Hacker News says?
Agree with C and old style C++, but going off the flowchart [1] in the article this could be done quite cleanly with boost::asio and C++20 coroutines as well. [1] https://blog.jse.li/torrent/download.png
Comment linking /torrent/download.png
on “Building a BitTorrent client from the ground up in Go (2020)”Submitted Building a BitTorrent client from the ground up in Go as a story · 692 points
HN discussionI typically only use the spec ( https://www.bittorrent.org/beps/bep_0003.html ) because it's simple enough, but in case of doubt I guess a third party resource is good. I found https://blog.jse.li/posts/torrent/ to be quite informative about it. I used to work on a fork of https://github.com/jackpal/Taipei-Torrent with custom features, I found its code to be easy enough to understand
Comment linking /posts/torrent/
on “Ask HN: What is the coding exercise you use to explore a new language?”Submitted Building a BitTorrent client from the ground up in Go (2020) as a story · 580 points
HN discussionI posted a writeup a few months ago reverse engineering the same code, but hosted on a different website: https://blog.jse.li/posts/marveloptics-malware/
Comment linking /posts/marveloptics-malware/
on “Feedify is compromised with code mirroring Magecart”Submitted Building a BitTorrent client from the ground up in Go (2020) as a story · 184 points
HN discussionI think you've nailed why copilot is so exciting, so irresponsible, yet so not novel. The other comment in this thread who compares it to tab complete gets it too — tab complete is a dialogue as well, as is every "utterance" in the feedback loop between you and your computer. The first half of this essay I wrote last year also develops the dialogic nature of computing, using some of the ideas from Soviet philosopher…
Comment linking /posts/software/
on “Copilot and Conversational Programming”Submitted Finding secrets by decompiling Python bytecode in public repositories as a story · 165 points
HN discussionI've written similar thoughts before on computing's mutual recursion with the offline world, and the software engineer's place as code-reader and code-writer-hallucinator [0]. Computers, like any means of production in modernity, are only furthering inequality in the world (along the usual lines: wealth, race, geography, social standing, etc). Computing can make the world better, but right now it can't and it won't…
Comment linking /posts/software/
on “Does computing make the world better?”Submitted Show HN: Ten seconds to ponder if a thread is worth it as a story · 148 points
HN discussionMy starting point was searching for tutorials and asking ChatGPT to implement a torrent parser :) There are great blog posts [0] for building a BitTorrent client. Along the way, I referenced open-source implementations and the BitTorrent Protocol Specification as well [1]. [0] https://blog.jse.li/posts/torrent/ [1] https://www.bittorrent.org/beps/bep_0003.html
Comment linking /posts/torrent/
on “Build Your Own BitTorrent”Submitted Where Did Software Go Wrong? as a story · 7 points
HN discussionwhat's with the sign in required, is this a paid tutorial? Here are some free tutorials: JS - https://allenkim67.github.io/programming/2016/05/04/how-to-m... GO - https://blog.jse.li/posts/torrent/ Python - https://markuseliasson.se/article/bittorrent-in-python/
Comment linking /posts/torrent/
on “Build Your Own BitTorrent”Submitted Finding secrets by decompiling Python bytecode in public repositories as a story · 6 points
HN discussionReminds me of building a bittorrent client in go: https://blog.jse.li/posts/torrent/
Comment linking /posts/torrent/
on “Build Your Own BitTorrent”Submitted Where Did Software Go Wrong? as a story · 4 points
HN discussionSubmitted Where Did Software Go Wrong? as a story · 4 points
HN discussionSubmitted Finding secrets by decompiling Python bytecode in public repositories as a story · 4 points
HN discussionSubmitted Detecting incognito mode in Chrome 76 with a timing attack as a story · 4 points
HN discussionSubmitted Resurrecting an old hack to build UI in GitHub READMEs as a story · 3 points
HN discussionSubmitted Approve merge requests with your eyes closed as a story · 3 points
HN discussionSubmitted Building a BitTorrent client from the ground up in Go as a story · 3 points
HN discussionSubmitted My Brother’s Hamster as a story · 3 points
HN discussionSubmitted Finding secrets by decompiling Python bytecode in public repositories as a story · 3 points
HN discussionSubmitted Bypassing Cert Pinning in the Steam Mobile App as a story · 3 points
HN discussionSubmitted Show HN: Approve merge requests with your eyes closed as a story · 2 points
HN discussionSubmitted Breaking Electron-Store's Encryption as a story · 2 points
HN discussionSubmitted Play Chrome's dinosaur game with your body and webcam as a story · 2 points
HN discussionSubmitted Finding secrets by decompiling Python bytecode in public repositories as a story · 2 points
HN discussionSubmitted Estimating the heights of New Yorkers from their scuff marks as a story · 1 points
HN discussion