B

Bram Cohen

bramcohen.livejournal.com · Personal blog · on HN since 2007

Bram Cohen, creator of BitTorrent, writes about programming, version control and diff algorithms, cryptography, and software design.

What HN saysHN links it for his essay on what makes great programmers and his diff posts; one commenter notes that his Codeville project went nowhere.
46HN people shared it
19linked it in comments
36stories submitted
642story points
7 months agolast shared
2007people per year2026

Most-shared posts

  1. 1
    Great Programmers (2004)
    9 people · 173 points · first shared 2008 · 28 comments on HN
  2. 2
    Patience Diff Advantages
    4 people · 10 points · first shared 2010 · discussion on HN
  3. 3
    Git can't be made consistent
    3 people · 169 points · first shared 2011 · 36 comments on HN
  4. 4
    Bram Cohen: The diff problem has been solved
    3 people · 18 points · first shared 2008 · 6 comments on HN
  5. 5
    Bram Cohen: Comments on Go
    2 people · 67 points · first shared 2009 · 31 comments on HN
  6. 6
    Bram Cohen's Practical Cryptography
    2 people · 4 points · first shared 2011 · 1 comments on HN
  7. 7
    17319
    2 people · first shared 2008
  8. 8
    Homepage
    2 people · first shared 2012
  9. 9
    Freenode sucks
    1 people · 47 points · first shared 2010 · 63 comments on HN
  10. 10
    Bramcohen: A new card game
    1 people · 30 points · first shared 2010 · 22 comments on HN
  11. 11
    Awful Programming Advice
    1 people · 25 points · first shared 2009 · 12 comments on HN
  12. 12
    Mod_failgracefully (Bram Cohen)
    1 people · 21 points · first shared 2008 · 9 comments on HN
  13. 13
    Bram Cohen's "Bram's Cube"
    1 people · 19 points · first shared 2009 · 1 comments on HN
  14. 14
    A Process List for my new OS
    1 people · 13 points · first shared 2008 · 2 comments on HN
  15. 15
    Bram Cohen with a startup idea
    1 people · 9 points · first shared 2008 · 8 comments on HN

What HN people wrote when they linked it

