This past summer I set up a little 6-dollar-a-month Ditigal Ocean linux server to run crons jobs for different coding projects like my Plug-N-Play Twitter Engager and some stock analyzer scripts. It was a pretty barebones server instance so it took a bit of work to get into production-ready state. I've tried to compile the steps here so others (and future me) can reference it for a quicker setup. ?
Although I am a huge fan of lambda functions and s3 + cloudfront deployment stacks, in this current project I was using the botkit framework to make a slack chatbot. The framework is awesome, but the only catch was that it needs to be actually deployed on a real server so I had to put on my sys admin hat and fire up some ec2's. I ran into an interesting challenge in that the botkit server wants to run on localhost:3000, but in order to run it securely I need to use port 443. After unsuccessfully trying a few simpler hacks I bit the bullet and chose to use nginx as a reverse proxy here. I hadn't had much hands-on experience with nginx before this project so it was definitely a learning experience for me, and this post will be basically a walkthrough of the things I did to get it up and running.
At a new job my coworkers flamed me for not having git bash-completion in my terminal (Lol, really though). Well, they could have asked me in a nicer way hehe, but I shall still be thanking them for helping me to make my command line even more awesome! By the way, I added git bash-completion as a step in my ultimate pretty command line guide which you should definitely check out if you haven't already, but this post is specifically about git bash-completion and why you should use it, and I hope by the end of it you have git bash-completion installed in your terminal too! 😉
This is a little thing that tripped me up, and I'd like to write this blog post so that I don't forget it!
The beauty of Clojure's non-OOP style is that the functions are not tied to some blueprint that needs to be instantiated. Instead, once they are included, required, or loaded, etc. the functions are just there, able to be called at some later point in the code. Because of this, Idiomatic Clojure lends itself well to functions that are pure and can be called in complete isolation. It should be noted that load-file works for both Clojure and ClojureScript!
The posts on this site are written and maintained by Jim Lynch. About Jim...