HNHacker News
TopNewBestAskShowJobs

mikebenfield

1,257 karma · joined August 29, 2011

submissionscomments
mikebenfield··on The Area Under an ROC Curve (2001)
I came to the conclusion that area under ROC is pretty much garbage. What you really want is two separate steps: estimate the probability that instance A belongs in classification X, and then a decision step where you decide how to classify A based on a loss function (this varies depending on how harmful a false positive is).

Area under ROC forces you to conflate these two.

Why not evaluate the probability estimation directly, using Brier score [1] or something similar?

[1] https://en.wikipedia.org/wiki/Brier_score

mikebenfield··on How to Print Integers Really Fast
Related to this is binary coded decimal [1]: let each nibble (4 bits) of your integer represent a decimal digit 0-9. Then do your arithmetic in binary, but after each operation run a special CPU instruction to "correct" the result to what it should be in decimal.

[1] https://en.wikipedia.org/wiki/Binary-coded_decimal

mikebenfield··on Rust in 2017: what we achieved
LLDB works well enough to sometimes be useful. I've used it with the VS Code native debugger extension [1].

I've encountered a couple annoyances:

A. Using rustc to link somehow removes debugging information from static libraries I wrote in assembly [2]. This is extremely annoying, but I haven't had time to really look into it and it seems others can't reproduce it.

B. There seem to be some occasional oddball problems when stepping through code. Like it'll skip lines, or stay on the same line for many steps. And also an annoyance regarding how that VS Code extension handles "Step Into" for functions you don't have the source for: you can easily get into an infinite popup situation and have to restart the debugger.

IMO the sad truth is that if a great debugger is a prerequisite to use a language, then you're limited to about 5 total languages.

[1] https://marketplace.visualstudio.com/items?itemName=webfreak...

[2] https://github.com/rust-lang/rust/issues/45218

mikebenfield··on The Google-Facebook Duopoly Threatens Diversity of Thought
> Watching what's happened on university campuses for the last couple of years

Have you been on a university campus recently?

Contrary to what some reactionary conservatives seem to think, they are not generally oppressive places with no tolerance for conservative thought.

Yes, occasionally 19 year olds say and do some silly things. That's kind of what being young and having your first taste of adulthood is supposed to be about. And if you only consume media that highlights those silly things and never actually visit a university and talk to young people, yeah, you can easily get a very negative view of what universities and academic culture are like.

> People are classified as "racist" for believing that the culture that came out of northern Europe is not inherently oppressive.

Well, it is inherently oppressive, as is just about every other traditional culture, and citizens have to be constantly vigilant about to make sure that oppressive nature is held at bay as much as possible. Can there really be any doubt about this? Consider, among many other facts, the fact that Alabama just very nearly elected to the US Senate a man who thinks the US was better under slavery and that the constitutional amendments granting women and blacks the right to vote should be revoked. If that's not enough to convince you that racism is a serious problem I don't know what would be.

mikebenfield··on Uproar Over Purported Ban at C.D.C. Of Words Like ‘Evidence-Based’
What evidence do you have that they have been sloppy or not diligent with regard to their sources here? The fact that the sources are anonymous is certainly not such evidence; anonymous sources have been considered crucial to journalism for a very long time.
mikebenfield··on Show HN: Accelerate SHA256 Computations in Go Using AVX512 instructions
Possibly I'm confused, but in what sense is this "in Pure Go"?
mikebenfield··on Homebrew 1.4.0
Or MacPorts.
mikebenfield··on Tech luminaries call net neutrality vote an 'imminent threat'
> Two possible silver linings if it does get removed on the 14th:

Well, here's my bet on what will happen:

3. There will be no immediate catastrophic consequences. Over time, the Internet will become less amenable to innovation and small players and will just overall be worse than it would otherwise. But there will be no sudden dramatic change that will spur action for people who weren't already concerned.

mikebenfield··on Good engineers make terrible leaders
The article seems to make two different points that don't completely fit together:

1. Non-engineers are better leaders because they can find solutions to "wicked problems", problems with many interacitng parts where there is no predefined objectively right or wrong solution.

2. Non-engineers are better leaders because they are better at persuading others that their shitty solutions are actually good.

I might buy #2 (for some definition of "better leaders"); I'm not so sure about #1.

mikebenfield··on Laptops Are Great, But Not During a Lecture or a Meeting
Fine, but then you are agreeing with me: most instructors do not expect their students to read material ahead of time and do not structure their classes as if that is the expectation.

In fact, in my experience it's not even usually possible to read material before the lecture because students are only given at best a vague idea of what specifically is coming next.

