Observer Live

Yesterday I published a demo of my port of observer_cli using LiveView. It took me a few of minutes to familiarise myself with this new web development concept. The docs are clear, accurate and provide a very smooth introduction to the capabilities of this interactive server-side rendering way of doing things. I have to say that I’m really impressed ๐Ÿ™‚. You can try the demo yourself here. Or.. see this gif. »

The 10-minute Rails Pub/Sub

This time we’ll experiment with a quick way to architecture a Rails application to use Pub/Sub instead of model callbacks. What’s wrong with callbacks Rails active record models easily become bloated, that’s where most of the business logic tends to live after all. One of the most common sources of technical debt in Rails apps is callbacks. Models become god-objects with dependencies to other models, mailers and even 3rd party services. »

Communication Patterns

This post is about communication patterns in software projects. For your organisation and its teams to be truly agile and effective you should build a communication system. Goals Keeping people focused, aligned and effective Sharing information in the right places Optimising incident response times Operational safety Your organisation is spending vast resources to optimise various parts of the technical infrastructure to help your developers work better. We all spend a fair amount of time communicating and the quality of the deliverable result of our work is largely affected by the accuracy and completeness of such communication. »

ElixirConf.EU 2018

I attended ElixirConf.EU 2018, it took place in Warsaw this time. The food was fantastic, the weather was very favourable and the presentations a blast. The Food Announcement: This blog is from now on about food ..Not. That zapiecek place was sooo good though. We ate there almost twice a day. They had those ravioli-like pasta called pierogi, absolutely mouth-watering. I might visit Poland again just for the food! »

Effective Meetings

This is a recollection of thoughts on meetings and notes from one of my favourite books, high output management. Meetings have a bad name and people tend to nag about them. It doesn’t have to be like that. Most of us have been in a situation where we wish we could think of a good excuse to escape from a never-ending meeting. Meeting Types Peopleโ€™s time is highly valuable, so all meetings should be purposeful and well executed according to type. »

Phoenix WebSockets Under a Microscope ๐Ÿ”ฌ

This is a code-reading and exploration post about the WebSockets side of Phoenix. It builds upon some of the tracing techniques showcased in the previous post, to observe some of the internals of Phoenix. It also features some tricks I commonly employ to debug WebSocket related issues. The title and nature of this post are inspired by the marvellous book Ruby Under a Microscope written by Pat Shaughenessy. WebSockets The WebSocket Protocol enables two-way communication between a client running untrusted code in a controlled environment to a remote host that has opted-in to communications from that code »

Debugging & Tracing Elixir Applications

This post describes a few useful techniques to debug running Erlang / Elixir applications. It is meant to be a cheatsheet of things you can do to inspect and alter the state of an application without requiring the installation of packages. For any of the code snippets below, autoverse refers to my local hostname, which itself refers to one of my favourite science fiction novels, “Permutation City” by Greg Egan. »

Elixir.LDN 2017

I returned from vacations in beautiful Greece (Amorgos island ๐Ÿ), to attend Elixir.LDN-2017 in London. General Feeling The venue was at a very convenient location and was well suited for the conference. I could see many familiar faces and felt like a supercharged edition of the London Elixir meetup. If you’re interested in attending the Elixir London meetups you probably want to join #london of the elixir-lang slack (get an invite) and the meetup. »

Distillery releases with Docker multi-stage builds

This post describes the procedure to create lightweight Docker images, using multi-stage builds, to deploy Elixir applications packaged using Distillery. It is assumed that you’re familiar with Docker and Elixir. Multi-stage builds Since Docker version 17.05 you can have multi-stage builds. With such builds you can have a single Dockerfile contain multiple FROM instructions, separating multiple stages of a build, where artifacts from one stage can be used in the next and all resulting in a single image. »