1. 5

    hook.io supports building webhooks and microservices in Smalltalk.

    So we have SmallTalk as a Service.

    Here is a quick demo:

    Source Code: https://hook.io/marak/examples-smalltalk-hello-world/source

    Live Demo: https://hook.io/marak/examples-smalltalk-hello-world?owner=foo

    1. 3

      How would you compare this to CGI/FastCGI? Also, you’ve got a name collision with the Haskell “stack” tool for dependency management.

      1. 1

        I suppose this could be considered a modern CGI, but I never really had that in mind with the design. The interesting parts happen when you start developing better contracts between the HTTP APIs and the Process APIs. This can solve a lot of the issues that CGI/FastCGI has.

      1. 2

        I follow this project on Github mostly because of my curiosity.

        Does anyone actually use this here?

        It seems like a really bad idea. The last thing I want on my command line is a tool trying to auto-correct my mistakes. Seems like it could cause unintended consequences.

        1. 3

          The program does not auto-correct mistakes – you are required to actually confirm the correction before it takes any action.

          1. 1

            http://catb.org/jargon/html/D/DWIM.html

            However, as mentioned, it doesn’t execute corrections automatically. I suspect the risk of errors is still slightly higher than fixing the command manually, but well into “safe enough” territory.

          1. 1

            Really cool! Someone added Romanian this morning!

            Can’t wait to see what other contributions come in.

            1. 1

              Excuse the nitpicking, but what’s the point in saying “i18n internationalization” when “i18n” is literally just a short form for “internationalization”?

              1. 1

                Not everyone knows what i18n is. Maybe now they do!

              1. 3

                YOU LIED, it says you have only added support for TEN programming languages. WHERE IS MY ELEVENTH LANGUAGE? Could I suggest BASIC? :D

                Anyway – it looks pretty interesting, and having played around with Lambda, I’m super pleased that there’s other people out there thinking the same way and working on different variations and solutions in this space.

                Constructive criticism follows.

                1. your page doesn’t really look professional enough for the audience, in my opinion; if you found a way to hire a graphic designer to look more convincingly corporate and less back-of-the-napkin, it might help out.

                2. And who is that audience anyway? The correct answer may vary, but my answer is “people who are streaming data from place X to place Y and want to do transform Z to it along the way.” You know – corporate types. What I bet it is not, is “people who know 11 languages and want that to be the primary selling point of the software they’re using.” You’re selling an integration nexus, but those sorts of things first have to work, and work well for the business case, and then go into the nitty gritty of how much support they offer to various languages once they’re closing the sale.

                3. To that end, what does this integrate with? How do I get data in and out? What’s the SLA? What do you hook up with? How about encryption? SSL? Can you read the data when I send it to my process? If so, why the hell should I trust you? Does it work with ETL? How many processes can I run at once? What happens if the process gets stuck? Do I pay for time when events aren’t coming in? What’s the latency of the service? What’s the bandwidth of the service? What is this confusingly named ‘AGPL’ thing and why would I ever want to put that on my precious corporate servers?

                On that last point – I do know what the AGPL is, but you should make clear: hook.io is dual licensed software. It is free to use and install, as long as any changes are freely returned to the authors for their use (including commercial use). Or, if you are a corporation that does not wish to obey those terms, hook.io is available under a standard commercial license for a fee.

                1. What languages are the ones that people care about? Probably not CoffeeScript (which you misspell as ‘Coffee-Script’, btw). Definitely not Smalltalk. Probably Java, JavaScript, PHP, Python, Ruby. You should take out CoffeeScript, Scheme, and Smalltalk. Those are not selling points. Those are anchors around your future expansion. Every question you get about the Scheme implementation is going to be wasted. You don’t have the time to deal with the upkeep. You’re tiny. You need to make the actual product that people want. Lead with the 4-5 (more than Amazon!) best interfaces you have, polish them to the finest sheen, and mention the others in an ‘oh also’ page, saying “and other languages available via our amazing plugin architecture”. Get Java support. Java is gigantic. Maybe C# too.

                Definitely do not do the fork/exec binary thing that this first implementation appears to be for all the non-javascript languages. That will be super slow for a lot of languages and a lot of use cases.

                1. You could probably do a lot better than node.js for the base language for this thing. Node.js is pleasingly fast at some things but it is pragmatically pretty bad at complex tasks involving possibly-blocking 3rd party language integrations. People at the kind of shops that might use Lambda are often grown up enough on the backend not to want to deal with node. Similarly, you can’t ship something based on Github Gists, as brilliant as that is (I had that idea too), because if github ever got mad, that would be bad.

                2. You want non-HTTP integrations too. ActiveMQ, RabbitMQ, Kinesis or whatever. Plaster that all over the front page. That’s the important thing. Nobody cares about your implementation, people only care about how you are solving the actual problem they have.

                3. “A featured section will be created on the hook.io website for all Developer Community Managers to optionally list their profile / website.” Don’t beg. It’s not seemly. Your thing is valuable, and you should be proud of your work so far. Don’t clutter up the value proposition with a bunch of unrelated featured nonsense just because some dude said he would maintain object pascal bindings for you.

                All my thoughts only, intended constructively. Good luck!

                1. 3

                  Thank you so much for your detailed response!

                  I’ll do my best to try an answer your questions. Overall, I agree with everything you wrote. The 11th language is JavaScript. We added 10 others.

                  Graphic Design

                  I hear you loud and clear. I’ve brought on a really good really experienced designer as a co-founder. He should be starting next month.

                  Who are our target users?

                  Right now, we would like to first target beginner to intermediate developers looking for a quick and cheap way to host microservices. Perhaps even catch a few advanced developers who appreciate the simplicity of the service.

                  I’d be happy if we had 1,000 throughly happy developers each paying $5 bucks a month. From that base we can further develop the service.

                  Service Level Agreement

                  We currently don’t have an SLA. That’s a problem and will have to be resolved relatively soon. The service is actually built to scale and has shown pretty good performance so far.

                  I don’t want to make any promise I can’t keep. Once we have slightly better reporting metrics and deployment tools, I’m confident we can release an SLA that is accurate and suitable for business usage.

                  We do have SSL HTTPS communication and are working towards custom SSL certs.

                  AGPL

                  The AGPL license is to protect the project and contributors. I’ve had bad past experiences in the past.

                  The majority of hook.io’s dependencies are already released as MIT. More hook.io components are refactored into MIT modules everyday. If the AGPL license actually starts to hurt the project, I’ll change it to MIT

                  What languages people care about?

                  That’s really only a question our users can answer. I can research metrics all day, but only real user usage will dictate what gets first class support.

                  Coffee-script was requested by more than one active user. Babel was also requested. These are all just JavaScript.

                  I now have open github issues from two new developers this week. One is looking to implement better support for Python, the other Ruby. Moving forward with these implementations now.

                  I understand your concern for upkeep, but the upkeep is relatively low for me as project maintainer. The pattern for adding new language support is good. Join our IRC channel if you have questions about it.

                  If users want more features for a language, they are going to ask for them, and as I’ve already seen they will most likely help implement it themselves.

                  The real cost is confusion for new users by providing too many options or having a lack of documentation for a language. We can fix this with UX.

                  If enough users are willing to pay for full-featured scheme support, we’ll add it. As for SmallTalk, that was mostly an experiment. We have no further plans to develop.

                  Choice of node as base language

                  Do you mean the language it’s built with? I’ve been using Node since 2009 and know a lot of it’s ins and outs. I’ve gone into great detail to map the child process spawn lifecycle of node in order to get streaming support for 3rd party binaries.

                  Node has been a great tool to get us out the door.

                  Github Gist

                  Github gist is not mandatory. You can deploy from a code editor on the hook.io site itself. Github is generally great with this sort of thing. I actually have a dedicated support person at Github who is fully aware of this project for over one year!

                  Java

                  You brought up Java a few times. Java is really the one can of worms I don’t want to support. Java will cause the most problems and support issues of any language. If someone is willing to step up and implement it I would consider it, but even that I’m hesitant to do. The entire software stack is setup to run scripting languages and not compiled languages. Adding support for Java / C / C# would most likely require a moderate sized refactor. We actually already have an open issue for this.

                  Thanks again for your feedback!

                1. 1

                  AWS Lambda looks really cool! These types of services are the future.

                  If anyone is interested in an open-source alternative to AWS Lamba ( with no amazon lock-in ) check out my project http://hook.io

                  1. 0

                    I like the look of this but before I used it I’d have to understand more about how it works… how does it establish the connection to the external? is it ssh? is there some other protocol it uses?

                    1. 1

                      As explained in the README file, natman uses Network Address Translation

                      1. 0

                        oic.

                        What it does is open ports on the local machine?

                        (I expected it to be opening a tunnel somewhere somehow).

                    1. 1

                      It might be a good idea to justify “down-votes” with a select box option.

                      For a user to down-vote a comment, a simple reason would be required.

                      Such as:

                      • Inflammatory
                      • Irrelevant
                      • Factually incorrect
                      • Other

                      You could also optionally justify “up-votes”.

                      • Insightful
                      • Funny
                      • Additional resource
                      • Other

                      Just a thought! :–)

                      1. 2

                        You can already give a justification for downvotes of both stories and comments. Click any downvote button and you should see the menu drop down – you can click Cancel afterwards.

                        On the other hand, the possibility of up-vote justifications sounds interesting. I know one issue with Reddit that some people on Hacker News have is that too often, funny comments outrank insightful ones, and they’d prefer to read insightful comments. This way, “insightful” votes can automatically add more to a ranking than “funny”. Or perhaps it would be better to keep all upvotes equal by default, but let those people change their settings to tell the site how much they value each type of upvote – they might rate “insightful” as worth “2” and “funny” as worth “1” for their comment ranking.

                        1. 4

                          For the record, as you didn’t mention it, the up-vote justifications (and down-vote justifications) are in play on Slashdot, so you can differentiate between insightful (good argument), informative (new information), and funny (obvious). (There were probably more options, which might be interesting to check out if you care about thinking more on such a feature.)

                          1. 1

                            One more interesting note about /.: Funny comments do not give you karma. “You have to be smart, not be a smart-ass.”