2,853 karma · joined January 10, 2011
https://github.com/emillon/
http://blog.emillon.org/
@etiennemillon
me @ <username> . orghttps://github.com/emillon/cookiecutter-jsoo
(cookiecutter is a general scaffolding tool)
It's way less polished than pydub but here it is if anyone is interested:
https://github.com/emillon/tmc
Example:
https://github.com/emillon/tmc/blob/master/Music/TMC/Example...
At first it was a pretext to play with free monads, a way of building EDSLs. But right now I'm not sure it's not just a complication. Though, having an intermediate representation before executing the SoX commands makes it possible to write an optimizer (for example, collapsing two audio shifts).
That's quite a shift from set theory, where the core idea is that objects can be described with what's inside of them (and building the whole idea of relation as a set of tuples).
Remote: Possible
Willing to relocate: Not immediately but we can discuss it.
Technologies: OCaml, Haskell, Python, C
Resume: http://www-apr.lip6.fr/~millon/cv-emillon.pdf https://github.com/emillon
Email: me AT emillon DOT org
My background is in security & formal methods but I'm also open to working on cool products outside of these fields, especially if it involves open source work.
Structural recursion (folds) is to general recursion (let rec) as the "for" loop is to the "while" loop.
I believe that this kind of single-purpose OS can be even easily created using an unikernel such as mirage, but that removes part of the fun of course.
Progress: if an expression is well typed then either it is a value, or it can be further evaluated (in the sense that "an appropriate evaluation rule exists").
Preservation: if an expression e has type t, and is evaluated to e', then e' has type t.
That's it, really (well, you can do a few extensions to allow errors such as division by zero, or take memory into account).
If your language has both of these properties, they tell you that typed expressions will behave nicely at run time.
http://blog.emillon.org/posts/2014-05-21-making-type-inferen...
At first I expected something of the form O(2^n) too but DEXPTIME actually contains O(2^p(n)) where p is a polynomial.
This would be fantastic and does not change a lot how you run your application, except that you get hardened crypto for free.
That's assuming that ocaml-tls has no "high level" bugs (not memory corruption related) of course, but I'm quite sure that it is way easier to review than existing TLS implementations.
- the Ɵ() and O() notations can be used on mathematical function. For example 5n^2 + 3n = Ɵ(n^2) [^1] or 3n^2 = O(n^3).
- algorithms have different complexities: for best case, for worst case, or average case. It corresponds to as many mathematical functions.
Each of these functions can be given appropriate Ɵ() or O() bounds.
[^1]: really meaning λn.5n^2 + 3n ∈ Ɵ(λn.n^2), it's a relation between functions.
It's (also) a privacy issue as it discloses when one of the recipient has read the email.
https://ftp-master.debian.org/crypto-in-main/ (with pictures of course)