Wondering how well Deno ( deno.land/ ), a "secure" Node, would work as a game platform for home users.

Is this the new 8-bit BASIC?

h/t @teleclimber for bringing Deno to my atttention

Follow

@natecull @teleclimber gamewise i don’t see anything here you couldn’t do in a browser. but with deno you’d have to a do a bunch of extra setup. deno is very much about correcting the mistakes ryan dhal thinks he made with node, and thus it’s squarely in node’s original usecase: small realtime server. though i see it’s got an api that shows it could do electron’s job.

@natecull @teleclimber it seems there’s an enormous gap in communication and education, meaning most developers haven’t the slightest clue just how much amazing stuff is possible with just a plain browser without needing to add a framework on top.

@zensaiyuki @teleclimber

It might be because "just plain browser" got a very bad name back in the IE vs Firefox wars, and so everyone ran for the shelter of frameworks as protection against all the unimplemented and half-/buggily-implemented browser stuff? And now that "framework first" mentality has stuck?

@natecull @teleclimber yeah basically. all the problems the frameworks were built to solve aren’t actually a problem anymore, but now we already have all this stuff built in the frameworks.

@natecull @teleclimber but if you went looking for a simple primer, for beginners, on how to do a hello world in plain javascript, they basically don’t exist.

@natecull @teleclimber for either “beginners” audience, beginners to programming and beginners to javascript in specific. everything out there teaches to a framework.

@natecull @teleclimber and so, apparently, people out there assume plain browsers are eye wateringly impenetrable. like assembler. something you never want to look at.

@zensaiyuki @teleclimber

I admit that when I looked at Node, about two years ago, I found enough weird and dangerous things in its vanilla Javascript that I ran screaming for at least Ramda. (Lodash probably does what Ramda does, now).

I can't imagine using out-of-the-box Javascript even in 2020 without at *least* a utility library. So much really vitally important stuff Just. Isn't. There. in the core language. And what is there, often has really nasty side effects.

@zensaiyuki @teleclimber

actually what actually happened was I started making up my OWN utility library to make Javascript safe and sane. Then found that Ramda / Lodash etc had already done that.

@zensaiyuki @teleclimber

just utterly insane things like, there's no builtin functions (or at least not sensibly named, easy to find ones) to test whether an object is an array, is Null or not, fallbacks for Null handling, vanilla 'sort' is DESTRUCTIVE, yeeeeagh. Things that, if you're doing database-query type stuff, you just don't want anywhere near your code.

@natecull @teleclimber that stuff has all been fixed. just for some reason nobody gets the memos for these things.

@zensaiyuki @teleclimber

It *hasn't* been fixed. Or rather, the dangerous, unsafe stuff is still there right alongside the correct stuff.

So, much better to never trust the builtins, just indirect everything through a different namespace. Otherwise for every single method call you have to go 'is this one of the good ones? or the evil ones?' and you'll occasionally get it wrong.

@zensaiyuki @teleclimber

I would *love* it if there was an 'ultra strict mode' that just REMOVED all the old and evil and wrong methods. There's probably a library to do that, but... well, just using a library seems the easiest way.

@natecull @teleclimber it’s called ESLint. it’s not built in or anything. but again, yes this is the problem. there’s simple solutions to all these things but if you are a beginner and you go looking, you will be frustrated and go half mad.

@zensaiyuki @teleclimber

Basically you need an "index of forbidden methods".

Eg: never ever ever use charAt() always use charCodeAt(). Because charAt() doesn't do proper Unicode. but it's still there. Etc.

@natecull @teleclimber in point of fact, despite my advocacy, I reccomend processing / p5.js to beginners who just want to dink around with a modern basic/logo equivalent.

@zensaiyuki @teleclimber

Oh yeah! I heartily recommend p5.js. I discovered it a few weeks back, and love it.

@zensaiyuki @teleclimber

Is there something similar for just 'I want to print a bunch of text'?

I presume it would be just a very tiny library, maybe five lines.... but is there one? An ultra minimal 'bootstrap the equivalent of BASIC text mode in the browser'?

@zensaiyuki @teleclimber

Like you immediately get crippled by 'because of security, there's no equivalent for 'Insert tape, read/write data file'.... which is the sort of thing that started me off on my whole rant earlier about browsers locking down the filesystem.

@zensaiyuki @teleclimber

The browser has become our VDU.... but in 2020, the browser still can't give us the equivalent of a CP/M machine with safe, local disk storage. In fact all that's being taken away from us.

@zensaiyuki @teleclimber

I can (and am looking at right now) run an entire emulated BBC Model B Computer running a BASIC adventure game in the browser... except there's no way of saving the game because, shrug, browsers aren't allowed to write to the local filesystem. Even just to one designated file selected manually by an out-of-browser 'file open' dialog box.

Show more

@natecull @teleclimber i just wrote a utility in plain js html that reads in a csv file, does some processing on it, and outputs a different csv file. grabbing file data from a “file” form input is a little complicated, but it does exist. the only thing that doesn’t is letting websites driveby read the contents of your hard drive without permission- and why would you want that?

@natecull @teleclimber the old bad stuff literally can’t be removed. ever. backwards compatibility cannot be broken. if it bothers you, you should use a linter. what else can be done?

@zensaiyuki @teleclimber

And yet, there's a "use strict" which removes some, but not all of the broken stuff.

What else can be done is to use a library.

And so that's what people do.

@natecull @teleclimber using a library doesn’t prevent evil stuff from happening. it just hides it so you don’t have to think about it. but it’s still there, and can still bite you.

@natecull @teleclimber that’s been the case for a good reason: once you put something into javascript you can’t take it out. so the caretakers have been really hesitant, and tend to only add stuff that library’s can’t possibly do.

Sign in to participate in the conversation
Mastodon

Server run by the main developers of the project 🐘 It is not focused on any particular niche interest - everyone is welcome as long as you follow our code of conduct!