emillon
emillon on Hacker News
Posted by
emillon on Wednesday August 30, 2017 @09:16AM
from the circuitbeard.co.uk dept.
Posted by
emillon on Wednesday November 02, 2016 @05:01AM
from the curl.haxx.se dept.
Posted by
emillon on Tuesday September 13, 2016 @08:06AM
from the sourceware.org dept.
When I used pwsafe and keepassx they had this option.
You might want to filter local and unroutable URLs, for example entering 127.0.0.1 renders a MAMP Pro page.
It's a common feature of password managers.
Posted by
emillon on Tuesday August 30, 2016 @11:31AM
from the medium.com dept.
Posted by
emillon on Friday August 19, 2016 @09:07AM
from the blog.fogcreek.com dept.
There are no semantic problems with this, but typing will get in the way: you can express it fairly easily if all the functions have the same type (such as Int -> Int): actually it's just 'foldr ($)'. But it is difficult to type a list of functions such as each member's return value has the same type as the next one's parameter (symbolically, [an-1 -> an, ..., a1 -> a2, a0 -> a1]). It's easier to refer to the composition of such functions, which is why you would see it as 'h . g . f'.
Posted by
emillon on Wednesday June 08, 2016 @11:05AM
from the openwall.com dept.
This kind of proofs usually are separated in two steps:
- correction: define a loop invariant. Assuming the loop terminates, it will hold when the program exits the loop.
- termination: define a loop variant, something that changes at every iteration. If you can find a variant that is a strictly decreasing sequence of natural numbers (or an increasing, bounded sequence), you've established that the loop terminates.
Once you've done these two steps you know that the program terminates and the invariant holds at the end. (in your case, you won't be able to find a good variant - depending on the floating point semantics you use of course).
This is correct, I missed this!
That's assuming that this particular string was already present somewhere in the binary. Since it is only present as a reference, you would not see the string in a binary patch.
That is my opinion too, but I would go even further and say that this change could have been made on the compiled binary.
This kind of statement must take 10-15 bytes max to patch and the build boxes are typically less safe than source control systems.
The letters in this password spell "sun su".
Thanks for the heads-up!
For some reason mailchimp was returning 403s from heroku, this must be related to this morning's outage. This is fixed and I added the emails that failed.
(shameless plug)
I totally agree, that was awesome to discover random websites.
I think that there's still a place for webrings these days, so I'm creating the webring club. Feel free to subscribe on http://webring.club/ or shoot me an email (address in profile) if you're interested in exchanging ideas!
Posted by
emillon on Monday November 16, 2015 @11:24AM
from the blog.lse.epita.fr dept.
Posted by
emillon on Wednesday August 19, 2015 @07:05PM
from the blog.emillon.org dept.
Posted by
emillon on Wednesday July 01, 2015 @03:53PM
from the gergo.erdi.hu dept.
Yes, it's not very formal and as others said it would need some definitions to make a useful result.
But actually I don't think that this duality is related to types: in a static language, the types of captured variables does not appear in a value's type. And for the object side, the type of instance variables is hidden behind the public interface too.
So it's really more about techniques for creating abstractions than how the values are composed together.
I like to see this as a sort of duality: closures are objects that have a single method (call) and objects are made of functions that can only capture one variable (this).
Posted by
emillon on Wednesday April 08, 2015 @01:02PM
from the blind.guru dept.
Yes, exactly. ADTs are entirely known statically so there's no vtable etc.
At runtime, GADTs are actually represented the same way as plain ADTs (that is, a tagged union). The tighter types make it possible to remove some unused branches in pattern matching, so you may remove a few tests, but memory-wise it should be the same.
> OCaml classes allow row polymorphism, but disallow immutable updates (immutable updates meaning create a new object with everything the same, but one element different.)
There's a functional update construct for objects:
http://caml.inria.fr/pub/docs/manual-ocaml/objectexamples.ht...
It works like { r with field = value }.
> Also, when your programs use abstract data types you lose the benefits of pattern matching.
In some cases you can also use "private ADTs". Modules seeing such a type can use pattern matching on them but can not apply the constructors.