[{"data":1,"prerenderedAt":479},["ShallowReactive",2],{"project-14911372":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":34,"aspects":35,"strip":45,"post_text":46,"what":47,"said":109,"maker_in_thread":202,"shape":213,"grid":218,"attempts":434,"same_week":442,"maker_shows":33,"maker_hidden":471,"reader_version":472,"card":473},"14911372","Bt","BitTorrent library in Java 8","title","Show HN: Bt – BitTorrent library in Java 8","https:\u002F\u002Fgithub.com\u002Fatomashpolskiy\u002Fbt\u002Fblob\u002Fmaster\u002FREADME.md#----bt","github.com","atomashpolskiy",1501688145,2017,254,87,102,2242,5,"legend","languages","bittorrent library","library",[24,25,26,27],"bittorrent","java","torrent library","peer to peer","mixed",0.288,{"positive":31,"neutral":32,"mixed":33,"critical":18},16,15,1,37,{"docs":36,"idea":39,"execution":41,"privacy":42,"performance":43,"design":44},{"positive":37,"critical":38},3,0,{"positive":40,"critical":33},4,{"positive":33,"critical":38},{"positive":33,"critical":38},{"positive":38,"critical":40},{"positive":33,"critical":38},[18,37,37,18,18,18,37,18,33,18,38,37,37,33,38,38,18,37,38,33,38,38,38,33,38,33,18,38,38,38,18,37,18,18,18,18,38,18,37,40],null,{"problem":48,"audience":59,"pricing":46,"motivation":67,"time_to_build":72,"stack":81,"openness":106,"stage":107,"team_size":108},{"value":49,"source":50,"evidence":51},"Provides a BitTorrent protocol implementation for developers to build clients on","inferred",[52,56],{"id":53,"by":54,"text":55},"14913196","jrs95","This is a library for development. If you wanted to ship a client based on this, you could do that and package it with the Java runtime.",{"id":57,"by":11,"text":58},"14912248","A mix of both, actually. I've been using uTorrent for years until 2016, when I've decided to switch to some new OS X release. After installing the system update, the old, ad-free…",{"value":60,"source":50,"evidence":61},"Java developers building torrent clients",[62,63],{"id":53,"by":54,"text":55},{"id":64,"by":65,"text":66},"14917837","nunobrito","Hello, thank you for writing the library. On my context it is useful for downloading large files without depending on a single point of failure or fixed location. Have a question…",{"value":68,"source":69,"evidence":70},"Author stopped using uTorrent after an OS update and wanted a CLI client with streaming focus","maker",[71],{"id":57,"by":11,"text":58},{"value":73,"source":69,"evidence":74},"500-1000 hours over a calendar year of evenings and weekends",[75,78],{"id":76,"by":11,"text":77},"14914978","I'd say something in the range of 500-1000 hours.",{"id":79,"by":11,"text":80},"14917367","Thank you! Calendar year, in the evenings and on weekends, with sprints of several weeks and a month or two of rest\u002FAFK after each sprint to keep sanity (I have a full-time job,…",[82,87,96,100],{"value":83,"source":69,"evidence":84},"Java 8",[85],{"id":86},"post",{"value":88,"source":69,"evidence":89},"Guice",[90,93],{"id":91,"by":11,"text":92},"14922183","Turns out that the gif was kind of misleading, it's just a demo application for the library. I'm trying to use as little 3rd party dependencies as possible (core only uses slf4j…",{"id":94,"by":11,"text":95},"14918018","Thanks! God bless IoC, it saves my ass each time I make some silly design choice",{"value":97,"source":69,"evidence":98},"slf4j",[99],{"id":91,"by":11,"text":92},{"value":101,"source":69,"evidence":102},"Lanterna",[103],{"id":104,"by":11,"text":105},"14912618","I'm using Lanterna, a Java library for creating text-based terminal GUIs (https:\u002F\u002Fgithub.com\u002Fmabe02\u002Flanterna), and the startup is 1-2 seconds. Can't recommend it enough","open_source","beta","solo",{"praise":110,"objections":129,"requests":150,"questions":151,"alternatives":166},[111,122],{"value":112,"source":113,"evidence":114},"Good docs and code, extensible design","commenter",[115,119],{"id":116,"by":117,"text":118},"14911799","jph","Thank you, your work is terrific! Good docs, good code, and I especially like the ability to create custom code to write to alternative storage.",{"id":120,"by":11,"text":121},"14912123","Thanks!! Yeah, I was pursuing such design that would allow to replace\u002Fcustomize most of the parts, including the internals. As a bonus, it makes it easier to continue working on…",{"value":123,"source":113,"evidence":124},"Clean CLI usage for magnet links",[125],{"id":126,"by":127,"text":128},"14912870","gigatexal","Man this looks slick, going to give it a shot. Love the ability to be able to download a magnet link from the CLI and not worry about what some fancy GUI is doing in the…",[130,140],{"value":131,"source":113,"evidence":132},"Java CLI startup is slow",[133,137],{"id":134,"by":135,"text":136},"14912460","weberc2","You're conflating developer tools with a language runtime. Every popular OS ships with everything necessary to run a C, Go, or Rust binary. Python 3 and Java both require a…",{"id":138,"by":135,"text":139},"14912662","Good to know, but 1-2 seconds is still very slow compared to a native app. I have an 8MB Go CLI application that can startup and print its help in .05 seconds, and even that is…",{"value":141,"source":113,"evidence":142},"Java runtime size and AOT concerns",[143,147],{"id":144,"by":145,"text":146},"14918169","readittwice","From what I've seen Java\u002FJVM AOT won't produce binary executables but shared libraries that will be loaded on startup by the JVM. When I first read about Java AOT-compilation I…",{"id":148,"by":11,"text":149},"14917383","Good point, but I wonder what size will the final binaries have, given that bytecode inflates significantly when translated to the machine code (there was a good discussion on HN…",[],[152,159],{"value":153,"source":113,"evidence":154},"Why Java for a torrent client",[155],{"id":156,"by":157,"text":158},"14912092","styfle","I'm curious, it looks like the screenshot shows the author is using a Mac. But Mac OS hasn't shipped with Java in several years. So why Java? Is it simply familiarity, or are…",{"value":160,"source":113,"evidence":161},"Whether it works on Android",[162],{"id":163,"by":164,"text":165},"14917909","ikurei","Not very familiar with the Java world yet. I've heard Android now supports at least some features from Java 8, but would this library work in an Android app?",[167,174,181,188,195],{"value":168,"source":113,"evidence":169},"uTorrent",[170,171],{"id":53,"by":54,"text":55},{"id":172,"by":127,"text":173},"14919322","There’s less code for me to review in this project than say in utorrent or another application.",{"value":175,"source":113,"evidence":176},"aria2",[177],{"id":178,"by":179,"text":180},"14913848","hdhzy","Well the torrent download will take a lot more than 2 seconds so that time is totally amortized. Besides this comparison looks like a total bikeshedding unless you plan on…",{"value":182,"source":113,"evidence":183},"rtorrent",[184],{"id":185,"by":186,"text":187},"14913480","lotyrin","I use rtorrent for exactly this.",{"value":189,"source":113,"evidence":190},"peerflix",[191],{"id":192,"by":193,"text":194},"14913017","pmatev","Credit to OP, this looks like a really solid project. The CLI aspect of it reminds me of peerflix (https:\u002F\u002Fgithub.com\u002Fmafintosh\u002Fpeerflix), which I've been using for a while and…",{"value":196,"source":113,"evidence":197},"Deluge",[198],{"id":199,"by":200,"text":201},"14914011","hobarrera","Sounds like deluge (deluged) would have suited you fine.",{"comments":203,"answered":204,"key":205},20,6,[206,209,212],{"id":207,"text":208},"14911530","There are many great BitTorrent clients out there, yet I've made my own and willing to share and attract collaborators!",{"id":210,"text":211},"14913398","Guys, I've added a code screenshot above the gif, is it better now?",{"id":76,"text":77},{"commenters":214,"max_depth":215,"maker_replies":203,"first_comment_mins":216,"lifespan_hours":217},41,10,18,129,[219,221,225,227,231,232,235,237,239,241,244,247,249,251,255,259,262,263,264,266,268,270,272,274,278,280,282,285,288,290,294,297,301,303,305,307,311,312,314,317,320,322,323,325,327,330,333,336,339,340,342,344,345,347,349,352,355,357,359,362,364,366,369,371,373,375,376,379,380,381,386,387,389,393,397,398,402,405,408,410,412,414,418,420,422,427,431],[207,38,38,220,11,33],"project\u002Fneutral\u002Fidea",[222,38,18,223,224,38],"14912946","maker\u002Fpositive\u002Fnone","niroze",[210,38,38,226,11,33],"maker\u002Fneutral\u002Fdocs",[228,38,37,229,230,38],"14914902","maker\u002Fneutral\u002Fnone","yodsanklai",[76,38,38,229,11,33],[233,38,37,229,234,38],"14916542","olalonde",[236,38,38,229,11,33],"14917339",[116,33,18,238,117,38],"project\u002Fpositive\u002Fdocs",[120,33,38,240,11,33],"project\u002Fneutral\u002Fdesign",[126,242,18,243,127,38],2,"project\u002Fpositive\u002Fidea",[245,242,38,246,11,33],"14912931","project\u002Fneutral\u002Fprivacy",[248,242,18,223,127,38],"14912996",[250,242,38,226,11,33],"14913170",[252,242,37,253,254,38],"14921955","project\u002Fneutral\u002Fexecution","rena-anju",[256,242,38,257,258,38],"14913301","commenter\u002Fneutral\u002Fnone","sarnowski",[260,242,38,261,11,33],"14913751","commenter\u002Fneutral\u002Fdocs",[192,242,18,243,193,38],[185,242,37,220,186,38],[199,242,33,265,200,38],"project\u002Fcritical\u002Fidea",[267,242,38,257,254,38],"14917884",[172,242,18,269,127,38],"project\u002Fpositive\u002Fprivacy",[271,242,38,257,254,38],"14920254",[273,242,38,257,127,38],"14920416",[275,37,37,276,277,38],"14911754","project\u002Fmixed\u002Fdocs","zitterbewegung",[279,37,38,226,11,33],"14911957",[281,37,37,226,277,38],"14912953",[283,37,37,226,284,38],"14913146","deft",[286,40,37,287,230,38],"14914848","maker\u002Fneutral\u002Fexecution",[289,40,38,287,11,33],"14914917",[291,40,33,292,293,38],"14915772","project\u002Fcritical\u002Fperformance","silotis",[295,40,38,296,11,33],"14917350","maker\u002Fneutral\u002Fperformance",[298,40,38,299,300,38],"14917684","commenter\u002Fneutral\u002Fperformance","the8472",[302,40,38,299,11,33],"14917981",[304,40,38,299,300,38],"14918382",[306,40,38,257,300,38],"14918367",[308,18,18,309,310,38],"14917779","project\u002Fpositive\u002Fdesign","djhworld",[94,18,38,309,11,33],[156,204,37,313,157,38],"maker\u002Fneutral\u002Fidea",[315,204,38,257,316,38],"14912209","pvg",[318,204,38,257,319,38],"14912360","soperj",[321,204,38,257,316,38],"14912823",[134,204,33,292,135,38],[104,204,38,324,11,33],"project\u002Fneutral\u002Fperformance",[138,204,38,326,135,38],"commenter\u002Fcritical\u002Fperformance",[328,204,38,299,329,38],"14912724","deepsun",[331,204,38,299,332,38],"14913453","pebers",[334,204,38,299,335,38],"14917104","pjmlp",[337,204,38,338,335,38],"14917095","other\u002Fneutral\u002Fperformance",[148,204,38,324,11,33],[341,204,38,338,335,38],"14917452",[343,204,38,257,135,38],"14931165",[144,204,33,292,145,38],[346,204,38,257,335,38],"14918889",[348,204,38,257,135,38],"14931017",[350,204,38,257,351,38],"14931242","steveklabnik",[353,204,33,292,354,38],"14912700","Manozco",[356,204,38,324,11,33],"14912793",[178,204,18,358,179,38],"project\u002Fpositive\u002Fnone",[360,204,38,338,361,38],"14914773","rijoja",[363,204,38,338,329,38],"14912669",[365,204,38,299,135,38],"14913380",[367,204,38,299,368,38],"14916539","Zekio",[370,204,38,299,335,38],"14917116",[372,204,38,257,316,38],"14912814",[374,204,38,257,135,38],"14913358",[57,204,38,313,11,33],[377,204,18,378,157,38],"14921820","maker\u002Fpositive\u002Fidea",[91,204,38,226,11,33],[53,204,37,220,54,38],[382,383,18,384,385,38],"14916679",7,"maker\u002Fpositive\u002Fexecution","segmondy",[79,383,38,229,11,33],[388,383,18,223,385,38],"14925226",[390,391,37,324,392,38],"14918987",8,"intellix",[394,395,18,223,396,38],"14913811",9,"amzans",[64,215,18,238,65,38],[399,215,37,400,401,38],"14917888","project\u002Fneutral\u002Fdocs","train_robber",[403,215,18,404,65,38],"14928824","maker\u002Fpositive\u002Fdocs",[406,215,37,226,407,38],"14918633","tokenizerrr",[409,215,38,257,65,38],"14927271",[411,215,38,257,407,38],"14927958",[413,215,38,257,65,38],"14928823",[415,416,18,243,417,38],"14913627",11,"wodencafe",[163,419,37,220,164,38],12,[421,419,38,313,11,33],"14918000",[423,424,37,425,426,38],"14916428",13,"project\u002Fneutral\u002Fnone","tonyrice",[428,429,18,358,430,38],"14952532",14,"flarco",[432,32,37,220,433,38],"14919214","alexanderbisc",[435,438,441],{"id":436,"t":437,"points":391,"comments":38},"13124683",1481134315,{"id":439,"t":440,"points":242,"comments":38},"13865531",1489473631,{"id":4,"t":12,"points":14,"comments":15},[443,448,453,458,462,467],{"id":444,"name":445,"points":446,"category":447},"14894653","TensorFire",564,"ai",{"id":449,"name":450,"points":451,"category":452},"14865043","The JavaScript Way",545,"learning_science",{"id":454,"name":455,"points":456,"category":457},"14869138","EchoMods",227,"hardware",{"id":459,"name":460,"points":461,"category":20},"14896455","see-phit",175,{"id":463,"name":464,"points":465,"category":466},"14865666","Nuclino",133,"productivity",{"id":468,"name":469,"points":470,"category":452},"14865184","A 2D Physics Simulator in JavaScript",126,false,"v2",{"id":474,"name":5,"line":6,"ai":471,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":475,"top":18,"kw":476,"maker":11,"domain":10,"tier":19,"attempts":37,"strip":477,"url":9,"mix":478,"praise":112,"objection":131,"sub":21},14911372,0.29,[24,25,26,27],"5335553515033100530100010150005355550534",[31,32,33,18],1794036557872]