mikebenfield··on Laptops Are Great, But Not During a Lecture or a Meeting
> Lectures as part of course are designed to be attended after reviewing the material at least once on your own.

> Its astonishing how many students resist this fact, even when it is clearly spelled out for them.

I've taken a lot of classes, I've been a teaching assistant for a lot of classes, I've observed a lot of classes, and I've never gotten the impression that the instructor expected the students to have already looked at the material. Certainly no one ever said that explicitly.

I will say that it is true that the handful of times I tried to structure my class differently and have students read material on their own before lecture, they were indeed resistant and it didn't go well. And I do think that would be a better approach. But my point is that this is overwhelmingly not what is generally expected of students, at least in my experience, mostly at state colleges in the US.

mikebenfield··on I'm on the FCC. Please stop us from killing net neutrality
I see very little reason to think that persuading people by rational argument is an effective way to make policy happen.
mikebenfield··on Why Object-Oriented Languages Need Tail Calls (2011)
> your code only works because a compiler optimization makes it work. If a different compiler executed your code exactly as written it would crash.

But it's completely arbitrary that you consider this "a compiler optimization" as opposed to "the way the language behaves." The languages you're used to work the way you describe: if the stars are aligned, a particular compiler may do TCO as an extra optimization.

But there is absolutely no reason it has to be this way. It is perfectly possible for a language standard to mandate that TCO must happen and to specify in an easily understood way when it must happen. As Scheme did over 40 years ago.

mikebenfield··on Why Object-Oriented Languages Need Tail Calls (2011)
> because if you need "special syntax" to express the fact that your recursively defined function can technically be evaluated in constant stack space, you probably should be writing it as an iterative function to begin with.

Why? I find recursive functions are often simpler to understand and write than iteration. Why does the compiler need to stop me from doing so? You write "technically" as though it were just an obscure technicality that it's possible to implement a function call without taking up excessive stack space, but to my mind it's a fundamental fact.

> Iteration ain't that hard either folks, and it has the notable advantage of mapping more obviously to the behavior of actual machines we use to execute our code.

In what sense is this true? Recursive function: update these variables (in registers or memory) and jump back up to this instruction. Iteration: update this variable and jump back up to this instruction.

mikebenfield··on CUPS License Change Coming
They strongly prefer to avoid GPL code as much as possible in the core system, and have on occasion gone to great lengths to use a non-GPL alternative. I haven't used FreeBSD in a long time, but as I recall ports are considered extra software, not part of the FreeBSD OS.
mikebenfield··on Stanford Stats 385: Theories of Deep Learning
Because it's much easier to work with and improve something if there's a theory behind it?

There's a spectrum between "just keep trying tons of crap and see what works" and "do this simple, well-understood calculation to see exactly what will work." Is it not obvious why it's nicer to be on the latter end of the spectrum than the former?

mikebenfield··on Stanford Stats 385: Theories of Deep Learning
> Neural Networks are non-linear because of their activation functions. You need a differentiable function in order to take the derivative so you can back-prop the error, more or less.

To clarify: linear functions would still be differentiable without an activation function. The problem is that the composition of linear functions is just another linear function, so you gain nothing by having multiple layers; you might as well just do some kind of linear regression or classification. Activation functions introduce nonlinearity so that deep learning methods can hopefully learn things linear methods can't.

mikebenfield··on Ask HN: How do you manage multiple learning projects?
Here are my thoughts. I've managed to independently learn a decent amount of stuff and do some decent side projects, but I don't claim to have any great insight. In fact maybe everything I have to say is obvious, so take this for what it's worth.

Consider doing less. If you are working a full time job, then depending on exactly how serious you are, 3 learning projects is likely overkill. (But I tend to do the same thing myself.)

Pick the resources you'll use in advance. I've generally had a negative opinion about video lectures, preferring books, but I've somewhat changed my thoughts lately. In particular it's nice to be able to follow a course as it was taught at a serious university, with a syllabus and schedule all laid out for you.

Set a weekly schedule in advance. Something like, M/F I'll watch a data science lecture and Tu/Th I'll do art. Whatever. Include a planned endpoint: by this date I will be finished with the 9 chapters of this book I plan to cover.

Each evening, write a brief journal entry about what you accomplished that day. Also write out a schedule for the next day. I like to put at the top of my daily schedule a list of the major tasks I want to accomplish that day, and then also a couple "extras", which are things I can work on if I turn out to have extra time. The extras can be large or small, but it's nice if you have a small one because you can cram it in wherever you have free time. Even something like "Problem 12.3 from this textbook, which I couldn't figure out last week". If you randomly turn out to have 10 minutes free, well pull out your notebook and think about that problem for 10 minutes.

