HNHacker News
TopNewBestAskShowJobs

gdp

848 karma · joined August 6, 2009

Programming languages and formal methods geek.

http://plsadventures.blogspot.com/

submissionscomments
gdp··on Proving a Computer Program's Correctness
No, I wasn't suggesting you were disagreeing, I was simply responding to your hypothetical disagreement that some might argue. My counter-argument could be just as applicable to any of the people who have professed similar beliefs to the ones you speculated that some may hold.
gdp··on Proving a Computer Program's Correctness
> Some may argue that there's no guarantee that such proofs apply to real world systems.

I would argue that those who would argue that have probably not spent a lot of time doing any real-world formal verification.

People seem to like arguing about its utility in the abstract without ever doing it.

gdp··on Proving a Computer Program's Correctness
For this project, that's assumed. Provided you have some kind of formal semantics, you can define translations. And in fact, Adam Chlipala's work on certified compilers show that it's not impossible.

http://adam.chlipala.net/papers/CtpcPLDI07/

(there are subsequent papers too, but that's probably a good place to start).

gdp··on Proving a Computer Program's Correctness
I was using 'assumption' in the strict mathematical-logic sense. These assumptions are stated and it is trivial to check that the proof is not true if the assumptions aren't true.
gdp··on Proving a Computer Program's Correctness
Read the link.

If you understand a little bit about how something like Isabelle is constructed, only a small number of axioms are "hand coded", and then the rest is built from those. You can always build an external proof checking tool that checks that the proof you've constructed is correct. And if you're not confident in that, you can build another one.

gdp··on Proving a Computer Program's Correctness
http://news.ycombinator.com/item?id=760547

There was some discussion on the original post to HN about this announcement. In particular, look at this:

http://ertos.nicta.com.au/research/l4.verified/proof.pml

Which talks about the limits of provability.

In short, a "proof" that contains errors isn't really a proof of anything. And you build your proof inside an automated theorem prover so that it can be mechanically checked for internal inconsistency (i.e. contradictions), or for a completely inability to be false (i.e. tautologies).

gdp··on Proving a Computer Program's Correctness
As has been said before, it's not about being "bug free" - it's about a number of safety properties always holding as long as the assumptions are true.

The safety properties might be things like who can write to what memory, and when it is acceptable for bits of the kernel to do certain things. Lock freedom in scheduling is probably also a big thing. I haven't looked at any of this very closely, but I'm just guessing based on the sorts of properties I would try to prove initially.

gdp··on Proving a Computer Program's Correctness
Extrapolating the effort involved in proving huge numbers of complex safety properties for an operating system written in C to programs in general is a bit silly. Doing formal verification in more abstract languages gets considerably easier, and considerably easier to mechanise large chunks of the work (a Hindley-Milner type system is a kind of proof of a safety property, for example, and that's totally mechanical).

So it might take 200,000 years to verify Windows, but considerably less to verify an equivalent amount of non-operating system Haskell code, for example.

gdp··on I don't like you very much
Somebody who repeatedly sends invites and then calls is not going to get a recommendation from me. If you are actually worthy of recommendation, people will probably do them with very little encouragement.

Hounding people for recommendations will either lead to refusal (which will inspire you to write a blog post about people who don't like you), or people will write you a mildly insincere recommendation to avoid causing offence. At that point, you should be grateful that your acquaintance has considerably more social graces than you do.

gdp··on I don't like you very much
OK, perhaps I didn't phrase my objection very well.

> The purpose is to review various people that didn't like me and explore why.

I guess my problem with the article was that the tone implied that most of these people weren't justified in not liking you, or that it was some natural effect of a bad situation, rather than something caused by your own actions.

gdp··on I don't like you very much
I think it's actually relatively easy to figure out what people think about you. If you do something, and a number of people react, you can generally start to draw a "trend line" through the behaviours of different people towards you over the course of some amount of time.

I think it's just important to pay attention.

gdp··on I don't like you very much
I didn't do anything except post here, so I assume it's a feature of that blog.
gdp··on I don't like you very much
Wow. I don't know if it's just a literary device being employed here, but this article comes off as the work of somebody with a lack of empathy.

Through the description of the actions of each of the people with whom he disagrees, I immediately found myself sympathising with the "other side". I mean, there are the usual dailywtf-style "this guy is really dumb/awful to work with/whatever" stories, and we all get a bit of a laugh out of them, but this just comes across as a situation where the author is unable to grasp why other people might behave towards him in these ways, or feel particular feelings towards him.

> I honestly don't know what interests me more, why Bob doesn't want to recommend me or why I thought Bob would recommend me when he won't. I think the second question has a lot more potential than the first!

Sure, the second question is more interesting, but I don't think this article goes any distance towards attempting to answer it.

People behave in particular ways for reasons that seem apparent to them. The tone of this article annoys me because it appears to suggest that people who behave according to motivations that are hidden from the author are somehow at fault.

I just think this is symptomatic of so many of my experiences within the IT industry - people always assume that their own motives are pure and good, and that everyone else is acting dishonestly (to screw the client, or to avoid doing work, or to advance their own career). I much prefer to assume that if I don't understand somebody's motivations, the burden is on me to try to understand, rather than just writing them off as bad/lazy/dishonest/whatever.

gdp··on Programming Language Classification Table
This basically seems like a table to compare attributes of languages that are much less different from each other than they are from everything else. I don't think it usefully captures any attributes that people actually care about.
gdp··on Ask HN: Does anyone take the risk to work on private projects from workplace?
Keyloggers are unlikely to be particularly useful in this case, but if you imagine you are being keylogged, then you can take appropriate steps to mask your behaviour.

Other than that, I would advise sshing somewhere remote and keeping all of your private project stuff there (i.e. work on it remote - don't keep local copies).

gdp··on JavaScript must die
You appear to be relying on the clairvoyant abilities of those you correspond with. My example could be re-factored into exactly the same situation you're talking about by substituting the body of each script tag with two files that contain the same code, but the example is valid either way.

Really, I don't understand the hostility here. Surely this is a worthwhile discussion to have? Either we can establish that it's not a problem that needs fixing, or we can establish that something needs fixing, and identify where it is.

Implying that I'm on some kind of vendetta just because I disagree with you about the source and nature of the flaws in javascript seems a little bit juvenile. These are genuinely-held opinions, and I'd appreciate it if you would not assume that I'm being disingenuous just because I disagree with you.

gdp··on JavaScript must die
> You seem to have something odd and bizarre against the language.

It's not "odd and bizarre" - it's a belief that the language is fundamentally unsuitable for the things that people insist upon using it for, and reasonably well supported by my own experiences of the language, as well as the reported experiences of others.

> You also don't seem to realize that swapping out js for some other language would mean exactly the same security issues, unless you actually fixed those security issues where they are - in the BROWSER.

I take it you didn't read my reasonably concrete proposals for the use of proof carrying code? It becomes a largely mechanical process to verify that the browser and the language implement "security" in a sensible way at that point.

> If you would like to learn about the language, I'd recommend "O'Reilly Definitive Javascript". Also checkout Rhino.

Thanks. If you would like to learn about Horse and Pony care, I recommend "BHS Complete Horse and Pony Care".

gdp··on JavaScript must die
We're entitled to wishful thinking. Wishful thinking gives us something to aim for, and then we can evaluate in realistic terms how far towards that goal we can get.
gdp··on JavaScript must die
You have chosen a particularly strange definition of "code".

  <script>
  var a = "hello, world";
  </script>

  <script>
  doSomething(a);
  </script>
My program is either syntactically invalid (because 'a' is undefined) or functionally incorrect (because it doesn't do anything) if you treat these blocks separately. This is Javascript code that relies upon script tags using the same execution context.

Once again, I (recursively) refer you to this comment:

http://news.ycombinator.org/item?id=843320

gdp··on JavaScript must die
Given that I object to the use of Javascript outside of browsers, you've basically negated (for me) any reason to treat the issue of language security versus browser security separately.
gdp··on Are top CS theorists nice people? Would they even talk with you? (comment 25)
I'm really not trolling. The only reason I started arguing this point is that it was with some irritation that I saw the suggestion from amichail that the definition of "Theoretical Computer Science" excluded theoretical computer scientists. An alternative name for what SPJ does was even offered, to make it distinct (once again) from "theoretical computer science".

The original article comments may have been talking about a specific community that happens to be called "the theoretical computer science community", hence my point that it is up to members of that community to remember to mentally translate into words that the rest of the universe can understand when talking to people outside their community (which I view as a sub-group of theoretical computer science, for the record).

For some reason you picked up the argument which was only directed at amichail's original comments.

Basically, the framing of the question should actually have read "Are people who go to conference X friendly?" - the actual discussion point was buried in the comments. The question annoyed me, and amichail's even stronger re-statement of this same viewpoint annoyed me further.

And then it just got silly, because now we're arguing about the meanings of words like "many" (my word), or "common" (your word), when really the use of quantifiers in this is really not necessary.

My point was not that there are only a small number of people who use this definition of TCS that I'm complaining about (although I do believe that to be the case) - my point, illustrated with my example about chemistry above, is that it is completely bonkers to use it in this way outside of that community.

gdp··on JavaScript must die
I'll refer you to this comment now, as we appear to be arguing about the same thing in two threads:

http://news.ycombinator.org/item?id=843320

gdp··on JavaScript must die
> Javascript is an innocent bystander in the mess.

No, it's not, because well-formed, valid Javascript code is permitted to depend on this execution model.

gdp··on JavaScript must die
Don't you think that something that prevented people from unintentionally introducing XSS vulnerabilities into their code would actually be easier? Building broken software is always easy, so shouldn't we be focusing on making it easier to build software that isn't broken?
gdp··on JavaScript must die
But there is lots of code that relies upon that behaviour. We can argue about the exact source of it if you like, but if the language execution model is dependent on that behaviour, then the language execution model is flawed, which was my original point, I think.
gdp··on JavaScript must die
The security needs to be in the browser - as in the user needs to enforce the security, not the code - leaving it up to developers to specify what permissions things should have is a recipe for lazy developers getting us into a situation much like the one we're in now.
gdp··on JavaScript must die
'basically free' * lots of users = not free.
gdp··on JavaScript must die
> If we follow the idea of killing everything that's "insecure" then we will end up killing everything, because nothing is 100% secure

Perhaps, but killing off the stuff that is obviously and demonstrably broken seems like a pretty sensible policy.

gdp··on JavaScript must die
> Never emit contents of any variable to the browser without treating it with htmlspecialchars() (or equivalent) first.

That seems like one way of using a sledgehammer to needlessly burn server-side CPU cycles.

gdp··on JavaScript must die
That was both not-obvious from your comment, and quite irrelevant, given that I can only see one complaint that stems from the design of the DOM API. The rest of them are all based on the flawed language security model. Basically an "API" is only as dangerous as the language that permits its use.
← PreviousPage 3 of 11Next →