Systematic testing and non-bulshit TTD

Testing interacts with your dopamine system, so you will a small yay! every time all tests passed. This is crucial, because motivation tend to decays exponentially and to experience inevitable “crashes” after spikes. TTD is sort of a direct consequence of type-driven (or “types first”) approach to prototyping. Ideally, each type is associated (in an one-to-one correspondence) with each distinct concept in the problem domain, at an appropriate level of abstraction. ...

June 9, 2025 · <lngnmn2@yahoo.com>

The Process

DATE: <2025-04-22 Tue> A lot in common with cooking, which is (arguably) the simplest and the most ancient form of engineering. (TODO: explain with examples). No one can learn to cook by watching a “food porn” on social networks. It is a “learn-by-doing (and making mistakes)” process. Small, complete (Always Be Compiled) iterations, which conceptually corresponds to “recursive calls” of a spiral-shaped recursive process, which ends up at (converges to) a local optimum. ...

April 22, 2025 · &lt;lngnmn2@yahoo.com&gt;

The C Legacy

There is a small but turbulent shitstorm on Lobste.rs about Go: https://lobste.rs/s/cclrkn/were_multiple_return_values_go_s_biggest and the key quote, perhaps, is this: I’m always amazed how Ken Thompson, Rob Pike and Robert Griesemer, with a combined 100+ years experience with PLT and about a dozen languages, are treated as total idiots by people whose greatest hits are building a web app once. There is how I think about it. Back at the late 90s, when suddenly, out of fucking nowhere we have got Internet, FreeBSD and Linux and that Apache httpd, everything seemed to be just as an endless WOW!!! Something new and amazing almost every day. ...

March 17, 2025 · lngnmn2@yahoo.com

Python is already won

It is that simple. The momentum, which is partially due to the unprecedented AI bubble, is such that it actually became “too big to fail” and too important (for more than one industries) to not be “done right”. 3.14 is getting a proper tail-calls in the interpreter, 3.13 got an initial support for native compilation. It will only continue to get polished by literally millions. The last fundamentally right addition was the support for the proper sum-types (a tagged union) as dataclasses and the the related pattern-matching syntax. ...

March 6, 2025 · &lt;lngnmn2@yahoo.com&gt;

How To Program 3

Here is the Dan Grossman’s Caml tutorial (refresher) for Ocaml. The cool thing about it is that it shows how little we all need. https://homes.cs.washington.edu/~djg/teachingMaterials/gpl/lectures/camlTutorial.pdf He is actually a very cool guy, who teaches the principles (and precise semantics) of programming using the classic languages – SML and Ocaml, which were carefully designed by talented math majors to build theorem provers and proof assistants. These languages (and Erlang) ought to be “all you need”, but the world is what it is (Pootin, Trump and what not) so we have Java or C++ or, if unlucky – PHP or Javascript. ...

February 23, 2025 · &lt;lngnmn2@yahoo.com&gt;

The best codebases

There is a meaningful HN thread once in a while, due to being populated by the actual ex-googlers and facebookers. https://news.ycombinator.com/item?id=40818809 First of all, FB approach is “The Worse Is Better” all over again. If you write a quick crap to be replaced by something else very soon, the meme of “Move Fast and Break Things” (which is a polite name for “Just Pile Up more and more Crap, who cares LOL”) will “work” in the short run Otherwise it is guaranteed to accumulate all sorts of “technical debt” (a polite wording for “now costly or impossible to fix early quick idiotic and incompetent decisions”) – just look at Shittereum and ask shitalik – the champion of quick incompetent decisions. ...

June 29, 2024 · &lt;lngnmn2@yahoo.com&gt;

Structural pattens

What is a pattern? A properly captured by the Mind (of an external observer) into a named abstraction “frequently emerging arrangement”. There are obvious weather patterns, seasonal patterns, social patterns, and so on. The most “concrete” emergent patterns are the “structural patterns” – rivers, trees, proteins, biological species. The most fundamental structural patterns has been captured as abstractions: linear sequences trees (acyclic directed graphs) tables (lookup tables) More abstractions has been derived ...

June 25, 2024 · &lt;lngnmn2@yahoo.com&gt;

A puke from too many bullshit YouTube videos.

Recently I have poisoned myself by watching some talking heads on YouTube. The topic was “something something structural system design”. There is a “correspondence” (not a true isomorphism, but still) between the structural patterns in molecular and cell biology and patterns in a pure functional code – an augmented Lambda Calculus. Both “systems” are heavily constrained by the execution environment (molecular structures of cell biology is the code and the data, the Universe (in a particular locality) is the runtime). ...

June 19, 2024 · &lt;lngnmn2@yahoo.com&gt;

Patterns everywhere

Just like Max Cohen stated in “Pi”, there are patterns everywhere. Not, however, because of mathematics (which he called “the language of the Universe”), but, and this is crucial – prior to it. Having the maths “after” Reality (What Is), not “prior” to it, like “esoterics” (or rather plain idiots) put it is the only proper philosophy (of the ancient East), which puts everything into their right places. What mathematics is really? It is a “set” (a bunch) of observed (by the Mind), captured and properly generalized abstract notions – artifical abstractions of the mind (of an external observer), along with derived and/or discovered properties of these abstractions, including the notion of a Set itself, which is (a proper generalization of) how the Mind (of an observer) categorizes “stuff” it observes. ...

June 19, 2024 · &lt;lngnmn2@yahoo.com&gt;

Vedanta

It is time to publish some more results. Type-level reasoning A function application - corresponds to /Modus Ponens/ A specialization, an instance of it. > ($) :: (a -> b) -> a -> b > ($) f x = f x Reversed order of agreements, still the same /Modus Ponens/ > (|>) :: a -> (a -> b) -> b > (|>) x f = f x "Multi-argument" is just /currying/ -- ~* ->*->*-> *~ Same, but with an explicit /abstraction barrier/ (and /lifting/) > (>>=) :: m a -> (a -> m b) -> m b > (>>=) ma f = undefined -- has to be defined for each particular type (an instance) Notice that this is essentially a type-signature of ~fmap~, > fmap :: f a ->(a->b) -> f b with a reversed order of arguments and a specialized function. which corresponds to a /Kleisli arrow/. Notice also that ~($)~ and ~fmap~ differs only in having an explicit /container/. This is not an arbitrary coincidence. All three are essentially the same, despite funny syntax. A basic step of logical deduction. Behind an abstraction barrier. Composition - of functions > (.) :: (b -> c) -> (a -> b) -> a -> c > (.) f g = \x -> f (g x) - of "actions" (actual functions have to use ~return :: a -> m a~) > (<=<) :: Monad m => (b -> m c) -> (a -> m b) -> a -> m c > (<=<) f g = undefined -- has to be defined for each particular type or ~(>>=)~ for chaining ("flat" nesting or pipelining ) , exactly the same as ~(|>)~ Notice that the composition is /nesting/. This is the /only/ way to implement it. The end of knowledge.

May 27, 2024 · &lt;lngnmn2@yahoo.com&gt;