Location: Asia
Remote: only
Willing to relocate: Sweden or Norway only
Technologies: classic FP: SML, Haskell, Scala, Erlang, FSharp
Résumé/CV: https://karma-engineering.com/lab/wiki/TitleIndex
Email: johndoe42377@gmail.com-22 karma · joined March 15, 2020
Location: Asia
Remote: only
Willing to relocate: Sweden or Norway only
Technologies: classic FP: SML, Haskell, Scala, Erlang, FSharp
Résumé/CV: https://karma-engineering.com/lab/wiki/TitleIndex
Email: johndoe42377@gmail.com Location: Asia
Remote: Prefered
Willing to relocate: Sweden or Norway only
Technologies: Haskell, Scala
Résumé/CV: https://karma-engineering.com/lab/wiki/TitleIndex
Email: johndoe42377@gmail.com
Could do async/email text-based consulting for founders or wannabes Haskell programmers.What does this even mean? The whole universe and life itself are possible precisely because there is determinism, which is captured in what we call logic, (and arithmetic).
Sects, fucking sects everywhere.
Working from home is a long sought boost for everyone. Places like Sikkim, or Ladakh, unspoiled parts of Nepal and Sri Lanka are ideal for remote work.
The problem is that there is no demand.
The brain "works" because it's evolved structure matches or reflects reality. It is not about having billions of neurons, but about to have the right structure which matches the environment.
My favourite example is how butterflies evolve pictures of eyes on its wings to scare predators, having literally no idea about existence of other creatures.
It has been evolved because other creatures have eyes, and they are there, of course.
The proper structure of neural networks must be based on such fundamental features, like "most of creatures have eyes" and similar ones.
Brain does not have a flat structure, like a billion x billion matrix. It is more clever and simpler that that.
A language model must be based on the fundamental notion that there are nouns (things), verbs (processes) and adjectives (attributes). It is that simple.
Ok, Scala or Rust got a chance. Partial functions (clauses), currying and patterns complement each other remarkably and it is well-researched and formalized for decades.
Let's talk the most basic algebraic laws. Yes, there is indeed no difference in adding 2 apples to 3 apples, or adding 3 of them to 2. The question is from which pile to start, and the result is the same. (Multiplication, being just repeated addition, is also obvious - there is really no difference which side of a rectangle comes first).
Notice, that there is still a fundamental connection to reality. Adding C to O has exactly the same properties. There is no difference which comes first.
The identity element is more tricky, because nothing of this sort existed in nature. Nature has distinct start and stop sequence, and does structural pattern matching in the literal sense.
So, we would superimpose an element upon reality which lacks it, the same way as it goes with zero. Let's say, that trying to add what's can't be added (by physical properties) produces no change to the original element, and it is equivalent to addition of a zero.
Generalising this noop we will get something similar to identify.
1 for multiplication, is natural , while an identify matrix is an artificial construction.
Okay, this is all common sense. The important thing that there is literally nothing deeper than this shaky generalisation which we call monoid. First, because only addition and multiplication are "true monoid".
Protein production by an enzyme is almost it, but no identity.
There is no identities outside your head. A list is a monoid because of added '() - the empty list, which, again, does not exist anywhere. There is no such thing as an empty DNA sequence, empty molecule, etc.
I could go on, but maybe you already see where it goes. Everything is imaginary and too abstract to have any applicable, meaningful context.
And I have reasons to do so. Like so many others I have traveled that road, from Haskell basics up to the latest writings and courses of that self-propelled category theory expert - Bartosz, for whom I have great respect.
However, at the end of the journey I came to different conclusions, that the whole subfield is nothing but a sect (the definition is a consensus based group of eager supporters) and the whole set of nested abstractions is empty of meaning, except in producing deeper and deeper nested abstractions. I cold provide analogies with Eastern religious sects, which I have studied too, where abstract things are described in minute details, and the merit is in the knowledge of these minute details, but I won't. It will only complicate this discussion.
So I don't see any meaning, and I see socially constructed interested, identical to esoteric teachings, which is even better definition of what Bartosz and others are doing.
Let's say it is Hegel all over again.
Three is literally nothing in the ability to create another abstraction by finding an isomorphism, which is just a pair of functions.
Even further, Lambda calculus shows you that function creation and application are necessary and sufficient for everything, with obvious parallels to biology (enzymes are just proteins).
Visitor pattern is just some wired wrapping to satisfy a rigid type system, which composition of Traits or typeclasses would solve. One just pass a function which knows the structure.
In with type systems, a typeclass is all you need. The mantra is "to be an X (being substituted for an X) is to be able to perform (implement) such and such actions (or have this or that biochemical properties).
It is that general, that deep, it could be even seen in molecular biology.
Category theory, on the other hand, is just a few nested abstract concepts, of which only monoid has some connection to reality, which ends up empty, like most abstract pseudo- philosophical bullshit.
And yes, I have watched and read everything by Bartosz. It is empty.
For some people, which are usually called "introverts" and similar names, remote is a bliss, and for people like Torvalds, it worked well for decades.
The only real problem is for mostly useless management positions, who will have difficulty to justify their necessity without in-person social signalling bullshit.
For really capable people a simple and straightforward text-based workflow is all what is required.
Again, the development of Linux kernel would be the use case.
My bet is that the actual developers of the Pfizer vaccine do not need any bullshit meetings either.
One more time - for some of us not facing idiots in person is a bliss, and we are capable of writing communication at the level way beyond what is required for most jobs or business relations.
And it is not Slack and other synchronous bullshit. Async email and tickets will do.
Seems like these abstractions are not exactly zero-cost?
Besides, every text is being altered at each rewrite (before printing technology) and even no story is told two times exactly the same.
Any decent scholar of ancient texts will tell you that. Indian ancient literature is the canonical case study.
I recently tried to compile haskell-language-server and stack from sources. 157 and 168 (or something) dependencies, full of redundant esoteric bullshit, compat packages, lifted crap, etc. It is even worse than J2EE where it was the same redundant wrapping and indirection, but brain-dead straightforward verbose crap.
To use Haskell correctly, like the classic xmonad and similar projects, requires discipline, knowledge and good taste for just right abstractions, like Go stdlib or Scala3 standard library.
Yes, it doubles development time, which must be spent on understanding anyway, but fast food fp code, full of redundant abstractions, is a worst nightmare to maintain.
What it should be called accurately is "modeling". Mostly oversimplified and plainly wrong (like the Bayesian sect or any kind of predictive modeling - look how all covid models and simulations missed everything).
So, it is data modeling, not data science. And it is important to realize and understand the difference.
His "poker" course (on YouTube) is also golden standard.
Why? The background in math, basic data structures and logic, so one know the range and boundaries of what is possible. Plus careful attention to details, like it is in any art.
An evidence implies an observable phenomenon (whose description is a statement of fact). Merely a chain of reasoning is never an evidence, because it usually based on flawed premises or domain-specific logic.
Now pay me.
Those are creations of exceptional masters.
For smaller projects take a look at nginx, Tokyo cabinet (a DB), redis, and, perhaps, python's requests and Clojure (one man's effort to unify obvious things).
Again, these are masterpieces, not just merely good things.
Correlation, if any, does not imply causation, and the causality principle has nothing to do with statistics.
Observations (counting), however many, will never reveal causality, because they are orthogonal.
Programming languages are cultures. Precisely.
This is why PHP Java or JavaScript are fucking abominations. They have been started with lack of a culture and discipline to begin with.
Joe Armstrong, Odersky, Stroustrup ("a tour" and "principles and practice", both latest editions, are finally good reads), the Go book by Kernighan is a decent one, etc.
Avoid blogs, shitty books by amateurs who are learning while writing (everything by Pact, lol) and other fast food.
Avoid everything related to Java or JavaScript - poorly designed crap, and focus on Scala, Haskell, Erlang, Go and Rust - attempts to fix the fucking mess we are in.
It is that simple.
This is a stalemate. On one hand they cannot call it a Ponzi scheme, which is what it is, because everyone is already in, on the other hand, they want to regulate it to death and tax every single transaction.
So, adoption and other bullshit aside, the internet meme stocks for the poor will be allowed only on coinbase and others "certified" exchanges with direct data feeds right to IRS and other govt agencies. Everything else will be banned. Nice and simple.
It is when, not if. EU will follow.