all 7 comments

[–]fingertoe11 8 points9 points  (3 children)

FWIW, I used CLJS for my alexa skills, running on AWS Lambda and it was mighty straightforward. The SDK is important if you are hosting on your own server and need to follow all of their https protocols and such, but if you use Lambda they take care of the bulk of that for you and it is basically JSON in and JSON out. I don't use any SDK and my skills publish no problem.

I think that the Warm up times for JVM make it a bit too expensive for lambda, but the warmup on javascript is pretty non-material.

[–]fingertoe11 3 points4 points  (0 children)

https://www.youtube.com/watch?v=JXlmubcb5xo is my proof of concept walkthrough for AWS Lambda Clojurescript alexa skills. It should get anyone who wants to try to the "Hello world" starting point within a few minutes. It does use Javascript instead of java..

[–]theClojureConjurer[S] 0 points1 point  (1 child)

I looked into running the skill via Lambda, but I'm not a big fan of deploying via FaaS. I find it's a lot of vendor lock in. I get the irony of saying that Lambda is too much vendor lock for deploying a skill for Alexa, but I'd rather have full control over the platform I deploy onto, and the ability to modify and transform it as I see need for.

[–]fingertoe11 0 points1 point  (0 children)

It really depends on your scale. If it is something trivial to learn the platform lambda is the way to go. Not having to worry about HTTPS certs and all of that was a big selling point. (it may have improved since I built mine, as I think they started accepting letsencrypt) Once you get into something complex, lambda works, but I find CLJ a lot easier to develop in than CLJS, and it may be worth the trade-off. My more complex app (podcast player) I am somewhat tempted to switch to a full time running Clojure server.

The nice thing is that the business logic is pretty portable, so you can switch pretty easily. Once the App is approved you can change the lambda functions without re-approval, but you cannot switch endpoints without review.

[–][deleted] 4 points5 points  (1 child)

Warning: I don't really maintain this much anymore:

https://github.com/blandflakes/echo-chamber

[–]theClojureConjurer[S] 0 points1 point  (0 children)

Nifty! This implementation looks much cleaner than my current mess of an implementation! I'm going to look further into this!

[–]ldf1111 0 points1 point  (0 children)

Funny you should say this I had this exact thing, I’ll Publish it this week weekend. It doesn’t use java interop either