
KindScript – A kinder JavaScript experience - bogidon
https://github.com/Microsoft/kindscript
======
coltonv
Looks like this wasn't ready to be revealed, like someone accidently made the
repo public.

The website is currently not public so I'm not going to try anything yet but
as a co-foudner at an CS Ed-tech startup I'm going to keep my ears perked. MS
has put out some really nice JS products recently.

~~~
fahimulhaq
Out of curiousity, what are you doing in CS Ed space?

~~~
coltonv
i co-founded Mimir (YC S15). We're deploying tools like autograding and
plagiarism detection in college classrooms to bring Universities into the 21st
century.

------
SeanDav
Rather than simplify Javascript and protect beginners from themselves, why not
start with a language that is both powerful and protective and yet easy to
learn, like Pascal - learn the basics there in a more structured language?

Lazarus is a free, cross platform IDE for Pascal and an excellent place to
start: [http://www.lazarus-ide.org/](http://www.lazarus-ide.org/)

~~~
cwyers
There's two things to getting people into programming - giving them tools they
can learn with and making them care about it. You do the second by letting
them accomplish things they actually want to do. Until you can script webpages
or make Minecraft mods in Pascal, it's not very good at the second half of the
equation.

~~~
acbart
Precisely correct! Adding authenticity and relevance to the first major
learning experience is crucial for appealing to a wide array of beginners,
especially people who don't necessarily see programming as a first-order joy.

------
chipperyman573
When I tried to go to the main site, I got a cert_name_invalid error, and
going to the site the cert identified as required auth.

------
qz_
Docs on point
[https://github.com/Microsoft/kindscript/blob/master/docs/ind...](https://github.com/Microsoft/kindscript/blob/master/docs/index.md)

------
pedalpete
I can't find any docs anywhere. When I go to the kinderscript site I get ssl
error then a login block. Nothing in the wiki on github either.

Anybody have more luck.

~~~
Analemma_
It kinda looks like it's being "set up" right now in preparation for a more
formal announcement. Maybe we just need to wait? It would be a little weird to
make a big announcement right this moment, since it's currently Saturday night
in Redmond.

------
airplane
There's a few pictures in the various Github issues, looks like a Scratch like
programming environment, unless that was just the developers own software.

[https://scratch.mit.edu/](https://scratch.mit.edu/)

------
amelius
I want a Javascript that does this right:

    
    
        var m = {};
        m["__alpha__"] = 10;
        m["__bravo__"] = 20;
        m["__proto__"] = 30;
        for(var k in m) console.log(k);
    

Result (in current JS):

    
    
        __alpha__
        __bravo__
    

EDIT: To be clear, I want a Javascript that is consistent. Imho, the fact that
__proto__ is a property is a hack. Also, I suspect that a lot of software
written in Javascript is susceptible to injection bugs/attacks by using the
string "__proto__" as input in various places.

~~~
ankjevel
Why would you like to add anything to the __proto__ property? One way would be
to write, like this:

    
    
      {
        const m = {}
    
        m.__alpha__ = 10
        m.__bravo__ = 20
        m.__defineGetter__('__proto__', () => 30)
        
        Reflect.ownKeys(m).forEach(key => console.log(key))
      }
    

EDIT: I can't format ...

~~~
amelius
To make my point clear, here is a question. What is wrong with the following
function that counts the number of _unique_ strings in a list of strings?

    
    
        function count_unique_strings(l)
        {
            var m = {};
    
            l.forEach(function(s)
            {
                m[s] = true;
            });
    
            var count = 0;
            for(var k in m) ++count;
    
            return count;
        }
    

To see why this function is incorrect, run it with the following input:

    
    
        console.log(count_unique_strings(["alpha", "bravo", "bravo", "charlie"]));
        console.log(count_unique_strings(["alpha", "bravo", "bravo", "__proto__"]));

~~~
dchest
_What is wrong with the following function_

The implementation is wrong: you're using Object when you want to use Map.
Object is not suitable for this, and seems like you know it, and it's in
language specs.

~~~
amelius
Yes, I stated beforehand that the implementation is wrong. My point is that it
is not obvious from the implementation (and certainly not for beginners).

