16 ms·
WebAssembly Studio
- tomasreimers 6y agoJokes about the [Birth and Death of JavaScript](https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript https://www.destroyallsoftware.com/talks/the-birth-and-death...) aside, I love the concept of WASM and that we're making the web a more robust compile target. One of the big limitations in my mind is that I still don't know of that many people using it in production at scale. Is there a list, or well known set of examples (other than Figma), who are using WASM in prod?
- colesantiago 6y agoShopify is using WASM in production [0] [0] https://shopify.engineering/shopify-webassembly https://shopify.engineering/shopify-webassembly
- pjmlp 6y agoAutodesk. https://www.infoq.com/presentations/autocad-webassembly/ https://www.infoq.com/presentations/autocad-webassembly/ https://blogs.autodesk.com/autocad/autocad-web-app-google-io-2018/ https://blogs.autodesk.com/autocad/autocad-web-app-google-io... https://forge.autodesk.com/blog/load-encrypted-model-data-webassembly-and-rust https://forge.autodesk.com/blog/load-encrypted-model-data-we... BabylonJS plugins https://babylonjs.medium.com/marker-tracking-in-babylon-js-ce99490be1dd https://babylonjs.medium.com/marker-tracking-in-babylon-js-c... Blazor https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor https://dotnet.microsoft.com/apps/aspnet/web-apps/blazor Uno https://platform.uno/ https://platform.uno/
- Yuioup 6y agoThe 90s called. They want their RAD tools back.
- paulgb 6y agoLet’s get them on the phone and negotiate a joint-custody deal, then, because I feel like RAD has only gone downhill since then. Thinking back to how easy it is to open up VB5, drag-and-drop a UI, and ship an .exe that anyone could run (yes, because of MS’s OS monopoly, but still), the current mess required to build a similarly complex app for the web feels like a serious regression.
- tomphoolery 6y agowhat about https://www.animaapp.com/ https://www.animaapp.com/ ?
- sbarre 6y agoHi 90s, this is 2020... OP can't take your call right now because they are busy building low-code environments to help companies keep their dozens of bootcamp hires productively building in-house line-of-business tools that will be a nightmare of maintenance and technical debt in 3 years. Did you want to leave a message? Perhaps some kind of cautionary tale?
- arconis987 6y agoFigma is written in C++, compiled to WebAssembly. Probably the most advanced web-based design tool in the world. I think they have like 4-5M users, and a $2B valuation. https://madewithwebassembly.com/showcase/figma/ https://madewithwebassembly.com/showcase/figma/
- stopyellingatme 6y agoFigma is an actual tool, written for the web. Lots of great engineering happening over there.
- suprfsat 6y agoGoogle Duo's web client has some wasm code cached under the name 'wasm-clips'.
- texodus 6y agoPerspective is developed at JPMorgan https://github.com/finos/perspective/ https://github.com/finos/perspective/
- deleted 6y ago[deleted]
- kowsheek 6y agoWe release a web-based ray tracer built with WASM that's integrated into our existing 3D/AR/VR platform: https://twitter.com/ksqio/status/1334962197324320768?s=20 https://twitter.com/ksqio/status/1334962197324320768?s=20
- brundolf 6y agoThe problem is that it's hard to use as a primary language because of a lack of direct Web API access. So basically right now it's not a casual decision to say "I prefer X over JS, so I'll just use that instead because it targets WASM!" Because there's this enormous cost of crossing that API barrier (which means you'll be using some JS regardless, directly or indirectly). So for now the value-proposition only really makes sense for a fairly narrow subset of projects: mostly ones where client-side pure-compute is a bottleneck. Theoretically API access is being worked on, but I think it's still a ways out.
- postalrat 6y agoDirect access seems improbable and even undesirable. Libraries can be written and shared to expose what you want to the wasm you need to run.
- brundolf 6y agoLots of people would like the web to become a language-agnostic platform. I don't hate JS the way some do, but even I'd be excited about that prospect. That can never really happen until WASM has direct API access. That said, I tried just now to find where I read that this was on the long-term roadmap and I'm having trouble finding it. So maybe you're right that it isn't currently planned.
- dboreham 6y agoI'm also intrigued by the possibilities of WebAssembly. However I also have a nagging feeling "didn't we already do this with Java, 20 years ago?". Wondering what's different this time, or is this just a MySpace vs Facebook second-times-the-charm thing.
- TheRealPomax 6y agoFor one, no one needs to install WASM, nor are they going to run into versioning issues because the OS has a hard dependency on it. Every single person with a computer, from a smart phone to render farm workstations, will have WASM support because those devices will have a browser. The only browser that doesn't support it is the legacy IE line of browsers, of which only 11 is still supported, and which only runs on systems that will happily run Edge, instead. Devs can rely on the fact that users won't need to install a single thing, and users can rely on the fact that they're not going to have to go through the insanity that is "trying to install the right version of Boobletech(tm) Meep(r)" or, hell: "trying to get their OS to even acknowledge that the preinstalled version of java is over a decade old and it needs to stop using it instead of the new version you installed". If your compiler can target WebAssembly, and your users are on computers with operating systems that are still supported, your WASM application will work for them, because everyone has a browser.
- worik 6y agoUnless your user is using a iPhone.
- austincummings 6y agoSafari has support for WebAssembly.
- TheRealPomax 6y agoNot unless your iphone is a hand-me-down from someone who themselves got it as a hand-me-down? https://caniuse.com/?search=wasm https://caniuse.com/?search=wasm
- 6y ago
- austincummings 6y agoTwitch also appears to be using it, although I don't know what for.
- jayflux 6y agoI know the Birth and death of JS gets mentioned quite a lot in WASM context (even as a joke) but I really don't see that being the case. Most web applications/sites are simple, and won't need to be compiled at a lower level in order to work. On average JS developers will be cheaper than C/C++/Rust developers to hire, so I don't see shops changing their personnel or stack anytime soon, especially if the job is to knock up a website that's a bit interactive. It simply won't be viable to have low-level engineers do things like "build a dropdown nav" or "make an interactive carousel", and these sort of tasks will always be around. WASM is there to augment JS in places JS isn't suitable for, rather than outright replace it. JS will definitely still exist. To answer your Q there's also a comprehensive list of projects using Web Assembly on this site: https://madewithwebassembly.com/all-projects https://madewithwebassembly.com/all-projects
- echeese 6y agoGoogle Earth: https://earth.google.com/web/ https://earth.google.com/web/
- zo1 6y agoSide note: Does anyone know why that video isn't on Youtube? I've tried to find it, but alas I can't. Copyright? Moral reasons? What? https://www.youtube.com/results?search_query=gary+bernhardt+birth+and+death+of+javascript https://www.youtube.com/results?search_query=gary+bernhardt+...
- konaraddi 6y agoAdditional examples of WebAssembly being used at scale that I haven't seen others mention yet: Microsoft - https://www.microsoft.com/en-us/garage/wall-of-fame/calc-ts-in-excel-for-the-web/ https://www.microsoft.com/en-us/garage/wall-of-fame/calc-ts-... Adobe - https://medium.com/adobetech/acrobat-on-the-web-powered-by-webassembly-782385e4947e https://medium.com/adobetech/acrobat-on-the-web-powered-by-w... Fastly - https://www.fastly.com/blog/announcing-lucet-fastly-native-webassembly-compiler-runtime https://www.fastly.com/blog/announcing-lucet-fastly-native-w...
- maxgraey 6y agoThere site which aggregate prod use cases: https://madewithwebassembly.com/ https://madewithwebassembly.com/
- maxgraey 6y agoRuffle - A Flash Player emulator over WebAssembly: https://github.com/ruffle-rs/ruffle https://github.com/ruffle-rs/ruffle
- TazeTSchnitzel 6y agoUnity, the very popular 3D game engine, can “export” games to run in the browser. WebAssembly is undoubtedly involved.
- bavell 6y agoSeeing gulp being used in the examples for the build step is strange... I wonder why it was chosen. Nothing wrong with it per se but gives me flashbacks to the horrors of my past exposure to it as an inexperienced webdev.
- k__ 6y agoI only did one Gulp project and read it was a drastic improvement over Grunt, which I didn't use. But most of my projects were done with Webpack and NPM scripts.
- bavell 6y agoAs much as people bemoan the complexity of Webpack, it's far superior to the (IMO) spaghetti code of gulp that inevitably results. I'll choose Webpack and npm scripts every time.
- k__ 6y agoToday, I would probably choose something higher level than meddling around with Webpack directly.
- bavell 6y agoFor smaller projects I agree. For larger projects, it's worth spending an hour or two on a custom Webpack config tuned to the project's needs IMO. In most cases it doesn't even take nearly that long.
- hombre_fatal 6y agoCheck out https://parceljs.org/ https://parceljs.org/. It's how I start every project. I can always move to Webpack if I need more customization and complexity.
- k__ 6y agoI was thinking about more integrated solutions like Next.js or Expo.
- pjmlp 6y agoI find it a nice experience, but as far as I am aware it is pretty much dead, the website just happens to keep running.
- Kyro38 6y agoYep, it's not actively developed : https://github.com/wasdk/WebAssemblyStudio/commits/master https://github.com/wasdk/WebAssemblyStudio/commits/master
- chrisweekly 6y agoBummer. Seemed like a decent tool, too. :/
- mwcampbell 6y agoThe "Create New Project" dialog has serious accessibility problems when used with a screen reader. The buttons are clickable divs, not actual HTML buttons or even marked up with proper ARIA. I haven't yet ventured any further into the app. Given that the app is a WebAssembly development environment, my first guess was that it was built in WebAssembly itself, with a custom UI framework. But in fact, it's plain React, using its own home-grown components for basic things like buttons. It breaks my heart that when this project was started in 2017, some 20 years after web accessibility advocacy had started in earnest, the developer was still uninformed enough about accessibility that they would create a custom button component with no ARIA support. I suppose we could also blame the web platform for making it hard enough to customize the look of a standard button that the developer would reach for the div tag. What do we do about this?
- CyberDildonics 6y agoThere is a github link at he top right, you could start there.
- mwcampbell 6y agoI was talking about the general problem of new inaccessible apps being developed, not this specific project.
- skrebbel 6y agoWhat do you think is a good starting point for developers who want to get better at this? For example, do you know of a good way for developers with no disabilities to get an impression of how a site works in various screen readers?
- spicybright 6y agoThe accessibility mode in the firefox debugger is a good start.
- blunte 6y agoIt would be nice if there was a no-javascript fallback - at least a message saying "This site only works with javascript enabled." If you have noscript, this site is completely blank until you enable a couple of things and reload.
- CyberDildonics 6y agoYou thought a web page webasm ide would work without javascript?
- mrspeaker 6y agoHow would you know it was a webasm IDE if it's just a blank page? (I thought it was going to be a music DAW when I clicked the link)
- CyberDildonics 6y agoThe url is webassembly.studio and the title is WebAssembly Studio
- Shared404 6y agoI thought it was going to be an article about a tool, not a tool itself. I figured it out, but would've appreciated a "This only works with JS" note.
- Dylan16807 6y agoEven if you correctly pick up on the implications of "studio", it could also be a page about WebAssembly Studio or the page where you download it.
- blunte 6y agoNo, but NoScript approaches each new site with javascript disabled. You have to manually allow it after you arrive. But when you arrive to a completely blank content area, you may be left wondering if the page simply hasn't completed loading. Obviously once I realize it has loaded, but it's blank, I assume it's because it requires javascript. So I enable it and reload, and it works as expected.
- taivare 6y agoAnyone have a guess as to when WebAssembly will be able to directly access the DOM?
- city41 6y agoThis is the proposal tracking this: https://github.com/WebAssembly/proposals/issues/16 https://github.com/WebAssembly/proposals/issues/16 No recent updates unfortunately.
- Jasper_ 6y agoDespite all the hype, I don't think this will ever realistically happen. interface-types is (supposedly) here but it can't really hold onto DOM objects, it can only reference them, and nobody has made DOM bindings for interface-types yet. GC is an extraordinarily hard problem, and they've talked about scoping out "mini-mini-MVPs" for about a year now, with basically no progress. I wrote an essay about this a few years ago but never decided to publish it because I felt it was too harsh, but I think it gives a better overview of the challenges involved: https://gist.github.com/magcius/8959ca1f5bbde4bd66b98b6d5dc73112 https://gist.github.com/magcius/8959ca1f5bbde4bd66b98b6d5dc7...
- pjmlp 6y agoEven if it doesn't happen, at very least it won't be much different from what Google forces upon native devs on Android. However given the possible security issues, even with a sandbox, maybe that isn't that bad.
- gravypod 6y agoI hope wasm gets serious attention by the Bazel team. I've personally been thinking of it as "the JVM done the right way". Still lots of progress needs to be made but it's very exciting to have another cross-platform multi-language VM.
- themihai 6y agoGo support would be nice
- dr-detroit 6y agoMeme technology invented for snowflakes who insist react and angular are replaced by new frameworks every month and therefore web development should resemble 1980s computer science class.
- iKlsR 6y agoI love dark mode as much as the next guy but only when it's done right. This is borderline unuseable for some people [1]. An example of dark mode done right is the default theme for monkeytype [2]. I know it's a default theme but a light alternative would be nice. [1]: https://jessicaotis.com/academia/never-use-white-text-on-a-black-background-astygmatism-and-conference-slides/ https://jessicaotis.com/academia/never-use-white-text-on-a-b... [2]: https://monkeytype.com/ https://monkeytype.com/
- rikkus 6y agoYes I can't look at it. It should be interesting though so I've bookmarked it to come back to. I'll use a browser plugin to 'fix' it if necessary.
- chrisweekly 6y agoQuestion for anyone with real WASM experience: what are your top recommended entry points / reference materials? AssemblyScript seems pretty approachable at 1st glance...
- the_duke 6y agoRust has the best tooling for wasm and is easiest to get started with, in my opinion. `rustup target add wasm32-unknown-unknown` `cargo build --target=wasm32-unknown-unknown` Is all you need to compile a Rust library to a `.wasm` file. (almost, you also need a setting in Cargo.toml: [lib] crate-type = ["cdylib", "rlib"] ) In the browser you can get access to DOM apis via web-sys. The documentation has quite a lot of examples and info: https://rustwasm.github.io/wasm-bindgen/web-sys/index.html https://rustwasm.github.io/wasm-bindgen/web-sys/index.html wasm-pack (https://github.com/rustwasm/wasm-pack https://github.com/rustwasm/wasm-pack) makes building code for the browser easy.
- McGlockenshire 6y ago> In the browser you can get access to DOM apis via web-sys. Wow! The last time I looked, doing anything remotely like this was a gigantic pain, in any language. I guess it's finally time for me to get around to learning Rust.
- pjmlp 6y agoAssemblyScript is one of the best options, because if the only thing you care about is some high level language that outputs WebAssembly, then you are still using Web related tools. Then D is quite easy to use (LDC alongside betterC mode, runtime is still not fully ported). Followed by TinyGo, Rust, C#, Nim. I would leave Emscripten, C and C++, only for porting existing code into the Web, as even with the sandbox memory corruptions of data allocated in the linear memory blocks are susceptible to occur.
- benjaminjackman 6y ago> corruptions of data allocated in the linear memory blocks are susceptible to occur I don't know if I quite understand this. Is this a web-assembly specific thing, or just the standard C / C++ are "unsafe by default" languages which can cause memory corruption etc because e.g. of off by one errors in pointer arithmetic and so on.
- skrebbel 6y agoSomething similar but also totally different is https://makepad.nl/ https://makepad.nl/ - a graphics programming IDE in Rust, for Rust, targeting the browser. It's a totally different use case but there's some similarities, somehow, anyway. Unlike this app, its actually all WASM and the author frequently tweets about how he feels more productive building a web UI in Rust than he would HTML+CSS+JS. And you can say what you want, the thing is damn snappy.
- pjmlp 6y agoInteresting, thanks for sharing.
- deleted 6y ago[deleted]
- bestinterest 6y agoIs it just me that finds all the text rendering on this page really bad?
- sgzfx 6y agoDefinitely not, it does not look pleasant to me either. At first I thought it was just the small font size, but I noticed it on the "Edit" page as well.
- Alexendoo 6y agoEverything is rendered directly to a canvas, at the very least it lacks subpixel rendering
- colejohnson66 6y agoFor those wondering why: subpixel rendering requires knowing the subpixel layout of the display. It’s something your OS knows, but your web browser doesn’t tell the website.
- 6y ago
- tom_mellior 6y agoHuh. I created a C project, added #include <stdio.h> and printf("hello world") to the skeleton. "Build & Run" doesn't seem to do anything but compile and print the not very useful message of "[error]: TypeError: second argument must be an object".
- mkl 6y agoIf you check out the C Hello World project you'll see there's quite a bit more to it, and it seems to be explained quite thoroughly.
- intrasight 6y agoI just get a black screen.
- whbrown 6y agojavascript is required, you probably have it disabled (3rd party scripts).
- intrasight 6y agoOf course I have 3rd party scripts and iframes disabled.
- htk 6y agoI love it. Every tool that reduces friction for people to create is a valid effort.
- imaginenore 6y agoI open the "Hello World" project in C. I change printf("Hello World\n"); to printf("Hello Worlds\n"); I build and run, still outputs "Hello World". I delete main.wasm, build and run again, still outputs "Hello World".
- deleted 6y ago[deleted]