HNHacker News
TopNewBestAskShowJobs

apignotti

2,341 karma · joined October 4, 2013

CTO of Leaning Technologies, we make compilers for the Web.
submissionscomments
apignotti··on WebVM: Server-less x86 virtual machines in the browser
Perf. Our JIT is extremely advanced. Of course different workloads will behave differently, but you are welcome to try multiple payloads and see for yourselves.
apignotti··on WebVM: Server-less x86 virtual machines in the browser
Hello HN, author of the post here, happy to answer questions.
apignotti··on WebVM: Server-less x86 virtual machines in the browser
Hi, author of the post here. Happy to answer questions.
apignotti··on Aosta Valley Autonomus Region
I am not sure I fully agree, but the quality of the job really depends on the employer.

Italy is characterized by _lots_ of small/medium sized businesses (not startups, actual profitable businesses often decades old). Some of them producing state-of-the-art tech in many different industries (Aerospace, Defense, Pharma, etc). The issue with this highly fragmented industrial environment is that it might be difficult to know what it is like to actually work somewhere before spending some time there. Companies tends to be unique.

There are also offices from all the well known names (Google etc...), but usually these are sales oriented. I'd still call them "tech jobs" though.

About Visas, as an Italian citizen I don't have direct experience. I suspect it might be difficult to get one. Of course EU citizens can do what they want.

There might be (relatively) easy paths to citizenship for people with italian ancestry though.

apignotti··on Aosta Valley Autonomus Region
Italian here, living abroad. If you plan to move, you'll need to learn the language unfortunately. I think the average English knowledge of the population has significantly improved over the last ~10 years, but dealing with bureaucracy (with its own special/weird language) still requires some level of understanding of written Italian.

In terms of quality-of-life I'd recommend Tuscany, but as an expat Milan might be the best choice. Good luck.

apignotti··on CCPA Scam – Human subject research study conducted by Princeton University
Yep, we got the same. Seriously unethical behavior.
apignotti··on Show HN: Run Python, Ruby, Node.js, C++, Lua in the Browser via x86 to WASM JIT
Any disk block which is used or modified is stored locally into an IndexedDB instance. You can find more info in the accompanying blog post: https://medium.com/leaningtech/cheerpx-using-webassembly-to-... ("Data Storage" section)
apignotti··on Show HN: Run Python, Ruby, Node.js, C++, Lua in the Browser via x86 to WASM JIT
Oh no! You have pwned a non-existing cloud VM :-)

More seriously though, you are right. The current implementation of the Linux syscalls interface does not enforce permissions and users. We plan to implement those correctly at some point.

This said, most use cases we are currently considering do not have any shared state and are mostly "throw away" execution environments. As such the missing access control checks do not seem to be a significant problem.

apignotti··on Show HN: Run Python, Ruby, Node.js, C++, Lua in the Browser via x86 to WASM JIT
As pointed out by another user, I was actually referring to compiling Python _directly_ to Wasm. Porting the C++ _implementation_ to Wasm is obviously possible.
apignotti··on Show HN: Run Python, Ruby, Node.js, C++, Lua in the Browser via x86 to WASM JIT
The blocking feature is SharedArrayBuffer, but it should become available in the not-too-far future.
apignotti··on Show HN: Run Python, Ruby, Node.js, C++, Lua in the Browser via x86 to WASM JIT
CheerpX is really not just limited to REPLs, this demo was intended to showcase the technology and to measure the public interest for this specific use case. We don't plan to make this a product in itself, but we are happy to partner with a third party interested in doing so.

The next demo we are planning is actually more ambitious, we will drop users into a bash shell and give them control of the machine. The experience will be something like having your own zero-cost cloud machine always available and with total data privacy.

At this time we don't plan to make CheerpX open source, although this might change in the future. We are still working to figure out exactly what use cases we should bring to market first, so we prefer to keep our options open.

apignotti··on Show HN: Run Python, Ruby, Node.js, C++, Lua in the Browser via x86 to WASM JIT
The point of this technology is generality. It is theoretically possible, given enough work, run Python directly in Wasm. The effort would be, though, Python specific and you would need to start from scratch for every single language.

CheerpX allows running unmodified X86 programs, it does not matter if it's Python or something else. It does not even have to be a REPL, for that matter. We use this tech in production to run the legacy Flash plugin, for example: https://leaningtech.com/cheerpx-for-flash/

apignotti··on Show HN: Run Python, Ruby, Node.js, C++, Lua in the Browser via x86 to WASM JIT
The technology can certainly be adapted to non-browser & js-less VMs, but our current focus is the browser use case.

It seems to us that in server-side scenarios it is most usually possible to execute apps natively anyway.

apignotti··on CheerpX: Using WebAssembly to run any programming language in the browser
Thanks for posting this, I am the author and I am happy to answer any questions you might have.
apignotti··on Xterm.js
A well made library, we use it as part of the REPL demos for CheerpX, our WebAssembly-powered X86 virtual machine.

https://nextrepl.leaningtech.com/?python3

apignotti··on Dune: A Shell by the Beach
Try it online: https://nextrepl.leaningtech.com/dune.html

Powered by CheerpX: A WebAssembly virtual machine for X86 executables.

Please note that is a sneak preview of our tech, we plan to release it soon to the public. Stay tuned.

https://twitter.com/leaningtech

https://twitter.com/alexpignotti

