• No-ssh deployment to EC2 using ansible and AWS Systems Manager

    In a previous post, we saw how to deploy an application (small golang service) using ansible and systemd. In that flow, ansible execution depended upon the remote server accepting ssh connections. However, there are a lot of situations in which the remote server does not have an open ssh port due to security reasons (e.g. compliance to security requirements).

    Read on →

  • The golang for-loop gotcha

    This bit me again the other day so what better way to exorcize the resulting bug in production code than to write a small article about it?

    Read on →

  • How to encrypt the NVS volume on the ESP32

    There has been a lot of discussion around embedded device security during the last few years especially after well-publicized DDoS incidents involving armies of hijacked IoT devices. The demand for higher levels of security has put pressure on manufacturers and software providers to adopt and support modern security protocols in order to mitigate the relevant risks especially given the widening spread of IoT devices.

    Read on →

  • Deploying a service using ansible and systemd

    You may be a sole developer or member of a small development team with no dedicated ops people. You will probably have a handful of small-ish services, perhaps a few cronjobs and a couple of VPSs to run them on. Or you may have one or more servers at home and would like to automate the deployment of custom or open source tools and services. What are your options?

    Read on →

  • A legit use case for the goto abomination

    Most programming educational material mentions, at some point, the goto keyword, usually as a despicable abomination that should not exist in the face of this earth. The general consensus is that the goto statement is considered harmful and the advice is to avoid the use of goto and to restructure the code so as to eliminate the need for using it. Of course this is sound advice, intended to discourage the creation of code in which a function’s control flow is heavily influenced by jumps to and from various points within its body, making the understanding, testing and debugging of the function really difficult.

    Read on →