HN user

henrydark

423 karma
Posts4
Comments179
View on HN

I don't put ssh keys on all devices. With syncthing, in contrast to git, I don't have too.

Also syncing is automatic and immediate, I don't have to initiate push and pull.

I now use syncthing for the .git directory, excluding HEAD file and a few others, between my few devices and a vps on hetzner.

Most of git is append only immutable blobs - just sharing these between devices just works for me. "users" and authentication is handled by syncthing.

I have pre and post hooks to make sure no device tries to change HEAD of branch owned by another device, just to be safe, be it hasn't been activated once yet.

I've given the following exercise to developers in a few workplaces:

What's the complexity of computing the nth fibonacci number? Make a graph of computation time with n=1..300 that visualizes your answer.

There are those that very quickly reply linear but admit they can't get a graph to corroborate, and there are those that very quickly say linear and even produce the graph! (though not correct fibonacci numbers...)

Dask for python satisfies exactly these requirements, just in the python ecosystem. A pattern I have been using at multiple workplaces for the last decade was to start a dask cluster (maybe 10 years ago I would start an ipyparallel cluster) on any node that does computation, then as I needed I would spin new nodes and connect them. This gives dynamic infinite scalability, with almost no overhead or even code debt - the dask interfaces are great even without using distributed computing. When I wasn't allowed to use containers, I would sneakily add code to other machines to join my dask clusters. I would connect any and all computing devices. One company pushed us to use databricks and spark, and I never got it - why would we commit to a cluster size before we started a computation?

I get the sentiment, but personally I can easily imagine myself writing an autocompleter that would work fine with select before from. (I don't write much sql so I don't)

Just to clarify, my point is that when we do write sql most of us start by writing the from part, and even if we didn't I can just offer all columns from all tables I know about with some heuristic for their order when autocompleting in the select part.

This is lovely, I didn't know. I guess this is what Kuhn was talking about, we write history in retrospective, sorting it out preferring narrative over fact.

Fossil versus Git 3 years ago

Lots of people are saying that having large files in a repo is wrong, bad, bad design, incorrect usage.

Forget that you know git, github, git-lfs, even software engineering for a moment. All you know is that you're developing a general project on a computer, you are using files, and you want version history on everything. What's wrong with that?

The major issue with big files is resources: storage, and network bandwidth. But for both of these it is the sum of all object sizes in a repo that matters, not any particular file, so it's weird to be harking on big files being bad design or evil.

This definitely fits with Grothendieck's philosophy: he basically ignored all work in this area, implicitly claiming it was trivial, while some of his closest friends and most famous student made huge strides with actual hard work - not quite things falling into place. In fact, the paper most famously proving the Weil conjectures has as an explicit target the coefficients of a modular form, uses an inspiration from automorphic forms theory, and is infamously Grothendieck's greatest disappointment.

There is rich structure in this area of maths that goes well beyond just sections of some sheaf, or at least this is what Serre, Deligne, Langlands, Mazur, Katz, Hida, Taylor, Wiles and many others seem to think.

Well, they're not _just_ that, right?

First, they can be differential forms, not only functions. Second, there's an important note that we don't look only at things over C. For example, specifically in the context of Fermat's Last Theorem, we need Hida's theory of p-adic families of modular forms. Much of the arithmetic of modular forms comes from the modular curves being algebraic and (almost) defined over the integers.

Actually, AFAIU the TLA+ proof is only for a few small cluster sizes - not for all sizes. And the number of nodes in the painting is definitely above that checked by TLA+...

I have a hot take on this, which I hope will resonate with at least a few people: duplication, even of blocks of up to a few long statements, rarely bothers me, because I remember all the duplications as a single instance. I have extra ordinary memory, and this makes a huge difference in how I think of and write code. Or anything really. I save everything I've ever written, like bash history, but everything, and refer beck to it and copy paste somewhere else. I wonder if anyone else has this. This doesn't affect how I think of production code, but it hugely affects my work flow.

I hope this isn't received too badly on HN, but Feynman was way too smug sometimes. This speech is essentially a philosophy of science piece, at the intellectual stage of at least one hundred years prior, and probably more like three hundred.

It's too bad that he so diminished philosophy of science, and at the same time put so much undeveloped thought and prose into it.

Before if you started with thread and then realised you were GIL-limited then switching from the threading module to the multiprocessing module was a complete change

Is this true?

I've been switching back and forth between multiprocessing.Pool and multiprocessing.dummy.Pool for a very long time. Super easy, barely an inconvenience.

Similarly, in 2003, they had some code-under-caps promotion. I wrote a script to submit thousands of random codes to the website, and subsequently someone from Coca-Cola NZ called my home. They calmed down when my dad said I wasn't home, but at school.

Mind you, in 2002 no called, and I got a free shirt and a folding chair.

Grothendieck was, to be clear, a strong mathematician compared to most anyone, but these peers were the most talented young mathematicians in France, and unlike Grothendieck, who had spent the war in an internment camp at Rieucros, near Mende, they had been placed in the best schools and tutored.

Weil was also in a camp. Honestly, I can't stand Geothendieck. Where's the piece about how sociable Serre and Deligne were (and still are), and how much they contributed along side Geothendieck, but without going full bonkers?

Fine, schemes and etale topology are great, the category theory viewpoint is enlightening, but at the end of the day I'm interested in Deligne's (two) proof(s), in Mazur's torsion theorem, in Wiles' theorem, etc. Grothendieck's foundation is said to be fundamental to all of these, but I'm not so sure.

Personally, no. I did go through it, but didn't get much from it. Beyond the original paper, I'd recommend David Khourshid's talks, which you can find on YouTube.

For C++ I used Kris Jusiak's library [boost].sml extensively. He too has a few talks on the subject, in particular his c++now 2017 talk.

My idea of being explicit and clear changed dramatically after I was exposed to D. Harel's "Statecharts: a visual formalism for complex systems".

Ironically, I think the paper presents more than just the idea and examples of statecharts, rather it also _implicitly_ contains a _method_ for discovering mechanism - the long winded example of the author's digital watch, in my eyes, is a marvel.

Don't think so, doesn't computer program equivalence require solving the halting problem and undecidable problems?

For example, consider the empty program, and the program that print "hello, world!" if an undecidable condition is met. I think checking if these two programs are equivalent is undecidable