on the question of too many programing libraries

in the past 5 years, there seems to be a exponential growth of programing language libraries.

this can especially be seen in JavaScript land.

this is different from say 1990s, where, there is usually widely accepted “the best” lib for X.

today, there are so many, that usually a programer never heard of.

so, the question to me is, what to do about it?

i'm the type that tend to know it all, alway keeping a eye on all things. But that has been impossible now, or even, impractical and meaningless.

i want to think about this, as to have some kinda conclusion or closure on the situation.

if i do nothing, then, libs will just grow without my awareness. This been the case for many years already. It can be likened to not knowning all latest movies, or all latest comic books published, or Japan comics books published in Japan, or say TV shows published in China, or not keeping up with gaming community, new games, etc. There are, thousands, millions, of them, things, you don't know. When you were a teen, you might know all the best new video games, or hot movies, or comics books, but not now, because you haven't been following it, no longer interested, or no time.

so, what's the deal with programing language libraries? well, today, not just lib grows exponentially, but also languages, and now programing paradigms.

〔➤see Proliferation of Computing Languages

for example, few years ago, node.js popularized event based programing. Now, reactive programing seems to be hot. There are language and libraries doing it. And, the idea of Persistent data structure seems also getting popular. First popularized by clojure, now Facebook immutable lib for JavaScript.

in the end, i don't think there's much one can do, or should do. Do you know all the movies published in India? In programing, even in the 1990s, not everyone knows about all fields of programing, such as operating systems, database, game programing, networking, scientific programing, etc.

but if you are a philosopher, a observer, then, you might still try to follow, keep in the know and analyze trends and have opinions about where are we going. In some sense, the task now is harder, and more exciting, then compared to 1990s.

actually, the phenomenon of exponential growth, is happening not just in programing libs, but every day things too. Everyday things, trends, inventions, practices, behaviors, i think they are all growing. (for example, think of cell phone, payment methods, dating practice) In this regard, am thinking, humanity has entered a era, sometimes depicted in dystopia scifi, where you have massive diverse groups and things each one odd to another.

i think, the speed and number of new things springing up, is faster than the speed they can be digested or merged with some universal status quo. So, you end up with lots regional phenomenon.

ok. So far so good. But, how does this compare to the era before? say, before the internet, or before industrialization?

before the internet, communication tech isn't as strong, so, first of all, new things may be happening around the world, just that you don't know about them. (the internet made us known things we never know before, such as sexual practices, and all sorts of others things, e.g. we can see and discuss on reddit now.) before the internet, even old things we don't know, such as different cultures. For example, to know what Chinese do, you have to be a academic, or go to library to dig book and look at a handful of pictures, or have lived in china. But now, you can know what chinese do daily, or watch their daily lives if you want to. (for example, twitter, facebook.)

ok, but do new things happen as much in say 1990s as now? I think in general no. Today, the tech is vibrant that new things happen far more often.

now thinking about before industrialization, i think the above is confirmed. Without technology, things don't change much.


sigil for my φvariable ξnames

fret about whether i should continue using funky sigil for my variable names. As in:

