HN Theater @HNTheaterMonth

The best talks and videos of Hacker News.

Hacker News Comments on
Avi Bryant - Bad Hackers Copy, Great Hackers Steal

CUSEC · Vimeo · 16 HN points · 6 HN comments
HN Theater has aggregated all Hacker News stories and comments that mention CUSEC's video "Avi Bryant - Bad Hackers Copy, Great Hackers Steal".
Vimeo Summary
Bio: Avi Bryant is the co-founder of Dabble DB, a venture-backed startup based in Vancouver, BC. He’s also the creator of the Seaside web framework, and has given keynotes at RailsConf, Smalltalk Solutions, and elsewhere about his unusual - some say heretical - approaches to web development.
HN Theater Rankings

Hacker News Stories and Comments

All the comments and stories posted to Hacker News that reference this video.
Apr 05, 2017 · 2 points, 0 comments · submitted by avichalp
Avi Bryant demo'd this exact concept at an old CUSEC: https://vimeo.com/4763707#t=27m20s

I wish I knew which paper he was referring to - it's a great feature :).

lmeyerov
For more, I gave a feel for how to rethink the full data pipeline using these ideas @ Strange Loop: http://www.infoq.com/presentations/dsl-visualization . It pulls on several projects from program synthesis @ berkeley. (These directly led to applications mentioned here like flashfill.)
Apr 19, 2012 · 1 points, 0 comments · submitted by edwardog
Apr 18, 2012 · smokinn on Avi Bryant Joins Etsy
He also gave a good talk titled Bad Hackers Copy, Great Hackers Steal

http://vimeo.com/4763707

Apr 02, 2012 · eneveu on Julia, I Love You
The idea of a dynamic Ruby-like language with C-like performance reminds me of Avi Bryant's talk "Bad Hackers Copy, Great Hackers Steal" : http://vimeo.com/4763707

He explains that dynamic languages are not inherently slow. It's their current implementation that's slow. Java is not fast thanks to static typing, it is fast thanks to the Hotspot VM, which builds upon the StrongTalk VM implementation.

Quote taken around the 13" mark (some trolling included ;) ): "Ruby has the dynamic part, and Java has the fast part. And this has led to this assumption that people have that the reason that Java is fast and Ruby is slow is because Java is static and Ruby is dynamic. And that's just not true, that's just a myth. Nothing about Java being fast has anything to do with it being static. It's simply that the papers that the Java people read were the ones that told you how to make it fast, and the papers that Matz read were the ones that told you how to make it usable."

pwang
This is the most insightful comment in the discussion thus far.
Speaking as an actually credentialed computer scientist, this list is ridiculous.

First and for all, only one of these books is actually about theoretical computer science, and even then.

Secondly, (feel free to disagree on this one) K&R is recommended more as a prestige book. So much of C is in the toolkit and libraries that I think it's a little silly to be recommending a 30 year old intro that is actually kind of hard to read.

Thirdly, this question comes up all the time. Here's an actually serious version of this question: http://cstheory.stackexchange.com/questions/3253/what-books-...

If you only care about actually practical issues to your life as a programmer, give this list a shot http://news.ycombinator.com/item?id=3320813

Addendum: Although I'm credentialed as a CompSci, I really work as an engineer. The difference? Scientists read papers (Avi Bryant) http://vimeo.com/4763707 and think about the nature of our work (Greg Wilson) http://vimeo.com/9270320

veyron
What is a "Credentialed Computer Scientist"? Do you mean a college degree in CS/EE? I'd imagine a whole slew of people here on HN are Credentialed in that sense.
blario
I take it to mean, Ph.D; not from experience, but that's the only meaning that makes sense in the context.
tptacek
My read: he just means it in the sense that I mean "professional" when I say I'm a professional application security person, except that it's weird to say you're a "professional computer science" when your day job doesn't involve writing papers.
phillmv
That's pretty much it.

I got a nice piece of paper, but it's not like my day to day job involves much of what I learned during school.

ericmoritz
I apologize for any offense that I may have given by using the phase "self-taught computer scientist".

This article is my personal recommendation of books that I often recommend to junior developers that are smart but didn't complete a degree and often find their knowledge of basic computer science lacking.

tptacek
As a self-taught C software developer, I came here to say the same thing Phillip said.

To it, I would also add that C isn't the "latin" of computer science (if any language is going to prove to be that, it's Lisp, but it's too early to say, other than to say that isn't going to be C).

I'd also suggest that the best book to follow up K&R is Hansen's _C Interfaces and Implementations_.

If I wanted to teach someone to be a computer scientist, I'd look for a book that would help them read papers. I'd also point them towards compiler theory, not so much because it's fundamental computer science (it's a vital applied discipline), but because it exposes you to more real computer science than most other domains.

ericmoritz
Do you have a book recommendation to help someone read papers. I spent an couple evenings going over MIT course notes on discrete mathematics to attempt to read a paper on Conflict-free Replicated Data Types <http://hal.archives-ouvertes.fr/docs/00/55/55/88/PDF/techrep...;

What I would give for a book at that time that would help me translate the following:

    merge (X, Y ) : payload Z
       let ∀i ∈ [0, n − 1] : Z.P[i] = max(X.P[i], Y.P[i])
Into

    def merge(X, Y):
       Z = ... new object ...
       for i in range(len(X.P) - 1):
           Z.P[i] = max(X.P[i], Y.P[i])
       return Z