(By the way, I know an eminent mathematician, one of the few who has done serious work in multiple fields, who says one of the attributes that has helped him the most is his ability to efficiently context switch and get serious work done throughout the day. If he has a random 18 minutes free, he is going to make 18 minutes' worth of progress on a research project.)

Jerry Seinfeld's "Don't break the chain" idea is nice.

As far as tips for learning: engage and fight with the material, do projects incorporating what you're learning, make connections to other things you know. Incorporate reviews of earlier chapters/lectures, rather than just continually charging ahead. There's a bunch of resources for how to learn (see for instance those mentioned in this HN thread [1]), which I think are good ideas, although honestly I have only haphazardly incorporated these techniques.

A major thing I haven't really figured out is maintaining / reviewing. I can personally attest to the fact that it is literally possible to be an expert in a subject one day, and less than a year later struggle to remember elementary knowledge that every beginning student learns. Maybe there is no perfect solution to this problem, but maybe it's possible to come up with some review schedule that helps more than "every now and then I randomly go back and look at a book I once read."

[1] https://news.ycombinator.com/item?id=13297250

mikebenfield··on Simple Virtual Machine in C
Indeed. At least in my experience, Rust (or LLVM, presumably) will make jump tables from all sorts of nonsense, doing something efficient even when there are gaps in matched values. Manually creating jump tables seems to be a waste of time.

(Actually, it doesn't even need to be a switch statement... Just a succession of `if`s works fine.)

mikebenfield··on Effective Programs: 10 Years of Clojure
Yes, and the things he says about it indicate he does think programming languages are important.
mikebenfield··on Effective Programs: 10 Years of Clojure
I don't understand how this is a reply to my comment.
mikebenfield··on Effective Programs: 10 Years of Clojure
Yeah, I understand that. But if he really didn't care much about programming languages, why wouldn't he just use C++, which he was allowed to use in production?
mikebenfield··on Effective Programs: 10 Years of Clojure
Actually, this talk mostly convinced me that dynamic typing is not just an anachronism and really is the right choice for some domains.

Then again, now I wonder if statically typed languages could get the benefits Hickey talks about just by having convenient Map and Keyword types like in Clojure and using them where appropriate.

mikebenfield··on Effective Programs: 10 Years of Clojure
Yeah I heard him say that and to be perfectly honest I don't know if I believe he truly thinks that. This is a man who devoted years of his life to create a new programming language because he found it difficult and frustrating to use existing languages. In this talk and many others he talks about how he believes Clojure's features (like dynamic typing and dynamic dispatch and the whole keyword system and others) are really key to writing good software and how many other features (like static typing) are irrelevant or harmful... and now here he's saying programming languages don't matter much?
mikebenfield··on We only hire the best means we only hire the trendiest (2016)
> Look at GPA/High/middle/etc school grades

Really? There is a possibility that this is my lack of industry experience talking, but I find the idea that a company looks at high school grades very difficult to believe. As for middle school... I would seriously wonder about the basic competence (and sanity) of someone who asked me about middle school grades.

mikebenfield··on Bill Thurston answers: What's a mathematician to do?
Well, this is MathOverflow, which is quite separate from the rest of StackExchange and has their own rules. Although this particular question did receive an inspiring answer from an eminent mathematician, MO specifically wants to be a site for research mathematicians to ask and answer each others' research questions. They need to be pretty strict about closing off-topic questions so as not to be overwhelmed with undergrad homework issues or so-called "soft questions."
mikebenfield··on Nvidia GPU Cloud
What about Paperspace?

(Really, I'm wondering: did you just overlook them or is there a reason they are not competitive with the other platforms?)

mikebenfield··on Video Games Are Destroying the People Who Make Them
This is a recurring topic here, but this varies a lot by field. In many fields literally the only reason to go to grad school is to (try to) become a professor.
mikebenfield··on Why Python is Slow: Looking Under the Hood (2014)
Although I use and enjoy Python for some purposes, I can't help by see all the effort gone into improving Python performance (including Pypy, Cython, rewriting code in C, etc) as fixing a self-inflicted wound. Why are we using a language whose semantics make it very difficult to execute quickly?
mikebenfield··on Why Python is Slow: Looking Under the Hood (2014)
I'm sorry, but I have to disagree with the first point. Static vs dynamic typing doesn't have much to do with safety. Haskell, Standard ML, OCaml, Rust, and many others have memory safety and no null pointer issues. Exact arithmetic and overflow also has nothing to do with type systems. There are statically typed languages other than C and C++, and virtually all of them from the last 20 or more years address the issues you list here.

(I personally would also disagree with your second point, but that is more a matter of opinion.)

← PreviousPage 7 of 10Next →