xd.drawCircle = function (φcontainer, φcenter, φr, φstyle) {
    var ξcir = document.createElementNS("http://www.w3.org/2000/svg", "circle");
    ξcir.setAttribute("cx", φcenter[0]);
    ξcir.setAttribute("cy", φcenter[1]);
    ξcir.setAttribute("r", φr);

    if (φstyle !== undefined) { ( ξcir.setAttribute("style", φstyle)); };

    if ( φcontainer === undefined ) {
        return ξcir;
    } else {
        return φcontainer.appendChild (ξcir);

the problem, is people. Other people.

you see, it's like the many english spelling reform. It is sound and good, except, the masses, idiots, will not have it, and is doom'd to failure.

the reason i want to do it is here: Sigil for Function Parameter Names and Programing Style: Variable Naming: English Words Considered Harmful.

but i thought about it more due to the my dilemma of continuing the practice, in JavaScript or any lang other than emacs lisp. I took a walk, talking to myself, for 30 min. Here's some more insights.

the essential good of it, is that it embeds semantic info into syntax. That is, you can tell if a variable is a function parameter, or local variable, or not global, just by its name.

This is in general called sigil. (most popularized by perl, followed by ruby.)

there are other examples of widely accepted practice of embedding semantic info in syntax. For example, in Java and python, class names starts with capital letters. This is a strong convention, everyone follows. It is important, because, classes, variable, methods, have very different semantics. Being able to tell by a glance saves you time or error.

also read, if you are inclined:

but i think am going to stop this geek char sigil practice. My emacs lisp code base are full of it, it's hopeless. For lisp, i probably should push on my way, as lisp is weird already. But for my JavaScript code, which there isn't much, am thinking of stop this φsigil ξthing.

the problem, is that whenever it is exposed and seen by other people, it's a problem. You'll need to do explanations, and you'll win yourself a weirdo badge. And, other consequences. For example, the jslint won't accept names that starts with Unicode char.

unless, i keep my code to myself only. Imagine, i, am the greatest coder, couldn't care less what other coder do or say. I just churning out my own code that rules the world. yeah. I think am too old to wishful-thinking that.


Functional Notation vs Operator, Ultimate Solution

suddenly, am thinking of the ultimate answer to the question of superiority of functional notation vs operator notation once for all

this is because, when i read, John Baez's post here

Zamolodchikov Tetrahedron Equation By John Baez. @ http://blogs.ams.org/visualinsight/2016/03/15/zamolodchikov-tetrahedron-equation/〕 (also here, more chatty at: https://plus.google.com/117663015413546257905/posts/QCrdfbbMYhZ )

the article title is daunting, and it immediately talks about 4D space and monoidal category and morphism.

but, actually just ignore those jargons. look at the image of braids. It says:

In other words, we can slide a crossing of two strands under a third strand. In topology this is called the third Reidemeister move, one of three basic ways of changing a picture of a knot without changing the topology of the knot.

now that's the beauty of math. Because, all those equations and symbols, are used only, and necessarily, to capture this simple concepts in a precise and efficient way. In the case here, is braids and movements.

but i digress.

what i personally got a omg moment at this point, is that, notice how he said in the Google Plus post:

My blog article explains it, with pictures. But in simple terms, the idea is this. When you think of the commutative law

xy = yx

as a process rather than an equation,

There! “consider communicative law as a process!

Now, that got me thinking. Because, i have thought about this myself. See:

the Nature of Associative Property of Algebra

in which, i realized the nature of associative law, and in general, the kinda nature of context these laws arise. So, i was thinking now, if thinking of it as a process would give me some more enlightenment.

but immediately, the associative law (a⊕b)⊕c == a⊕(b⊕c) don't have a analogous way as a process to turn it into a braid. You just get 3 staight lines.

i need to think about this some other time. Now I need to do something else.

wait, but back to the title. Why is it some ultimate solution of functional notation vs operator?

you need to read this first: What's Function, What's Operator?

because, notation, and syntax, is my obsession. And, basically, i am suddently prompted at this point to think about whether perhaps there's a way so that one of the notation can be eliminated without picking up disadvantages.

my immediate thought is that, perhaps functional notation can be dropped. Certainly not the other way around, because pure functional notation is too cumbersome (lisp is good example. you can't write math, in lisp). So, perhaps, somehow, operator notation is supreme… well but one immediate problem is that in general operators can only be for binary function. That is, 2 args, on the left and right sides. But, actually we could have match-fix notation. (see match-fix explained here Concepts & Confusions of {Prefix, Infix, Postfix, Fully Nested} Notations) But the issue with match fix is that, then we have to have a way to still use function names. That is, we can't device thousands type of brackets. So, in order to still have names, then have XML or lisp-like things… but oh, we back. Ok. Stopping here now.


Gnu Emacs New Leader: John Wiegley


Wiegley as maintainer was discussed in the gnu emacs dev mailing list for the past couple of months, hundreds of messages.

John Wiegley is the author of eshell, among others, and he lives in emacs. 〔➤ Emacs: M-x eshell

Here's a couple of video interviews of John.

Emacs: Chatting with John Wiegley about the cool things he does with Emacs By Sacha Chua. @ http://sachachua.com/blog/2012/06/emacs-chatting-with-john-wiegley-about-the-cool-things-he-does-with-emacs/
Haskell Talks: John Wiegley with FP Complete

John is a extreme emacs enthusiast, and his primary platform is Mac with strong desire to make emacs better on Mac too out of the box, and he is a very capable programer, and also a sociable person. I think John will bring a lot good things to emacs. Thanks John.


JavaScript wuwu quiz

// quiz. figure out what does this code do
// 2015-10-29

function foo() {
    var eleName = document.getElementById("x79177");
        (function(le) {
            return function(f) {
                return f(f);
            } (function(f) {
                return le(
                    function(x) { return (f(f))(x); }
        }) (function (givenGetDepth) {
            return function (element) {
                return (element === null) ? 0 : givenGetDepth(element.parentNode) + 1;
        }) (document.getElementById(eleName))



lisp macros, Racket define syntax rule and pattern matching

racket named lisp defmacro as define-syntax-rule. A step forward. Even better is “define-form-rule”, as lisp macro can't change syntax.


note that how it calls macros as pattern matching and or syntax transformation.

in my 20+ of computing career, the Common Lisp fanatics, are the most persistent idiotic bunch.

racket, now i've read most of its doc, clearly tried to fix many of Common lisp's bad persistent notions, and scheme too.

scheme lisp lot is a unfortunate sorry lot. Cult result is obsession with tail recursion, like haskell's monad. Going nowhere, forever.

the most idiotic feature in comp lang, is call-with-current-continuation of scheme fame. This, rivets scheme in lala-land forever.



海賊王 One Piece Action Figures

This is spectacular. Colorful characters, interesting stories. Think of one Japan anime/magna (that's Japanese cartoon/comics/animation). Of all, this one, called One Piece, is the most successful, sold more, in history.

One Piece figures 007
海賊王 One Piece Action Figures

One Piece, is the title of the comics. It is a story of pirates. And, there's this guy, who spent hundred thousand dollars, and collected some thousands of action figures.

in USA, action figures are crude, typically for small kids. Not so in Japan. They are made of the highest quality, material, and detail, with whatever latest technology in plastics, molding, painting. Some are even custom made. Typically, a good one costs $80, up to $200 a piece.

Here's a gallery of the guy's collection. (only showing ones related to the One Piece series) 海賊王 One Piece (Japanese Comics) Action Figures

btw, the ones in this picture, you guessed, are the “bad guys”. The bad guys, are always more fun to look at.


language popularity ranking sites

there's many language popularity ranking sites. The most well-known, is tiobe.


I think TIOBE index is stupid. Their approach is not good. Mostly because, they tried to be general, as if they know what “popularity” means.

another one, http://langpop.com/, is worse. And badly maintained.

the following is better, because they are specific on what they measure.

note: language popularity is a lose concept. Is it more talked about? is it more used? more used by companies or by loud amature programers? Is it more existing code? How do you count code? What about quality code, but are not public?

Google Puts All 9 Million Source Code Files in One Repo

The Motivation for a Monolithic Codebase Why Google Stores Billions of Lines

Published on Sep 14, 2015 This talk will outline the scale of Google’s codebase, describe Google’s custom-built monolithic source repository, and discuss the reasons behind choosing this model of source control management. It will include background on the systems and workflows used at Google that make managing and working productively with a large repository feasible, in addition to a discussion of the advantages and trade-offs of this approach.

Presenter: Rachel Potvin

Google Puts All 9 Million Source Code Files in One Repo. Its own custom source management system called piper.

for context, linux kernel has 15M lines. Google repo has 2G lines. Google human makes 15M lines of code change per week.

Rachel Potvin explains why. But, i'm rather not convinced. Are you?


The world, is waiting for me to change. Actually, not me, you

found a new nice wireless number pad, with mechanical keys (Cherry Mx Black). See: List of Programable Keypads

this is good for those of you with a compact keyboard.

you can turn the numpad number keys into function keys. How to set Number Keypad as Function Keys {Windows, Linux, Mac}

or, within emacs. Emacs: Using Number Pad Keys

i know, lots programers don't like “leaving hand off homerow”. Actually, most don't know about how to use function keys. But trust me. It's good. Everything is just one key. Y'know, when you really type a lot, a lot a lot, the very idea, of the picture in your head of your hand touching keyboard while holding Control or Alt down, is PAINFUL. You shudder at that thought. You won't know this until one day it happened to you. Sure, you are young & healthy, now, i know. I Xah Lee, was, for almost all my life, the pretty, cocky, above you, competitive altheletic-level healthy. Till, one day, you are burdened or obsessed with documentation and write out everything.

ok, this is getting long and i feel like rant. I'll tell you, i read enough emacs blogs, emacs key use, for over 15 years now. Actually, about typing and about keyboard since late 1987. (there is one thing in my life i'm obsessed about, and that seems to be EFFICIENCY & design) But, read far more about them every day since about 2007 when i started on ErgoEmacs Keybinding: a Ergonomics Based Keyboard Shortcut System

I've red, all there is to say, all the blogs, the popular ones or obscure ones, about emacs keybinding. Red, all reviews of keyboards…. Now, here's my “trolling” comes in: They are all fscking garbage.

But, actually, in the past 5 years, a lot programers, got the sense now. Look at the ergodox, the keyboardio, the truely ergo, 〔➤ Best Keyboard for Emacs〕 huge number of them really well designed keyboard coming out, with wide following, sold out, and quite a few on kickstarter yet to come out.

now, in the keyboard community, you can see there are tens of thousands enthusiasts following these modern keyboards. Yet, there seems to be a separation of groups. On the one hand, you still have, huge number of folks, who, never looked at, or heard of, these new ones, and still cling to the idea of traditional PC keyboard, singing all sorts of praises about, say, Happy Hacking Keyboard or the IBM Model M keyboard.

then, i hear you say, but and but and blab…. Y'know, some things, concepts, habits, you grow up with, such as religion, programing language, or, keyboard, will never change. As Steve Jobs said, you just wait for those to die out. As i get older, and clearly, i am getting older, new life experiences comes in, telling me that i belong to the category of “old”, and i started to doubt myself, perhaps lots of my other thoughts about programing are rather too old to be good. (it is very hard to get over the “generation gap”, by the way. Because, the new generation, they start from scratch. They are simply a blank slate, don't know what's there even if they tried. While the older, need to actively take in changes and mix with what we already know. (not saying one is better in general, but just illustrating the generation gap thing as a inevitable social phenomenon.))

i've actually written, few hundreds articles about keyboard, keybinding. Suppose you are a emacs die-hard, you are a serious hacker type, you live on reddit or hacker news et al and have diligently absorbed all knowledge vicinity. Then, you might have doubts about what i say. Actually, everything you possibly ever thought of about keyboard, i've written detailed analysis and experimented painfully before.

well, i haven't ranted for a while. The world, is waiting for me to change. Actually, not me, you.

when i got Truly Ergonomic Keyboard Review 3 years ago, the first thing i really missed, is my 20 or so custom function keys.