I have been using Cody in VSCode for a couple of months, and I am getting a ton of value out of it.
The key things I love are:
1. It really knows how to summarise a code blocks, this can be helpful to review code in other projects, or provide a refresher to your own, it misses very little!
2. It is very smart when it comes to filling in gaps in log statements, error messages or code comments.
3. Copy and paste is mostly dead, given a small hint it fills in the gaps for common patterns and is way less error-prone, and follows my prevailing style once the project is up and running.
4. Writing tests, this really surprised me but a lot of trivial, and some not so trivial ones are generated by Cody.
Things which annoy me when using Cody:
1. Suggests when writing in markdown are not very helpful, most are wordy, and always positive, it is almost impossible to get a negative or even snarky sentence out of it...
2. Inline suggestions are a bit annoying at times, it really doesn't "know your code", or that of your libraries, for common std library calls it is great, but anything more complex or obscure it is mostly wrong.
3. It is somewhat bolted onto VSCode using some creative solutions, with VSCode only allowing more fit for purpose APIs to be used by GitHub Copilot, which is sad.
Overall it is doing a lot of the heavy lifting turning my code into English, and either entirely building tests, or fleshing out enough for me to just tweak the code a little so big from me.
I have learnt a small amount of it a few times, I use and rely on RabbitMQ every day so it is important I know a bit about it.
That said I just can't get over how bizarre and jarring the syntax is, this paired with the configuration structure and error messages really make it hard to get into to.
Having seen a few talks on the subject I tend to agree, more recently I am using golang for most of the things I intended to do in Erlang.
The reason I chose this route is to stick with a syntax which is common to all the languages i use day to day, while exploring a new, but much smaller toolset for building concurrent applications.
It seemed to me a much wiser route in the long run.
That said I still like the Erlang runtime and the modules it provides, if only the authors of the language could chart a course out of this unusual and sometimes frustrating syntax.
On elixir, I really hope this catches on but unfortunately like coffee script you will still need to get your hands dirty in Erlang if you want to wrap any existing libs or modules available in the runtime, or debug the crazy error messages it produces from time to time.
Clojure, and indeed LISP is one of the things I would really like to learn but most of the tutorials have been way to academic in there format. This one so far has been much more focused and clearer on the intent of the language.
Working a small development shop I can tell you that if we buy an off the shelf workstation it can take almost as much time to clear our the crap ware and configure the drivers as it does to build a machine from parts, even considering the work it takes to quote/order/pickup/assemble a system.
It is a very sad state of affairs when NONE of these vendors offer a service to sell you one without crap ware..
This costs small business so much time it is a very bad joke!
After some consideration I would probably err on the side of caution and either use something like IPSEC AH (Authenticated Header), or build a session key exchange protocol using something akin to it's two phase approach, or even just perform HTTPS based request to exchange session keys.
This session key could then be incorporated into each of the HMAC signatures and would be refreshed on a regular basis similar to how IPSEC does it.
I have used AH in the passed for log data which required the receiver to verify the source for auditing purposes, but this was quite some time ago, these days most systems just either use SSL or IPSEC with ESP.
Reinventing the wheel is probably not the best idea in this case.
Will add a note on this to my blog post for completeness.
The key things I love are:
1. It really knows how to summarise a code blocks, this can be helpful to review code in other projects, or provide a refresher to your own, it misses very little!
2. It is very smart when it comes to filling in gaps in log statements, error messages or code comments.
3. Copy and paste is mostly dead, given a small hint it fills in the gaps for common patterns and is way less error-prone, and follows my prevailing style once the project is up and running.
4. Writing tests, this really surprised me but a lot of trivial, and some not so trivial ones are generated by Cody.
Things which annoy me when using Cody:
1. Suggests when writing in markdown are not very helpful, most are wordy, and always positive, it is almost impossible to get a negative or even snarky sentence out of it...
2. Inline suggestions are a bit annoying at times, it really doesn't "know your code", or that of your libraries, for common std library calls it is great, but anything more complex or obscure it is mostly wrong.
3. It is somewhat bolted onto VSCode using some creative solutions, with VSCode only allowing more fit for purpose APIs to be used by GitHub Copilot, which is sad.
Overall it is doing a lot of the heavy lifting turning my code into English, and either entirely building tests, or fleshing out enough for me to just tweak the code a little so big from me.