Homebrew released version 1, Allo is available, and CloudFormation got some much needed love for usability.
Homebrew 1.0
While macOS Sierra was released this week (and if you’re a Mac user I recommend you check out some reviews to see what might be useful to you), for developers using the Mac there was another interesting release. For years Homebrew has been the most popular way to install the tools that Apple doesn’t give you. Whether this is wget
or a newer version of your programming language, everything is a simple brew install
away.
Now, after 7 years, they’ve taken the plunge to an actual 1.0 release. As it is continuously updated it isn’t likely that you’ll notice any big differences1, but it’s probably worth having a look through the list of updates regardless. Because it updates so seamlessly I’ve found that I generally miss any new and interesting features that might have cropped up.
And of course, if you don’t use Homebrew yet, I highly recommend you look into it as you’ll be surprised how much easier it can make your life.
Allo
I mentioned Allo briefly when it was announced at Google I/O. This is Google’s new messaging app, where the main feature is the built-in chatbot. Last week it was actually released, and is therefore available for Android and iOS.
First, I haven’t used it yet. To be honest, I don’t see any advantage to this over existing solutions I already use (iMessage, WhatsApp, and Telegram). The only thing I therefore want to briefly highlight is the different direction that Allo has gone in compared to other messaging apps.
In the past year or so, it seems like every messaging app that didn’t do end-to-end encryption yet has moved to enable this. With Allo however, this is not the case. There is the option to use it in incognito mode, but as that removes the main feature that sets its apart from the competition I don’t think that will be used much. Instead, in the regular mode, Allo stores all your messages on Google’s servers so that the Google Assistant can learn from your interactions.
To clarify, the most interesting feature of this Assistant is that it interjects itself into conversations without being explicitly called. Therefore more data will allow the machine learning algorithms behind it to get better at this. Because of that, Google has also changed the behavior of how they deal with these messages. Instead of keeping them only briefly as was originally mentioned, they are now stored until you actively delete them.
It will be interesting to see how this tradeoff of privacy vs convenience works out. I’m convinced that Google is just as interested in keeping your data secure as Apple is, but the main difference is in how they do it. Where Apple believes it’s best if they can’t even see anything, Google believes they can keep it most secure in their own systems while still allowing them access. As usual, the truth is likely in the middle si it will be good to see how this will evolve in the future.
CloudFormation changes
AWS constantly releases new features and updates, but most of the time they’re not something I mention. As regular readers know though, I am always interested in updates to certain products and CloudFormation is one of those.
So when there is a change in CloudFormation that makes it a far better product, I can’t resist writing about it. This is just an initial look at the changes and I’ll likely try to make a short video to highlight the changes better in the near future2.
What are these changes then?
First off, goodbye JSON and hello YAML. This change alone makes a huge difference. In my introduction to CloudFormation article I mention how terrible JSON is for a tool like CloudFormation. It’s impossible to add comments (except by adding CloudFormation metadata) and it’s designed to be read by machines, not humans. Combined, these two things mean that it becomes a lot harder to read an existing template or make changes to it. Of course, the template designer helps with this, but that has its own flaws such as a lack of version control.
YAML is the opposite of this. This markup language is instead designed to be human readable first, a reason why it has become very popular for configuration files and even larger scale in tools like Ansible. Technically it has always been possible to write CloudFormation in YAML and then convert it to JSON, but I don’t think many people have done so.
So, does this spell the end of something like CFNDSL? Should we go back to writing our templates by hand instead of using a tool to convert it from a different programming language? It depends3.
If you’re already writing your templates by hand, I can’t imagine that you won’t quickly convert any that you are working on because it makes it so much easier to work with. And if that was the only reason you used a DSL, you’re probably fine with switching to pure YAML.
But, if you’re using CFNDSL or a similar tool than you have probably gotten used to other advantages it offers like loops or conditional statements. These are still not possible in the templates themselves so nothing will probably change in that regard, other than possibly generating YAML files instead of JSON.
A common setup with CloudFormation is to have your VPC/Subnet configuration separate from the instances, which in turn might be separate again from other services you are running such as your RDS. Splitting these up makes your stacks smaller and easier to manage, but also means that you needed a way to access these resources from each other.
Using tools such as Ansible to orchestrate it all made this easier, but it’s great to see that CloudFormation now has its own built-in solution for that. It is now possible to call “exports” from other templates. This is an extra option for Outputs where you can define them to be exported under a certain name, making their values available for use in other templates.
The last thing introduced in the above linked article is several syntax changes. These also help with the clarity of the templates, and especially the substitutions seem to make life easier. I’m not going to repeat them all here, instead I urge you to look at the original article and its examples.
-
The only major change I noticed on running an update was a message that you can now restore the
/usr/local
permissions to the default again as they moved the location for it. However, this was merged in a week before the 1.0 release announcement. ↩︎ -
Right now I’ve got less than a week left to finish the extra features for Igor that I want to include for its entry into the chatbot competition so that has priority. ↩︎
-
Yeah, I bet you saw that one coming. ↩︎