Birbla

Login
    Show HN: I wrote a new BitTorrent tracker in Elixir (github.com)
    365 points by dahrkael - 21 hours ago

  • Now that's neat. The Beam VM sounds like a natural fit for a torrent tracker
    by IlikeKitties - 19 hours ago
  • Now this is serious business, congrats on the project! I can see how this is perfect fit for elixir...
    by desireco42 - 19 hours ago
  • Hey congrats on the launch! Can you provide any details on how it runs compared to opentracker? I'm really interested in the performance etc.
    by abrookewood - 18 hours ago
  • Really cool! You looking to write Elixir as your main job?
    by jhgg - 18 hours ago
  • Very cool! Is this suitable for using as a private tracker?
    by bavell - 18 hours ago
  • Awesome work!
    by toomuchtodo - 17 hours ago
  • Love Elixir so much, building a kick-ass notification engine with it now. Its so so good.
    by s-mon - 17 hours ago
  • really cool project! well done
    by mikehostetler - 17 hours ago
  • Well done. Couple quick notes, move to a logger instead of using IO.puts. Also consider adding OTel.
    by voicedYoda - 17 hours ago
  • There's something about C++ developers that makes them love Go and Elixir (and I include myself in this demographic). I think it's something about the people who are attracted to C++ for performance are attracted to Go/Elixir for its multithreaded performance. Really cool project
    by guywithahat - 17 hours ago
  • Nice! I'll check this out some point.

    I wrote a basic tracker in Elixir a few years ago, here's the code: https://github.com/aalin/mr_torrent

    by quechimba - 17 hours ago
  • Check out https://github.com/sergiotapia/magnetissimo it was a popular one like 7 years ago
    by arthurcolle - 16 hours ago
  • - how did you start - did you refer to other projects - how long did it take - how much functionality do you think works compared to say qbittorrent?
    by vivzkestrel - 16 hours ago
  • I tried it, couldn't get HTTPS to work.

    Also my console gets spammed with:

    04:43:20.160 [warning] invalid 'event' parameter: size: 6 value: "paused"

    but it seems to work. I would've liked to see HTTP stats too but I guess UDP is fine (though I have it disabled)

    by KomoD - 15 hours ago
  • Similar to: https://news.ycombinator.com/item?id=44265851 "Show HN: I wrote a BitTorrent Client from scratch" [2025-06-13], https://github.com/piyushgupta53/go-torrent-client
    by nayuki - 15 hours ago
  • Interesting! I'd done something similar in Typescript to learn more about BT, and then redid it in rust to learn rust (https://github.com/ckcr4lyf/kiryuu).

    However I decided to just use redis as the DB. It sounds like your entire DB is in memory? Any interesting design decisions you made and/or problems faced in doing so?

    (My redis solution isn't great since it does not randomize peers in subsequent announces afaik)

    by arch-choot - 12 hours ago
  • I really wished to see an OTP-first design. Unfortunately for me, the code is almost procedural as it's touching ETS or Application, which is built on ETS, in nearly every operation.

    If the author wishes to learn how to design services in Elixir, or any BEAM language, with OTP, they can take a look at "Designing Elixir Systems with OTP" by by James Edward Gray and Bruce Tate, and "Functional Web Development with Elixir, OTP, and Phoenix" by Lance Halvorsen.

    by nesarkvechnep - 10 hours ago
  • Trackers are not relics - they're used exclusively in private tracker websites. Public-access torrents would more commonly use DHT and PEX for discovery.
    by eatbitseveryday - 6 hours ago
  • Could you please clarify what DHT and PEX are? I'm having trouble searching "tracker PEX".
    by TheJoeMan - 6 hours ago
  • learned elixir in a week for an interview. didn’t clear it, but that week changed how i write code. understood state isolation for the first time. no shared data. fail and restart clean. pattern matching everywhere. structs over classes. pipes for everything. after that, i started writing code topdown. move sideeffects out. keep logic close to the data. elixir kinda rewired that for me.

    after seeing this i saw that same mindset. not flashing any big genservers. simplified with fast procs, raw ETS tables. simple flow, but still fault aware. still clean.

    by b0a04gl - 2 hours ago

© 2025 Birbla.com, a Hacker News reader · Content · Terms · Privacy · Support