10 ms·
WebScript.io: Just choose a URL and type in a script. No servers, no deployment
- Shank 14y agoI'm not a fan of the pricing model - deleting user data after a period of time is a bit harsh in any circumstance, but I don't see an alternative. I'd say cap the number per account, but then you can get multiple account abuse issues. $5/mo is cheap enough to warrant an impulse purchase, though. Good on you guys.
- smarx 14y agoI'm one of Webscript's founders, and I was pleasantly surprised to see this here. We just launched this morning, and I'm happy to answer any questions.
- minhajuddin 14y agoHow are you sandboxing users, so that they don't mess with your environment?
- smarx 14y agoMost of the sandboxing just comes from using embedded Lua and only whitelisting a small number of functions. We also do a little process-level isolation to prevent runaway processes.
- minhajuddin 14y agoNice, It would be awesome if one could get full capability of a programming language. I have been planning to build something like this but was stuck because of the sandboxing issue.
- rhizome 14y agoYou could spawn BSD jails, each subject to cpu, ram and disk quotas.
- tarr11 14y agoAgree - wouldn't an infinite loop take down your site?
- tlrobinson 14y agoFrom the sibling comment: "We also do a little process-level isolation to prevent runaway processes."
- smarx 14y agoGive it a try. :-) We kill runaway processes after 10 seconds.
- deleted 14y ago[deleted]
- smarx 14y agoIt's reserved for your account.
- conradev 14y agoWhat makes Webscript better than other BaaS providers that have more advanced functionality available? http://blog.parse.com/2012/09/11/welcoming-cloud-code-to-the-parse-family/ http://blog.parse.com/2012/09/11/welcoming-cloud-code-to-the... https://cloudmine.me/docs/servercode https://cloudmine.me/docs/servercode
- akavel 14y agoHm; to me personally, one advantage is that I immediately understand the idea and usage method of their service, while reading the links you provided I can't grasp what they're trying to communicate, unfortunately. Also, I know Lua and value it very highly, so seeing it mentioned immediately focused my attention. Thirdly, "free" "unlimited" "renewable 7-day" trial sounds great, and $5/month for persistent does too.
- barryhunter 14y agoI agree - the simplicity of the service is great. Can immediately see what it does. For example do those other services come with storage? I can't tell. For parse, it looks like you need to install a command line application. Not useful if your desktop is Windoz. I doubt anyone is going to be building huge applications on webscript.io (yet!) but for simple little things (aka weekend projects) it should work great.
- akavel 14y agoYou say time per each script is limited to 10s, yes? Can I call one webscript from another, for modularisation? And will that "lengthen" the timeout effectively, too? If yes, then still everything is sequential, there's no possibility of parallelism, yes? Is there any kind of versioning of the code, apart from the possiblity to load from github you mentioned on the site?
- smarx 14y agoYou can make HTTP requests, so you can call another script from your script, but the calls are synchronous and won't increase your timeout, so the original script will still get killed after ten seconds. No parallelism. What's the use case you have in mind? We didn't really intend for people to do anything CPU-intensive. No, there's no versioning. EDIT: s/called/killed, thanks
- akavel 14y ago"(...) still get killed (...)" I presume? :) Nothing particular yet, just assessing the possibilities. Also, would it be possible to somehow easily download the scripts? In the Terms, you state: "customer is solely responsible for backing up customer's application and customer content." It should be easy to download content from the `storage` object, but how about the code? Also, it seems I can choose any subdomain for any script, so subdomains are not tied to user by design? What is the meaning of the following sentence in Terms and Conditions: "Customer has, in the case of Content that includes computer code, accurately categorized and/or described the type, nature, uses and effects of the materials, whether requested to do so by Planet Rational or otherwise." Described/categorized where, to whom, in what categories? What materials?
- smarx 14y agoYup, I meant "killed." (Edited, thanks.) We figure that copy/paste is a good enough way to get your scripts out, but if there's demand, it wouldn't be too hard for us to build an export. Once you create a subdomain, you own it, but you can have whichever ones you choose. (There's no overall subdomain for a user... a user can have as many subdomains as he/she wants.) A lawyer wrote the Terms, not me, and I probably shouldn't try to interpret them. If you want to discuss it, send us email (support@webscript.io) and we'll help.
- rmrfrmrf 14y agoYou just launched today? The site has a lot of functionality already! I'm really impressed.
- modeless 14y agoWere you guys inspired by AppJet at all? I'd love to see JavaScript support.
- smarx 14y agoI loved AppJet, and yes, I'd call it an inspiration for what we're doing. A number of people are mentioning JavaScript. We don't have any plans yet, but we're paying attention to the feedback.
- donebizkit 14y agoAmazing! I just want to add my vote for javascript support. I am already invested in javascript for client and server development that having a javascript scripting engine like this would be heaven. Again, great job!
- lbotos 14y agoI'm interested in what you are doing here. What is your ideal customer? What should they expect from the platform and what do you expect it to be used for? -Maybe a potential user who isn't exactly sure what this is doing for me.
- kalid 14y agoI'm going to channel my inner patio11: * Charge whole numbers, not 4.95. No need for the confusion. Makes the service look cheap. * Double or triple the price (to $10-15/month). $5 vs $10 is nothing to the average dev, but it halves the number of people you need to get to ramen profitable. * Have an expensive pro plan ($99 - $299/month). With email support, etc. If nothing else, it makes the less expensive plans more attractive. * Don't "delete" the free scripts. "Archive" them after 7 days [it's a 7-day free trial] and you can get them all back when you upgrade to pro. If someone wants to "abuse" the system by recreating their scripts every 7 days, fine. 99% of devs will be more familiar with javascript than Lua, so I'd greatly encourage supporting that.
- smarx 14y ago* We'd be happy to be proven wrong, but we believe $4.95 converts better than $5. * We'd be happy to charge more. We have nothing to go on yet but intuition, and we think $5 is the right amount. * This is intriguing, but I think we need to find the right value to provide in order to offer something like that. * This is actually what we do.
- tnorthcutt 14y agoYeah, but are you testing those beliefs?
- 10098 14y agoI think you have made a great choice with Lua! I'd love to see Lua replace PHP at some point in the future as a popular choice for web development.
- 10098 14y agoHave you tried experimenting with LuaJIT? If yes, what were the results?
- geon 14y agoPlease stop saying "no servers". Obviously there is a server involved for the script to run on.
- mathewsanders 14y agoThat was what caught my attention - I thought it was running locally in the clients browser or something. Peer-to-peer browser-based apps?!
- karl_gluck 14y agoVery cool! I can definitely see this being useful. Out of curiosity, what encouraged you to choose Lua instead of JavaScript or another server-side language?
- smarx 14y agoWe probably need to write a FAQ for this. Until then, the short answer is that Lua is well-designed and well-understood as an embedded language (how we use it). That means it was easy and fast for us to integrate. If we get a lot of feedback about it, we can definitely change course on this later by adding JavaScript and/or other languages.
- Geee 14y agoI haven't ever used Lua, but I think it's simple and easy enough to pick up and learn quickly, so personally it doesn't bother me at all. I'll definitely be using this service when I have the need for it.
- blacktulip 14y agoThis is awesome! May I ask whether it will support custom domains in the future?
- smarx 14y agoWe don't plan on supporting custom domains, because we don't think people will serve up content directly from these scripts. (We think of them more as APIs, so typically invisible to end-users.) That said, my startup's other product (www.site44.com) is great for serving up content and does support custom domains. We plan to add support to Site44 for forwarding API calls to Webscript. So you could build a full HTML app with content served from Site44 and API calls handled by Webscript, all with a custom domain.
- blacktulip 14y agoIt is actually not about serving content. Custom domain makes the fail over much easier. For example, someone uses webscript.io as his app backend. If webscript.io goes down for whatever reason, he can simply point the URI to a backup server(provide he has one) if he uses a custom domain. Without custom domain all he can do is wait.
- smarx 14y agoAh, good point; thank you. We'll give this some more thought.
- hashtree 14y agoClever ideas, on both counts (webscript and site44). I wish you and Todd success.
- sv123 14y agoThis is cool, and a very fair pricing model.
- nirvana 14y agoWould you mind sharing a bit about the architecture of this project? What tools and technologies & language (beside lua) did you use? I'm guessing you just need custom routes (all the URLS are on your domain?) rather than custom DNS. How are you handling sending emails, for instance? (did you plug into an email as a service provider?)
- smarx 14y agoThe whole thing is a Python app, written with Flask. As you said, we do custom routing to map URLs to scripts, which we then load up in a Lua VM and execute with conventions for how we pass in the request and interpret the return value. For email, we just support SMTP. You have to bring your own server and credentials. Our examples are using Amazon SES, but anything would work (e.g. SendGrid or even GMail).
- Jonanin 14y agoSo are the lua VM's persistent at all or are you creating a new VM process for each script request ala PHP? Also, are you using LuaJIT?
- smarx 14y agoNew VM per script request. No, we're not using LuaJIT for now.
- deleted 14y ago[deleted]
- dividuum 14y agoGreat to see another lua based service. I'm running http://geolua.com/ http://geolua.com/ which also uses Python (and even gunicorn) for the web interface and lua (in a custom libevent based server) for running user provided lua code. I sandboxed lua using chroot, a custom allocator function, runtime limits using signals and an "outer" lua environment which interfaces with the python code. The inner environment should be safe. I guess :-) How do you handle 'a = " "; while true do a = a .. a end'? Do you spawn individual processes with process limits? Which version of lua are you using? Why not luajit2?
- burke 14y agoThis looks like a really, really fun project. Great idea.
- d0m 14y agoI like it, great idea! I was really surprised about Lua's choice rather than Javascript since it's all web-based. I'll definitely give it a try.
- tarabukka 14y agoI would imagine that Lua was much, much simpler to pick apart and integrate into a system like this (from my experience using Lua) than trying to use a full JavaScript engine. A full JavaScript engine would be less lightweight, harder to implement and maybe even harder for end users. That's just my conjecture, anyway ;)
- Jonanin 14y ago4.95 for "unlimited" traffic? So if my script is taking in 100,000 reqs/day I'm still paying 4.95 per month? What about cpu usage, memory consumption?
- blacktulip 14y agoThis is what I want to ask. A fiver per month for all that unlimited seems too good to be true.
- smarx 14y agoOur Terms (https://www.webscript.io/terms https://www.webscript.io/terms) do spend a little time defining "unlimited." We didn't want people to worry about it, so we went with unlimited, but as you point out "unlimited" is always a lie when finite resources are involved. Our goal is to never have to cut someone off for what seems like legitimate use.
- carbocation 14y ago> Our goal is to never have to cut someone off for what seems like legitimate use. In that case, can I recommend that you determine what your costs will be and ensure that you charge, at each tier of usage, enough that you will be able to continue providing your service at a profit to these large-scale users?
- aaronblohowiak 14y ago>in excess of 1000 key/value pairs Tiny! You should have tiers, and not "unlimited, but only where that means enough for a small amount of single-users"
- smarx 14y ago(Sorry, can't reply to the real comment, too nested.) @aaronblohowiak, just because we reserve the right to shut something down doesn't mean that we will. We'll learn from real use what people actually do. We have our own ideas about what we expect the use cases to be, but we may be completely surprised by the popular uses. If our pricing model doesn't make sense for what people want to do with Webscript, we'll certainly adjust. Thanks for the feedback.
- briangonzalez 14y agoThis site seems sort of ripped off from codepen.io :/
- mikegirouard 14y agoIn what way? I think this is a completely different project for a completely different purpose.
- fourstar 14y agoNo it didn't. But with that logic codepen.io ripped off jsfiddle which ripped off jsbin which ripped off pastebin.com
- blacktulip 14y agoYou mean the .io part right?
- briangonzalez 14y agoI mean the nav, the "Picks, Popular, Recent" at the top, etc. etc.
- kordless 14y agoIt's Bootstrap dude.
- wildmXranat 14y agoSo, is this using embedded lua inside an actual web server like Nginx or is it a Lua application specific server ?
- smarx 14y agoIt's a Python app that calls into embedded Lua.
- reinhardt 14y agoThis looks like a good excuse to pick up Lua.
- benatkin 14y agoThis isn't called webscript.io. It's called "webscript". It's beyond pretentious. The words "web" and "script" are extremely generic and common in software development. To put them together and not only use it as a product name but try to introduce it as a new term rubs me the wrong way. (The phrase "Webscripts are a fast and easy way to receive those webhooks" gives me the idea that they intend to do just that.) Going past that, the video takes way too long. The best parts of the API are quite similar to request and express in node.js land. The website is vanilla Bootstrap with a few supported customizations to make it stand out more. There's little in it that shows that the team has the level of skills needed to write a platform.
- aptwebapps 14y ago"This isn't called webscript.io. It's called "webscript". It's beyond pretentious." I have to say I think that's in the eye of the beholder. What's wrong with a simple name for site, even if it has a generic meaning already? "There's little in it that shows that the team has the level of skills needed to write a platform." What would you want to see on the site that would show this better? Why does using Bootstrap matter, or was that an unrelated observation?
- lelandbatey 14y agoI agree. I don't think that it's bad to choose a simple name. In this particular case, I feel that it's generic enough that it can be confusing/not super memorable. For those practical reasons I think this could use a better name, but I'm not going to write-off a project just because it's name is odd.
- chrislloyd 14y ago"There's little in it that shows that the team has the level of skills needed to write a platform." Is the demo not enough? It's paradoxical having the skill of building something that is new.
- robbiemitchell 14y agohttp://en.wikipedia.org/wiki/Minimum_viable_product http://en.wikipedia.org/wiki/Minimum_viable_product
- chalst 14y agoThe syntax highlighting in the script field is lovely. A question and an issue: 1. What support have you for Unicode? This is Lua's Achilles heel. 2. There's an issue with json.stringify - the script t={11, ["1"]=11} return json.stringify(t) should not return {"1": 11, "1": 11} since this maps a structure whose semantics has two elements onto one whose semantics has one. json.parse cannot be an inverse to this function.
- smarx 14y agoThanks. We don't do anything special to help or hinder Lua's handling of Unicode. In general, Lua strings store bytes. This is handy when dealing with something like file uploads, but it's not always what you want for other text encodings. If you have any suggestions for what we should do (or what we should document), I'd love to hear them. Interesting point about json.stringify. We should take a harder look at these kinds of cases. What would you expect the output to be? In general, JSON can't represent a lot of things that Lua tables can, so I don't expect json.parse(json.stringify(T)) to always return T. That said, anywhere we can do something more sensible, we should, so thanks for this feedback (and tell us more).
- chalst 14y agoUnicode: I wish I could say "the right way to handle Unicode in Lua is to X", but I haven't found X yet. slunicode at least allows you to do string matching on UTF8 strings: http://files.luaforge.net/releases/sln/ http://files.luaforge.net/releases/sln/ json.stringify: I suggest escaping strings by some character that cannot occur in identifiers or numbers, e.g., ":". Then the above would map to { "1" = 11, ":1" = 11}. Another question: does your mail function send mail from your server? How do you avoid users sending spam?
- smarx 14y agoI'm confused about your stringify suggestion... I think the primary use of json.stringify is to send that JSON to some API or back to a browser, but nobody else would be able to make sense of the ":1". Am I misunderstanding? We don't run an SMTP server, so the email (port 25 traffic) comes from our servers but not from our SMTP server. Even still, we will probably have to limit port 25 use to avoid blacklisting. We're sorting that out.
- cliff 14y agoOn the homepage, there is an example of an incrementing counter. Is this actually an atomic operation, or if two users hit the button at the same time, will it potentially only increase the count by 1?
- smarx 14y agoGreat catch! This should properly be implemented using leases: lease.acquire('count') local count = storage.count or 0 storage.count = count + 1 lease.release('count') return {count=count} We skipped the lease just for simplicity's sake, but if you need that kind of protection, that's why we implemented leases.
- tripzilch 14y agoIt's not immediately clear what this service does. Sure, I could watch the whole 5 minute video but I'd rather get an idea first :) So I wtched the first 15 seconds, which answered my first question: what kind of script? (answer: it's LUA scripts). Other questions, what does it mean to choose a URL? Does it host a website there which runs the script? Like a subdomain? Or am I completely thinking the wrong way here? What can I do with your service? (like 3-5 cool examples?) BTW I don't mean to say, "meh I won't use this cause it's not instantly clear to me", it's supposed to be constructive criticism because I think making that quick elevator pitch will get you more users! :) And that I really prefer skimming a page of text before deciding to watch a video presentation of a service.
- dyeje 14y agoThe first thing I thought was also 'What language can I script in?' After a few clicks I just closed the tab. Should definitely be more visible.
- daurnimator 14y ago*Lua
- barneydesmond 14y agoI'd like to add my +1 to this, I felt pretty much all of those sentiments. * "Webscript brings the simplicity and power of scripting to the web" Isn't that javascript? * Oh I see, it's a server side language. But... this just sounds like a backend language for Getting Shit Done. Which I don't disagree with, but-- oh, can you excuse me a moment while I answer the doorbell? "Oh hi Perl, hi Node, come on in..." * I personally do say I'm unlikely to use it because it's not instantly clear to me. I'm a sysadmin by trade so I don't think I'm the target audience, but I couldn't immediately tell what I'm meant to use webscripts for. * I hate hate HATE watching videos. I'm sure this is a very personal thing and maybe I'm the 0.1%, but I always feel like videos are a waste of my time, or simply not the best way to communicate the message. We work with keyboards to write scripts, why would I want to see a video of that? Okay, so I watched the first 20sec of the video. That gave me the "Aha!" moment. The first thing I thought of was the way you used to have CGI hosting servers, back in the pre-PHP days, because the majority of websites were completely static. I don't mean to come off as mean or aggressive, but I really had trouble answering the most important question (to me): What problem is Webscripts going to solve for me? That's it.
- makethetick 14y agoThis combined with a static html site, maybe hosted on S3, could make for a very interesting project.
- smarx 14y agoHow about a static HTML site hosted on Site44: http://www.site44.com http://www.site44.com? ;-) (That's my startup's other product.)
- aristidb 14y agoJust a few thoughts: - Certainly easier to use than https://script.google.com https://script.google.com - How about a UI for inspecting the storage object? And why is "storage" _not_ JSON serializable? - The whole thing gives the impression of "for disposable, not-very-important stuff". Is that deliberate? - Specifying all the API keys and passwords for each call to an external service by hand seems a bit tedious. Automate all the things! (Maybe with a "secure" credentials object that can be filled with a separate UI?) - Creating a new script under an existing domain deserves a dedicated UI element, it was not obvious to me that it is possible at all, at first.
- smarx 14y agoThere is actually UI for inspecting storage. As long as you have no more than 20 keys stored, it shows up on the left-hand side of the page, but you have to refresh the page to get the latest. My excuse for this not being discoverable and automatic: we just launched today. :-) I'd say we're generally for quick-and-dirty, not necessarily disposable or even not-very-important. But I may be splitting hairs here. We've been thinking a bit about a sort of global store for credentials. I'm curious to see what people end up doing with Webscript and how often they're typing the same credentials into multiple scripts. Thanks for pointing out the non-obviousness of creating new scripts in the same subdomain. We'll take a look.
- zapt02 14y agoCan i make a webscript that recreates all the other webscripts in my accounts to get around the free 7-day limitation? :)
- qeorge 14y agoIs it fair to call this a similar service to Zapier that runs at a lower level of abstraction? This appeals to me, because I find its much easier to express myself in code. Zapier is awesome because it makes it so non-programmers can link apps up, but as a programmer I'd rather work in pseudocode* like this instead, and this still keeps me from having to run cron jobs or respond to API changes. Very cool! *I realize its Lua, but I mean pseudocode to where I can just say twilio.sms and that magically happens.
- smarx 14y agoI think that's a great way to think of it! (I'm a founder of Webscript.)
- codyjames 14y agoI signed up. Already using it to check if a server goes down. Have a lot more things I plan to use it for as well. Awesome service.
- sktrdie 14y agoThe fact that Lua isn't very much used will get you less users. I feel like something like JavaScript would've been more appropriate for this kind of thing. Maybe you should allow different languages? Lua is quite similar to JS, so you can probably port the same API to it, or other languages?