7 ms·
Glot.io: Open Source pastebin with runnable snippets and API
- arturadib 10y agoThis is incredible. The key is in its simplicity, speed, and variety of languages. Kudos!
- s4chin 10y agoThis is good! Though, some sort of captcha will be useful to avoid people spamming this.
- daveguy 10y agoSome metadata: MIT license Haskell infrastructure Containered Open source everything -- runners, site, etc Very nice!
- hookshot 10y agoIt looks like only glot-www is Haskell. glot-snippets and glot-run are both erlang APIs, and glot-code-runner is a go application.
- alexkavon 10y agoThis is interesting, but I'm not sure why they use CouchDB and PostgreSQL.
- mattdgroves 10y agoCan you elaborate?
- 47 10y agoProbably refering to the diagram from their github page[1] [1] https://github.com/prasmussen/glot https://github.com/prasmussen/glot Pet Peeve: There is no way to post ASCII diagrams on HN
- deleted 10y ago[deleted]
- eatsfoobars 10y agosnippets.glot.io glot.io run.glot.io ┌──────────────────┐ http ┌──────────────────┐ http ┌──────────────────┐ │ glot-snippets │◀─────────│ glot-www │─────────▶│ glot-run │ └──────────────────┘ └──────────────────┘ └──────────────────┘ │ │ │ http │ │ http │ ▼ ▼ ▼ ┌──────────────────┐ ┌──────────────────┐ ┌ ─ ─ ─ ─ ─ ─ ─ ─ ─ │ couchdb │ │ postgresql │ docker │ └──────────────────┘ └──────────────────┘ └ ─ ─ ─ ─ ─ ─ ─ ─ ─ Almost works. I just pasted it as code.
- dublinben 10y agoI'd say it works quite well. That looks perfect.
- throwanem 10y agoIndent each line by four or more spaces. The markup documentation is linked from the FAQ, and the FAQ is linked from the bottom of each page.
- baldfat 10y agoPeople not using a relational DB drives me nuts when it clearly is the right tool for the job. Possibly that is his issue. Something that is a perfect match for a relational DB and instead use a "NON-SQL" DB for a project.
- alexkavon 10y agoYes. Usually when I build an application I'd use a single database. While I don't think in the end it would matter for PostgreSQL or CouchDB, two databases is a bit much. Just curious as why they use two databases that can accomplish the same task (from what I can tell from my limited digging into the project).
- nacs 10y agoCouchDB has really good, built-in versioning of documents so that may be one reason.
- dafuq2 10y agoHopefully you are ready for https://conference.hitb.org/hitbsecconf2016ams/sessions/escape-from-the-docker-kvm-qemu-machine/ https://conference.hitb.org/hitbsecconf2016ams/sessions/esca...
- alch- 10y agoThis. Awesome service, but pleasefortheloveofgod don't let people run arbitrary code inside Docker, unless you don't mind them getting out into the parent OS and messing around. You want VMs for that. (Yeah, that's much more resource intensive. Safely running arbitrary code is hard.)
- wyldfire 10y agoseccomp provides a really good jail, probably all that's needed here.
- namtrac 10y agoGreat, would be nice to have and updated clang (seems to be using 3.5.1) and python3 (using 3.4.3). Generally its nice to point out the version of the compiler it's using somewhere as a note.
- tyingq 10y agoThis is very cool. I'd really love to see a "how it works" blog post, particularly for the runnable snippets, and what your approach to protecting it from abuse and hacking is.
- oolongCat 10y agoIt's opensource. https://github.com/prasmussen/glot https://github.com/prasmussen/glot
- tyingq 10y agoThe code is, but I assume there's some configuration that's not code that might be interesting in the "avoid abuse and hacking" space.
- daveguy 10y agoAll of the code is open source. This is a beautiful thing: website: https://github.com/prasmussen/glot-www https://github.com/prasmussen/glot-www snippets: https://github.com/prasmussen/glot-snippets https://github.com/prasmussen/glot-snippets runner-web: https://github.com/prasmussen/glot-run https://github.com/prasmussen/glot-run runner-onserver: https://github.com/prasmussen/glot-code-runner https://github.com/prasmussen/glot-code-runner containers: https://github.com/prasmussen/glot-containers https://github.com/prasmussen/glot-containers EDIT: And this is directly from the main github source repository -- https://github.com/prasmussen/glot https://github.com/prasmussen/glot
- TAForObvReasons 10y agoIs there a guide for setting this up internally (within a local network)?
- mattdgroves 10y agoI think this is pretty cool. Might be nice to be able to embed them (i.e. like you can with Github gists).
- b3b0p 10y agoI couldn't help but notice they use Haskell and Yesod for the web portion https://github.com/prasmussen/glot-www https://github.com/prasmussen/glot-www
- deleted 10y ago[deleted]
- baldfat 10y agoI hope they add R soon.
- Ultimatt 10y agoI wrote up the Perl 6 entry. It's relatively trivial to add languages to the project you just need to have a link to a docker registry with the version of R you want. The rest is basically just bits of boiler plate in the other repositories for the project.
- rocketcity 10y agoThank you for this! Going to share it with the rest of my team right now. I always need a tool like this and had been using http://codepad.org/ http://codepad.org/ until now. This interface is much slicker.
- netcraft 10y agonice, you can even require other files in JS - although it would be nice to be able to customize the file names - but still very useful for the kind of thing I would normally use a gist for. Edit: I do wish it had a more recent version of node though (currently v0.12.7)
- markbnj 10y agoNice work on this!
- sosedoff 10y agoCheck another similar tool BitRun - https://bit.run/ https://bit.run/ Very good for rapid prototyping.
- kevindeasis 10y agoThis is very fascinating. How does the rocket science work here? Like how do you run different programming languages in the client side. Do they pass the code to the server and run it in there then pass it to the client?
- Rotten194 10y agoYeah, if you check the repo it's running the code in a specialized docker container with no network access.
- kevindeasis 10y agoThanks I see it: https://github.com/prasmussen/glot-containers https://github.com/prasmussen/glot-containers Guess I better start learning about docker/containers soon
- asadlionpk 10y agoThis is awesome. I wonder how you make it secure. Btw, I am the dev behind https://codepad.remoteinterview.io https://codepad.remoteinterview.io
- kahuna4637 10y agoPlease make R a language here. That would be amazing to be able to run snippets. I could see a lot of uses!
- sean_the_geek 10y ago+1 for R. I was pleasantly surprised to see Julia there
- pseudobry 10y agoThis is really cool to see, but also somewhat depressing because it reminds me that I spent about 500 hours of my free time building the same thing, and even had it deployed at codetrain.io for a while, but then lost interest and now my code's wasting away in a private bitbucket repo. Before I shut mine down it could run 13 or so different languages, spin up collaborative REPLs for Node.js/Python/Ruby, and organize snippets into tutorials/lessions, etc. It was awesome, but now sits in my side project graveyard. It's a shame really. Glad to see glot.io getting more attention.
- karl42 10y agoThere's also http://www.gistrun.com http://www.gistrun.com , which executes all code on the client.
- smaili 10y agoFeature request - be able to make the editor's height taller. Other than that, awesome job!
- seanp2k2 10y agoWould be cool to integrate with https://ace.c9.io/#nav=about https://ace.c9.io/#nav=about
- epidemian 10y agoIt is using Ace as the code editor: https://glot.io/about https://glot.io/about > Ace is used as the code editor. Make sure to check out the leftmost and rightmost tabs, where you can select language version, set a custom run command and change the editor keybindings.
- beyondcompute 10y agoCan I install packages/modules for my scripts (e.g. using npm)?
- tokenizerrr 10y agoDoesn't look like it. The containers don't have network access, either so putting something like `npm install left-pad && node main.js` as the run command won't work.
- furier 10y agoFYI - This is the work of one guy only not multiple, just thought i mention it as people refer to the dev in plural. And my guess as to different parts of the application has been developed in different languages and to the use of two db's are for educational purposes.
- calebegg 10y agoCould also be singular 'they' -- that's how I read it.
- aioprisan 10y agoThis is excellent! Reminds me of a tool I wrote a few years back that only supported 4 languages that we used at my past company. Great to see this open sourced!
- indatawetrust 10y agoThe idea of using docker excellent.
- zx2c4 10y agoThere are a lot more problems than you think with letting users have arbitrary code execution. And no, Docker is not an acceptable security solution for this, since it's most certainly possible to break out of containers. Even if you're using a dedicated VM, this is not a good idea. And from a brief look at glot-code-runner, it doesn't seem like there's even that much built in to protect against various forms of use. A more sane design would be to use something like emscripten to enable all these different languages to run in the browser.
- Lambent_Cactus 10y agoWe built something like this for our our data science platform (https://civisanalytics.com/products/end-to-end-data-science/ https://civisanalytics.com/products/end-to-end-data-science/), but the containers run on a group of workers that are isolated in one VPC per customer. And even that is for enterprise customers where you have some layer of accountability - I can't imagine opening it up to the wild internet.
- dhaivatpandya 10y ago"Docker is not an acceptable security solution for this, since it's most certainly possible to break out of containers." Could you point to some resources that show that it is possible to break out of Docker containers? I understand that there have been bugs in the past that have caused this (using that to conclude that glot.io shouldn't use Docker is a bit like saying OpenSSL is now useless because of heartbleed) but it seems unlikely that breaking out of containers is possible due to the way Docker is designed.
- seanp2k2 10y agohttp://www.cvedetails.com/product/28125/Docker-Docker.html?vendor_id=13534 http://www.cvedetails.com/product/28125/Docker-Docker.html?v... https://github.com/docker/docker/issues/12317 https://github.com/docker/docker/issues/12317 https://github.com/gabrtv/shocker https://github.com/gabrtv/shocker https://www.oreilly.com/ideas/docker-security https://www.oreilly.com/ideas/docker-security I'm sure there will be more Edit: yup, as cited below: https://conference.hitb.org/hitbsecconf2016ams/sessions/escape-from-the-docker-kvm-qemu-machine/ https://conference.hitb.org/hitbsecconf2016ams/sessions/esca...
- 0x54MUR41 10y agoThis is like IdeOne [1]. But, this is very cool because open source. IdeOne is not open source project. [1]: http://www.ideone.com http://www.ideone.com
- mahmoudimus 10y agoI am interested to know what other ways of allowing untrusted user code execution securely. How does one enforce resource quotas (timeouts, etc)?
- mahmoudimus 10y agoIn particular, anything that can run on the JVM? I know Lua is reall great for this type of stuff, but it's JVM support is abysmal.
- stephenr 10y agoThis looks like a very interesting project, but I think choices made for data storage (PostgreSQL + CouchDB) is quite odd. To me the obvious choice for this would be to use a DVCS repo for each "glot", and create files inside it, just like Gist does. I personally would prefer this be mercurial repos' but I'd probably just make it support git too. I'd probably also use libvirt rather than Docker specifically, to allow for more flexible setups.