testouts · 2017-11-01
https://bramcohen.livejournal.com/4563.html ... the founder of bittorent. Ill add a personal note. Being a good professional programmer is also about understanding the context of your program. You will not always have the time to optimize for performance. You will not always have the time to refactor functionality to make it more modular for further variety. Sometimes you will need to skip test becuase deadline says it should be done yesterday. Learn to not be emotionally tied to the code. Get your job done, to the best quality you can for the time you have allotted. Dont be made if its not perfect. But during the train ride or in the shower think about how to make it better. This process of just grasping with the ideas of clean code are good training for when you have to approach a similar problem on the fly.
gritzko · 2016-06-29
That only gives you academic critique and follow-ups. Sometimes, some practitioner is pissed to the degree he/she posts an opinion online. That is extremely valuable, but never gets into the citation graph. For example... http://bramcohen.livejournal.com/20140.html?thread=214956 > I'd comment on academic papers more, but generally they're so bad that evaluating them does little more than go over epistemological problems with their methodology, and is honestly a waste of time.
dunkelheit · 2015-09-13
Bram has written a post (link: http://bramcohen.livejournal.com/4563.html) about what in his view separates great programmers from others (spoiler: it is the ability to come up with good architectural decisions). But then, his codeville project went nowhere so take it with the grain of salt ;)
jaredsohn · 2012-02-03
Probably. He just moved his blog off livejournal (http://bramcohen.livejournal.com/) where you can find his older entries (ideally he would include a link to that on the new site.) He also frequently creates public posts on Facebook (http://www.facebook.com/bram.cohen).
Uhhrrr · 2012-02-03
He was blogging (not very frequently) at http://bramcohen.livejournal.com/. Now he is blogging (not very frequently) at the site above.
troughway · 2020-09-13
There is a lot to be said for the entirety of your question, but i'll try to focus on this since it stood out to me (plus the interest of time): >System design rounds require me to solve problems that the top engineers in the world spend months on. One question I was asked was "How do you make sure that a celebrity's tweet reaches all of her followers in less than 3 seconds?". I had no idea, I have never handled that kinda scale. In fact most of my work experience is kinda vanilla and boring, so I generally have nothing much to draw on or much to talk about. System Design rounds are going to be difficult. The idea isn't to give a correct, complete answer. It's to see how well you can reason about a hazy problem based on your current knowledge. Bram Cohen who wrote BitTorrent has this to say: "My suggestion for learning software architecture is to practice. Obviously you can't practice it by doing hundreds of projects, because each one of them takes too long, but you can easily design a hundred architectures for problems which only exist on paper, and where you strive to just get the solution to work on paper. Start by modifying the requirements of a problem you're working on. What if the amount of bandwidth or CPU was a hundredth what it currently is? What if it were a thousand times? A million? What if you had a thousand times as much data? A million? A billion? What if the users were untrusted and you had to either prevent them from damaging the system or have a means…
dalke · 2013-01-12
Classically speaking, it's hard to get linear scaling for a large number of cores. Eg, on a small, 128 core machine, one algorithm I did recently gives maximum throughput with 15 cores, and that only gives a 10x speedup. To make effective use of all 128 cores I would have to pay a lot more attention to how the data flow maps to the architecture. That's hard. For example, one of the older pieces of hardware used a ring-based topology, which was more appropriate for a force decomposition, while another network architecture made a spatial decomposition easier. And on that old ring-based topology system, the previous developers could program the network chip to handle I/O while the CPU was doing the dynamics, in order to eek out even more performance. In general, if you scale by more than one or two orders of magnitude then you're going to run into new, unexpected problems. In one project I worked on, the code was fast on all of the test sets, but when scaled up to the entire data set it was unexpectedly slow. We traced that down to a logger which we hadn't realized was enabled. In your code you might find that a minor piece of code used order n-squared time but because of data partitioning, it has minimal impact. Or you might find that you have a barrier, where everything is supposed to be synchronized. (Eg, once every 1,000 time steps you rebalance the system load.) A few stragglers might not affect small system sizes, but cause 50% slowdowns with large numbers of CPUs. You…
metaforth · 2010-01-30
If you read the comments one reason FreeNode is in disarray is because Rob Levin who ran the site died in a bicycling accident a few years ago. In fact the chaos and drama at FreeNode might be the real story here. http://bramcohen.livejournal.com/72298.html?thread=1000554#t1000554 Fragglet writes (in the comments): "This shouldn't be surprising to anyone with any experience of Freenode. Freenode is a perfect example of how open source projects tend to acquire the personality of their founder. In the case of Freenode, that founder was Rob Levin, famous for his online begging over wallops and for being completely incompetent in general. Levin's incompetence, begging and dictatorial style where he branded everyone who disagreed with him a "troll" gradually alienated all the sensible and technically skilled people from the network staff until the only people left were his equally incompetent sycophantic underlings. "When Levin died several years ago as a result of his own stupidity (riding a bike without a helmet), they took over. I haven't heard of mquin before but it looks like the cycle continues. "Your best option is to close the Freenode channel and move to OFTC, the staff of which consist mostly of the sensible and technically skilled people who left Freenode." Here are some links with more details, http://www.theregister.co.uk/2003/01/29/buy_a_piece_of_net/ http://antisec.wordpress.com/2006/06/27/eyeballing-rob-levin/
_whiteCaps_ · 2026-04-06
Bram Cohen doesn't just use version control, he invented one. https://bramcohen.livejournal.com/17319.html
zamalek · 2017-02-23
There's also patience diff[1], which does a better job in some situations[2] (you might not normally see these inferior diffs because the diffs are massaged after the LCS algorithm). [1]: http://alfedenzo.livejournal.com/170301.html [2]: http://bramcohen.livejournal.com/73318.html
tsewlliw · 2012-04-08
IMHO the limiting factor can be described as "semantic density". If you look at non-LCS diff algorithms like patience diff [1] and think about where it falls down, its on cases where its very arguable that the code is poor - too much duplication therefore low semantic density. I think (and am attempting to further this at work for non-code) that the effective key is to do something like patience diff on characters but looking at the context of the individual characters when determining whether they are unique. The benefit here is that you don't need to know about the parse tree, don't depend on special characters to delimit elements (newlines), and don't get LCS type diffs that aren't based on any sort of semantic intuition beyond that the minimal change is probably what was meant. [1] http://bramcohen.livejournal.com/73318.html
jacobolus · 2011-04-18
And has worked quite a bit on the revision control diff/merge problem, e.g. http://bramcohen.livejournal.com/37690.html
amichail · 2009-05-29
Their previous collaboration: http://bramcohen.livejournal.com/57084.html
mamama · 2008-10-04
Mark Cuban on how to become an innumerate tool: http://bramcohen.livejournal.com/35949.html?thread=516461.
byrneseyeview · 2008-09-01
Page 9: this is exactly what Bram Cohen was asking for (http://bramcohen.livejournal.com/51080.html).
carterschonwald · 2008-04-04
actually, Bram Cohen's blog on the various version control systems articulates what I was trying to say perfectly "Darcs's big advantage right now is that it have very good extensive support for cherry picking, a feature which is planned for Codeville but not implemented yet, and I'm not sure if it's planned for Monotone." from http://bramcohen.livejournal.com/17319.html
vitovito · 2012-11-21
It's interesting that Bram (I assume it's still Bram's show over there) has finally gone with a new streaming-optimized protocol design. We argued about it years ago. Here's Bram in 2004 arguing that live streaming is a niche market: http://bramcohen.livejournal.com/4294.html In the comments, "streamerp2p" is discussed, which I used as the basis for a proposal for live radio station streams along with Speex, back ~2005, when bandwidth was expensive. It's still around, apparently: http://www.streamerp2p.com/ Bittorrent itself can do streaming of static content: just request the blocks in order. It can also do streaming of live content if you chunk the live content and have an out-of-band way to update the torrent you're looking for, but that's not great. In my proposal I mention some other systems as well: Peercast: http://web.archive.org/web/20060207013338/http://www.peercast.org/ (defunct, Internet Archive link) P2P-Radio: http://p2p-radio.sourceforge.net/ (defunct) Allcast: http://web.archive.org/web/20060805040005/http://allcast.com/ (defunct, Internet Archive link) Chaincast (dead and blocked from IA) Abacast: http://web.archive.org/web/20061017041905/http://www.abacast.com/ (IA link, they're still around but now cloud-based) Xiph's IceShare: http://wiki.xiph.org/IceShare (defunct) Robert Haarman's StreamDist prototype: http://inglorion.net.nyud.net:8090/software/#streamdist Andrew Brampton's research and prototype:…

Keyboard shortcuts

/Search
j kNext / previous blog
EnterOpen selected blog
vVisit the blog site
fFollow / unfollow
lSwitch grid / list view
dSwitch dark mode
g hHome
g pTop posts
g tTopics
g fFollowing
g lLiked
g yHistory
g qFAQ
EscBack / close