Guy who learned to code pre-WWW here. Started teaching my daughter React/NextJS at the weekend using a free DnD API as a data source. Had something deployed to Vercel in minutes, and built a small, very basic app, over the next few hours as she learned. To say she was stoked the first time she saw her app running on the web is an understatement, and she loved being able to share a link with her friends so that they could see what was going on. And all for FREE. Trust me, learning to build stuff in this modern world kicks the crap out of what we used to have. People need to quit whining and learn where we came from... You can't appreciate today if you don't understand yesterday.
I read your comment as "pre-World-War-??" at first and I wondered what kind of future did you come back from for there to be so many world wars?! That left me very confused for a few seconds.
@@TomNook. Thanks! It's awesome being able share this kind of thing with the next generation, and see the passion it can stir up. Theo's comment at 17:00 is 🔥🔥🔥.
let's be honest having 6 copies of chromium running locally using 2GB ram each just so you can send text to your friends is stupid, just because it's the path of least resistance to create doesn't make it good
Look I understand electron is nice for being cross platform and working on web BUT you can't say there wouldn't be any desktop apps on Linux without it. Qt is fairly standard as well for cross platform desktop apps. Let's not pretend it doesn't exist.
Theo is right his argument is from business decisions not technical. The apps he mentioned would not exist on Linux. No one is going to use QT to capture the small Linux userbase.
QT is paid afaik. I was trying to learn but the latest version required subscription. Electron is free. Yes, I could've installed an obsolete version of Qt but thats not a good start already
Web components are not a mistake. They're the standardization of encapsulated interactivity and style for the web. It's React without the framework. It's vanilla JavaScript. Sure, there's a ton of work to do on them. But they're the epitome for the argument Theo is making in the video.
Hahaha the startup I worked for got acquired recently and I've found myself under a super smart CTO tasked with rebuilding our respective apps into a single modernized application. Based on the CTO's decades of experience we're using web components for the front end - and so far I'm thrilled to be free of the dictatorship of frameworks. The key is that, according to my CTO and his experience, it's the shadow dom concept that's bad about web components, not web components themselves. It remains to be seen where we'll be in a few months but so far web components and lit-html have been great to use. The not so great thing is how hard it is to find useful info online about them that doesn't also rely on shadow dom...
I'm Sorry Electron isn't responsible for the general existence of "Actual Desktop Apps" on Linux. OpenOffice/LibreOffice, Blender, JetBrains IDEs, Thunderbird, Firefox, Chrome itself, VLC, Steam, File Managers (and i don't use more)
I completely agree. And I have to add that apps that 99% of apps that are built with Electron work just fine as websites. For example MS Teams or Spotify or Discord.
YES! THIS! they use qt or gdk with are open source and cross platform. The issue is windows devs make apps specifically for windows using frameworks specific to windows, and mac do the same with swift. While linux people use qt or gdk and can compile to any platform. Electron is only so popular because if you already have a web app then just bundle it in electron and away you go, the intent normally is not to be cross platform but more so that they don't have to remake the app for a GUI app
Agreed, that was a really disingenuous take in an otherwise good video. All the Web apps like Slack and Discord run just fine in the browser anyway, which in my opinion is better than settling for a "good enough" desktop version for the sake of convenience.
Tools and frameworks aside, I will never forget the amazement I felt when I opened up Notepad in my college library with an HTML book by my side and built a webpage. Mind blown. And those same, fundamental technologies that powered the web then still power it today and constantly improve. It's awesome. I love my job.
11:08 You actually made their point at 0:04. They are simply envisioning a world where we weren't building high-fidelity apps in software that was inherently made to render documents. In other words, they are asking: What would the world look like if "browsers" had better primitives to work with than HTML/CSS/DOM, and something else than a single-threaded language like JS, and could render everything in parallel (by default), on the GPU (by default), like games do? Maybe we wouldn't use Suspense and whatnot to work around problems that shouldn't exist in the first place? They're questioning the status quo (and all the towers of abstraction we've built on top of it, and have to deal with). That's at least a good faith interpretation of their position.
Most apps can be compiled in under 10 seconds, while you're going through some log in process in the background. Imagine that, a sandbox-but-native-app is ready to run whie you're registering. To say that this facebook Zuckerberg nightmare REACT world is so superior is blowing my brain with not dynamite but weapons we should be preventing under nuclear non-proliferation treaties
The argument about Electron is wack. The Web is the reason why desktop apps almost disappeared in the first place, but now it's a hero because it kinda brought them back. In France we have a saying for this: "the pyromaniac fireman". Anyways, Electron and such (Tauri, Wails) are good for Linux, that's true, but if the web had never been that popular, people would have just worked on some other ways of making cross platform apps.
From a user perspective, most users probably don't want to install an app. Laptops with low disk spaces where windows took 100GB for installation and the remaining maybe for people to store their home media and gaming. Having apps in the browser help us to just stay in the web browser to do most of things and it is a lot easier and save people a lot of disk spaces.
Yeah, using slack as an app is annoying. But then the web based one is annoying too, since it uses so much RAM and CPU. I don't know how they built the app, but the app sucks. I like NeoVim and it works much better than VS Code. Yes, VS Code has some advantages as it has a ton of plugins. But it is nice using NeoVim that uses a lot of less RAM.
@@dovh49 I didn't know Neo Vim used less Ram, even tho I have 24Ram my Pc doesn't handle two instances of VsCode too well, do you have any tip on how to migrate?
Jira’s native macOS app has been axed in favour of their website. The app used 200 MB of RAM as opposed to 2 GB of RAM that is used by their monstrous website. AND their website ships LESS features than the app like push notifications which were supported in the app but not on web. And I am not even talking about the absolute disaster which is their mobile website version
"neither of these developers have worked in large teams" JB literally runs a company with teamS under him and Tsoding was a professional web dev writing browser plugins.
Your right but but John blow is an example of why you shouldn't think like john blow, he could have finished his third game, instead he is trying to develop the game and a language for it, hard to imagine a better way to delay features
Many electron apps like discord or spotify need an internet connection to a specific server anyway in order to work. When that is the case AND the app is build using web tech anyway, why bother having a desktop app at all and run 5 versions of chrome in the background at the same time instead of just opening a tab in a browser of our choice? And if that's not the case, can't we at least use the webview that is preinstalled in our OSes? If someone actually want's to build something in JS where they would have other options (every domain other than frontend), at least use tauri instead of electron.
I understand your points but you're at least misinformed about a couple. Game dev haven't converged into Unity and Unreal, most industry leaders (Nintendo, Rockstar, Ubisoft, Bethesda, From Software, and many others) all use in-house solutions. Big commercial engines are only the majority on the indie space, and even on the indie space we have a lot of success with in-house or alternative solutions (Maddie Makes Games, Supergiant Games, the folks that made Dead Cells, and the folks you mentioned in your video). But even still, the problem most folks have with modern web dev isn't so much about the convergence (even because if we wanna be honest, there are so many alternatives to React and expressjs at this point that I'm not sure everyone is comverging to a single solution), it's the complexity and the disregard for the tolls it's taking. Only in web dev we have a counter movement with simplicity and/or performance in mind, there's a reason stuff like rust, go, htmx and even tailwindcss are on the rise. Only in web dev we've been making new frameworks that only restructure the code or change how we think about the apps instead of increasing performance or making us write less code. We kept piling complexity on top of complexity and many devs started to realize it and found that moving away from it didn't made them less productive as people who push these modern tools led us to believe. But yes, this complexity problem isn't unique to web dev, it's just worse there. I predict that the same might happen in game dev as the industry learns from web dev. The rise of zig and odin are a sign of that.
To be fair, the move towards Unreal Engine is actually surprisingly notable in the AAA sphere recently, especially in Japan. It's wild to see both Street Fighter and Tekken running on the same engine. For one to find examples of companies that still go in-house, they often just mention the biggest of the biggest in the industry (Rockstar and Nintendo for instance) that have already long invested in engine R&D. Besides that, it's very common to hear that Bethesda's engine is horribly holding the company back, and it's very doubtful if they can ever invest in a new engine that can compete today. I think if anyone wants to build their own engine nowadays, they'd need to have a very strong case cause your competition in that domain is ridiculously huge to say the least. Even if you're putting in AAA levels of investment, that money is very often better spent elsewhere. TL;DR building your own solutions is a bad choice if you can just take someone else's solution to the same effect.
@@Ali009Ahmed Bethesda's inhouse engine is an antiquated fork of Gamebryo with tacked on elements from elsewhere including some new visual code utilised in Starfield. But even then a lot of the biggest problems isn't the engine it's how it's used considering how much reportedly less buggy FONV (developed by Obsidian using the same dang engine) is compared to FO3, FO4, or Skyrim.
@JoaoVictordaSilvaMadeira My point was not to say that they're not used, it was to say that they're not nearly as adopted as web dev frameworks are, as he claimed in the video. The mess of frameworks and tools and new technologies being hacked together for simplest of projects in web dev is unmatched. Even those that use commercial engines only have to download the engine and that's it, sometimes you put in a couple of plugins but nothing matches the complexity and absurdity of a node_modules folder. Game dev is just not there yet.
@JoaoVictordaSilvaMadeira Yes, I agree with you. What I tried to convey is that people use these tools even when they don't need to. In the middle of my post I mentioned this counter movement currently going on in web dev, where people noticed we're way past the point where the added complexity is helpful. This is only happening in web dev to my knowledge, which means a lot of people resonate with that sentiment that web dev is too bloated that the video is trying to argue against. Theo used game dev as a comparison, which is also bloated but it's not there yet, and they're also not nearly as adopted as he and other people might think, even in the indie space. In his defense, these two folks he mentioned in the video don't make fun of web dev only, they're also vocal against the added bloat in game dev. When you think about it, the vast majority of game projects are people trying to get into game dev and they're using Unity to make a 2D game that uses Box2D even though a simple AABB collision detection would work while being more performant and weighting less in the final game, right? People used to defend Unity when their own games would use less than 10% of Unity's features, so is it really needed? But again, even with all of that, I still think web dev is in a much worst state. The fact that more and more AAA execs are taking a 5% rev cut to use UE5 is probably a sign that maybe the UE5 makes their devs more productive, right? Meanwhile in web dev land, htmx is being adopted in production of big companies. The closest thing we have to that in game dev is the rise of tools like raylib and languages like zig, odin and jai, but they're not nearly as talked about or adopted as the ones in web dev. I still think they're gonna rise and that counter movement will also gain strength in game dev, but it's just really not there yet.
This is exactly how I feel about this whole video as someone with a programming background trying to explore web dev. Sure, the technology we have now is better than jquery in 2009, but every single frontend tool has to use HTML, css, and js along with all the issues that are inherent to them, and the only way to overcome some of those issues is build tools on top to compile/transform down to those, creating real tech debt and generally poorer than average user experiences.
I just have to say it because that was a step too far misleading. Saying that Linux only has "actual" desktop applications because of electron is just not a reality. Did you ever take a look at gtk3 and gtk4, heck it even supports css and that natively and doesn't need a whole browser in the background. And to say it out loud, electron causes more problems on linux for me than any other native application. From the loading times, to random crashes to the why would i even have another 300 MB of memory wasted on another browser which is not up to date and runs random javascript when i could just open a tab in a browser or actually have a good native app with gtk3 and still have a really qmazing result. Yes it's not build once run everywhere, but electron is also not build once run everywhere, especially when interfacing with native api's ... But yeah please do never say "actual" desktop app ever again. Because any gtk app is more "actual" and native than any electron wrapper that ever existed. And also we do have native discord apps in gtk3 ... So they do actually exist ...
I think it all comes down to modern web development requiring a ton more setup (much like Java) than it did 10 years ago, and is much more spread out and complex than it used to be. You have dozens of new frameworks and technologies, seemingly popping out of nowhere, that you are immediately pushed to master. Unless you're active in the right Discords and on Twitter there's no way you can keep up with all of them. If you use the right tools you can have an MVP in production within an hour, with your first code deployed in minutes, but if you don't already know exactly what to use it can take days to figure it out as everyone has their favourites and finding actual good concrete information on which direction to take is impossible. I've been doing web dev for over 15 years, only somewhat recently starting to really dive into React and Vue, and it is really stunning (in both a good and a bad way) how much there is out there and how different the approaches to very simple objectives are.
If defense of J Blow, he is not a web dev, it’s not his job to fix it. In the games space, he made his own programming language, and made his own engine with it due to frustration with current tooling. Say what you want, but that’s standing on what you say
Never heard of anyone expecting him to fix things in webdev. Why would they, considering he isn't one? I like listening to some of his rants, especially on bad UX stuff, totally agree with pretty much all that. But he also has a lot of dumb general takes based on very specific things, or things he doesn't know much about. On these topics, he's pretty much the epitome of "can't see the forest for the trees". Like his general take that open source sucks overall, based on some detail about how pull requests specifically work in git, or whatever it was. Or when he complains that webdevs call things that aren't protobufs, "protobufs". Which I've never come across. Sounds like he saw one person make that mistake, and just concluded it's like a common thing or something. So thinks it's some important rant to bring up on protobufs in general. I guess you gotta fill the time with something though, as a streamer. Fair enough.
@@adlex1212 because that's what brings in the views. If you share stupid/controversial opinions, then you will be more successful than someone who is reasonable and rational.
JBlow's points don't admit to Twitter threads and he's a bit of a curmudgeon. He's not wrong that the web sucks. He has some long form talks about the general idea he's on about, which is that technology does not necessarily advance over time, and you cannot abstract your way to progress. Most of what passes for technology is a series of tradeoffs that people don't understand or are intentionally ignorant of. The web is awful, it's just less awful than the current available alternatives for a variety of complicated reasons and historical tradeoffs, which, if we were able to do it all again, we'd probably have gone down a different path.
We can go on a different path right now. But web devs work for corporations who have different goals and priorities than an average programmer who might just want to write beautiful code.
Web is awesome. The world has never seen it's like as an open, accessible, information and economic platform, ever. Criticizing it's perceived technical shortcomings without proposing any kind of actionable solutions is just throwing sand on the picnic everyone is eating at.
The stupid thing with the status quo of the Web is that we ship source code i.e plain text to the clients (i.e browsers) instead it should just be binaries. An HTTP request could just include the platform it's being sent from and then the server would send the binary for that specific platform. We won't need interpreted languages like JS. Instead of "write-once-run-anywhere" language, we could use "write-once-compile-for-any-platform" language like C/C++ or Rust. As the complication part of the deployment is handled on the server itself the user/client won't noticed any difference. The browser then won't be as bloated as they are now. They would only need to include the security layer so the programs "shipped" don't make any system call by itself and every request for system resources goes through the browser (like they currently do). The browser would use far less memory than they currently do because most of it currently is used by JS engine.
Gonna be harsh here, you are completely wrong! Tsoding wants to figure out how React libs ("react" and "react-dom") work under the hook, hence he should check out the github repository instead of the user documentation (the user manual). You don't check user manual to understand how the fridge cold system works. His critique is valid but he complains to wrong spot, and keeps baiting the React fanboys. I watched the whole stream at the very beginning cuz it's fun to watch how he figure out those libs work without much info he needed, and he constantly scroll up and down without patience. His purposely over-raging and pretentious action (probably due to its live, people tend to act more), indirectly causes the fanboys from both sides are being extremely dishonest, completely neglect the technical details (what are jsx, babel, transpiler, etc., and why we need them) he dealt with at that moment. They were arguing two different things during the whole stream. Sound like I must hate him, nah, he definitely a good engineer. People can have different and even opposite opinions.
@@doc8527 The problem people had was he's calling himself a react expert now... while never having used react. I hate react with a passion I think its a horrendous framework, but even I know that not using react means Im not a react expert XD
I'm pretty optimistic about Tauri. It's goal is to have the ergonomics of Electron with better performance (as well as Security) and smaller bundle size. If the 2.0 release rolls around and they have the planned Android / IOS support than they're going to be usable for every major platform
There's a project, Neutralino, that hooks directly into the OS's native implementation of WebView (in the case of Windows, WebView2) to try to cut out the middleman rather than do what Electron does and simply wrap Chromium Embedded Framework. I'm optimistic about its progress.
@@apollolux Thanks for mentioning Nautralino, it's the first time I'm hearing about it. From a quick glance it looks quite similar to Tauri, just written in C++(instead of Rust) and it seems to be less popular. I'll keep in in my Radar anyway.
@@laszloszabo7536 Ah, it's in Rust, that probably explains the popularity you speak of. I'm glad there are projects that realized the same thing about Electron/CEF's bloat that Neutralino did and try to do something useful about it. :)
I love what Tauri promises to offer. But the biggest obstacle is writing Rust for the "backend" instead of the convenient Node JS that Electron offers. But I would be willing to let my DX take a hit if I get way less bloat and better performance
The product I work on uses a predecessor to Electron CEF which is also a Chromium wrapper. We have specific requirements for the product that required us to have a C++ backend rather then node js. But the ability to use web technologies to develop our front end is great. We are cross platform Mac and Windows and we couldn't survive without the web technologies that CEF(chromium) provide. I am old school C++ but I have no issues with javascript, sure it has it's quirks, but using node I can write fairly complex CLI scripts faster and easier with node (which is only there because of web technology). We have so many more headaches and longer deployment cycles than the we teams because we have installed apps.
Honestly, This is true. Without languages like JS and Python, I would have NEVER been interested in development altogether. Nothing really beats the feeling you get when you build your first site. It is the kickstart that sort of introduces you to everything! No matter how much other stuff that I make, web development has a special place in my heart.
What if I told you that in 2000-2010 pre-everything-went-web we had all the native GUI applications we needed on Linux (and other OSes for that matter) and it all worked way better than modern web? So please don't tell me that without web we wouldn't have native apps because it's patently untrue. Web stole the mindshare from native and all the people that could have learned GTK, Qt and/or help build other native UI toolkits are now rewritting their SPAs over and over in whatever is webdev thing of the day currently, and post videos rationalizing how much better JS is than how things were before.
JavaScript, html and css is simply more easy to pickup. I’m a web dev and my employer asked me to learn c++. Firstly, it’s garbage - I would only learn it for game development on unity Secondly - the qt is paid subscription Why should I learn c++ and buy qt if I can do the same cross platform apps in simpler js html css? Developers are salty that js is being pushed everywhere
@@klirmio21 Firstly you're wrong, and Unity uses pretty strictly C# not C++ for user side work. I used to wish it used C++ it's precisely why I worked with Unreal not Unity. Secondly still wrong, QT is free to use and has been since 2000, though you will be restricted under the LGPL. The commercial license is less restricted but not required. If you're going to lie anyway stick with JS you'd fit right in at Oracle.
Hot take for this community: JS is only used in web Dev because it's the only native dynamic language browsers support. I think this single issue has been the greatest source of developer frustration with web development. UI development is hard on any platform, and I'd argue the web is the easiest one by far, but it's still a fundamentally difficult challenge. This is why I want WASM and Web Components to be pushed further in future web standards. There is no reason why you couldn't use React, Vue, SolidJS, etc. all together via web components if the browsers had a little more functionality in that API. And with WASM, you'd finally allow for innovation in the web UI space that goes beyond JS' limitations. TypeScript isn't a perfect language, but it definitely could be better if it wasn't so intrinsically linked to JS. That's why tools like Static Hermes want to break the TS/JS link for optimisation purposes. Anyway, I do agree with your video, even tho I'm definitely the kind of backend dev that hates JS and UI (I am currently supporting a government AngularJS application and trying to find a way to migrate that to...anything honestly, probably HTMX + WC to avoid this very problem again in the future)
Why do you think JS being dynamic is something that makes it popular? I'd rather use a statically typed native language for web dev, but there's not much point if most of the jobs are JS/TS.
@@TVIDS123 Oh my apologies I don't mean dynamically typed, I mean dynamic as in interactive, as opposed to say HTML or CSS. I will say JS being dynamically typed probably helped adoption, but I too prefer statically typed languages by far. I did my time in Python, I'm good now.
@@zactron1997 I think the phrase you're looking for is "imperative programming language", as in, a language that allows you to program by describing the steps needed to solve the problem (the algorithm). HTML and CSS aren't programming languages, and they're declarative rather than imperative. They describe something and let the browser figure out what is actually supposed to happen.
WASM is the last option I'd use to deliver UI components with accessibility. The two ways would be what JS already does and write to the DOM, with the additional overhead of converting data between WASM and JS. The other is writing your UI using canvas. Good luck making this UI accessible in a convenient way. Flutter tried this and have so far failed to deliver a good experience for assistive tools.
@@dealloc To be fair with OP's point, they said they wanted WASM and WC to be pushed further. So I guess they're also not exactly happy about having to use JS as a glue to make WASM do anything with the DOM
If you gave jblow a ticket to read some csv data he'd probably write his own csv parser. He is the type of engineer and there are many like him that always should be assigned to problems that haven't been solved.
blah blah blah it needs everything the others can do and more, to beat them. Electron is good for linux because as more people write in electron their ability to push out linux decreases. Make your counterargument. don't confuse the non-supreme optimalness of electron with the fact you got an app for Tidal when no one else made it.
@@Äpple-pie-5k electron could have been an integration into the browser. Imagine opening your browser to a web app tab/button. You click one and the browser opens a new window that has all that electron functionality. The browser could have had those os apis and we just install apps like we do now with pwa. The web platform already acts like an os
I refuse to believe that Electron is the reason, apps like discord exist on Linux. Using Electron for Discord was a big mistake anyways, because that app is horribly slow for the low amount of features it has. They should have programmed it with something like Golang and using a library like raylib, which would allow them to just build their program to any platform they like and get some reasonable performance as well. The same mistake was done with VSCode. Had Microsoft chosen to use a proper language for their editor, together lua for extensions, they may even have had an incentive to bring WebAssembly forward. But now, VSCode is just a very slow Code Editor that is not very nice to use once you have a reasonable amount of plugins installed.
Then build a bloody better competitor, and stop talking. I mean, you’re making really bold claims here, go out and prove them. And also, vscode-web exists, too, does that work just as well wirh raylib? Idk
@@Fs3i one does not need to be a genius programmer, to realize a voice-chat app without sound is ridiculous, which to be fair wasn't even really the fault of electron but discord stuck around on an outdated version, with sloppy custom patches.
Investing in native apps for Linux is almost always a bad business decision. Simply not enough potential users. I do not doubt that Discord wouldn't have come to Linux without technology like Electron.
5:50 That's totally false. All of the good software I run on linux is native. I don't use slack and I use discord in the browser because it's an objectively better experience than the desktop app. The software I use the makes me money is native and cross platform and not written in javascript.
The fact that I can still load sites with marquee and framesets on modern browsers, or that someone who hasn't learned any new js, css and html in 20 years can still build a functional website that can still be accessed, to me, is a huge power. The fact that I can still load archived Geocities sites with no issues (unless they use proprietary stuff like Flash) is what makes the web beautiful.
5:50 It's you who are delusional if you think a few proprietary apps with half-broken desktop integration is "actual desktop software on Linux". I won't lie - that's better then nothing, but don't diminish hundreds if not thousands of applications written for Linux with GTK, KDE/QT, and whatever else.
I'm sorry, "nobody writes native apps for linux"? What about libreoffice? Gimp? Darktable? Blender? There's plenty of high quality software running natively on Linux. Also yeah, the browser platform is nice in a vacuum, but to say that it's an objective good for users is huge cope. It's become the interoperability tower of babel. All we do these days is move around some data in a way thats completely opaque to users, nobody knows whats going on. W3C accessibility standards aren't even that all encompassing, and easy to game. It shouldn't take a genius to build a browser implementation from pieces, but it does, and electron/hybrid apps suffer from decades of feature creep and vendor lock in. I'd say in terms of alternatives, no good engineer would be daft enough to propose an alternative to the web platform. Maybe taking the good parts and re arranging them into something more flexible would be a better idea, a less rigid ecosystem that better fits to the form of problems.
@sferavel I'm not saying web applications have objectively worse quality, but its foolish to say that other platforms have no place given the web's ubiquity. Plus, the web is not just the browser platform anyway, it was envisioned as a component of an interoperable hypermedia system, not just a JS sandbox with an http client and a DOM tree. As for survivorship bias, there's plenty more multimedia apps you just don't hear a lot about because the web monoliths ate a lot of competition. Mpd is still around and loonix nerds love having their music library anywhere, ffmpeg is a must in video production. Its silly to think the web embodies any sense of "do easy" just because it's everywhere.
@sferavel Also consider the web itself is born of survivorship bias. There were other hypermedia systems before the internet, http, and afterward. The web won for the reasons Theo mentions, but mostly that it became the most well documented over time (thanks mozilla) However, just because something is everywhere and relatively easy to use doesn't make it an overall good thing, I really believe the web we've grown into has given us tunnel vision to what hypermedia can really do as an application platform
Especially when his idea of a thing "only possible becasue of web" is an irc client that destroyed the open standards and forces everyone to use their electron thing instead of interop with open standards in the same breath as claiming that web is great becasue open standards XD
@sferavel linux desktop has a small user base, but it isn't THAT small. And personally, i am grateful for Electron on linux. But that doesn't mean I'm not critical too, nor does it mean theo was right about everything he said.
@sferavel also, get off your high horse. Linux is an open source project without massive corporate marketing behind it, and without a predatory profit model. Linux is BAD at some things (games. Mainly games), but linux is GREAT at others. Linux is free and accessible. Linux powers android. Linux can be installed on old decrepit hardware. Linux can be used in embedded environments. And it does quite well at office stuff. But it's not perfect. Neither is windows. And not everybody should be using linux. Mac is better for some folks. Windows is better for many folks.
Blow however does say similar things about game dev space, and he IS showing the work - dude is building his own language and his own engine. His side of the community is rather set on both not liking the web, as well as criticizing modern direction of game dev. Whatever his blind spots towards the web are, he is consistent and he puts large amounts of his time and money coming up with alternative solutions in his own space
@@TigreXspalterLP he doesn't want to keep it proprietary. He said on multiple occasions he wants to make it open source once he is happy with its state. Nothing wrong with keeping it closed source while it's in early stages of development. There is also an invite only beta which I think has ~100 people in it by now
The real test will be the games he builds with the language/engine. You can build the most performant & robust game in the world, but if it doesn't enable the creation of a fun game (i.e. solves the "problem"), then it's a waste of time.
@@Vim_Tim indeed, which is why he mentioned that he wants to release his current game and the language close to each other, so that the language comes with the game as proof that it can be successfully used in large complex systems
In 2000 I walked away from the carpentry trade to build websites with just 1 site under my belt. Man, it's been such a fun ride, I'm now managing engineering teams and pulling outdated practices into the present. No university degree needed, I learnt everything I know by building websites. I wouldn't be where I am without the web!
Figma is another modern example of the gmail pattern. Devs and designers immediately aligned on it because of how well it leverages the web platform (instant shareable updates etc). And they did it with WASM! Exciting times
figma is amazing product and I am talking about it from a web dev perspective. especially with new dev mode it made it so easy for developers who are not interested in design to just take what they need from it and continue working on code
Ive been project manager on some small apps for web, and mobile and for some of the apps we made a web version and an Android version using kotlin or flutter. The reason we did this is because we where very convinced that native was a better user experience, and i will say no, no it wasnt for many of the ressons that Theo is mentioning. It also aded no benifit, no better user experience, and only added complexity. Actually, in the end, from a user standpoint, i liked all the web versions better.
5:52: "The only reason there is actual desktop software on Linux is... Electron". You must be trolling, no one is this detached from reality. ... "The market will solve these problems" Sorry... my mistake.
Performance matters and people like Casey Muratori and Johnathan Blow talk about this often (see Casey's talk "Performance Excuses Debunked"). We as web developers often trade our convenience for a slower application stack, eg. js server side with tons of dependencies, large js bundles on client side. There are way more user hours put into a system than developer hours, but we constantly optimize for our "developer experience" vs how our users experience our applications. This is fine when there are no real users and your prototyping and trying to figure out what it is you want to build (even then I use would use low code, no code tools for this as much as possible). Once you know what it is you want maybe it's time to use a more performance focused stack (go, htmx, drogon, vely, alpine, etc) that would give your users a better experience.
fair, i'm not denying that. what i meant is that sure having discord, slack etc as a desktop app in linux is possible because of electron. But, the majority of desktop app in linux is still native.
Same here! I agree that people are to harsh on web dev technologies and tend to not look on the good effects it caused but to say that about linux and electron is just plain wrong!
I'd pick Flutter over Electron any day. But, that's just me :) As a web dev, I'm all for a technology that re-invents browsers. A new client-server protocol actually designed for transferring ephemeral applications/documents without having to keep up with numerous DSL standards like HTML, CSS, JS.
Personally I like it when people try to or actually successfully shit on web development, or any other kind of development and accompanying tools. Mostly because it forces me to communicate a rebuttal. Which in turn requires me to think about whether they're actually correct or not. Leaving me with more insight into what my development process and tools can or cannot do well. Personally, I think that all of the development tools that were written in JavaScript were and still are a massive, massive mistake. By which I mean stuff like Webpack, Parcel, Vite etc. Everything that lives in the browser, and is not aimed at development related processes are a-okay with me. By which I mean, Electron, Stencil, React, Angular, etc. The reason being that, you want your development process to facilitate fast iteration cycles each time you have to noticeably wait is too much. The main benefit people state being: "Yes, but if it's JavaScript every JavaScript developer can contribute." is not enough, most people don't contribute to these types of tools. So why create said tool in a language that does not perform at the level you need it to. There's a reason SWC and Esbuild exist.
And all of this can be solved if we go back to server side rendering only. I blame client-side ideology (and the move to cloud) for all the Web dev problems today.
@@levyroth I doubt that all of the problems we face can be solved server-side. A lot of them probably can, others you still need a client-side solution. Afaic it's about balancing out the cost and the benefits and actually writing them down in an ADR rather than committing to a technology because it's fashionable.
@@levyroth Servers are expensive. It's cheaper to run one API backend server and host your frontend on a static CDN than to use templating engines or hacks like Next.js or similar frameworks use. Honestly I think we should get rid of this idea of adhering to "web principles" and stop building "websites" and instead focus on building APPS. "The web" is not some sort of design paradigm or an idea to stick to, it's literally just an underlying technology.
Tsoding was wrong though. React docs show you how to simply import react into an HTML file and use it. It's not recommended and isn't the best way to "get started", but it's in the docs.
@@michaelfrieze No, he was not. Ironically the NextJS docs make a better job on explaining how react works under the hood, if they care about the devs they should giver a better explanation of what is going on under the hood and not simply calling it "magic".
He Theo I think you are definitely correct about some of what you said about J Blow, at the same time though try to understand some of his viewpoint. He sees an industry where what he terms "developer" wouldn't be able to write the backing code to display text because everything is so abstracted away. He has no intention to do anything in web dev because he doesn't care about it, that is absolutely correct. It may just be a boomer take from him but he feels like the move fast and break things mentality is the underlying problem. Just like your point of "this breaks on large teams", his argument is you never needed the large team. I understand completely that he definitely is missing some of the complexity of web dev. But he is coming from the perspective of someone who absolutely could build a modern web browser from scratch that performs better than what is currently available if he had the desire to do that, it's not a "your IQ is too low" but more a matter of "you could do better but nobody is". J Blow is known to be abrasive and likely lacking in some social skills, don't let that be the thing that discredits his other points. A large portion of web dev could be simplified and modern "frameworks" like solidJS, HTMX and others are showing that. Even your example of Vite is showing that and you made that point. He is saying the same thing just in a significantly more rude manner.
stupid question: maybe i am not seeing the point or details yet but, if an electron app is a packaged website why not making that website a PWA(progressive web app). i know some features that might require some permissions that electron can get that pwa maybe not, but i am using MS Teams for quite a long time as a PWA and it works just great and i usually dont like to compliment MS but they showed that you dont really need native apps even for something as complex as a video meeting app with screen sharing and other advanced features. browsers got to a point now where they even can update a firmware of a device like some mouse and keyboard manufactures doing it now. If the progress continues Electron will die out eventually.
while I don't like Go, like, at all - I gotta put it out there that Wails is a pretty good alternative to Electron. Same premise as Electron, except that it uses the built-in WebView of a given OS rather than bundling chrome.
@@ethanchristensen7388 I feel like I am one of the 5 people who haven't tried Rust yet - also: one of the reasons I prefer electron over Wails is precisely because it *doesn't* use the OS web-view. Electron is the one space where I don't have to be worry about cross-browser crap.
As an Avalonia fan who puts the user experience first, I have to disagree that there are no good native cross - platform solutions that can also target the web out there.
This was a very interesting take, I was in the camp of Electron and web tech was unnecessarily complicated + wasteful and only made the dev experience better. I am a web developer before anyone asks. though I do tinker with lo- level programming as one does. I did see the merits of not installing apps and writing code once that runs anywhere, after this video I seem them more clearly than before + the lack of alternative ways to do the same
Complaining about JS is for those who can afford to. I can create and maintain applications twice as fast with web languages, and web based solutions are often what my clients want. They don't care about perfect code nor perfect performance. They want a product for a reasonable price in a reasonable time and easily accessible to everyone with a screen, who can blame them. And web languages, including JS, can deliver. That's why you only hear programmers shit on web dev, but rarely (if ever) clients. The only compain I have is that everyone says they can do web dev. Yet we still see so many amateuristic web applications everywhere, so clearly alot of them are lying.
The problem with the "web dev is good" argument is that all of the good parts have very little to do with web devs now and everything to do with the people that built the REAL web (HTTP, browser engines, etc) and nothing to do with the latest JS or cloud bullshit. So it's fake tech gurus taking credit for the work of engineers that actually understood the tradeoffs they were making, and instead of proceeding rationally throwing all of that out the window to make their own developer lives .1% easier, instead of just doing their job.
I learned programming in college and work using PL/I, Fortran, Pascal, and SAS on an IBM mainframe and DEC VAX computers. I didn't like web apps at first. The UI's you could make were primitive. Today's development tools are frigging awesome.
This is no joke. Write something to spec. Works in firefox, works in chrome. Busted in IE. Also the IE dev tools were all crap so it was hard to figure out why it broke. Today, you barely have to even test in multiple browsers.
@@CaptRespect Yep... having a CSS sheet only for IE6, with which all looked ugly and just functional, but restricted functionality :D. And tons of JS wouldn't render or cause conflicts of all kinds. But Actually, if I remember well, IE 5 and 5.5 was even worse. And yet, not even close to the pain of handling the companies' newsletters to work in Outlook's (the software) "HTML" (and CSS if feeling brave) back in the days, plus those fixes still working not wrecking all in other apps and browsers, as couldn't use a lot of hacks there like with IE6. In general, I remember having to load the sites (remotely) in not only all the browsers, but all OSes and browsers combinations with every tiny change, as the standards implementation in general were pretty bad compared to today. BUT IE5 - 6 had the "crown".
I completely agree with your take on Electron. I completely get the hate it gets, but in my opinion it's a clear case of perfect being the enemy of good; yes, these apps would be faster if they were actually native. But in that case, most of these apps wouldnt even exist, because itd take too much work to build them for all different platforms and keep all versions synced.
@@astral6749 I would argue you are right for the vast majority of cases, but in the cases where electron is popular like a text editor or a messenger client with a lot of features I believe tauri would be a great fit.
Electron is quite a kludge. Using page-layout and web technologies to build cross-platform apps. In theory you could build a superior cross-platform native application framework, by removing the technical debt of HTML. Except no-one has achieved that. And Flash and Java applets were never that great either. So Electron seems to be the least bad option.
@@philippebarillecavalier9275 Yeah maybe, but it always seems quite arcane, and like it doesn't actually behave consistently and reliably across platforms. Maybe people just employ it badly.
@@billgrant7262 I'm just gonna ignore the fact that you think you can read his mind and say that if you're including backend as part of web dev then yes he's a web dev. Yes, he's occasionally done front end stuff at Netflix but it's not very often and mainly back end from what I can tell. It seems like the reason he shits on web dev is mainly because he likes to shit on javascript
browsers and javascript are *NOT* slow your code is people before the whole webdev and framework fad, wrote stuff with all the possible optimizations, and could make very well performing (though not "pretty-looking") apps in the old days, the problem is that very few people actually optimize for performance, or compatibility, nobody checks if the fancy feature actually has to end up calling 5 other javascript functions, and would be faster to call 3 of those functions directly, and avoid calling 2 + wrapper, or using the absolute least amount of loops and stuff like that... it's same as native dev... pradoxically, computers get faster and faster, but programs get slower and slower....because less and less people care to UNDERSTAND performance... also I'm strongly of the opinion that web-apps and web documents should NOT use same tech stack...web was made for documents, web-apps would work way better using other tech instead of having to deal with DOM and CSS, all the while making it impossible to make a new browser, because either you support everything ever made, or you support nothing...
genuine question as a newbie. Why *isn't* there an industry standard wysiwyg editor for frontend? I used Dreamweaver waaay back in the day, and I find it interesting the baby appears to have been thrown out with the bathwater.
"We make mistakes like Web Components" is crazy. WC are a step in the right direction, which is abolishing frameworks and allowing native components compiled by the browser to get better performance, which in the future will be natively SSR'd thanks to Declarative Shadow DOM. I like to look at React and NextJS as the precursor to a future where web development is way less framework-centric and more relying on the browser engine and it's web standards.
Couldn't agree more, I think this video is great other than web components L take. It added the last bit of encapsulation we needed to make good, repeatable UI. Been working in web components for years and they just work, they allow me to opt into JS and ship semantic HMTL.
@@popcorn245 have fun using tailwind / css frameworks / just creating basic forms with web components. I don't know wtf were they smoking to do such a bad API.
@@klirmio21 I generally agree, think that JSX being part of spec would make things a little easier, especially with its almost ubiquitous adoption in all modern JS frameworks. But that being said, template literals with syntax highlighting aren't terrible by any means and you add one render() method to your components that sets innerHTML and you're off to the races. ShadowDOM is often complained about, but it's opt-in and not required, though super handy in cases you don't control what styles are passed to the document. Astro + Web Components has been a complete game changer, I get to wrap things in web components, only when I need JS, and it encapsulates functionality. This means I am able to keep search engines happy and performance metrics high.
The problem is we are using frameworks made for SPA to build the whole freaking company website which becomes very complex and extremely hard to maintain.
@@QueeeeenZ We called them Single Page Application because they are meant for small applications. React itself is a library not a framework which is why you need to add so many other libraries to make it usable at the same time making it more complex and messy.
@@QueeeeenZ I literally work with frontend frameworks every day. Here is my 20 year career experience Designer -> Flash -> jQuery -> ExtJs -> Backbone -> AngularJs -> React -> Vue -> Nuxt -> Next
I ran Arduino 2 IDE written in electron, derived from VSCode. It was using 700 mb of RAM just for showing in screen. JS for desktop apps is bad idea. 👎🤬 Software developer have forgotten optimisation, they think everyone should just get 16gb of ram rather then they making native apps.
There are exceptions of electron usage on linux - Telegram, ripcord, so it's possible to build native apps, which have any resemble of success. Other than that - I can agree :)
@@ruaidhrilumsden but the thing is, it's both possible and already done. QT has pushed forward a lot in terms of cross-platform usability. Plus, you're not forced to C++, and you can use Qt on Embedded devices. :)
I mostly agree with him as his point is coming from a business perspective, which makes sense. But I wonder if the economic feasibility of React/Electron is mostly only because of its popularity. What if QT which isn't built on the cumulation of open-standards (it may be open-source itself but idts it's a cumulation of many such standards) also became that popular. Would suddenly QT now be more economically feasible?
Before you get into arguments like this you should always remember that your users don't give a sh*t about any of this. They want something that works and gets the job done.
JavaScript and web development are in a bad spot tbh. Dart is so much better and folks should've jumped to it (invented by the folks who made JS viable). The folks who made Dart are the ones who made Gmail possible with v8. They recognized the looming failures of JS and tried to warn us. Sad to see their heroic JS work held up as a reason to defend JS. JS has been a stain every since that bigot shit it out
The idea of a universal platform that allows GUI apps to run on basically everything with a single code base and be easily deployed and updated is certainly very powerful, but I think that the web is pretty far from the optimal way to do that, at least in theory (with JS being the pretty clear weak link, IMO). The issue is, since the web is by far the most popular option, it's difficult to introduce alternatives (even when the alternatives would be better). Kind of like how OOP is so dominant despite being in a lot of ways a bad paradigm.
I think this was the case, IIRC the original name for the language was Mocha, but the higherups demanded something more Java-related to capitalise on its popularity. Fast forward to today, HR still messes up between the two.
Honestly, i just think Jonathan Blow is such an egotistical jerk that i have no interest in his opinion. I'm also getting annoyed with Theo lately bc he makes everything seem SO serious and SO heavy when mostly it's all bike shedding.
You don't become popular in content creation by having calmly discussed common takes and a small personality. Comes with the territory. Theo is also very confidently wrong sometimes, but he does generally admit it and call it out. If you don't enjoy the content, it's not hurting anyone to pass it up, I just find it interesting and a good start to creative/critical thinking@@reed6514
I can't tell how good Jonathan Blow is, but is prime example of C/C++ developer with massive superiority complex. I feel its quite intelectually dishonest just trashtalking anythig related to web development or JS while its the way choosen by users as the best way to go. And there are web developer writing code literally for milions users while he is reinventing 40 years old Sokoban. As Theo pointed, he is not the guy who cares about end product, he just want to feel good making it.
@@tymak_cz "he is not the guy who cares about end product..." -- having played his games and seeing how serious he takes his JAI compiler, it's incredibly hard to believe this.
@@tymak_cz i do agree he can seem egotistical, but i think that's more a result of cynicism than anything else. but as for his skill; i think it's undeniable. it isn't just sokoban, it's sokoban written in a custom game engine, written in a custom programming language. say what you want about the validity of doing that, he is unmistakeably talented. i don't agree with everything he says, to be clear, but i think he deserves a lot more respect than people here seem to be willing to give him.
Viable alternatives to Electron are: Tauri (Rust backend to default OS browser) - not yet suitable for brand-new web features, because it means Safari on Mac and Gecko-ish on Linux, so none of the WebGPU stuff will work, none of the newer real-time data stuff will work... until all vendors catch up with the standards. The general benefit is instead of shipping a 500MB install of a new Chrome browser, you're shipping a 20MB package that uses your OS's browser, instead. Deno: Bring Your Own Window WebGPU - allows you to use SDL2 or any other "native" render surface to essentially run Deno as your client code, with a native cross-platform app window. The problem here is that it's harder to keep the "client-side" codebase separate from Deno behind it, and SDL2 (or whatever surface you chose) in front of it. That's not an issue if you just want to make a desktop app. It is an issue if you also want the code, or as much of it as possible, to run on a webpage.
I respect Jonathan Blow and Tsoding. They are great programmers. However, they seem very pessimistic about the future of software. I do not think its all bad. If I had to give advice to new programmers it would be that whatever you do, web, embedded, games, .etc, try to spent some time learning the fundamentals before jumping to a big framework. Focus on long-term knowledge, be open-minded and always be skeptical about new shinny objects
@@levyroth I'm starting to think like this. It's hard not to be pessimistic, but if you take away their frameworks, web devs know nothing. Jr devs nowadays even start with React before knowing JS and HTML
@@spectr__ You have it entirely backwards. It's easy to be pessimistic, lazy even. And mind you This is coming from someone that had to actively tone down their cynicism and snark
I love it, but getting buy in from others is hard. We have one particular part written in Elm, all of it by me. No one else want to touch it. I don't know why, the app works flawlessly and is delightful to work with.
I started with Web 1.0; C++ and Java on CGI. That came tumbling down with the Dot Com crash. From the ashes Web 2.0 was born; where Servers render web pages, and connect to SQL databases. I would say a lot of companies are still in Web 2.0 stage, Wordpress is a perfect example of this. Web 2.0 is fusterating, slow and overly complicated. I would argue that we are now graduating to Web 3.0 with Single Page Apps, Asyncronis Micro Web Services, and NoSQL data, and queues. Google is certanly leading the charge in Web 3.0. My favorite Web Stack today is Docker Compose, Python Fast API, Vue.Js, and MongoDb, with Nginx tying things together. Sounds complicated, but it is incredibly effective.
I'm personally on the team Quality over Quantity, while yes web is "good enough", unfortunately good enough is all to often the enemy of good. But (except for safety critical systems) that's just personal preference.
@@neociber24 it's a generalization ofc, and i'm not saying there cant't be awesom things regardless, but like theo said javasript sitcking round how it is and with duct tape on bandages on crutches, instead of being properly replaced or remade.
@@neociber24 Or just imagine proper web assembly with the same access as JS opening it up Completely to the other amazing ecosystems that already exist.
C#, a language often praised for being the best-designed language currently in popular use, follows the "good enough" pragmatic approach. The reason why C# doesn't have checked exceptions? They suck for developers. Pretty simple. Even though checked exceptions make static analysis possible and could avoid developers from making mistakes, it has been shown that this is simply too cumbersome for developers. Focusing on the programming language itself instead of the product is a problem, and there is a thing as a "too perfect" language. Languages like Rust are fine if you are coding for your own satisfaction, but people forget than programming is not only a hobby and that focusing on the end product is more important than focusing on how fast your iteration over a list with
I used to hate web dev, writing UIs in PHP with tables of floats was so awful... The changing point for me was flexbox and React, after that it was smooth sailing
Market will solve the issue used to be true, but its not that simple now... Prime's take that JBlow may have been right that software is in decline but that its critical to consider the increased hardware/system scope that software needs to work in has blown way out in the same time... After all the ship it once mentality of previous software dev years also didn't have to compete in a landscape of Win10 vs Win11 vs iPhone15 vs iPhone10 vs Samsung S59 vs Fairphone 4 vs Linux box vs. Apple Watch vs. Chromebooks... I still hate that so many of the apps I use are janky but sometimes you need to step back and consider that I used to hold my cd-walkman steady to avoid skipping...
There is another side to the webification of software though, and that is that every company is evil and software as a service is a horrendous model. Before, you owned your software, you were able to buy a copy, and have it forever. Nowadays you have to pay every month to use stuff like Word, Excel and Photoshop and if the companies decide the product is no more useful to them, they can drop it and all your content on that file format will be lost forever. Having all your creative stuff lock by a recurrent paywall that and hanging by the whim of some corporative jerks is a horrible things, and when it comes to games it is even worst.
Good point. Speaking of your game dev point. Blizzard cancelled their new survival game. I have devs that were working on it. And they said a large portion of the headache was they were trying to build their own engine and it was a nightmare.
The only reason Gmail was popular in the very early days was because they were giving a shit ton of storage for free and added even Mor every day. It was a PR stunt in a time when people maybe sent 10 emails per week.
Far from perfect is actually true: After watching the video i was convinced that electron would be a good choice. But i had to stop my project, because i was not able to render a single SVG file. Nothing i have searched for has been working. I am not asking for help here, because this is the wrong place to do so. I just wanted to leave my opinion, that webdev is still a very complicated stuff to get working. You need tons of config files, whit content you don't understand, if you don't study the docs of several frameworks beforehand. Also most examples out there are either outdated or don't work at all (anymore). But..., when you have a working project, it can be nice. Before that: Hell is here my friend.
I find it sounds a bit weird 2:18 . Because it's good enough we've been able to build an incredible world on top of it. Maybe I don't need the INCREDIBLE WORLD on top of something. Maybe I need this something itself :) The issue with JS fatigue is that there is a water, and there is a turtle swimming, and elephants on top of that turtle, and then finally the land on top of those elephants. I agree that JS complexity can solve complex UI problems because UI is complicated itself. But, not all the apps need it. There is the growing need and growing want of good old MVC with templates solutions, that are just good enough, very cost effective, battle tested. Add HTMX to it and that's it. It's good enough. Rails with Hotwire, Laravel with Livewire, Phoenix with Liveview. I just want MVC like this become a default once again, and SPA is a second thought.
Wait, what are these more performant and cost effective solutions you are talking about? How can servers be more cost effective when rendering on the client is free? How can rendering on the server be more performant when your average web server is 4 times slower than the average consumer device? Adding network connection to the equation doesn’t help either. Ive started web dev with Flash and Action Script 15 years ago. I remember the ColdFusion days. What you are saying makes no sense what so ever. MVC is not a solution, RoR is not a solution. If you need a SEO website just use any CMS, set it up in 2 hours, give it to your marketing team. What is that mythical problem you are trying to solve with MVC and RoR that haven’t been solved? Are you building a social media or streaming platform? The most popular social media apps are built on react by some of the most talented people… wtf
I remember the day when create-react-app was stable and became available. I was over the moon! Why? Because setting up a project without it was a monumental pain in the ass. Constantly tinkering with Webpack was almost akin to opening up a car's engine. To this day, I'm happy for the wizard apps that allow us to start up a project.
To be fair, I'm a web dev for over 10 years and I love the tech and being up to date. But the time I can build a website nowadays with the tools available is insanely fast compared to years ago. I love the current state of web dev and excited for whats next
I'm a grumpy, old school web dev - LAMP stack, Perl/CGI, Bash scripts, CMSes for content, etc. - and I don't care for the front-end first, ridiculously mutating stack approach to web development. With that said, your points are cogent enough to make me rethink everything and move my cheese. Thx for your thoughts.
I dislike when people complain about X but never provide an alternative or the alternative is just inferior. I really had never see elistism on programming before those tweets, is so weird for me.
The main problem is JavaScript not standardized tools. If web dev was built around a type safe, consistent language it would have been infinitely better
Tscode is someone who writes neural networks libraries live on stream or for fun a Jit for Brainf&uck. From content view there is not many who can surpass him ^^ I also see React only do far from outside but the more I know the more I would rather program a rocket flying to the moon with passengers on board. Its reminds me on JEE in its prime guest tutor : We stacked 3 frameworks one each other, we solved web development, it was never this good . Yeah I make twice as much as the other devs but who cares there aren't many who can become JEE devs "
The problem with JS is the same as the problem with PHP: it was intended to achieve a simple task. But the market said “nah, we want an entire programming language”. And it’s had to make a messy pivot to what the market wants.
Nobody has a problem with Standardizing and being cross platform. My problem with JS is that: 1. It doesn't tell you if there's a syntax error, semantic error, redefined functions, .. etc. You just have to run it and find out. It's not by any means a safe language. There's a lot of quiet undefined behaviors that you won't notice. It could have been a strong typed semi-compiled language and still be cross platform. I have a much better experience developing in C++ because the IDE can always auto complete and navigate for me. I can write object dot and I see a drop down menu with the methods in this class. And that's only possible with strong typing. Also I can avoid many problems because they'll be caught at compile time. 2. It's always a little bit behind native desktop applications. I have spent sometime trying to make an audio recording feature in a webapp. I couldn't even get the sample rate and sample format information because the API didn't support it. Also I cannot use the full OpenGL features. WebGL is a bit behind. Not to mention that I cannot use CUDA. There are other complaints about incompetent devs who write slow apps. But that's in every industry and not exclusive to web. It's just that some industries are more picky than others for safety and reliability. So that's why it's more seen in web.
Yeah, relying on the abstractions we've created for ourselves (e.g. browsers, electron, and pre-made game engines) makes it easier to develop things. However, these abstractions are far from perfect, which leads us to create additional layers of abstractions to address their issues. It would be better if we got more used to working at a lower level, and fixed the root cause of the issues. Unfortunately, because we have gotten dependent on these abstractions, fewer people are able or unwilling to make stuff from scratch, or at least do it at a lower level within the tower of abstractions we have built for ourselves.
It's not that they are unwilling. It's that for a lot of problems, the browser/electron/whatever thing is good enough, and keeps getting better. I've previously worked on android and ios native apps, that ran like crap on old phonegap software. But I wouldn't hesitate to try some of the new cross platform frameworks today..
The core problem is they try to dynamical load more in over time. I mean webpages became webapps but unlike any other apps which are static in nature and where you have completely loaded it down on you PC . They try to load it dynamically piece by piece on use cases. A normal app devs starts to scream a this xD At least this the problem for Web or Server Components. When you talking about low level stuff the problem is they don't want to deal with it PyTorch in Python is hyped but its so slow while the C++ Frontend is at least 20x faster. Basically they choose the wrong tool for the job . I felt Theo went really defensiv in this video maybe because the numbers seems to suggest things go away from JS and React but honestly I couldn't find a React job if I want to here in Europe (at least not fast) . Because of legacy stuff there are a lot of PHP servers and the cloud never made sense for most companies and others using Golang + HTMX (and somewhere there are also some Tomcats I think ).
Guy who learned to code pre-WWW here. Started teaching my daughter React/NextJS at the weekend using a free DnD API as a data source. Had something deployed to Vercel in minutes, and built a small, very basic app, over the next few hours as she learned. To say she was stoked the first time she saw her app running on the web is an understatement, and she loved being able to share a link with her friends so that they could see what was going on. And all for FREE. Trust me, learning to build stuff in this modern world kicks the crap out of what we used to have. People need to quit whining and learn where we came from... You can't appreciate today if you don't understand yesterday.
Hats off to your tech journey, from pre-WWW to NextJS. Truly impressive!
I read your comment as "pre-World-War-??" at first and I wondered what kind of future did you come back from for there to be so many world wars?! That left me very confused for a few seconds.
You're a great dad
Pre World Wide War 🤣🤣🤣@@hungrymusicwolf
@@TomNook. Thanks! It's awesome being able share this kind of thing with the next generation, and see the passion it can stir up. Theo's comment at 17:00 is 🔥🔥🔥.
let's be honest having 6 copies of chromium running locally using 2GB ram each just so you can send text to your friends is stupid, just because it's the path of least resistance to create doesn't make it good
Look I understand electron is nice for being cross platform and working on web BUT you can't say there wouldn't be any desktop apps on Linux without it. Qt is fairly standard as well for cross platform desktop apps. Let's not pretend it doesn't exist.
I do want QT to get more popular and will continue using it, but dealing with QT licensing is annoying :(
Theo is right his argument is from business decisions not technical. The apps he mentioned would not exist on Linux. No one is going to use QT to capture the small Linux userbase.
@@Fe22234no one wants to admit that
GTK is also very widely used and is actually quite ok.
QT is paid afaik. I was trying to learn but the latest version required subscription. Electron is free. Yes, I could've installed an obsolete version of Qt but thats not a good start already
Theo: “There have obviously been Mistakes like web components”
Me: “web components mentioned!!!!!!”
I think web components are a technology that it's full potential has not yet been explored.
Web components are not a mistake. They're the standardization of encapsulated interactivity and style for the web. It's React without the framework. It's vanilla JavaScript. Sure, there's a ton of work to do on them. But they're the epitome for the argument Theo is making in the video.
@@patricknolen916 they are not fun to use
as soon as I read this comment I heard him mention "web components"
Hahaha the startup I worked for got acquired recently and I've found myself under a super smart CTO tasked with rebuilding our respective apps into a single modernized application. Based on the CTO's decades of experience we're using web components for the front end - and so far I'm thrilled to be free of the dictatorship of frameworks. The key is that, according to my CTO and his experience, it's the shadow dom concept that's bad about web components, not web components themselves.
It remains to be seen where we'll be in a few months but so far web components and lit-html have been great to use. The not so great thing is how hard it is to find useful info online about them that doesn't also rely on shadow dom...
I'm Sorry Electron isn't responsible for the general existence of "Actual Desktop Apps" on Linux. OpenOffice/LibreOffice, Blender, JetBrains IDEs, Thunderbird, Firefox, Chrome itself, VLC, Steam, File Managers (and i don't use more)
I completely agree. And I have to add that apps that 99% of apps that are built with Electron work just fine as websites. For example MS Teams or Spotify or Discord.
YES! THIS! they use qt or gdk with are open source and cross platform. The issue is windows devs make apps specifically for windows using frameworks specific to windows, and mac do the same with swift.
While linux people use qt or gdk and can compile to any platform.
Electron is only so popular because if you already have a web app then just bundle it in electron and away you go, the intent normally is not to be cross platform but more so that they don't have to remake the app for a GUI app
Agreed, that was a really disingenuous take in an otherwise good video. All the Web apps like Slack and Discord run just fine in the browser anyway, which in my opinion is better than settling for a "good enough" desktop version for the sake of convenience.
Yes, I was shocked to hear him say electron is the only thing that enables desktop apps on linux. It such a wrong take, I was really taken back by it.
That guy should take a pause from making videos and go learn basic stuff. Really embarrassing.
"The only reason there's actual desktop software on Linux is Electron"... are you sure man??
Note to all RUclipsrs - STOP THE DAMN CONSTANT MICRO EDITS. Just talk. Pauses are normal and expected. Constant edits induce anxiety.
Tools and frameworks aside, I will never forget the amazement I felt when I opened up Notepad in my college library with an HTML book by my side and built a webpage. Mind blown. And those same, fundamental technologies that powered the web then still power it today and constantly improve. It's awesome. I love my job.
MS FrontPage...
I started with Notepad -> Atom -> Pycharm -> VSCode -> Cursor -> Powerpoint . Back to roots xD
11:08 You actually made their point at 0:04. They are simply envisioning a world where we weren't building high-fidelity apps in software that was inherently made to render documents. In other words, they are asking: What would the world look like if "browsers" had better primitives to work with than HTML/CSS/DOM, and something else than a single-threaded language like JS, and could render everything in parallel (by default), on the GPU (by default), like games do? Maybe we wouldn't use Suspense and whatnot to work around problems that shouldn't exist in the first place? They're questioning the status quo (and all the towers of abstraction we've built on top of it, and have to deal with). That's at least a good faith interpretation of their position.
Hard to be good faith with people that themselves are so abrasive to others.
@@g-rexsaurus794Hard, but necessary.
ikr and you didn't even go off on it like you could have in 1000 pages
Most apps can be compiled in under 10 seconds, while you're going through some log in process in the background. Imagine that, a sandbox-but-native-app is ready to run whie you're registering. To say that this facebook Zuckerberg nightmare REACT world is so superior is blowing my brain with not dynamite but weapons we should be preventing under nuclear non-proliferation treaties
The argument about Electron is wack. The Web is the reason why desktop apps almost disappeared in the first place, but now it's a hero because it kinda brought them back. In France we have a saying for this: "the pyromaniac fireman".
Anyways, Electron and such (Tauri, Wails) are good for Linux, that's true, but if the web had never been that popular, people would have just worked on some other ways of making cross platform apps.
From a user perspective, most users probably don't want to install an app. Laptops with low disk spaces where windows took 100GB for installation and the remaining maybe for people to store their home media and gaming. Having apps in the browser help us to just stay in the web browser to do most of things and it is a lot easier and save people a lot of disk spaces.
if user has low disk space than we should not expect them to have enough ram to run your app
@@AmansLab I disagree, I have 250GB SSD and 24RAM
Yeah, using slack as an app is annoying. But then the web based one is annoying too, since it uses so much RAM and CPU. I don't know how they built the app, but the app sucks.
I like NeoVim and it works much better than VS Code. Yes, VS Code has some advantages as it has a ton of plugins. But it is nice using NeoVim that uses a lot of less RAM.
@@dovh49 I didn't know Neo Vim used less Ram, even tho I have 24Ram my Pc doesn't handle two instances of VsCode too well, do you have any tip on how to migrate?
Jira’s native macOS app has been axed in favour of their website. The app used 200 MB of RAM as opposed to 2 GB of RAM that is used by their monstrous website.
AND their website ships LESS features than the app like push notifications which were supported in the app but not on web.
And I am not even talking about the absolute disaster which is their mobile website version
"neither of these developers have worked in large teams" JB literally runs a company with teamS under him and Tsoding was a professional web dev writing browser plugins.
Yeah this dude is out of his depth
Your right but but John blow is an example of why you shouldn't think like john blow, he could have finished his third game, instead he is trying to develop the game and a language for it, hard to imagine a better way to delay features
Many electron apps like discord or spotify need an internet connection to a specific server anyway in order to work. When that is the case AND the app is build using web tech anyway, why bother having a desktop app at all and run 5 versions of chrome in the background at the same time instead of just opening a tab in a browser of our choice? And if that's not the case, can't we at least use the webview that is preinstalled in our OSes? If someone actually want's to build something in JS where they would have other options (every domain other than frontend), at least use tauri instead of electron.
I understand your points but you're at least misinformed about a couple. Game dev haven't converged into Unity and Unreal, most industry leaders (Nintendo, Rockstar, Ubisoft, Bethesda, From Software, and many others) all use in-house solutions. Big commercial engines are only the majority on the indie space, and even on the indie space we have a lot of success with in-house or alternative solutions (Maddie Makes Games, Supergiant Games, the folks that made Dead Cells, and the folks you mentioned in your video). But even still, the problem most folks have with modern web dev isn't so much about the convergence (even because if we wanna be honest, there are so many alternatives to React and expressjs at this point that I'm not sure everyone is comverging to a single solution), it's the complexity and the disregard for the tolls it's taking. Only in web dev we have a counter movement with simplicity and/or performance in mind, there's a reason stuff like rust, go, htmx and even tailwindcss are on the rise. Only in web dev we've been making new frameworks that only restructure the code or change how we think about the apps instead of increasing performance or making us write less code. We kept piling complexity on top of complexity and many devs started to realize it and found that moving away from it didn't made them less productive as people who push these modern tools led us to believe. But yes, this complexity problem isn't unique to web dev, it's just worse there. I predict that the same might happen in game dev as the industry learns from web dev. The rise of zig and odin are a sign of that.
To be fair, the move towards Unreal Engine is actually surprisingly notable in the AAA sphere recently, especially in Japan. It's wild to see both Street Fighter and Tekken running on the same engine. For one to find examples of companies that still go in-house, they often just mention the biggest of the biggest in the industry (Rockstar and Nintendo for instance) that have already long invested in engine R&D. Besides that, it's very common to hear that Bethesda's engine is horribly holding the company back, and it's very doubtful if they can ever invest in a new engine that can compete today.
I think if anyone wants to build their own engine nowadays, they'd need to have a very strong case cause your competition in that domain is ridiculously huge to say the least. Even if you're putting in AAA levels of investment, that money is very often better spent elsewhere.
TL;DR building your own solutions is a bad choice if you can just take someone else's solution to the same effect.
@@Ali009Ahmed Bethesda's inhouse engine is an antiquated fork of Gamebryo with tacked on elements from elsewhere including some new visual code utilised in Starfield. But even then a lot of the biggest problems isn't the engine it's how it's used considering how much reportedly less buggy FONV (developed by Obsidian using the same dang engine) is compared to FO3, FO4, or Skyrim.
@JoaoVictordaSilvaMadeira My point was not to say that they're not used, it was to say that they're not nearly as adopted as web dev frameworks are, as he claimed in the video. The mess of frameworks and tools and new technologies being hacked together for simplest of projects in web dev is unmatched. Even those that use commercial engines only have to download the engine and that's it, sometimes you put in a couple of plugins but nothing matches the complexity and absurdity of a node_modules folder. Game dev is just not there yet.
@JoaoVictordaSilvaMadeira Yes, I agree with you. What I tried to convey is that people use these tools even when they don't need to. In the middle of my post I mentioned this counter movement currently going on in web dev, where people noticed we're way past the point where the added complexity is helpful. This is only happening in web dev to my knowledge, which means a lot of people resonate with that sentiment that web dev is too bloated that the video is trying to argue against. Theo used game dev as a comparison, which is also bloated but it's not there yet, and they're also not nearly as adopted as he and other people might think, even in the indie space. In his defense, these two folks he mentioned in the video don't make fun of web dev only, they're also vocal against the added bloat in game dev. When you think about it, the vast majority of game projects are people trying to get into game dev and they're using Unity to make a 2D game that uses Box2D even though a simple AABB collision detection would work while being more performant and weighting less in the final game, right? People used to defend Unity when their own games would use less than 10% of Unity's features, so is it really needed? But again, even with all of that, I still think web dev is in a much worst state. The fact that more and more AAA execs are taking a 5% rev cut to use UE5 is probably a sign that maybe the UE5 makes their devs more productive, right? Meanwhile in web dev land, htmx is being adopted in production of big companies. The closest thing we have to that in game dev is the rise of tools like raylib and languages like zig, odin and jai, but they're not nearly as talked about or adopted as the ones in web dev. I still think they're gonna rise and that counter movement will also gain strength in game dev, but it's just really not there yet.
This is exactly how I feel about this whole video as someone with a programming background trying to explore web dev. Sure, the technology we have now is better than jquery in 2009, but every single frontend tool has to use HTML, css, and js along with all the issues that are inherent to them, and the only way to overcome some of those issues is build tools on top to compile/transform down to those, creating real tech debt and generally poorer than average user experiences.
there are a lot of non-electron apps on Linux.
It isn't purely electron that is the reason we have support.
Tauri FTW! This video makes me want to learn Rust and Tauri again.
I just have to say it because that was a step too far misleading. Saying that Linux only has "actual" desktop applications because of electron is just not a reality. Did you ever take a look at gtk3 and gtk4, heck it even supports css and that natively and doesn't need a whole browser in the background. And to say it out loud, electron causes more problems on linux for me than any other native application. From the loading times, to random crashes to the why would i even have another 300 MB of memory wasted on another browser which is not up to date and runs random javascript when i could just open a tab in a browser or actually have a good native app with gtk3 and still have a really qmazing result. Yes it's not build once run everywhere, but electron is also not build once run everywhere, especially when interfacing with native api's ...
But yeah please do never say "actual" desktop app ever again. Because any gtk app is more "actual" and native than any electron wrapper that ever existed.
And also we do have native discord apps in gtk3 ... So they do actually exist ...
I think it all comes down to modern web development requiring a ton more setup (much like Java) than it did 10 years ago, and is much more spread out and complex than it used to be. You have dozens of new frameworks and technologies, seemingly popping out of nowhere, that you are immediately pushed to master. Unless you're active in the right Discords and on Twitter there's no way you can keep up with all of them. If you use the right tools you can have an MVP in production within an hour, with your first code deployed in minutes, but if you don't already know exactly what to use it can take days to figure it out as everyone has their favourites and finding actual good concrete information on which direction to take is impossible.
I've been doing web dev for over 15 years, only somewhat recently starting to really dive into React and Vue, and it is really stunning (in both a good and a bad way) how much there is out there and how different the approaches to very simple objectives are.
If defense of J Blow, he is not a web dev, it’s not his job to fix it. In the games space, he made his own programming language, and made his own engine with it due to frustration with current tooling. Say what you want, but that’s standing on what you say
Never heard of anyone expecting him to fix things in webdev. Why would they, considering he isn't one?
I like listening to some of his rants, especially on bad UX stuff, totally agree with pretty much all that.
But he also has a lot of dumb general takes based on very specific things, or things he doesn't know much about. On these topics, he's pretty much the epitome of "can't see the forest for the trees".
Like his general take that open source sucks overall, based on some detail about how pull requests specifically work in git, or whatever it was.
Or when he complains that webdevs call things that aren't protobufs, "protobufs". Which I've never come across. Sounds like he saw one person make that mistake, and just concluded it's like a common thing or something. So thinks it's some important rant to bring up on protobufs in general.
I guess you gotta fill the time with something though, as a streamer. Fair enough.
Then why does he give his opinion on a subject he is incompetent in?
@@adlex1212 because that's what brings in the views. If you share stupid/controversial opinions, then you will be more successful than someone who is reasonable and rational.
JBlow's points don't admit to Twitter threads and he's a bit of a curmudgeon. He's not wrong that the web sucks. He has some long form talks about the general idea he's on about, which is that technology does not necessarily advance over time, and you cannot abstract your way to progress. Most of what passes for technology is a series of tradeoffs that people don't understand or are intentionally ignorant of. The web is awful, it's just less awful than the current available alternatives for a variety of complicated reasons and historical tradeoffs, which, if we were able to do it all again, we'd probably have gone down a different path.
We can go on a different path right now. But web devs work for corporations who have different goals and priorities than an average programmer who might just want to write beautiful code.
Web is awesome. The world has never seen it's like as an open, accessible, information and economic platform, ever.
Criticizing it's perceived technical shortcomings without proposing any kind of actionable solutions is just throwing sand on the picnic everyone is eating at.
The stupid thing with the status quo of the Web is that we ship source code i.e plain text to the clients (i.e browsers) instead it should just be binaries. An HTTP request could just include the platform it's being sent from and then the server would send the binary for that specific platform. We won't need interpreted languages like JS. Instead of "write-once-run-anywhere" language, we could use "write-once-compile-for-any-platform" language like C/C++ or Rust. As the complication part of the deployment is handled on the server itself the user/client won't noticed any difference.
The browser then won't be as bloated as they are now. They would only need to include the security layer so the programs "shipped" don't make any system call by itself and every request for system resources goes through the browser (like they currently do). The browser would use far less memory than they currently do because most of it currently is used by JS engine.
Tsoding's video was NOT about create-react-app, it was about using react from scratch without any such starter templates.
Exactly
link it
Gonna be harsh here, you are completely wrong!
Tsoding wants to figure out how React libs ("react" and "react-dom") work under the hook, hence he should check out the github repository instead of the user documentation (the user manual).
You don't check user manual to understand how the fridge cold system works.
His critique is valid but he complains to wrong spot, and keeps baiting the React fanboys. I watched the whole stream at the very beginning cuz it's fun to watch how he figure out those libs work without much info he needed, and he constantly scroll up and down without patience.
His purposely over-raging and pretentious action (probably due to its live, people tend to act more), indirectly causes the fanboys from both sides are being extremely dishonest, completely neglect the technical details (what are jsx, babel, transpiler, etc., and why we need them) he dealt with at that moment. They were arguing two different things during the whole stream.
Sound like I must hate him, nah, he definitely a good engineer. People can have different and even opposite opinions.
@@doc8527 The problem people had was he's calling himself a react expert now... while never having used react. I hate react with a passion I think its a horrendous framework, but even I know that not using react means Im not a react expert XD
React docs show how to import react (using unpkg) into an HTML file and use it. He just didn't search hard enough.
I'm pretty optimistic about Tauri. It's goal is to have the ergonomics of Electron with better performance (as well as Security) and smaller bundle size. If the 2.0 release rolls around and they have the planned Android / IOS support than they're going to be usable for every major platform
There's a project, Neutralino, that hooks directly into the OS's native implementation of WebView (in the case of Windows, WebView2) to try to cut out the middleman rather than do what Electron does and simply wrap Chromium Embedded Framework. I'm optimistic about its progress.
@@apollolux that is what Tauri does currently
@@apollolux Thanks for mentioning Nautralino, it's the first time I'm hearing about it. From a quick glance it looks quite similar to Tauri, just written in C++(instead of Rust) and it seems to be less popular. I'll keep in in my Radar anyway.
@@laszloszabo7536 Ah, it's in Rust, that probably explains the popularity you speak of. I'm glad there are projects that realized the same thing about Electron/CEF's bloat that Neutralino did and try to do something useful about it. :)
I love what Tauri promises to offer. But the biggest obstacle is writing Rust for the "backend" instead of the convenient Node JS that Electron offers. But I would be willing to let my DX take a hit if I get way less bloat and better performance
The product I work on uses a predecessor to Electron CEF which is also a Chromium wrapper. We have specific requirements for the product that required us to have a C++ backend rather then node js. But the ability to use web technologies to develop our front end is great. We are cross platform Mac and Windows and we couldn't survive without the web technologies that CEF(chromium) provide. I am old school C++ but I have no issues with javascript, sure it has it's quirks, but using node I can write fairly complex CLI scripts faster and easier with node (which is only there because of web technology). We have so many more headaches and longer deployment cycles than the we teams because we have installed apps.
CliniComp?
spotify?
Honestly, This is true. Without languages like JS and Python, I would have NEVER been interested in development altogether. Nothing really beats the feeling you get when you build your first site. It is the kickstart that sort of introduces you to everything!
No matter how much other stuff that I make, web development has a special place in my heart.
the web just wouldn't be the same without your projects noobscience123
I would not lump Python in the same category... 😂
Without scripty languages you wouldn't exist? Please reconsider your position!
What if I told you that in 2000-2010 pre-everything-went-web we had all the native GUI applications we needed on Linux (and other OSes for that matter) and it all worked way better than modern web? So please don't tell me that without web we wouldn't have native apps because it's patently untrue.
Web stole the mindshare from native and all the people that could have learned GTK, Qt and/or help build other native UI toolkits are now rewritting their SPAs over and over in whatever is webdev thing of the day currently, and post videos rationalizing how much better JS is than how things were before.
If you already have everything you need I’d bet no Linux user install any software created later than 2010, doesn’t it?
JavaScript, html and css is simply more easy to pickup. I’m a web dev and my employer asked me to learn c++.
Firstly, it’s garbage - I would only learn it for game development on unity
Secondly - the qt is paid subscription
Why should I learn c++ and buy qt if I can do the same cross platform apps in simpler js html css?
Developers are salty that js is being pushed everywhere
@@klirmio21 Firstly you're wrong, and Unity uses pretty strictly C# not C++ for user side work. I used to wish it used C++ it's precisely why I worked with Unreal not Unity.
Secondly still wrong, QT is free to use and has been since 2000, though you will be restricted under the LGPL. The commercial license is less restricted but not required.
If you're going to lie anyway stick with JS you'd fit right in at Oracle.
Hot take for this community: JS is only used in web Dev because it's the only native dynamic language browsers support. I think this single issue has been the greatest source of developer frustration with web development.
UI development is hard on any platform, and I'd argue the web is the easiest one by far, but it's still a fundamentally difficult challenge. This is why I want WASM and Web Components to be pushed further in future web standards. There is no reason why you couldn't use React, Vue, SolidJS, etc. all together via web components if the browsers had a little more functionality in that API. And with WASM, you'd finally allow for innovation in the web UI space that goes beyond JS' limitations. TypeScript isn't a perfect language, but it definitely could be better if it wasn't so intrinsically linked to JS. That's why tools like Static Hermes want to break the TS/JS link for optimisation purposes.
Anyway, I do agree with your video, even tho I'm definitely the kind of backend dev that hates JS and UI (I am currently supporting a government AngularJS application and trying to find a way to migrate that to...anything honestly, probably HTMX + WC to avoid this very problem again in the future)
Why do you think JS being dynamic is something that makes it popular? I'd rather use a statically typed native language for web dev, but there's not much point if most of the jobs are JS/TS.
@@TVIDS123 Oh my apologies I don't mean dynamically typed, I mean dynamic as in interactive, as opposed to say HTML or CSS. I will say JS being dynamically typed probably helped adoption, but I too prefer statically typed languages by far. I did my time in Python, I'm good now.
@@zactron1997 I think the phrase you're looking for is "imperative programming language", as in, a language that allows you to program by describing the steps needed to solve the problem (the algorithm).
HTML and CSS aren't programming languages, and they're declarative rather than imperative. They describe something and let the browser figure out what is actually supposed to happen.
WASM is the last option I'd use to deliver UI components with accessibility. The two ways would be what JS already does and write to the DOM, with the additional overhead of converting data between WASM and JS. The other is writing your UI using canvas. Good luck making this UI accessible in a convenient way. Flutter tried this and have so far failed to deliver a good experience for assistive tools.
@@dealloc To be fair with OP's point, they said they wanted WASM and WC to be pushed further. So I guess they're also not exactly happy about having to use JS as a glue to make WASM do anything with the DOM
If you gave jblow a ticket to read some csv data he'd probably write his own csv parser. He is the type of engineer and there are many like him that always should be assigned to problems that haven't been solved.
Linux didn't need Electron. It already had Firefox and Chrome, Just make the browser better. It's already a thick client.
blah blah blah it needs everything the others can do and more, to beat them. Electron is good for linux because as more people write in electron their ability to push out linux decreases. Make your counterargument. don't confuse the non-supreme optimalness of electron with the fact you got an app for Tidal when no one else made it.
@@Äpple-pie-5k electron could have been an integration into the browser. Imagine opening your browser to a web app tab/button. You click one and the browser opens a new window that has all that electron functionality. The browser could have had those os apis and we just install apps like we do now with pwa. The web platform already acts like an os
I refuse to believe that Electron is the reason, apps like discord exist on Linux. Using Electron for Discord was a big mistake anyways, because that app is horribly slow for the low amount of features it has. They should have programmed it with something like Golang and using a library like raylib, which would allow them to just build their program to any platform they like and get some reasonable performance as well.
The same mistake was done with VSCode. Had Microsoft chosen to use a proper language for their editor, together lua for extensions, they may even have had an incentive to bring WebAssembly forward. But now, VSCode is just a very slow Code Editor that is not very nice to use once you have a reasonable amount of plugins installed.
Then build a bloody better competitor, and stop talking.
I mean, you’re making really bold claims here, go out and prove them.
And also, vscode-web exists, too, does that work just as well wirh raylib? Idk
Vs code is slow ! What mobile do you use for coding?
@@Fs3i one does not need to be a genius programmer, to realize a voice-chat app without sound is ridiculous, which to be fair wasn't even really the fault of electron but discord stuck around on an outdated version, with sloppy custom patches.
Investing in native apps for Linux is almost always a bad business decision. Simply not enough potential users. I do not doubt that Discord wouldn't have come to Linux without technology like Electron.
it was probably 10x cheaper to build it using electron than golang. And discord is a successful app anyway
5:50 That's totally false. All of the good software I run on linux is native. I don't use slack and I use discord in the browser because it's an objectively better experience than the desktop app. The software I use the makes me money is native and cross platform and not written in javascript.
For example, right now I have kicad, alacritty, and neovim open. All cross platform and none written in js.
Does web discord have screen sharing and all that?
@@theseangle Yes of course.
The fact that I can still load sites with marquee and framesets on modern browsers, or that someone who hasn't learned any new js, css and html in 20 years can still build a functional website that can still be accessed, to me, is a huge power.
The fact that I can still load archived Geocities sites with no issues (unless they use proprietary stuff like Flash) is what makes the web beautiful.
5:50 It's you who are delusional if you think a few proprietary apps with half-broken desktop integration is "actual desktop software on Linux". I won't lie - that's better then nothing, but don't diminish hundreds if not thousands of applications written for Linux with GTK, KDE/QT, and whatever else.
I'm sorry, "nobody writes native apps for linux"? What about libreoffice? Gimp? Darktable? Blender? There's plenty of high quality software running natively on Linux.
Also yeah, the browser platform is nice in a vacuum, but to say that it's an objective good for users is huge cope. It's become the interoperability tower of babel. All we do these days is move around some data in a way thats completely opaque to users, nobody knows whats going on. W3C accessibility standards aren't even that all encompassing, and easy to game. It shouldn't take a genius to build a browser implementation from pieces, but it does, and electron/hybrid apps suffer from decades of feature creep and vendor lock in.
I'd say in terms of alternatives, no good engineer would be daft enough to propose an alternative to the web platform. Maybe taking the good parts and re arranging them into something more flexible would be a better idea, a less rigid ecosystem that better fits to the form of problems.
@sferavel I'm not saying web applications have objectively worse quality, but its foolish to say that other platforms have no place given the web's ubiquity. Plus, the web is not just the browser platform anyway, it was envisioned as a component of an interoperable hypermedia system, not just a JS sandbox with an http client and a DOM tree.
As for survivorship bias, there's plenty more multimedia apps you just don't hear a lot about because the web monoliths ate a lot of competition. Mpd is still around and loonix nerds love having their music library anywhere, ffmpeg is a must in video production. Its silly to think the web embodies any sense of "do easy" just because it's everywhere.
@sferavel Also consider the web itself is born of survivorship bias. There were other hypermedia systems before the internet, http, and afterward. The web won for the reasons Theo mentions, but mostly that it became the most well documented over time (thanks mozilla) However, just because something is everywhere and relatively easy to use doesn't make it an overall good thing, I really believe the web we've grown into has given us tunnel vision to what hypermedia can really do as an application platform
Yeah, but it takes real programmers to make those, not web devs.
@@levyroth that just sounds slanderous tbh, you think web devs can't be real programmers?
“The only reason there is actual desktop software on Linux is Electron”. Oh boy, is this really the hill you want to die on?
Yeah, that was silly, hyperbolic. Yes, some apps are only on Linux because of Electron, but there's also a ton of native apps too.
Especially when his idea of a thing "only possible becasue of web" is an irc client that destroyed the open standards and forces everyone to use their electron thing instead of interop with open standards in the same breath as claiming that web is great becasue open standards XD
He "defeats" the FUD by spreading more FUD. Truly a web developer moment
@sferavel linux desktop has a small user base, but it isn't THAT small. And personally, i am grateful for Electron on linux. But that doesn't mean I'm not critical too, nor does it mean theo was right about everything he said.
@sferavel also, get off your high horse. Linux is an open source project without massive corporate marketing behind it, and without a predatory profit model. Linux is BAD at some things (games. Mainly games), but linux is GREAT at others. Linux is free and accessible. Linux powers android. Linux can be installed on old decrepit hardware. Linux can be used in embedded environments. And it does quite well at office stuff. But it's not perfect. Neither is windows. And not everybody should be using linux. Mac is better for some folks. Windows is better for many folks.
Blow however does say similar things about game dev space, and he IS showing the work - dude is building his own language and his own engine. His side of the community is rather set on both not liking the web, as well as criticizing modern direction of game dev. Whatever his blind spots towards the web are, he is consistent and he puts large amounts of his time and money coming up with alternative solutions in his own space
That nobody uses, and he wants to keep it proprietary, as he thinks open source is a bad idea.
@@TigreXspalterLP he doesn't want to keep it proprietary. He said on multiple occasions he wants to make it open source once he is happy with its state. Nothing wrong with keeping it closed source while it's in early stages of development. There is also an invite only beta which I think has ~100 people in it by now
The real test will be the games he builds with the language/engine. You can build the most performant & robust game in the world, but if it doesn't enable the creation of a fun game (i.e. solves the "problem"), then it's a waste of time.
@@Vim_Tim indeed, which is why he mentioned that he wants to release his current game and the language close to each other, so that the language comes with the game as proof that it can be successfully used in large complex systems
20 million dollars of his own money if I remember correctly. Blow has put more into the future of game development than any of these rando youtubers.
In 2000 I walked away from the carpentry trade to build websites with just 1 site under my belt. Man, it's been such a fun ride, I'm now managing engineering teams and pulling outdated practices into the present. No university degree needed, I learnt everything I know by building websites. I wouldn't be where I am without the web!
+1 let's get you hired to a job
man the 2000s are wild man. nowadays with an engineering degree people can barely get internships. lmao
Figma is another modern example of the gmail pattern. Devs and designers immediately aligned on it because of how well it leverages the web platform (instant shareable updates etc). And they did it with WASM! Exciting times
figma is amazing product and I am talking about it from a web dev perspective. especially with new dev mode it made it so easy for developers who are not interested in design to just take what they need from it and continue working on code
Figma 2D renderer is built in C++ compiled to WASM.
Ive been project manager on some small apps for web, and mobile and for some of the apps we made a web version and an Android version using kotlin or flutter.
The reason we did this is because we where very convinced that native was a better user experience, and i will say no, no it wasnt for many of the ressons that Theo is mentioning.
It also aded no benifit, no better user experience, and only added complexity. Actually, in the end, from a user standpoint, i liked all the web versions better.
You and your enemies are both right, it's context dependent.
5:52: "The only reason there is actual desktop software on Linux is... Electron".
You must be trolling, no one is this detached from reality.
...
"The market will solve these problems"
Sorry... my mistake.
tell me you haven't used electron apps on linux without telling me you haven't used electron apps on linux
web gurus talk out of their mouth challenge (impossible)
Linux users should be happy electron exists, because nobody cares enough to learn how to build native apps for the most stingy 1% of users.
@@okie9025 why do you feel Linux users r stingy
Performance matters and people like Casey Muratori and Johnathan Blow talk about this often (see Casey's talk "Performance Excuses Debunked"). We as web developers often trade our convenience for a slower application stack, eg. js server side with tons of dependencies, large js bundles on client side. There are way more user hours put into a system than developer hours, but we constantly optimize for our "developer experience" vs how our users experience our applications. This is fine when there are no real users and your prototyping and trying to figure out what it is you want to build (even then I use would use low code, no code tools for this as much as possible). Once you know what it is you want maybe it's time to use a more performance focused stack (go, htmx, drogon, vely, alpine, etc) that would give your users a better experience.
i agreed with some of the points in the video. but,
the reason desktop apps in linux exists is because of electron?
maybe just hyperbole but come on 💀
it has improved the user experience greatly, and because of how easy it is to develop for everything altogether, Linux included
fair, i'm not denying that.
what i meant is that sure having discord, slack etc as a desktop app in linux is possible because of electron. But, the majority of desktop app in linux is still native.
Same here! I agree that people are to harsh on web dev technologies and tend to not look on the good effects it caused but to say that about linux and electron is just plain wrong!
The big advantage of Gmail is that it is free. That's it.
"You don't like living in a society, yet you live in one"
-Theo
I'd pick Flutter over Electron any day. But, that's just me :)
As a web dev, I'm all for a technology that re-invents browsers. A new client-server protocol actually designed for transferring ephemeral applications/documents without having to keep up with numerous DSL standards like HTML, CSS, JS.
But using dart you cant transfer that knowledge to anywhere else unlike tauri or react native
And what happens when the user clicks a link to your reinvented-browser app ? that's the problem.
@@edhahaz Uhh... I don't think you understand what I mean.
What do you mean by that? @@neofox2526
Personally I like it when people try to or actually successfully shit on web development, or any other kind of development and accompanying tools.
Mostly because it forces me to communicate a rebuttal. Which in turn requires me to think about whether they're actually correct or not.
Leaving me with more insight into what my development process and tools can or cannot do well.
Personally, I think that all of the development tools that were written in JavaScript were and still are a massive, massive mistake.
By which I mean stuff like Webpack, Parcel, Vite etc.
Everything that lives in the browser, and is not aimed at development related processes are a-okay with me. By which I mean, Electron, Stencil, React, Angular, etc.
The reason being that, you want your development process to facilitate fast iteration cycles each time you have to noticeably wait is too much.
The main benefit people state being: "Yes, but if it's JavaScript every JavaScript developer can contribute." is not enough, most people don't contribute to these types of tools.
So why create said tool in a language that does not perform at the level you need it to. There's a reason SWC and Esbuild exist.
And all of this can be solved if we go back to server side rendering only. I blame client-side ideology (and the move to cloud) for all the Web dev problems today.
@@levyroth I doubt that all of the problems we face can be solved server-side. A lot of them probably can, others you still need a client-side solution.
Afaic it's about balancing out the cost and the benefits and actually writing them down in an ADR rather than committing to a technology because it's fashionable.
@@levyroth Servers are expensive. It's cheaper to run one API backend server and host your frontend on a static CDN than to use templating engines or hacks like Next.js or similar frameworks use.
Honestly I think we should get rid of this idea of adhering to "web principles" and stop building "websites" and instead focus on building APPS. "The web" is not some sort of design paradigm or an idea to stick to, it's literally just an underlying technology.
Tsodings video was about learning how react works under the hood, which doesn't have good documentation.
Tsoding was wrong though. React docs show you how to simply import react into an HTML file and use it. It's not recommended and isn't the best way to "get started", but it's in the docs.
@@michaelfrieze No, he was not. Ironically the NextJS docs make a better job on explaining how react works under the hood, if they care about the devs they should giver a better explanation of what is going on under the hood and not simply calling it "magic".
He Theo I think you are definitely correct about some of what you said about J Blow, at the same time though try to understand some of his viewpoint. He sees an industry where what he terms "developer" wouldn't be able to write the backing code to display text because everything is so abstracted away.
He has no intention to do anything in web dev because he doesn't care about it, that is absolutely correct. It may just be a boomer take from him but he feels like the move fast and break things mentality is the underlying problem. Just like your point of "this breaks on large teams", his argument is you never needed the large team.
I understand completely that he definitely is missing some of the complexity of web dev. But he is coming from the perspective of someone who absolutely could build a modern web browser from scratch that performs better than what is currently available if he had the desire to do that, it's not a "your IQ is too low" but more a matter of "you could do better but nobody is".
J Blow is known to be abrasive and likely lacking in some social skills, don't let that be the thing that discredits his other points. A large portion of web dev could be simplified and modern "frameworks" like solidJS, HTMX and others are showing that. Even your example of Vite is showing that and you made that point. He is saying the same thing just in a significantly more rude manner.
stupid question: maybe i am not seeing the point or details yet but, if an electron app is a packaged website why not making that website a PWA(progressive web app). i know some features that might require some permissions that electron can get that pwa maybe not, but i am using MS Teams for quite a long time as a PWA and it works just great and i usually dont like to compliment MS but they showed that you dont really need native apps even for something as complex as a video meeting app with screen sharing and other advanced features. browsers got to a point now where they even can update a firmware of a device like some mouse and keyboard manufactures doing it now. If the progress continues Electron will die out eventually.
while I don't like Go, like, at all - I gotta put it out there that Wails is a pretty good alternative to Electron. Same premise as Electron, except that it uses the built-in WebView of a given OS rather than bundling chrome.
If you like Rust, you might like Tauri, which also uses the builtin web renderer
@@ethanchristensen7388 I feel like I am one of the 5 people who haven't tried Rust yet - also: one of the reasons I prefer electron over Wails is precisely because it *doesn't* use the OS web-view. Electron is the one space where I don't have to be worry about cross-browser crap.
What’s your opinion about tauri? Its similar to electron but built in rust and it uses the operating systems rendering engine instead of chromium
Would love an analysis and comparisonof the two
@@anthonysessa same!
As an Avalonia fan who puts the user experience first, I have to disagree that there are no good native cross - platform solutions that can also target the web out there.
This was a very interesting take, I was in the camp of Electron and web tech was unnecessarily complicated + wasteful and only made the dev experience better.
I am a web developer before anyone asks. though I do tinker with lo- level programming as one does.
I did see the merits of not installing apps and writing code once that runs anywhere, after this video I seem them more clearly than before + the lack of alternative ways to do the same
Complaining about JS is for those who can afford to. I can create and maintain applications twice as fast with web languages, and web based solutions are often what my clients want. They don't care about perfect code nor perfect performance. They want a product for a reasonable price in a reasonable time and easily accessible to everyone with a screen, who can blame them. And web languages, including JS, can deliver. That's why you only hear programmers shit on web dev, but rarely (if ever) clients.
The only compain I have is that everyone says they can do web dev. Yet we still see so many amateuristic web applications everywhere, so clearly alot of them are lying.
The problem with the "web dev is good" argument is that all of the good parts have very little to do with web devs now and everything to do with the people that built the REAL web (HTTP, browser engines, etc) and nothing to do with the latest JS or cloud bullshit. So it's fake tech gurus taking credit for the work of engineers that actually understood the tradeoffs they were making, and instead of proceeding rationally throwing all of that out the window to make their own developer lives .1% easier, instead of just doing their job.
I learned programming in college and work using PL/I, Fortran, Pascal, and SAS on an IBM mainframe and DEC VAX computers. I didn't like web apps at first. The UI's you could make were primitive. Today's development tools are frigging awesome.
I lived the times of IE6 and its 'compatibility' with browsers... this is paradise in comparison :D
PTSD.
This is no joke. Write something to spec. Works in firefox, works in chrome. Busted in IE. Also the IE dev tools were all crap so it was hard to figure out why it broke. Today, you barely have to even test in multiple browsers.
@@CaptRespect Yep... having a CSS sheet only for IE6, with which all looked ugly and just functional, but restricted functionality :D. And tons of JS wouldn't render or cause conflicts of all kinds. But Actually, if I remember well, IE 5 and 5.5 was even worse. And yet, not even close to the pain of handling the companies' newsletters to work in Outlook's (the software) "HTML" (and CSS if feeling brave) back in the days, plus those fixes still working not wrecking all in other apps and browsers, as couldn't use a lot of hacks there like with IE6. In general, I remember having to load the sites (remotely) in not only all the browsers, but all OSes and browsers combinations with every tiny change, as the standards implementation in general were pretty bad compared to today. BUT IE5 - 6 had the "crown".
There is ripcord, which is some random dudes remake of a slack+discord client.
It hasn't gotten an update since 2021 sadly.
I completely agree with your take on Electron. I completely get the hate it gets, but in my opinion it's a clear case of perfect being the enemy of good; yes, these apps would be faster if they were actually native. But in that case, most of these apps wouldnt even exist, because itd take too much work to build them for all different platforms and keep all versions synced.
the arguments aren't mostly for native solutions, but for solutions using other technology like tauri, wails ...
Most Electron apps are plenty fast enough for me. I feel like the only problem with it is its resource consumption.
@@astral6749 I would argue you are right for the vast majority of cases, but in the cases where electron is popular like a text editor or a messenger client with a lot of features I believe tauri would be a great fit.
I understand the point, but this kind of argument where you can't expose how something sucks unless you make it better is just a bad take.
Ironically the same kind of rhetoric the "dinosaur devs" Theo jabs at are doing, so they both lose
Electron is quite a kludge. Using page-layout and web technologies to build cross-platform apps. In theory you could build a superior cross-platform native application framework, by removing the technical debt of HTML. Except no-one has achieved that. And Flash and Java applets were never that great either. So Electron seems to be the least bad option.
Qt? It's not a toy like electron, it is cross platform, it doesn't require Java or .net.
@@philippebarillecavalier9275 Yeah maybe, but it always seems quite arcane, and like it doesn't actually behave consistently and reliably across platforms.
Maybe people just employ it badly.
would love to hear take of prime on this, i m ambivalent on this
I would love to see a panel discussion/debate with Prime, Theo and Jblow. Maybe even throw in that teesodin guy lol
prime is a web dev who shits on web dev because he knows his audience
@@billgrant7262 I'm just gonna ignore the fact that you think you can read his mind and say that if you're including backend as part of web dev then yes he's a web dev. Yes, he's occasionally done front end stuff at Netflix but it's not very often and mainly back end from what I can tell. It seems like the reason he shits on web dev is mainly because he likes to shit on javascript
@@shinoobie1549 no way does Jblow have patience for a discussion with anyone younger than him though
@@shinoobie1549 holy shit _yes_
browsers and javascript are *NOT* slow
your code is
people before the whole webdev and framework fad, wrote stuff with all the possible optimizations, and could make very well performing (though not "pretty-looking") apps in the old days, the problem is that very few people actually optimize for performance, or compatibility, nobody checks if the fancy feature actually has to end up calling 5 other javascript functions, and would be faster to call 3 of those functions directly, and avoid calling 2 + wrapper, or using the absolute least amount of loops and stuff like that...
it's same as native dev...
pradoxically, computers get faster and faster, but programs get slower and slower....because less and less people care to UNDERSTAND performance...
also
I'm strongly of the opinion that web-apps and web documents should NOT use same tech stack...web was made for documents, web-apps would work way better using other tech instead of having to deal with DOM and CSS, all the while making it impossible to make a new browser, because either you support everything ever made, or you support nothing...
We're dinosaurs 😢
genuine question as a newbie. Why *isn't* there an industry standard wysiwyg editor for frontend? I used Dreamweaver waaay back in the day, and I find it interesting the baby appears to have been thrown out with the bathwater.
because it's not possible to make such a thing
"We make mistakes like Web Components" is crazy. WC are a step in the right direction, which is abolishing frameworks and allowing native components compiled by the browser to get better performance, which in the future will be natively SSR'd thanks to Declarative Shadow DOM. I like to look at React and NextJS as the precursor to a future where web development is way less framework-centric and more relying on the browser engine and it's web standards.
Couldn't agree more, I think this video is great other than web components L take. It added the last bit of encapsulation we needed to make good, repeatable UI. Been working in web components for years and they just work, they allow me to opt into JS and ship semantic HMTL.
@@popcorn245 have fun using tailwind / css frameworks / just creating basic forms with web components. I don't know wtf were they smoking to do such a bad API.
True. I’m a web dev and I hate all those frameworks, unnecessary complexity. Imagine if we had reactivity and components directly
@@klirmio21 I generally agree, think that JSX being part of spec would make things a little easier, especially with its almost ubiquitous adoption in all modern JS frameworks. But that being said, template literals with syntax highlighting aren't terrible by any means and you add one render() method to your components that sets innerHTML and you're off to the races. ShadowDOM is often complained about, but it's opt-in and not required, though super handy in cases you don't control what styles are passed to the document. Astro + Web Components has been a complete game changer, I get to wrap things in web components, only when I need JS, and it encapsulates functionality. This means I am able to keep search engines happy and performance metrics high.
The problem is we are using frameworks made for SPA to build the whole freaking company website which becomes very complex and extremely hard to maintain.
No it's not. Modern frontend frameworks make it very easy to maintain, that's the point.
@@QueeeeenZ We called them Single Page Application because they are meant for small applications. React itself is a library not a framework which is why you need to add so many other libraries to make it usable at the same time making it more complex and messy.
@@m-ok-6379 it's not complex if you know what you're doing. Modern frontend frameworks make it a joy to work with.
@@QueeeeenZ I literally work with frontend frameworks every day. Here is my 20 year career experience Designer -> Flash -> jQuery -> ExtJs -> Backbone -> AngularJs -> React -> Vue -> Nuxt -> Next
@@m-ok-6379 progress and improvement happens everywhere not only frontend. You could say the same about backend or game dev.
I ran Arduino 2 IDE written in electron, derived from VSCode. It was using 700 mb of RAM just for showing in screen. JS for desktop apps is bad idea. 👎🤬 Software developer have forgotten optimisation, they think everyone should just get 16gb of ram rather then they making native apps.
There are exceptions of electron usage on linux - Telegram, ripcord, so it's possible to build native apps, which have any resemble of success.
Other than that - I can agree :)
Absolutely it's possible. However was the point not that it's not possible, only that it wasn't being done?
@@ruaidhrilumsden but the thing is, it's both possible and already done. QT has pushed forward a lot in terms of cross-platform usability. Plus, you're not forced to C++, and you can use Qt on Embedded devices. :)
I mostly agree with him as his point is coming from a business perspective, which makes sense. But I wonder if the economic feasibility of React/Electron is mostly only because of its popularity. What if QT which isn't built on the cumulation of open-standards (it may be open-source itself but idts it's a cumulation of many such standards) also became that popular. Would suddenly QT now be more economically feasible?
Before you get into arguments like this you should always remember that your users don't give a sh*t about any of this. They want something that works and gets the job done.
JavaScript and web development are in a bad spot tbh. Dart is so much better and folks should've jumped to it (invented by the folks who made JS viable).
The folks who made Dart are the ones who made Gmail possible with v8. They recognized the looming failures of JS and tried to warn us. Sad to see their heroic JS work held up as a reason to defend JS.
JS has been a stain every since that bigot shit it out
I think you should get into native UI development and some more low level programming to better understand where Tsoding and JBlow are coming from.
Exactly.
He's not that smart 😅
The idea of a universal platform that allows GUI apps to run on basically everything with a single code base and be easily deployed and updated is certainly very powerful, but I think that the web is pretty far from the optimal way to do that, at least in theory (with JS being the pretty clear weak link, IMO). The issue is, since the web is by far the most popular option, it's difficult to introduce alternatives (even when the alternatives would be better). Kind of like how OOP is so dominant despite being in a lot of ways a bad paradigm.
I can use discord on Linux Mac or windows. I don’t even need to install it, I can use all of its features directly in the browser. Isn’t that awesome?
@@klirmio21 not when it eats half my ram.
tldr: apple fanboy doesn't know about linux
I might be wrong, but Java was added to JavaScript because Java was popular back then. And a regular dev would see Java and decide to use it.
I think this was the case, IIRC the original name for the language was Mocha, but the higherups demanded something more Java-related to capitalise on its popularity. Fast forward to today, HR still messes up between the two.
What's more ironic is that "JavaScript" is an Oracle's trademark
I just love that I live in a world where I can hear Theo's opinion and Jonathan Blow's opinion and find the good in both
Honestly, i just think Jonathan Blow is such an egotistical jerk that i have no interest in his opinion. I'm also getting annoyed with Theo lately bc he makes everything seem SO serious and SO heavy when mostly it's all bike shedding.
You don't become popular in content creation by having calmly discussed common takes and a small personality. Comes with the territory. Theo is also very confidently wrong sometimes, but he does generally admit it and call it out. If you don't enjoy the content, it's not hurting anyone to pass it up, I just find it interesting and a good start to creative/critical thinking@@reed6514
I can't tell how good Jonathan Blow is, but is prime example of C/C++ developer with massive superiority complex.
I feel its quite intelectually dishonest just trashtalking anythig related to web development or JS while its the way choosen by users as the best way to go. And there are web developer writing code literally for milions users while he is reinventing 40 years old Sokoban. As Theo pointed, he is not the guy who cares about end product, he just want to feel good making it.
@@tymak_cz "he is not the guy who cares about end product..." -- having played his games and seeing how serious he takes his JAI compiler, it's incredibly hard to believe this.
@@tymak_cz i do agree he can seem egotistical, but i think that's more a result of cynicism than anything else. but as for his skill; i think it's undeniable. it isn't just sokoban, it's sokoban written in a custom game engine, written in a custom programming language. say what you want about the validity of doing that, he is unmistakeably talented.
i don't agree with everything he says, to be clear, but i think he deserves a lot more respect than people here seem to be willing to give him.
Viable alternatives to Electron are:
Tauri (Rust backend to default OS browser) - not yet suitable for brand-new web features, because it means Safari on Mac and Gecko-ish on Linux, so none of the WebGPU stuff will work, none of the newer real-time data stuff will work... until all vendors catch up with the standards. The general benefit is instead of shipping a 500MB install of a new Chrome browser, you're shipping a 20MB package that uses your OS's browser, instead.
Deno: Bring Your Own Window WebGPU - allows you to use SDL2 or any other "native" render surface to essentially run Deno as your client code, with a native cross-platform app window. The problem here is that it's harder to keep the "client-side" codebase separate from Deno behind it, and SDL2 (or whatever surface you chose) in front of it. That's not an issue if you just want to make a desktop app. It is an issue if you also want the code, or as much of it as possible, to run on a webpage.
I respect Jonathan Blow and Tsoding. They are great programmers. However, they seem very pessimistic about the future of software. I do not think its all bad. If I had to give advice to new programmers it would be that whatever you do, web, embedded, games, .etc, try to spent some time learning the fundamentals before jumping to a big framework. Focus on long-term knowledge, be open-minded and always be skeptical about new shinny objects
Web devs are not programmers. Not really.
@@levyroth I'm starting to think like this. It's hard not to be pessimistic, but if you take away their frameworks, web devs know nothing. Jr devs nowadays even start with React before knowing JS and HTML
@@spectr__100% agreed
@@spectr__ the bar for modern software engineers are getting lower and lower as time pass.
@@spectr__ You have it entirely backwards. It's easy to be pessimistic, lazy even. And mind you
This is coming from someone that had to actively tone down their cynicism and snark
What do you guys think of Elm. (Please also mention if you have worked with it on a production level project or not).
I love it, but getting buy in from others is hard.
We have one particular part written in Elm, all of it by me. No one else want to touch it.
I don't know why, the app works flawlessly and is delightful to work with.
I started with Web 1.0; C++ and Java on CGI. That came tumbling down with the Dot Com crash. From the ashes Web 2.0 was born; where Servers render web pages, and connect to SQL databases. I would say a lot of companies are still in Web 2.0 stage, Wordpress is a perfect example of this. Web 2.0 is fusterating, slow and overly complicated. I would argue that we are now graduating to Web 3.0 with Single Page Apps, Asyncronis Micro Web Services, and NoSQL data, and queues. Google is certanly leading the charge in Web 3.0. My favorite Web Stack today is Docker Compose, Python Fast API, Vue.Js, and MongoDb, with Nginx tying things together. Sounds complicated, but it is incredibly effective.
I'm personally on the team Quality over Quantity, while yes web is "good enough", unfortunately good enough is all to often the enemy of good. But (except for safety critical systems) that's just personal preference.
I think that's a missunderstanding, there are great web apps, the limit is on you we can always push the web and do awesome things.
@@neociber24 it's a generalization ofc, and i'm not saying there cant't be awesom things regardless, but like theo said javasript sitcking round how it is and with duct tape on bandages on crutches, instead of being properly replaced or remade.
@@neociber24 Or just imagine proper web assembly with the same access as JS opening it up Completely to the other amazing ecosystems that already exist.
The problem is it's not good enough anymore. Just chaos and js frameworks.
C#, a language often praised for being the best-designed language currently in popular use, follows the "good enough" pragmatic approach.
The reason why C# doesn't have checked exceptions? They suck for developers. Pretty simple.
Even though checked exceptions make static analysis possible and could avoid developers from making mistakes, it has been shown that this is simply too cumbersome for developers. Focusing on the programming language itself instead of the product is a problem, and there is a thing as a "too perfect" language.
Languages like Rust are fine if you are coding for your own satisfaction, but people forget than programming is not only a hobby and that focusing on the end product is more important than focusing on how fast your iteration over a list with
I used to hate web dev, writing UIs in PHP with tables of floats was so awful... The changing point for me was flexbox and React, after that it was smooth sailing
Lol so true
Jonathan Blow vs. Theo. This what I'm here for.
Yea! I’m glad someone said it!
@@johnj3845 So far as I know JB won the first round even while being an inanimate sprite taking punches without being able to comment.
Market will solve the issue used to be true, but its not that simple now... Prime's take that JBlow may have been right that software is in decline but that its critical to consider the increased hardware/system scope that software needs to work in has blown way out in the same time... After all the ship it once mentality of previous software dev years also didn't have to compete in a landscape of Win10 vs Win11 vs iPhone15 vs iPhone10 vs Samsung S59 vs Fairphone 4 vs Linux box vs. Apple Watch vs. Chromebooks...
I still hate that so many of the apps I use are janky but sometimes you need to step back and consider that I used to hold my cd-walkman steady to avoid skipping...
Only because you couldn't afford the good CD players with antiskip technology. Been there, done that.
"The only reason there's actual desktop software on Linux is Electron" @5:53 ... not even remotely true.
There is another side to the webification of software though, and that is that every company is evil and software as a service is a horrendous model. Before, you owned your software, you were able to buy a copy, and have it forever. Nowadays you have to pay every month to use stuff like Word, Excel and Photoshop and if the companies decide the product is no more useful to them, they can drop it and all your content on that file format will be lost forever. Having all your creative stuff lock by a recurrent paywall that and hanging by the whim of some corporative jerks is a horrible things, and when it comes to games it is even worst.
Good point. Speaking of your game dev point. Blizzard cancelled their new survival game. I have devs that were working on it. And they said a large portion of the headache was they were trying to build their own engine and it was a nightmare.
Factual error: Gmail is a terrible interface and complete garbage.
The only reason Gmail was popular in the very early days was because they were giving a shit ton of storage for free and added even Mor every day. It was a PR stunt in a time when people maybe sent 10 emails per week.
Far from perfect is actually true:
After watching the video i was convinced that electron would be a good choice. But i had to stop my project, because i was not able to render a single SVG file. Nothing i have searched for has been working. I am not asking for help here, because this is the wrong place to do so. I just wanted to leave my opinion, that webdev is still a very complicated stuff to get working. You need tons of config files, whit content you don't understand, if you don't study the docs of several frameworks beforehand. Also most examples out there are either outdated or don't work at all (anymore).
But..., when you have a working project, it can be nice. Before that: Hell is here my friend.
Usually when developers dont care about performance, they dont care about how their code looks like, either...
I find it sounds a bit weird 2:18 . Because it's good enough we've been able to build an incredible world on top of it. Maybe I don't need the INCREDIBLE WORLD on top of something. Maybe I need this something itself :) The issue with JS fatigue is that there is a water, and there is a turtle swimming, and elephants on top of that turtle, and then finally the land on top of those elephants. I agree that JS complexity can solve complex UI problems because UI is complicated itself. But, not all the apps need it. There is the growing need and growing want of good old MVC with templates solutions, that are just good enough, very cost effective, battle tested. Add HTMX to it and that's it. It's good enough. Rails with Hotwire, Laravel with Livewire, Phoenix with Liveview. I just want MVC like this become a default once again, and SPA is a second thought.
Yes, less is more. And we already have too many social media apps.
Wait, what are these more performant and cost effective solutions you are talking about?
How can servers be more cost effective when rendering on the client is free?
How can rendering on the server be more performant when your average web server is 4 times slower than the average consumer device? Adding network connection to the equation doesn’t help either.
Ive started web dev with Flash and Action Script 15 years ago. I remember the ColdFusion days. What you are saying makes no sense what so ever.
MVC is not a solution, RoR is not a solution. If you need a SEO website just use any CMS, set it up in 2 hours, give it to your marketing team. What is that mythical problem you are trying to solve with MVC and RoR that haven’t been solved? Are you building a social media or streaming platform? The most popular social media apps are built on react by some of the most talented people… wtf
Python and C++ definitely have improved tooling to make them as useful as JS.
I remember the day when create-react-app was stable and became available. I was over the moon! Why? Because setting up a project without it was a monumental pain in the ass. Constantly tinkering with Webpack was almost akin to opening up a car's engine.
To this day, I'm happy for the wizard apps that allow us to start up a project.
I wrote my first programs with pen on paper before even touching a computer. Stop complaining.
@@levyroth oh yeah? Well..... Nice hair!
To be fair, I'm a web dev for over 10 years and I love the tech and being up to date. But the time I can build a website nowadays with the tools available is insanely fast compared to years ago. I love the current state of web dev and excited for whats next
I'm a grumpy, old school web dev - LAMP stack, Perl/CGI, Bash scripts, CMSes for content, etc. - and I don't care for the front-end first, ridiculously mutating stack approach to web development.
With that said, your points are cogent enough to make me rethink everything and move my cheese. Thx for your thoughts.
I dislike when people complain about X but never provide an alternative or the alternative is just inferior.
I really had never see elistism on programming before those tweets, is so weird for me.
The main problem is JavaScript not standardized tools. If web dev was built around a type safe, consistent language it would have been infinitely better
I wish we could really start to move towards the web 3.0, and have browsers support legacy HTML/JS/CSS in the meanwhile as a kind of hybrid system.
Tscode is someone who writes neural networks libraries live on stream or for fun a Jit for Brainf&uck. From content view there is not many who can surpass him ^^
I also see React only do far from outside but the more I know the more I would rather program a rocket flying to the moon with passengers on board. Its reminds me on JEE in its prime guest tutor : We stacked 3 frameworks one each other, we solved web development, it was never this good . Yeah I make twice as much as the other devs but who cares there aren't many who can become JEE devs "
Alternative to what exactly?
The problem with JS is the same as the problem with PHP: it was intended to achieve a simple task. But the market said “nah, we want an entire programming language”. And it’s had to make a messy pivot to what the market wants.
Nobody has a problem with Standardizing and being cross platform. My problem with JS is that:
1. It doesn't tell you if there's a syntax error, semantic error, redefined functions, .. etc. You just have to run it and find out. It's not by any means a safe language. There's a lot of quiet undefined behaviors that you won't notice. It could have been a strong typed semi-compiled language and still be cross platform. I have a much better experience developing in C++ because the IDE can always auto complete and navigate for me. I can write object dot and I see a drop down menu with the methods in this class. And that's only possible with strong typing. Also I can avoid many problems because they'll be caught at compile time.
2. It's always a little bit behind native desktop applications. I have spent sometime trying to make an audio recording feature in a webapp. I couldn't even get the sample rate and sample format information because the API didn't support it. Also I cannot use the full OpenGL features. WebGL is a bit behind. Not to mention that I cannot use CUDA.
There are other complaints about incompetent devs who write slow apps. But that's in every industry and not exclusive to web. It's just that some industries are more picky than others for safety and reliability. So that's why it's more seen in web.
Yeah, relying on the abstractions we've created for ourselves (e.g. browsers, electron, and pre-made game engines) makes it easier to develop things. However, these abstractions are far from perfect, which leads us to create additional layers of abstractions to address their issues. It would be better if we got more used to working at a lower level, and fixed the root cause of the issues. Unfortunately, because we have gotten dependent on these abstractions, fewer people are able or unwilling to make stuff from scratch, or at least do it at a lower level within the tower of abstractions we have built for ourselves.
People are constantly trying to solve this abstractions. The problem is that their solution is always worse and that's why it isn't adopted.
It's not that they are unwilling. It's that for a lot of problems, the browser/electron/whatever thing is good enough, and keeps getting better. I've previously worked on android and ios native apps, that ran like crap on old phonegap software. But I wouldn't hesitate to try some of the new cross platform frameworks today..
The core problem is they try to dynamical load more in over time. I mean webpages became webapps but unlike any other apps which are static in nature and where you have completely loaded it down on you PC . They try to load it dynamically piece by piece on use cases. A normal app devs starts to scream a this xD At least this the problem for Web or Server Components. When you talking about low level stuff the problem is they don't want to deal with it PyTorch in Python is hyped but its so slow while the C++ Frontend is at least 20x faster. Basically they choose the wrong tool for the job . I felt Theo went really defensiv in this video maybe because the numbers seems to suggest things go away from JS and React but honestly I couldn't find a React job if I want to here in Europe (at least not fast) . Because of legacy stuff there are a lot of PHP servers and the cloud never made sense for most companies and others using Golang + HTMX (and somewhere there are also some Tomcats I think ).
@@CaptRespect Are you talking about MAUI ?
@@Fiercesoulking no PhoneGap, renamed to Cordova, then bought and discontinued by Adobe
Guys, is this a qualifier to a copium championship?
Has this guy ever worked in a company?