1,667 karma · joined October 3, 2017
On the other hand, we all work alone in between commits (in a broad sense of the term), so having a second tier of a version control, a personal tier, may be a gamechanger.
I ended up using tuples instead of lists for cosmetic purposes :-) My Fakelisp then looks like this:
from fakelisp import *
# And now you can start mixing Python and LISP
X = (BEGIN
(SET (F) (LAMBDA (X)
(IF (EQ (X) (1))
(1)
(MUL (X) (F (SUB (X) (1)))))))
(LIST (F (4)) (42)))
# Back to Python any time
print "x: ", str(X)I got used to real-time version tracking when I was working on a book. The publisher insisted that the working files are kept in the Box folder (like a DropBox, or any other cloud-shmoud synchronized storage). This was... convenient and practical. This way of working is much better than the Git way if you work alone and produce dozens or hundreds of meaningful changes a day.
But at some point you have to publish. You have to make sure your state is correct to some level of certainty, and share it with other people. So you still need some kind of 'commit' thingie.
I think, Grace gets this both ways right. Personally, I just keep GitHub repos in a DropBox folder, but if Grace catches on, I might consider hoping in.
It's not even a particularly large system. Only 6 linear equations.
y = Expression.var('y')
e = 1/(x*y+1)
e = e.derivative(x)
md(e.to_latex())
I suppose, the first line should be: x, y = Expression.var('x', 'y')On my machine, I managed to get a ~300KB long solution from SymPy in under a minute, and a comparable solution from Maxima in a few seconds. Symbolica found a ~84K long solution in about a second... in Colab. That's impressive.
// interpolation/extrapolation with no basis functions
var weight2d1 = 2;
const wf2d1 = function(x) {return 1./Math.pow(x, weight2d1);} from fakelisp import *
And turn your Python into a Lisp.This one, for example, https://wordsandbuttons.online/trippy_polynomials_in_arctang... is 51 KB.
And the code is not at all economical. It's 80% copy-paste with little deviations. There is no attempt to save by being clever either, it's all just good old vanilla JS. And no zipping, no space reduction. The code is perfectly readable when opened with the "View page source" button.
The trick is - zero dependency policy. No third party, no internal. All the code you need, you get along with the HTML file. Paradoxically, in the long run, copy-paste is a bloat preventor, not a bloat cause.
Fascinating.
I don't like brainteasers and never propose anything remotely intimidating. After all, interview is a stressful affair as it is there is no need to make it any more so. But I'll never hire a person who can't write a few lines of code on demand either.
If you remember that there is very specific very concrete automation behind every abstraction, you don't stack them up until the pile becomes impossible to either control or understand.
And I'm being nitpicky because the word "abstraction" brings in false connotations. It implies that you can reason about things on different levels as if they were equivalent. But in software, they never are. And I agree with the author in that this pretence of equivalency just doesn't hold and adding more and more abstractions on top of each other is not the way to go if you want to understand how things work and how to make them work predictably and efficiently.
I don't see how my claim diminishes the importance of naming.
You see, there is no such thing as a "good abstraction" or a "bad abstraction". In math, algebraic systems are either isomorphic or not. There is no qualitative quality to a fact. It is only in software, abstraction acquires this immeasurable quality of goodness, or leakyness, or even fashionability.
"Automation in disguise" is not a good term either. But I find it slightly less misleading and such as it brings less false promises in the connotations.
And as soon as this is clear, the attitude follows. Should you know how every aspect of your code is compiled or interpreted? Not really. Should you realize that every automation takes resources, creates accidental knowledge, and introduces its own probability of failure? Yes.
In 2022 the bank was proclaimed an international sponsor of war.