apignotti··on CheerpJ 2.2: Run any Java application in the browser
It is my understanding that Show HN is reserved for demos, isn't that right?
apignotti··on WebContainers: Run Node.js natively in the browser
Not an expert on PyTorch in particular, the python + native (if any) components would work right now. If GPU acceleration is required some way to bridge into WebGL or (much better) WebGPU would need to be engineered, certainly doable but not existing right now.
apignotti··on WebContainers: Run Node.js natively in the browser
Hi, CTO of LeaningTech here. Congratulations for the highly polished demo. I think you might find interesting this one we did months ago: https://repl.leaningtech.com/?nodejs
apignotti··on WebContainers: Run Node.js natively in the browser
As far as I understand JS code is being run natively in the browser. Node has been hooked to the native engine, so V8 is not involved.

At LeaningTech we have since several months been able to run nodejs, but also python and ruby using our Wasm based x86 VM (CheerpX), the demo is available here: https://repl.leaningtech.com/?nodejs

With our solution the full Linux x86 binary of nodejs is running including the whole of V8 and its JIT engine. Of course fully client side.

apignotti··on The End of Applets
https://chrome.google.com/webstore/detail/cheerpj-applet-run...

This tool allows to safely run applets in Chrome purely in HTML5/WebAssembly/JavaScript. No plugins needed.

Over 50k users are using it, and over the years we have been shocked by how many people and businesses are dependent on this kind of legacy content.

The extension is only intended for non-commercial use, we offer business an even better/faster solution by converting Java bytecode Ahead-of-time.

Disclosure: I am CTO of Leaning Technologies, the company developing this extension and the underlying CheerpJ technology.

apignotti··on Show HN: CheerpX – x86 Node.js/python3/Ruby REPL in browser via WebAssembly JIT
I don't think service workers would help in this case. As mentioned elsewhere we are working on a revamp of the I/O subsystem that should significantly improve startup time already.
apignotti··on Show HN: CheerpX – x86 Node.js/python3/Ruby REPL in browser via WebAssembly JIT
Libraries with a binary component will work as expected with our approach. CheerpX runs arbitrary x86 code, there is nothing special about Python in particular.

Obviously compiling directly to Wasm will provide the best level of performance, but it also take effort for every single application/library you want to port.

apignotti··on Show HN: CheerpX – x86 Node.js/python3/Ruby REPL in browser via WebAssembly JIT
Happy to have been helpful :-)
apignotti··on Show HN: CheerpX – x86 Node.js/python3/Ruby REPL in browser via WebAssembly JIT
(1) I am not sure I understand the question. It seems to me that it really boils down to "Do you trust the browser to run arbitrary code?" There is truly no way for CheerpX to do anything more than what your average Web page could do.

(2) We are implementing syscalls and devices as they are needed for the various use cases we are considering. In general even if something is not natively supported in the browser it can still be virtualized to various degrees. In particular CheerpX provides a virtualized FileSystem that does not map to your local files. The same would apply for the virtual disks in traditional VMs though.

(3) We plan to release benchmarks soon, but the level of performance is very promising. Consider that we have been using the Flash plugin as our main benchmark which is very demanding. For the REPL use case the limiting factor right now is I/O performance, but we are already working on this and we thing we will achieve much better results very soon. In general, all aspects of CheerpX performance will improve, we are really not done yet.

apignotti··on Show HN: CheerpX – x86 Node.js/python3/Ruby REPL in browser via WebAssembly JIT
CheerpX is not yet released to the public for the arbitrary Linux application use case. We plan to do so, but at this time we are fully focused on the CheerpX for Flash use case, for obvious timing reasons: https://medium.com/leaningtech/cheerpx-for-flash-now-general...
apignotti··on Show HN: CheerpX – x86 Node.js/python3/Ruby REPL in browser via WebAssembly JIT
This is a surprisingly common question. What you see is a standard node.js/V8 package from Ubuntu with no modification at all. V8 will emit JIT x86 code that will be then further JITted into Wasm if hot enough.
apignotti··on Show HN: CheerpX – x86 Node.js/python3/Ruby REPL in browser via WebAssembly JIT
The tradeoff is only some performance, there is no security risk. CheerpX used standard WebAssembly/JavaScript/HTML5, there is truly no difference between this and any other Web page you might visit.

The scrolling behavior you mentioned is actually a feature, we want to give people time to read the first message before filling up the console.

apignotti··on Embed Flash SWF content without the Plugin
Hi there, lead-dev of CheerpX for Flash and CTO of Leaning Technologies here. If you are curious about our tech, feel free do drop questions here or on Twitter: https://twitter.com/alexpignotti
apignotti··on Ruffle – A Flash Player emulator written in Rust
A FOSS Flash Player implementation has certainly value, and I hope to have contributed to the cause by starting the Lightspark project years ago. The sad reality is that the Flash runtime is massive and under-documented. The best approach for Flash preservation in the medium term is using _actual emulation_ to run the binary player itself.

Further reading:

https://medium.com/leaningtech/preserving-flash-content-with...

https://medium.com/leaningtech/running-flash-in-webassembly-...

https://medium.com/leaningtech/announcing-cheerpx-for-flash-...

https://medium.com/leaningtech/cheerpx-for-flash-now-general...

For questions: https://twitter.com/alexpignotti

← PreviousPage 6 of 8Next →