Awesome Design Tools

GitHub hosts numerous “awesome lists” with collections of tools, documentation, and resources on a variety of subjects. So far, however, these seemed to be mostly developer-oriented. It’s good to see that other people are joining in. Awesome Design Tools is a curated list of the tools and resources for designers (web, interface, print, brand, etc).

Not even being a designer myself, I had to Google for some of these things plenty recently. In particular – collaboration tools, color pickers, fonts, icons, screenshots, etc.

7 Awesome CloudFormation Hacks

Amazon CloudFormation templates are a bit tricky to write, regardless of whether you are working on your first one or you have been doing it for years. Sure, there are plenty of examples online, tools that make it easier (thanks Ansible!), and copy-pasting sections from your own library. But any tips on how to make the life easier are always welcome.

Hence, here’s a very handy collection of “7 Awesome CloudFormation Hacks“. These include:

  1. Combine two sequent intrinsic functions
  2. Use exported values from other stacks in !Sub
  3. Changes in cfn-init don’t trigger redeployment in AutoScaling Group
  4. Get Stack name of sibling stack in nested stacks
  5. AccountIds with leading zero
  6. Use Dictionaries as Stack Parameter
  7. DependsOn with condition

How To Build a Serverless CI/CD Pipeline On AWS

How To Build a Serverless CI/CD Pipeline On AWS” is a nice guide to some of the newer Amazon AWS services, targeted at developers and DevOps. It shows how to tie together the following:

  • Amazon EC2 (server instances)
  • Docker (containers)
  • Amazon ECR (Elastic Container Registry)
  • Amazon S3 (storage)
  • Amazon IAM (Identity and Access Management)
  • Amazon CodeBuild (Continuous Integration)
  • Amazon CodePipeline (Continuous Delivery)
  • Amazon CloudWatch (monitoring)
  • Amazon CloudTail (logs)

The examples in the article are for setting up the CI/CD pipeline for .NET, but they are easily adoptable for other development stacks.

Introduction to Microservices, Docker, and Kubernetes

There is plenty of documentation, tutorials, and guides online, explaining Docker containers, Kubernetes container orchestration, and microservices. Here are a few that I found useful for the quick and simple introduction into these technologies and how to tie them together.

Firstly, some basic 101s:

Secondly, “Introduction to Microservices, Docker, and Kubernetes” YouTube video nicely puts all the things together, with complete code and configuration examples, some glue, and extra tips.

And finally, a few bits that you might need to solve on the way, which are not necessarily related, but can throw you off:

  • Some of the virtualization bits (such as VirtualBox) might fail to run properly if you have Secure Boot enabled. To solve this problem, reboot the machine, go to the BIOS, and disable Secure Boot (enable Legacy Mode).
  • Additionally, while you are there, check for the Virtualization Technology settings. Enable Virtualization Technology in the BIOS to further smooth out VirtualBox and friends.
  • While working on your first minikube cluster (sorting out VirtualBox and such), it helps to completely remove and start again, after sorting out any issues that prevent Kubernetes to start (proxy timeouts, etc). A quick “minikube delete && minikube start” will save you some time on troubleshooting weird issues, than just “minikube start” after a failure.

Have fun!

A Deep Dive into Iptables and Netfilter Architecture

It’s been a while since I had to dive into the iptables and netfilter. These days I mostly have to do some basic configuration here and there, with occasional adjustments or troubleshooting (less and less so, thanks to Amazon AWS). But if drilled on the details, I quickly lose my confidence. In an effort to refresh my memory, I looked around for a blog post or an article that is short and simple, yet deep enough for me to brush some rust of. I found “A Deep Dive into Iptables and Netfilter Architecture” very helpful.

Turns out, the bit I needed the most was this one:

Chain Traversal Order

Assuming that the server knows how to route a packet and that the firewall rules permit its transmission, the following flows represent the paths that will be traversed in different situations:

* Incoming packets destined for the local systemPREROUTING -> INPUT
* Incoming packets destined to another hostPREROUTING -> FORWARD -> POSTROUTING
* Locally generated packetsOUTPUT -> POSTROUTING

Technical documentation is so much easier these days. I remember the old days of manual pages and HOWTO guides, and I think we’ve made a lot of progress.