A Slack bookmarking application in Elixir with Opus

This post describes how we used Elixir and Opus in one of our services at Tefter, which implements bookmarking collaboration in Slack. My relationship with Slack I remember, when Slack started getting viral and it was set as the main chat app at work, I was very reluctant to use it. I was quite happy with IRC and always in favour of open protocols. Since it supported an IRC / XMPP gateway, tweaking my irssi config and later finch was trivial and my overall experience was good. … Read more

ElixirConf.EU 2019

I was lucky enough to attend ElixirConf.EU for the third time and in this post I’m sharing some thoughts about the talks I saw, some of my notes and insights on the future of this community in general. Location I’d never visited Prague before and the conf was an amazing opportunity to combine business and pleasure. While writing this post though, a week after, I realised I didn’t visit most of the landmarks that I was planning to. … Read more

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. … Read more

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. … Read more

100 Things a Software Architect Should Know

A very short list of things a software architect should know:

Read more

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. … Read more

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! … Read more

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. … Read more

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 … Read more

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. … Read more