I eventually figured it out but it was a bit rough trying to figure out what all the symbols meant.
stiff
There is a really nice book trying to teach exactly this (among other things) called "The Haskell Road To Logic, Maths and Programming":

http://www.amazon.com/Haskell-Logic-Maths-Programming-Comput...

gtani
available for free, according to

http://hackershelf.com/topic/math/

phillmv
Well… it depends on the paper! Some stuff might need more than a single course of background to fully understand.

For more rudimentary papers, any undergrad course on discrete mathematics should get you started. I personally was forced to read http://www.amazon.com/Discrete-Mathematics-Applications-Susa... - and it's pretty decent.

ericmoritz
Thanks for the recommendation. That was one of the text books that I looked at but the sticker shock steered me towards free MIT course notes.
bwarp
Buy it second hand from Amazon - they are much cheaper! ($17)

+1 for the book recommendation - I also have a copy of that.

arghnoname
I don't know if it is true about that book in particular, but if I'm buying a textbook as a resource I usually look for the international editions. They sell near identical versions of the books (shuffle the problem sets around) in other places around for much, much less.
jacques_chester
Lisp is the "greek". Older, more free-wheeling. Intellectually more influential but swamped in "the real world" by the latin-speakers.
gjm11
And full of lambdas.
user24
> books that I often recommend to junior developers that are smart but didn't complete a degree and often find their knowledge of basic computer science lacking.

I think you may be confusing "Computer Science" with "Software Engineering".

phillmv
To be fair, I didn't take offense to "self-taught computer scientist". I took offense to "every self-taught computer scientist".

I'll be the first to admit that university is bullshit and mostly acts as a social signifier. Like I mentioned above, I'm credentialed, and I'll put that on my business cards but between you and me and the internet at large I mostly work as a software engineer.

There are even many problems with talking about "computer science" because for the most part it's treated like a branch of mathematics and its academic circle really hates dabbling in messy empirical data.

Yet, there's a degree of rigour in it. There's an actual underpinning behind a lot of this stuff.

So! Can you be a self taught computer scientist? Certainly! K&R and The Little Schemer just have almost nothing to do with it - even if they might make you into better programmers :).

scott_s
There are even many problems with talking about "computer science" because for the most part it's treated like a branch of mathematics and its academic circle really hates dabbling in messy empirical data.

This gets repeated again and again on HN, but it's not true. I am a CS researcher, and I always have messy empirical data. Systems research almost always has tons of experimental results. A large chunk of our papers are dedicated to the experimental design and results.

I have made this point many times before:

http://news.ycombinator.com/item?id=968013

http://news.ycombinator.com/item?id=690798

http://news.ycombinator.com/item?id=1131606

One of these days I'm going to actually set up a blog, write this point up as an essay, and be able to point to it.

My own personal definition of computer science: everything concerned with computation, both in the abstract and in the implementation.

phillmv
Please do! And link to the rest of your research :)!

I'm just talking from my own (very) limited personal experience, though, and the Greg Wilson video I linked to (albeit it's been two years since I last watched it).

scott_s
You can find everything that I have currently published in a peer-reviewed place on my (old) webpage in my profile. I've done lots since graduating (lots), but we've hit a bunch of paper rejections (aarrrrggg), so they're not published yet. I was, however, involved in a paper that we've submitted to a journal, so it has not gone through peer-review yet, but we made a tech report so that others could cite it: http://researcher.ibm.com/files/us-hirzel/tr11-rc25215-opt-c...
gruseom
That looks interesting! I saved it for later.
wisty
From what I can tell (based on HN and other forums), systems research is empirical testing of systems, while theoretical computer science is math heavy. The typical systems paper is "The design, implementation, and performance of a [application] system, using [technology]". While a theory paper is "Proof of the existence of a solution for [problem] in time [O(something)]".

These two branches do talk to each other, but not much.

scott_s
In general you got it, but CS theorists do more than just algorithmic analysis. They also may be after some other desired, provably guaranteed effect with an algorithm, and they'll say in passing "By the way, this is a linear algorithm, so it's performance isnt an issue." This is true in scheduling, cryptography and probably many other areas. (It's early, sorry.)

You got systems research pretty much head-on, but I would stress the design and implementation part more. That is, CS systems research tends towards engineering, where we claim we made a better whatzit, and then we need to provide a suite of experiments to support our claim.

Jul 09, 2011 · eneveu on V8: a tale of two compilers
I learned about this when watching Avi Bryant's great talk "Bad Hackers Copy, Great Hackers Steal" : http://vimeo.com/4763707

He explains that dynamic languages are not inherently slow. It's their current implementation that's slow. Java is not fast thanks to static typing, it is fast thanks to the Hotspot VM, which builds upon the StrongTalk VM implementation.

Quote taken around the 13" mark (some trolling included ;) ): "Ruby has the dynamic part, and Java has the fast part. And this has led to this assumption that people have that the reason that Java is fast and Ruby is slow is because Java is static and Ruby is dynamic. And that's just not true, that's just a myth. Nothing about Java being fast has anything to do with it being static. It's simply that the papers that the Java people read were the ones that told you how to make it fast, and the papers that Matz read were the ones that told you how to make it usable."

Bad Hackers Copy, Great Hackers Steal...? ( http://vimeo.com/4763707 )
Jan 09, 2010 · 13 points, 0 comments · submitted by smokinn
HN Theater is an independent project and is not operated by Y Combinator or any of the video hosting platforms linked to on this site.
~ yaj@
;laksdfhjdhksalkfj more things
yahnd.com ~ Privacy Policy ~
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.