182 karma · joined August 2, 2019
We can have a paradise on earth here, as soon as it stops being "cool" and "normal" to turn this planet into a wasteland.
We can design our transport around a sensible way of life that doesn't involve all the human ants having to shuffle themselves 100km from their dwellings each day, in pursuit of informatic careers of deep personal meaning.
etc.
I was wondering how you feel about the idea of taking advantage of the fact that your frontend can run in any browser, in maybe considering a "remote gui in the browser of your choice on any LAN client" kind of thing.
The processor itself could be headless (not sure how Elementary is implemented, I see you mention node.js, just having an immediate reaction, maybe it already is gui-host-agnostic network-aware in that sense, by default, open a port to the lan, etc)
2) "you couldn't have picked a worse example" HAAAA! You are wrong. wrong wrong. A) Do you even know what a memory leak IS and why/how it occurs? B) Did you understand what I said regarding stack allocation and out-of-scope equals "memory gone" and how that fundamentally differs from heap-based allocation as ALL JS OBJECTS ARE!??? you are wasting my time, friend.
you are straight up copying marketing lines from node.js with no apparent understand of what a single threaded event loop even is! (it is a gui system. almost all windows-style apps since 199whatever have an event loops as ONE of it's threads. Open X-code or Visual Studio and make a generic desktop app, and add a button and make it's click handler call a method of something or other. Check a moderately complex audio visual production application for clues on just how many threads one uses and for what purposes are they separate threads, etc.)
You then mention VERTX AND GOROUTINES RIGHT AFTER EXTOLLING THE VIRTUES OF A SINGLE THREADED EVENT LOOP. GO LOOK UP WHAT THOSE 2 SPECIFIC TECHNOLOGIES USE AND DO, VERSUS A SINGLE THREADED EVENT LOOP.
Do note why single core limits exist for single hardware thread execution worlds and stop saying that interleaving tasks on a single execution core is superior to architecting synchronized activity across all cores, and do note that you are primarily referring to CRUD web-dev while positing very erm controversial positions on programming language use-cases.
Node JS is a terrible high-volume web server as all of the alleged virtues you extol are workarounds from the single threaded execution model of what was never designed to be a server language. I will say it again: HTTP is a stateless protocol involving a request (method call) and response (what it returns) it then goes out of scope and disappears. no memory leaks. no heap memory allocation. no malloc. no new, etc. it's just poof gone. got it? this was done on purpose by smart computer people. If you want to run each request as a separate OS process, don't blame HTTP, but the primitives were designed for efficiency.
please DO look up what heap vs stack allocation is. please DO look up what a register vm vs a stack vm is. please DO not confuse scripting or glue code with machine code, as the machine code of your javascript program is precisely the javascript runtime with it's execution paths being puppeted by your script language. you are literally pushing someone elses buttons and calling it computer programming. no offense, that's why it's a high level language not a low one.
when you resort to reductio ad absurdum suggesting assembler as the tool for all programming, you are not engaging with anything I have said or written here, as tools have purposes, not everything is a hammer/nail
in a way, you are not wrong, as a macro-assembler, or C or C++ or Rust or Zig or Nim etc (non garbage collected compiled language capable of outputting machine code as the final target) is the next level up from asm.
Why do you suppose that Chrome is not written in JS but rather largely in C++?
2) I saw your comment below. You cannot write device drivers in the language of your choice on any of todays popular operating systems, nor on any embedded devices. Device drivers must have low level access to things like memory locations and cpu registers. Such things are not exposed to Javascript and not available. This is not even speaking about performance and garbage collection etc.
Look, Javascript is someones computer program. It can be implemented in very little code: here's an example: https://github.com/cesanta/v7
Languages are not all equal nor do they all function in the same way, and that's not my opinion.
Javascript syntax itself is one thing, and you can certainly feel free to Javascriptify some C++ libraries and make it all look a certain way for specific tasks, while managing things behind the scenes, up to a point... but there is no getting around the fact that SOMEONE and some languages are needed to implement low level systems functionality.
the power of Cython or the Python C FFI is that it allows you to script/glue modular native code.
You then state "C++14 may have been ratified 7 years ago but it's not the target code your build chain spits out"
no, a C++ COMPILER spits out assembler code that then gets assembled and linked into an executable.
The C++ or C code corresponds directly to a given set of assembler instructions which correspond directly to CPU instructions.
You claim that Python programming of microcontrollers is mainstream, but this is not true nor possible. Python SCRIPTING of code modules (that cannot be written in Python) is certainly one way to assemble a system from pre-built legos.
If you refer to knowing what I'm talking about as gatekeeping and egoism, might I suggest that you insist less forcefully in the correctness of incorrect things you state? we could be done with this spat in short order if YOU would refrain from speaking falsehoods. lies.untrue things.
I look forward to your lisp c compiler. make sure that it's 100% lisp from the bottom up, or I'll consider you're having ceded my point. Consider that the lisp you author in has a garbage collection system that lisp cannot have written originally, nor has any semantics for the underlying memory structures of, but hey, I guess if one is committed to pretending that all languages are equal for all tasks, who am I to question ones self-identification with a given language.
1) TS to WEBASM (once JS is out of the picture, might be awhile, lol...)
2) TS as an LLVM IR frontend (compiled TS on the server)
which is basically predicated upon industry familiarity as it's selling point, so yeah, I could see where it's also just a JS industry side-effect. A wart remover, lol
Your browser has an embedded scripting engine. Embedded, meaning, the source code for your browser includes the scripting language engine, and JS can run on that and script various permitted things via the browser API.
ES6 may have been ratified six years ago, but it's not the target code your front-end build chain spits out, is it... browsers don't uniformly support it yet. fun facts.
Look, I've been programming JS since it was invented. I'm not impressed by "classes" that don't exist, arrow functions, async/await, futures, promises, fibers, and assorted hacks that don't mirror the actual CODE (what computers execute) a JS engine actually is based upon. I don't need these tools, why should I use something that I need to transpile when I can code directly for browsers as they are in 2021, including legacy browsers? I don't find ES6 "easier" in any way..
Regarding dynamic languages on microcontrollers: Dynamic languages cannot directly control memory allocation and manipulation, typically are heap based and have no concept of a stack frame, and are basically just a computer program written whose corresponding code instructions (machine code) and execution path is scripted by your high-level language. Read a JS engines source code, study embedded C, and get back to me as to how suitable you find it for timing deterministic embedded programming. LOL
Types are directly related to memory size allocations.
Study the recent crop of LLVM languages, including some very interesting ones like LuaJIT, which should be right up your alley, and note the role Garbage Collection (check the Boehm implementation, for example) plays in many of the object-oriented languages, as well as Go.
Look at the actual assembler instructions you require a computer to perform as a result of your high level specification.
I am NOT speaking gibberish.
I agree that dynamic languages are considered easier to program in.
When speaking of programming languages, they are not all on the same level. One cannot say "oh assembler is fine and all but i prefer lua", as it's like comparing apples and atoms.
there's a reason that you can implement a lisp in c, but that the contrary is not viable nor makes any sense. (although metaprogramming c with lisp makes a lot of sense :D)
Python has an interesting C FFI interface, among other approaches, that can at least allow CPU and memory-bound tasks to be accomplished inside of a native code module. You see a lot of domain specific work in Python due to these approaches, cython, etc..
Crystal lang is what I would urge all Ruby devs to look at. (an LLVM-based compiled language that has HTTP in it's standard library, for one thing...I'd pit it against Go, for example.)
As I see large front-end teams frequently pushing JS from a typescript base lately, I'm not sure that even the JS community supports "everything JS" anymore. At the point one does backend Node.js work with typescript or other more rigidly typed systems, I have to wonder if targeting V8 is really the desired option any more, and if the programmer would not be better off switching to a high-performance and feature-complete typed backend language system. (the single-threaded JS execution model being a needless constraint at this point, for example. It's great as an event loop)
It's ES3 API is missing a few things, like Object.keys, etc. I still happily code for browsers in ES5 with a few polyfill functions.
JS works fine for it's core competency: manipulating DOM elements and local data representations.
It's not JS's fault that the browser is the way it is and that HTTP is the way it is and that using a remote directory "browsing" protocol via a specialized file browser that renders hypertext isn't a 2-way bound GUI framework...
I can't speak to the specifics of West Virginia, which I will admit seems like a "conservative" (I dispute their right to this word.) hotbed.
Yes, the answer is to "primary" such center-right Democrats.
The root of THIS particular problem, IMO, as outlined in the article we are discussing here: Private finance of political campaigns. no limits on campaign spending. the richest one often wins.
Both John McCain (prior to his presidential run with our esteemed Alaskan Russia expert) and Howard Dean (who is currently, ironically, a major Democrat fundraiser) brought up the subject of addressing "campaign finance reform"
THAT is the idea that needs to get past Congress, IMO... it's truly one of the few bipartisan deals left, IMO...
1) a two state solution, in which, somehow, Gaza and the West-Bank must be free to pass goods and humans with zero Israeli involvement (how? a tunnel?)
2) a one-state solution (a greater Israel) with a Jewish minority
Because I see cynicism in the actions of Likud (and others)_that have ramped up a lot since the assassination of Itzhak Rabin in 1995 by a right wing settler.
I see cynicism in allowing right wing marches through the Arab quarter of Jerusalem.
I see cynicism in settlements built upon annexed land.
I see cynicism in deliberate provocative actions designed to goad Palestinians into predictable action.
Hamas was democratically elected in Gaza, like it or not. (I don't, I see them as essentially right wing nationalists. I see them maintaining power even more the hard Israel strikes Gaza. It's the unfortunate result of squashing 2 million people into a giant prison camp where the passage of products and people requires the approval of an outside entity.)
I don't recall anyone working with the Palestinian Authority to offer any "carrot" to complement the "stick" (incentivizing support for PA vs punishing Hamas)
I see hard line nationalists in Israel with no actual path forward. Do they really think they can treat 4 million people (both territories combined) as inconsequential forever? Is genocide and "death to Arabs" an actual game plan for some extremists?
The settler thing is blatantly copying the old American "how the west was won" plot line, ship in new immigrants and send them to the frontier to defend/expand it.
and yes, I've spent significant time in Israel and I'm not trying to push some unrealistic story here, I'm trying to say that you don't even realize how right wing your bathwater has become...
BUT... the topic was "Saudi Arabia cuts a youths head off for being rebellious"... and I am disgusted at how "The West" speaks of democracy and values and rails on China, but gives Saudi Arabia a break and prefers to sell them weapons. Egypt and support for Sisi (and Mubarak) is also disgusting...
Do you know who was promising in Egypt? Anwar Sadat. Look what happened to him...
So what if it was hard to read with 20 blinking GIFs and an autoplaying music player, it was YOURS.
The worst things about Facecrook are not it's monopoly, ok that's the worst, but I rather dislike that blue boring nav bar, 5000 friend limits (their graph DB can only handle that many or what's the bottleneck? cheap bustards!) and the generally lame mainstream design of the whole building. Like, who approved "pokes"? Even Friendster was hipper than Facehooked.
I'm going to go with a unikernal wrapping a process before this stuff makes it's way through my intestines, color me skeptical of the notion that slippy couplings in between multiple impedance mismatches will be excusable much longer in a world that increasingly cares about power consumption (and battery life) as well as carbon footprints...
I'm saying that we cannot presume the insecurity of a general purpose browser in a custom application that just happens to take advantage of open ports and an existing distribution network (upgrading/crossgrading connection or not...)
How uncommon is it to open a Zoom link from a browser source into the Zoom app, and countless other examples... not presuming any particular tech stack, which would imply it's own particular vulnerabilities or advantages...
Just curious...I think the "cram it all into a megabrowser from a megacorp and make it run" approach is rather 2021, is all, not necessarily the way of the still as yet undetermined future.
IIRC, right on the heels of Meteor we got Apollo from the same folks...
The thing is, I'm puzzled, given the insane unnecessary complexity all this ES2030 and "build toolchains" (who knew javascript needed to be compiled, are we making binary bitstreams? is this an embedded microcontroller? is this an FPGA?) and other esoteric "let's replicate all of comp-sci in the browser" frontend tech, why on earth do such smart folks need the backend as a service? surely such folks who can deal with webpack build scripts can write a little php or ruby or java or something...? What is with this desire to completely neutralize and gut the backend stack? why on earth invert what a webserver is? Request=> Response (which might possibly be a rendered webpage) do folks actually think any of this is necessary and/or good?
Look, I'm all for web API's, web audio, webrtc, etc... I just don't see where a database in the browser is anything but 'cruisin for a bruisin'...
it's not like databases get their own dedicated servers or anything..
or do you mean something like a mobile app using pouchdb? "offline first and syncing to a single real database in the cloud as soon as one rejoins the network"
because a browser-based database can only ever be a compromise, such that a compelling reason could force it, but that's something akin to "DB per user" aka the Couch/Pouch ecosystem.
"backend as a service" = "can you just, like, do that magic CRUD stuff or whatever you do"
I see a commentator below putting the onus of justifying said humanity, ne humane discourse, upon the backs of those who object to such obviously wanton cruelty. Au contraire, mon frere.
The fact that human beings are the subject of this article appears lost in the mix.
Crimes against humanity should not pose as rationalist technocratism.
Solve the "xyx problem" when xyz is a large swath of humanity resigned to grist for a cruel mill. At least pretend to care about your fellow humans.
1 megawatt can smelt a lot of metal that can build bridges and electric vehicle parts, for example.
Whereas energy production is finite. Whereas BTC and it's ilk steal from the mouths of babes. Whereas BTC and it's ilk currently cause real externalities, in the real physical communal world we share.
Currently, POW "currencies" burn real coal, divert energy from production applications like metal smelting, monopolize cheap renewables on-site (like Niagara falls) due to the way the markets reward BTC, which, in my opinion, is ridiculous. 60k for a slice of Ponzi pie?
Cognitive dissonance due to vested interests.
DO YOU OWN POW CRYPTO-"CURRENCIES"? - put that in your full disclaimer, please. It colors your output.
AND
get-rid-of single-use plastics, half of food waste etc.
There is no singular silver bullet that will tackle our environmental problems including the climate emergency.
I realize that there is a lot of cognitive dissonance on this particular topic and I'll flat-out state that this is a conflict of interest.
I have issues with 1) "God told me to tell you" (any human claiming to represent God to their fellow humans. They surely would be devoid of ulterior motives, right?)
2) This collection of hitherto uncompiled writings (including a wholesale incorporation of Judaism) that were uncontestedly written by humans, some of which we know the names of, has now become a singular "book" and it's the world of God, shut up or else, etc.
I smell humans, not divinity.
Oh, and YES you nailed it on the last point. Witness the smug way some Evangelicals dismissively tell a Catholic "but I am CHRISTIAN"...