HNHacker News
TopNewBestAskShowJobs

thinkmoore

292 karma · joined June 14, 2013

I'm a Principal Scientist at Galois. I study the intersection of Programming Languages and Security: how can we use language design and formal reasoning techniques to build secure software. My CV is online at http://thinkmoore.net.
submissionscomments
thinkmoore··on Statisticians Find They Can Agree: It’s Time to Stop Misusing P-Values
But if they are having children until they have one of each, the probability of the different observations does depend on the prior events!
thinkmoore··on Statisticians Find They Can Agree: It’s Time to Stop Misusing P-Values
Our goal is to calculate P(pb > 0.5 | "Six girls and one boy"), where pb is the probability of having a boy. (Ignoring that we have already assumed p is fixed), by applying Bayes' Theorem, we have:

P(pb > 0.5 | "Six girls and one boy") = (P("Six girls and one boy" | pb > 0.5) * P(pb > 0.5)) / P("Six girls and one boy")

Applying Bayes theorem thus requires us to calculate P("Six girls and one boy" | pb > 0.5). How do you suggest that we do this? Why is your answer the unique correct solution?

thinkmoore··on Statisticians Find They Can Agree: It’s Time to Stop Misusing P-Values
No, even as a Bayesian I could use either of two models to understand my data:

In world one, I use bayesian update on the model P(# boys | Bias) = Mutltinomial(n = 7, p = Bias)

In world two, I use bayesian update on the model P(# children | Bias) = Geometric(p = Bias)

Might-have-beens and didn't happens do play in, in my choice of model. I should choose the one that I believe, and if I'm not certain, I should use an even more complicated model that incorporates my beliefs about what models might be appropriate.

thinkmoore··on Statisticians Find They Can Agree: It’s Time to Stop Misusing P-Values
Is this actually true for the Bayesian model? Throw in a parameter for whether or not Bill and Lorena were trying to have children until they had a boy and a girl. Now your answer will depend quite heavily on your prior!
thinkmoore··on Statisticians Find They Can Agree: It’s Time to Stop Misusing P-Values
If Alice just wants to know the average height of the population, why is she doing a hypothesis test that the height isn't 65 inches?

Since her hypothesis test is designed to help answer the question of whether or not the mean population height is 65 inches, why should we expect it to tell us anything about the mean population height other than whether or not it being 65 is consistent with the data observed?

thinkmoore··on Zenefits Software Helped Brokers Cheat On Licensing Process
How about just not breaking laws anyway?
thinkmoore··on A lambda is not necessarily a closure
To use academic terminology, we would refer to "floating functions" as "first class functions" (since they are not second-class citizens in the language).

I would argue the true distinguishing feature of a "lambda function" in a PL is that it is first-class, nest-able, and lexically-scoped (that is, it captures bindings from its definition site).

A closure is simply a way of implementing lexical scope for functions.

A variable is a "free variable" not because it is "freed" from its lifetime, but because it is not bound by its enclosing lambda. (It would still be a free variable even if the function and the variable binding had the same lifetime.)

thinkmoore··on Retirement Nomads: Too poor to retire and too young to die
Whose parents have a guaranteed benefit pension these days?

As far as private savings, those disappear almost immediately in the face of a medical disaster.

Things are pretty grim indeed without the government programs (Social Security and Medicare).

thinkmoore··on How do bank payments actually work?
"Instant." I just need to wait for the transaction to be finalized in a block, and then wait for enough blocks to be reasonably sure there isn't a longer chain elsewhere. I'm sure that won't take any time at all. /s

Don't forget there is still counter-party risk on the side that is sending Bitcoin in exchange for goods as well.

thinkmoore··on Young 'to be poorer than parents at every stage of life'
This is true in the US, where the state pension is called social security. Except that conservatives have somehow rebranded this "entitlement" (to which you are entitled because you pay contributions over your working life) to something whiny "entitled" workers are unfairly demanding from the government.
thinkmoore··on Researchers discovered the perfect password that’s easy to remember
"If you want your own little poem password, you can enter your e-mail here, and their program will send you a secure one, which will then be deleted from their server."

Uh...

They went through all the trouble of making a website. Maybe use https and just show me the password on the website?

thinkmoore··on 50 years of Data Science [pdf]
I think you've nailed it precisely. What is irksome (scary?) isn't the sudden upsurge in interest in data analysis (great! lets for science!), but the complete lack of acknowledgement of the importance of statistical theory and knowledge. As the paper mentions, almost all of the new "Data Science" academic programs being created have very little communication with, let alone integration with, real statisticians. Garbage in-garbage out, no matter how much data or how fancy a program.
thinkmoore··on The Challenges of Securing University Computer Networks
Surprised there was no mention of eduroam: https://www.eduroam.us
thinkmoore··on Tame() – bad kitty, no socket for you
Folks at Google are already working on a Linux port of Capsicum. I think its far more likely they would go with that.
thinkmoore··on Science Isn’t Broken
In the realm of science, I think it is far more likely that researchers don't realize why what they're doing isn't a good idea. "Never attribute to malice that which is adequately attributed to stupidity." Not that I think researchers are stupid. It's just very hard and very complicated.
thinkmoore··on Show HN: Ticket Titan - Fight Traffic Tickets
My comments parent did say fighting "without a lawful defense." I'm pretty sure that fighting an invalid ticket is a lawful defense.
thinkmoore··on Science Isn’t Broken
One way to think about it is that the p-value is trying to account for sampling and measurement error.

Imagine you are a scientist and want to find out whether the hypothesis that men are on average taller than women is true. If you could just exactly measure and take the average of the entire male and female populations you wouldn't need a hypothesis test.

Since you can't, you can do an experiment where you take a random sample of men and women. Now, you can do the average in the same way, but you need something to help figure out whether to trust the results. That's where the p-value comes in. The reason you need to be careful to select hypotheses in advance is because in order for statistics to help you account for error you need the noise in the data to be uncorrelated with the result you are trying to assess---which it won't be if you chose the result because it was the one that looked best after you account for the noise.

thinkmoore··on Science Isn’t Broken
No, my description is correct, though I left out "assuming the null hypothesis is true."

The equal probability you are describing is for the p-value itself being more extreme, not the result.

thinkmoore··on Science Isn’t Broken
I feel like every description of the problem of p-values I read is missing the real issue. And that's that people are using the p-value incorrectly.

A fairly standard definition of the p-value (from wikipedia) says: "In statistics, the p-value is a function of the observed sample results (a statistic) that is used for testing a statistical hypothesis. Before the test is performed, a threshold value is chosen, called the significance level of the test, traditionally 5% or 1% and denoted as α."

What this description is missing though is the crucial importance of the fact that the threshold value is chosen before doing the analysis. And moreover, that the entire analysis plan has been chosen before doing the analysis. Because what the p-value is really telling you is the probability that on repeating the experiment (and its accompanying analysis!) you would see a result as or more extreme than what you observed.

If your experiment comprises "try all of the combinations of variables to see what gives me the best answer", the p-value you compute would need to be some very fancy test that took that into account... and you would see your analysis as having much less statistical power.

For a simple example, look at a statistically rigorous method for dealing with multiple hypothesis testing when you plan it in advance: https://en.wikipedia.org/wiki/Bonferroni_correction.

Of course p-hacking is bad. The problem isn't frequentist statistics or p-values though, its scientists not understanding the statistics that they use. If you want to use a p-value to help make a decision about a hypothesis, you have to commit to your analysis plan in advance.

edit: Furthermore, p-values were designed to deal with experimental data. If you're doing an observational study, perhaps you should use statistical tools designed for that purpose.

To sum up: when you have people who have no idea what they're doing do statistics, they will do it badly.

thinkmoore··on Show HN: Ticket Titan - Fight Traffic Tickets
Or, as parent suggests, you could just take responsibility for your actions...
thinkmoore··on Leaked Uber financials from 2012 to 2014
All of the cab companies I use in Boston have exactly such and app. I'd be willing to bet the same is true in many cities.
thinkmoore··on Tail call optimization in ECMAScript 6
Yes, the paper is about showing that you can do the equivalent of annotating stack frames for security in a language with tail calls. The same ideas work debugging though.

Basically, the key idea is that you can manage the debugging information yourself. So for simple tail recursion, you can have the first call push a marker on the stack and subsequent calls update a count on the marker (if you care about the depth). For more complicated interactions, you can record whatever debugging information you need, even a full stack by associating the information with a cell under the top-most stack frame. (Of course, this debugging information may grow with the depth of recursion, depending on whether you try to keep the full stack or not, but will still be more space efficient than keeping around all of the stack frames.)

The main point is that keeping track of your execution context doesn't have to be done by walking the call stack, you just need to have a protocol for maintaining whatever state you want on entry/exit.

thinkmoore··on Tail call optimization in ECMAScript 6
It is straightforward to provide the type of stack trace information people want for debugging in the presence of tail call elimination (not optimization ;) ) http://www.brinckerhoff.org/clements/papers/cf-toplas04.pdf

You can even try it out in Racket.

Edit: to clarify, my parenthetical was meant to say tail call optimization is not an optimization but a matter of correctness (so best to call it elimination instead), not to make a distinction between the two.

Also, that isn't quite the right paper but I don't have time to find the one I meant right now...

thinkmoore··on The Unix Philosophy
Agreed, I posted mostly for the humor, though there are some grains of truth there still.
thinkmoore··on The Unix Philosophy
The Unix Hater's Handbook (https://en.wikipedia.org/wiki/The_Unix-Haters_Handbook) has a few sections on of some of the ills of the Unix philosophy.
thinkmoore··on Shill: Scripting with Least Privilege
Thanks for the suggestion! I'll try and get something similar added to the admittedly minimal documentation on the website.
thinkmoore··on Shill: Scripting with Least Privilege
I'm not sure what flame wars you're referring to.

We picked the name Shill because it sounds a lot like shell, but is a bit of an in-joke because it is built on Racket, which is a descendant of Scheme. All three have slightly negative connotations: schemers, racketeers, shills.

thinkmoore··on Shill: Scripting with Least Privilege
I'm one of the developers. Happy to answer questions.
thinkmoore··on Learn Prolog Now
Logic programming shines in any domain where unification is used heavily. An example is writing executable semantics or type inference/checking algorithms. Here's some code I hacked up as an example a few years ago that implements an interpreter and HM type inference for a small functional language: http://pastebin.com/aWBWSwiW
thinkmoore··on Rent Control Creates Higher Rents in SF
I live in Somerville, MA, which does not have rent control. My rent has gone up by at least 10% every year for the past 4 years. This is not sustainable.
← PreviousPage 2 of 3Next →