![]() |
| There is a permission system I think. It's described in the developer docs: > […] your app will get a few things by default: […] An app directory in the user's cloud storage […] A key-value store in the user's space […] > > Apps are sandboxed by default! Apps are not able to access any […] https://docs.puter.com/security/ I guess that refers to the cloud storage/backend. Clientside apps seem to run as IFrames, so should be subjected to normal browser sandboxing (…and actually, I guess, multiprocessing too), with only explicit message-passing. Honestly I think the developer API could have been better highlighted by this HN post. Puter's actually doing a bit more than the Desktop Environment mockup that's visually apparent, and not featuring that seems like a wasted opportunity to pick up some app developers. |
![]() |
| On a technical level it's actually not that impressive. Mozilla got BananaBread/Sauerbraten running with WebGL on netbooks over a decade ago, with much more advanced graphics than Xash3D: https://kripken.github.io/misc-js-benchmarks/banana/index.ht... https://wiki.mozilla.org/HTML5_Games/BananaBread The Half Life "app" above actually just wraps an existing Emscripten port in an IFrame. Puter does provide an abstracted filesystem (and other "OS" features), but I don't think the app above uses that, so it's no different than if you went to `data:text/html,IntralexicalOS!<br><iframe src="https://pixelsuft.github.io/hl/" style="width:50%;height:50%">`. But actually I think putting together such a simple technical concept that works this well is the impressive part, that hasn't been done before. You can now take any existing web build of any app, and by adding a couple calls to `puter.fs.write()`, deploy it to a familiar virtual workspace where you get multitasking, cloud storage, and interoperation with other apps, for free. |
![]() |
| Millions of people have been killed so that other people wouldn't have to wear itchy clothes. Convenience is the most powerful force in humanity. |
![]() |
| Was linen itchy? At least modern linen is not itchy. Presumably it would have been less itchy than coarse wool even nice wool. |
![]() |
| Silk, and in general almost every type of clothing until modern cotton processing. Most traditional clothing was very coarse and one of the most obvious class indicators, across millenia. |
![]() |
| These comparisons always bring up the fact in my mind that the lowest class people today have so much better sanitation, like toilets compared to kings back then |
![]() |
| Is there a specific war, genocide, or other event that you were referencing though? I wanted to learn more. |
![]() |
| To me, Puter platform has a huge potential. And as a developer, I already have large value from it. Using puter.js I was able to add full cloud storage for my design editor https://studio.polotno.com/ without messing up with auth, backend and databases. |
![]() |
| Interesting! What's the advantage of Puter in this scenario compared to, say, Google Drive, or Dropbox? |
![]() |
| I would say much simpler integration. puter.js SDK is super straightforward and fast to integrate. |
![]() |
| Polotno Studio is a free app. And for a long time, it didn't even have the ability to signup and save created designs into a cloud. I didn't want to invest my resources into "cloud saving" feature (as it is a free app). Setup full authorization, setup database, setup servers and tons of other work to finish the cycle. https://docs.puter.com/ gives a very simple, yet powerful client-side js SDK to enable full cloud saving and loading of data for my users. I spent a couple of days for integration. Doing everything by myself with full hosting would take weeks, if not months. |
![]() |
| Thank you, Anton! Polotno is incredible. I recommend everybody to check it out! |
![]() |
| Re-layout has to complete before any more JS runs. So if you want to change two things, you get update-layout-update-layout. |
![]() |
| Only if you yield to the layout engine (e.g. `await new Promise(resolve => setTimeout(resolve, 0))`) in between. Which, if you know you want to change two things, why would you? |
![]() |
| Not enums. But you don't need a runtime or function mutation for that... Particularly egregious was (is?) async/await. Upgrade your browser/runtime/don't use it you say? Sure, but first two weren't always possible, and the third isn't possible unless you thoroughly vet your dependencies (easier said than done). "Compiling to javascript" is all well and good if you actually just compile to normal javascript, as soon as you have any code that simulates other features (classes/objects/what-have-you) you are no longer "compiling to javascript". I mean yeah sure as a sort of intermediary assembly language you are but the performance is not the same. You have a new language with a runtime overhead, that now requires you modify the "core" language to bring in new features, which results in the underlying execution engines (browsers/cpus) becoming more complicated, power hungry, etc.... Anyways, type caching is not all bad. While the TS overhead is likely responsible for the performance wins for javascript in the following chart: https://programming-language-benchmarks.vercel.app/typescrip... The performance wins for typescript likely source from the ability of the runtime to pre-allocate and avoid type checking. Providing the type checks without using any non-JS features (and possibly providing the runtime some heads up regarding checks to safely drop) is the ideal. |
![]() |
| > That's terrible. I want the Z.C.A. to be by-default, not "configure the heck out of the language to make it so". Don't you just set target? Is there even a default for target? |
![]() |
| I accidentally exaggerated because it's an easy word for a legacy feature you're supposed to avoid. |
![]() |
| Synology DSM (the web interface for a Synology NAS) also constructs a desktop UI the HTML way. |
![]() |
| I dunno, once you write the renderer, you essentially have no limits to worry about. Working within the confines of HTML is way more impressive to me. |
![]() |
| You do get a lot of UI elements for free, but styling them consistently and getting them to layout properly becomes a lot more difficult. |
![]() |
| Thank you! As a side note, we're open-sourcing the VSCode integration soon. Building an integration with VSCode takes quite a bit of work so hopefully the community will benefit. |
![]() |
| We have a separate repo where you can submit issues related to the shell: https://github.com/HeyPuter/phoenix/issues If a file doesn't have a newline at the end then `cat` will immediately start writing the prompt after the last line; this is the same behavior you'd expect from sh or bash. We might later improve this by having a "no newline"-indicator in the promptline instead. |
![]() |
| It's all fun and games until we reflexively hit ctrl-w to close a virtual window and end up closing the browser tab that window is running in :/. |
![]() |
| His name was Max Harddrive and he did kickflips on his keyboard. Nobody could beat his quarter mile downloads. |
![]() |
| GRML is a successor of sorts to Knoppix: https://grml.org/ It's an Austrian LiveCD based on Debian; version 2024.02 was just released. It's not as slick as Knoppix, but it does come with lots of utilities and can start an X Windows desktop. |
![]() |
| You could use ntfs.sys with some wrapper, can't remember. It was almost safe. |
![]() |
| BartPE was my god as a computer repair tech. I had a custom build with everything I ever needed on there! Data recovery... virus removal... diagnostic tools... the works. |
![]() |
| For me it was Hirens BootCD. Seems like a slightly different implementation but we swore by it to fix the most awkward of issues. |
![]() |
| Oh man I remember BartPE and customizing the apps bundled with it… thanks for the memories. |
![]() |
| Bootable USB that loads iPXE, with a custom boot config that downloads the kernel and initrd from your own cloud server? |
![]() |
| Is Samsung Dex able to boot/load to a standard Linux environment? Initial look at it seems interesting, but I've never really heard/seen much about it. |
![]() |
| Beautiful execution! Though I'm crestfallen it has no Browser app with which to view an inception of Puter within. |
![]() |
| Are the changing colors on purpose? Noticed it has some issues browsing in firefox (so it might be broken). |
![]() |
| yeah i'm in the process of. why? are you interested to try? if you are send me a hello to cris@dosyago.com and I can send you a link when up and get your feedback if you're free :) |
![]() |
| Technically you could fake it with an iframe if puter is served with the correct frame-src CSP rules. But for a full browser experience you’d need a backend and a remote browser. |
![]() |
| Thank you! I'm glad you liked it. Follow along on Github, we're a friendly community and open to contributors with all levels of JS experience :) |
![]() |
| This is really cool--I've played with a lot of these online desktops, but this is by far the slickest. As someone who is doing something similar (https://gridwhale.com), I'd love to know what your goals were. Did you ever try to commercialize it? If not, why not? If yes, what happened? |
![]() |
| Technically it's not developer mode , it's just a regular feature of the OS. "Developer Mode" on ChromeOS is when you remove boot verification for ChromeOS itself. |
![]() |
| The experience of making and publishing websites and apps from within puter is sobering for how simple it is. Something to aspire to |
![]() |
| If anyone was in doubt; jQuery is not dead. For anyone who wants to write minimalistic and efficient vanilla javascript, jQuery is still being maintained and used by many. |
![]() |
| I've been looking an OS for a VR computer (i.e. simulated but functional workstation). This should work very well :) |
![]() |
| I've tested Puter on Oculus, seems to work pretty well; however, I think very soon I'm going to do very specific optimizations for XR, it's a new, emerging form factor that deserves its own design. |
![]() |
| A proper mobile UI is something we're looking towards adding. It's been coming up in conversation more frequently lately and we'll probably announce on Discord when we start developing that. |
![]() |
| What is a “mobile story”? Can you deliver some messaging in a comment story? |
![]() |
| Yes, it works, but it looks the same. Remember Windows CE? We've been down this road -- a windowing desktop on a phone is... hard to use, actually. |
![]() |
| Probably not but they have had a similar web-based interface going back at least twelve years |
![]() |
| Love it! I liked the Solitaire implementation. The terminal seems very lacking, "ls" worked but e.g. "ls *" or the "find" command didn't work. |
![]() |
| Was curious to check this out, but no Firefox support is a non-starter, unfortunately. |
![]() |
| Sorry about that. It should hopefully be fixed once we change our A/V stack in a few months. I unfortunately do not have specific details on why the A/V stack only works with Chrome-based browsers. |
![]() |
| So, the cloud storage isn't a decentralized system where all users contribute disk space; rather you are providing the cloud storage in boxes you control? It seems like you must have some storage limits to prevent abuse, yes? Could you say what they are? Also, I ran your hosting example and ended up with a static site at https://quiet-morning-9156.puter.site/. How long will that site be there? I assume not forever? |
![]() |
| It would be cool to self host the backend. I wouldn't want to put files on some guy's server, both from the eavesdropping angle and from the perspective that it could be abruptly shut down and lost. |
![]() |
| it is basically a webserver written in javascript. you can clone the git repository and run the server on your pc |
![]() |
| Curious how AGPL would apply for something like this. This seems like a tool to put a nice front end on a complex app, but would that trigger copyleft for the the overall backend? |
![]() |
| Interesting to see that it's written more "low level": vanilla JS and jQuery (nostalgia kicks in). I guess it's analogous to why linux/windows kernels are still written in C language. |
![]() |
| Super slick! What are some common applications for this, though? I can't think of a reason I'd want to access this versus, say, a remote vm? |
![]() |
| Why do you think so? It seems to be exactly what eyeOS was - especially given the enterprise use cases the author listed. |
![]() |
| I used to mess with EyeOS a lot back in the day - same thing, and although I enjoyed it, I suspect the utility will be just as limited. |
![]() |
| Possible to write our own window manager? I guess just diving into the code, but that would make it very hackable of course. And fun. |
![]() |
| Are you the MS guy with a YouTube channel who's website is basically this? Can't recall the channel right now though. |
![]() |
| Congrats on getting this out there. Looks slick. I’ll take a look tomorrow when I’m back at a computer with a larger screen. |
![]() |
| It has an interesting similarity with IBM's ZOWE web UI. Is there any commonality in the building blocks? |
![]() |
| I just wanted to say well done. I wish other eco systems were this open, hackable and understandable. |
![]() |
| Love it!! I own the domain internet.inc that would be perfect for this - want to use it?? |
![]() |
| Been looking for something like this for use with a VR headset for coding. |
![]() |
| I use Prisma and the TS typings in generates automatically have saved me countless times. I used to hate ORMs like you. But auto generated types were the killer feature. |
![]() |
| Must not be doing anything very complicated. Wheres your impressive link if thats a prerequisite for discussion? Some ORMs suck, I’ll give you that. |
![]() |
| Wrong. It’s the rule, and has been thus for at least 270 years. Breaking it attracts a $500 fine and a gentle slap in the face with a pair of leather driving gloves. |
![]() |
| > Super slick demo, I'm on mobile and it's impressively fast nevermind functional. No kidding. As far as I've seen, it's the best open paint app on android |
![]() |
| Does this argument really still stand nowadays, with all the virtual DOM and whatnot that those frameworks bring OOB? |
![]() |
| Who's "we"? React is still by far the most popular framework. I personally like Solid better but I'm just one person vs. many who actively write React code. |
![]() |
| Hello! Would you like to post any opinion at all, or in any possible way mention anything about, the humanitarian situation in Gaza? |
![]() |
| There is a flag button as well as the downvote. Throwing in something about Gaza here would be off topic, political, and against HN guidelines. |