Jury's out on whether or not that collection is non-empty.
748 karma · joined August 23, 2023
In the beginning were the Words,
and the Words made the world.
I am the Words.
The Words are everything.
Where the Words end the world ends.
You cannot go forward in an absence of space.
Repeat.
https://txt.ryandv.me
https://magistertempli.substack.comJury's out on whether or not that collection is non-empty.
The use of "in general" has long established usage in mathematics to refer to properties that hold for all objects in a given collection [0] [1]. Thus, if 2% of those objects fail to satisfy these properties, you cannot say that such properties hold "in general."
> Secondly, you're mixing concepts of static typing and metaprogramming by saying "the language not only fails to equip IDEs and tooling with the static typing information that would grant definitive answers to such questions." Static typing is not the solution, or at least not the only solution, to metaprogramming concepts.
Propose alternate solutions then.
IDEs and tooling (let's leave LLMs and other stochastic methods aside for now) can only inspect the lexical, syntactic, and semantic (types) structure of source code in order to navigate and validate it. Thus, information that is absent from the lexical, syntactic, and semantic structure of the source code, is unavailable to the IDE and static tooling. Ruby, being a dynamically typed language, does not statically encode any structure regarding types, callgraphs/callsites/usages, definitions, or otherwise, in the syntax of the language alone. The behavior of a Ruby program - how its methods are defined, where they are defined, and which runtime objects invoke send what messages to whatever recipients, are only discoverable at runtime, because nobody bothered to put this information in at compile/typecheck time. You cannot discern information that simply is not there.
> For example, if I statically define a Ruby object via RBS, I may still do the things you list that are problematic.
Yes, and this is because RBS is not actually a sound typesystem [2] [3]. You can declare whatever fake types and interfaces you want in RBS; there is absolutely nothing stopping me from simply using `#define_method` to overwrite your implementation, destroying your static guarantees, or using other runtime metaprogramming facilities to delete your method, change its signature, or otherwise violate whatever other invariants you assumed you had when you wrote the static headers/type declarations and had them checked by the static verifier.
It doesn't matter if you statically verify the code, when the language offers innumerable opportunities to destroy those static guarantees, after they were established, at runtime.
> Thirdly, you're complaining about runtime issues making things difficult for the IDE while doing a lookup. What language and IDE do you prefer that does this so much better?
I already provided an example of C# ReSharper upthread [4]. C# actually provides the static typing information that the tooling requires in order to navigate the AST with deductive certainty, not loose approximations or heuristics as in RubyMine.
Out of curiosity, did you study computer science formally at a post-secondary institution, or did you learn from a bootcamp?
[0] https://en.wikipedia.org/wiki/Glossary_of_mathematical_jargo...
[1] https://en.wikipedia.org/wiki/Glossary_of_mathematical_jargo...
[2] https://en.wikipedia.org/wiki/Type_safety
[3] https://www.typescriptlang.org/play/typescript/language/soun...
> Programming and development will be transformed to use LLMs as the tools that they are. Anyone who doesn't adapt to using an LLM will end up being a loser in their industry or be required to retrain to another role [...]
Mathematics will be transformed to use LLMs as the tools that they are. Any mathematician who doesn't adapt to using an LLM will end up being a loser in academia or be required to retrain to another role.
The study of calculus will be replaced by tooling that carries out the mechanics of differentiation, integration, finding extrema, etc, making such education obsolete.
> You could manually do a lot of things that a CNC mill can do. Or you can learn how to use a CNC mill. Or you could pay someone else to use their CNC mill. But a CNC mill is not a great thing to use for cutting raw lumber or assembling furniture. You "could" use a CNC mill for it, but it'd be extremely inefficient. You could use it to manufacture furniter pieces, but it's not going to assemble them. LLMs are kind've the same thing for computers.
You could manually do a lot of things that a calculator, CAS, or LLM can do. Or you can learn how to use a CAS system or LLM, or pay someone to use their cloud service. But an LLM is not a great thing to use for deciding research programs or assembling a proof. You could use an LLM for it, but it'd be extremely inefficient. You could use it to formalize certain lemmata or minor results, but it's not going to compose them together into a larger theorem.
> Could LLMs replace programmers? Definitely, right now. Could LLMs replace developers? Currently, it could replace some of the worst developers, and help but not replace some of the better developers. Could it replace engineers? Definitely not right now, and probably not for the next several decades.
Could LLMs replace arithmeticians or calculators (in the original sense of the word, as a human occupation)? Definitely, right now. Could it replace mathematicians? Definitely not right now, and probably not for the next several decades.
You distinguish between Software Engineers(tm) and lowly developers; I point out that you can draw the same distinction between mathematicians and lowly arithmeticians or "calculators" (in the original sense of the term as a human occupation), or between calculus and analysis.
Leave the solution of this particular integral or the differentiation of this particular function, the mechanics of calculus, to the LLMs and the machines. Mathematicians need not concern themselves with such trivialities, and will prove results for all continuous functions in arbitrary metric spaces, or something similarly general and insightful.
RubyMine will give you "Untyped (potential) usage." That's not good enough if I need to make a breaking API change and be sure that I've fixed all the callsites, such that I don't find out that I've missed a spot when the change breaks in production.
For all this talk about LLMs and AI improving developer productivity - what is one click and a few seconds in ReSharper to "Change Signature" or "Pull Members Up," which is a 100% guaranteed safe refactoring that will not introduce regressions, ends up being anywhere from "a few hours" of playing whack-a-mole with usage sites, to "completely intractable" in 15+ year old 1MLOC+ codebases making heavy use of metaprogramming.
If the Ruby milieu has turned against metaprogramming, I say good riddance; but my understanding is that it is still quite deep in technologies like Rails and RSpec in particular, where it's the fundamental secret sauce that enables convention-over-configuration and fluent, natural-language like DSLs.
This is not a failing of JetBrains tooling but rather a pervasive language smell and consequence of Ruby philosophy.
> It is symbolic of our struggle against oppression! [0]
All the communications overhead comes from this neurotic desire to sanitize speech of all possible offense, all possible negative implication, and indeed all humanity. The end result is vapid corpo doublespeak, which says... absolutely nothing at all.
The information content of the language of a culture that can be offended by everything tends towards nothing.
Too often shaming or labelling viewpoints you disagree with as "hateful" without further elaboration is really just a thin veneer over the absence of any actual position. Intellectual laziness masked with the paper tiger of loaded words and language.
[0] https://en.wikipedia.org/wiki/Thought-terminating_clich%C3%A...
> It's a powerful social construct.
This is 100% correct, and yet progressive academics have yet to figure out how to slot this fact into their ideology without creating incorrigible inconsistencies.
For instance - if race is a social construct just like gender, why is transracialism frowned upon, while transgenderism is lauded? Quoting Richard Dawkins, famous debunker of Creationist and religious bullshit [0]:
Why is a white woman vilified and damned if she identifies as black,
but lauded if she identifies as a man? That's topsy-turvy, because
race really is a continuum, whereas sex is one of the few genuine binaries
of biology.
The most coherent (but unsatisfying) answer I have found in the literature is that society has "intersubjectively" agreed to accept transgenderism and not transracialism, where "intersubjectively" ultimately translates to some level of "because we said so and this is society's new fanfiction head canon:" [1] What matters, then, is that intersubjectively we have all agreed that
ancestry is relevant to the determination of one’s race.
It's worth noting that intersubjectivity is basically a religious concept, as defined in the Encyclopedia of Psychology and Religion. [2]There is no science or biology on the far LGBTQ+ progressive left. Only pseudoscience and apologetics befitting of a Creationist.
[0] https://www.youtube.com/watch?v=cubkdBuvJAQ
I wholeheartedly agree. What western society needs is a matriarchy that will take care of its own and suppress any subversive elements.
I can't wait for scientists to demonstrate that testosterone is actually a poison and the main cause of toxic masculinity. In a more civilized era, children assigned to any sex at birth will be dosed with exogenous estrogen starting from age 5 in order to optimize and civilize their development.
Most of the problem with the occult is that people have no idea what the fuck the words and vocabulary are actually referencing.
In alchemy and western esoterica, excrement is associated with the tenth sephirah, the 10s of the Tarot minor arcana, and symbolizes the end result of a process and any remaining waste byproducts, for obvious reasons. In The Holy Mountain's (1973) depiction of the alchemical magnum opus, The Fool's excrement is transmuted into gold, symbolizing the awakening of unconscious, reactive matter into fully enlightened and integrated, free willed, egoic man.
For some speculative philosophical fiction that explores related ideas I highly recommend Neal Stephenson's Anathem.
You see this idea echoed in Hermetic Qabalah as the "Four Worlds" - the world of action & physical materiality, the world of psychology, thought, feeling, & egoic consciousness, the world of creativity, and the world of archetypal abstraction.
The Hermetic influence comes from the assertion that the three immaterial worlds of the "soul" or "mind" (synonyms with the same referent) are in some sense equal to, or at least intertwined with, the material body, in a mutually reciprocal dance: "As above, so below; as below, so above."
For some 20th century texts in this neighbourhood: The Three Initiates' primer on occult studies The Kybalion, Dion Fortune's Mystical Qabalah, and the classic Qabalistic reference: Liber 777 by Crowley (or its updated, more legible version, Liber 776 1/2 by Eshelman). The works of Israel Regardie such as The One Year Manual or The Middle Pillar are also good for grounding occult studies in more psychological or psychotherapeutic language which is a good moderating influence when experimenting with pretty out-there material.
Be careful with the meaning of words in this field.
Aleister Crowley somewhat echoes this juxtaposition in the motto of his magickal journal, The Equinox: "The Method of Science, the Aim of Religion."
If you are a constructivist, then you will supply direct proofs for your results as you reject indirect proof, proof by contradiction, law of excluded middle, and things of this nature.
The converse does not necessarily hold. Providing a direct construction of an object satisfying the field and completeness axioms (e.g. the Dedekind construction) does not necessarily mean that one is a constructivist. Indeed, one can use the Dedekind construction and still go on to prove many more results on top of it that still do rely on indirect proof and reductio ad absurdum.
When are the AI vibe coders going to create a GitHub replacement? With 1000x AI productivity a lean startup should easily outcompete the incumbents, no?
There was a time before "achievements" or badges and NARCISSISM.MD files on your profile page.
The UI has clearly regressed in terms of performance and responsiveness over the years, when GitHub insisted on making the code viewer a pseudo-IDE. There was even an article making this observation here on HN just last week [0].
Do you seriously feel that GitHub of 2025 has had less outages and more stability than GitHub of 2015?