185 karma · joined April 2, 2011
Technologies: Much of my recent experience is in Rust, but I've worked in several languages and have broad systems experience. So also Python, C++, program synthesis (including Z3), and more on the resume, Erlang, and so on.
I'm Krzysztof. I'm indefinitely pausing/dropping out of a PhD in program synthesis with my Master's, having realized I want to work on something more applied and that the structure of a PhD may not be for me. I'm overall looking for interesting work that's generally backend-focused. While much of my recent work has been on high-performance code generation, I'm actively open to expending out into roles like reliability engineering, infrastructure, and so on.
Resume: https://kdrewniak.com/resume.pdf
Email: krzysdrewniak@gmail.com
IF you're curious, the relevant code is at https://github.com/krzysz00/rust-kernel/blob/master/kernel/m... . The functions that start with "rust_" are the allocator interface
You can't dodge all your rounding problems by changing base. There are binary-coded decimal (BCD) systems that store numbers as strings of decimal digits. You can generally find these in calculators (ever notice that a TI-84 overflows after 9.(9)e99) or some financial software. However, you'll still have problems like the 0.1 * 0.2 issue in binary floating-point. For example (assuming shorter-than-usual numbers):
2/3 = 0.66... ~ 0.66667
2/3 + 2/3 ~ 0.66667 + 0.66667 = 1.33334
However, 4/3 = 1.33333... ~ 1.33333, which isn't the same result.
Basically, you can't get away from this problem, you can only push it around to cases you care less about.
(You probably can't find an API for binary-coded decimal in $LANGUAGE unless $LANGUAGE is often used for tasks where you really really don't want any float-related gotchas since most everyone else doesn't care too much).
If that doesn't work, many lawyers give free consultations (AFAIK), and there's probably someone willing to take the case in exchange for X% of the settlement.
do
command1
command2
...
and have the failures propagate automatically.If you want to stop your code from being sucked into a black hole, a more "restrictive" license like the GPL would be your best bet. I would recommend the GPL because it's well-known and a lot of people have some idea of what the terms are, as opposed to something like the Apache license, which people might have to look up.
"Notes:
Altering the input radix can be useful when reading data files in special formats. "
nil
=> NIL
(eql '() nil)
=> T
(setf *read-base* 36)
nil
=> 30477
(eql '() nil)
ERROR: 19101 is not a function name; try using a symbol instead
(|EQL| '() nil)
=> NIL
For you non-lispers, the empty list '() is equal to the "false" value, nil. Also, the pipes are special syntax to allow for symbols which normally not parse as symbols. (The uppercase is for historical reasons too).The moral of this story: "See that control variable over there, the one that does weird things to parsing? Don't touch it unless you know what you're doing."