Hey, there!

$ whoami

I'm Tony Messias, a curious programmer from Brazil 🇧🇷.

$ cat /var/work.txt

I work at Tighten as a Programmer (Full Stack).

I recently worked at Worksite Safety as a Lead PHP Developer, primarily with Laravel/PHP/Vue. I led a team of 3 other devs. We applied Shape Up, so worked on the pitches, planned the Cycles, and even executed them, having 1-on-1s with the team, things like that. I also did an infrastructure migration, we moved a huge WordPress site from a single DO droplet to AWS using read/write replicas, S3, etc.

And before that, I worked at madewithlove as a Full-Stack Software Engineer, and part-time DevOps for a bit more than 5 years. Built the most different kind of projects: from content platforms, to booking websites, to real-estate systems, and even a bit of IoT working on a building management platform (yes, automating all sorts of things in a building).

As part-time DevOps person, I managed to deploy and configure local development environments on a lot of different stacks. I was part of a bunch of different projects, so I interacted with a set of different OPS tools and platforms, such as Docker, Kubernetes, Laravel Forge, Laravel Envoyer, DigitalOcean, AWS (including, but not limited to, some non-conventional services like the AWS Transcribe and AWS IoT Core), Azure, GCP, among other things.

And before that, I worked as a Back-end Engineer at Gabstr, a location-based social network. Built the APIs we used there and a geolocation based content platform on top of Redis and PostGIS.

$ cat /var/courses.txt

I've been working on video content, you can find them here:

You can find more videos on my YouTube channel 🎬.

$ cat /var/thoughts.txt

Writing is how we consolidate our learnings. I'm currently experimenting with HEY World, so check that out for new posts. Here's some of my past writings:

Double Dispatch

I have been reading the book "Smalltalk Best Practice and Patterns", so I'm going to share some cool patterns in this blog. I shared this on Twitter: Some cool design patterns I've learned recently:- Method Object- Doub...

When Objects Are Not Enough

I've been looking up resources on the roots of Object-Oriented Programming - a.k.a. OOP. This journey started because there is a trend in the Laravel community of using Actions, and the saying goes as that's what "Real OOP" is about. I had some doubts about it and instead of asking aroun...

Cloud Native Buildpacks: Docker Images without a Dockerfile

TL;DR You can use Cloud Native Buildpacks to create Docker Images without having to write a single line in a Dockerfile. You will need: Pack CLI tool (download); Docker (

On SaaS Boilerplates

I tried to explain why it's so much simpler to adopt a SaaS boilerplate such as Jetstream instead of rolling your own, but apparently I failed. I'm not sure if I did a bad job at explaining or what. So here's another attempt....

Running Laravel Feature Tests in Parallel with Paratest

Pretty neat to see the Rails parallel test runner peg all cores and hyperthreads on my 8-core iMac. 10,000 assertions across 2,000 tests completing in 1 minute, 29 seconds. No fancy magic! All hitting the Dockerized DB. (This is for a 0.8 test...

Infinite Scrolling with Inertia.JS

A while ago I wrote an introduction to Inertia.js article showing how it enables building modern monolith applications that wants to use a JavaScript framework as the rendering engine instead of your regular server-rendered HTML t...

Premature optimization is the root of all evil...

You might have read this quote before. This is actually only part of the real quote, which was: Programmers waste enormous amounts of time thinking about, or worrying about, the speed of noncritical parts of their pro...

On Elo Rating Systems

You might remember this scene from the movie The Social Network. That formula indicates they used the E...

Reddit's "hotness" algorithm

I long time ago I was working on a location-based social network. We basically divided the World into groups according to the demographics of the region (crowded places would have more, smaller groups). Inside a group, you have many different "topics" (that's not what we called all this, it's jus...

The Secret Life of Programs (a book review?)

I wanted to write about this book because it really got me thinking about my experience and my relationship with computers. I feel like this is going to be a bit personal, but I'm not entirely sure how this will end up. I graduated in 2012 in System Analysis (4 years) and a few years late...

Introduction to Inertia.JS

Modern SPA frameworks can add drawbacks to a team’s workflows. You suddenly need to build an API, deal with API versioning, handle CORS and all that, while maintaining different applications at the same time. Inertia.JS allows building modern SPAs without most of those drawbacks, easily integrati...

True hybrid mobile applications with Turbolinks

In this video, I want to cover one aspect of using Turbolinks that I think it's not shared enough. Turbolinks has mobile bridges that make it really easy to wrap your existing web applications in a real native shell application, having some real mobile navigation and behaviors on top of your web...

On Serverless and Monoliths

I've just read the article "The Serverless Supremacy: The fall of the Monolith" and wanted to share my thoughts here real quick. I feel like it's missing the point. It's again saying that monoliths...

On OOP and Active Record

I'm a huge fan o Sandi Metz, I have watched some of her recorded talks multiple times, the most recent one was called "Polly want a message" and it's also my favorite so far (if this is a referen...

On using Frameworks

I'm a huge fan of frameworks. Particularly the Full-Stack ones. My framework of choice (and the one I use daily) is Laravel. It has a really powerful ecosystem for writing modern applications in PHP. Before I found Laravel, I had been using other framewo...

Top lessons for startups

We've worked for a lot of different companies. What is the top lesson we can share with startups that we've learned from our experience? This was the KnowYourTeam question this week at work, and I found it so interesting...

Integrating Elasticsearch with your Laravel app (2019)

Searching is an important part of many applications, and it sometimes is treated as a simple task. "Just query using LIKE and you're good to go". While the LIKE clause can be handy, sometimes we have to do some more complex queries. After researching for a while I found a few goo...

Multiprocess Containers with S6 Overlay

Note: I originally wrote this article as an introduction to S6 Overlay in the internal blog at madewithlove. Containers really shine when your service has a single OS process (or have the main process that handles children processes). That process i...

Declarative Infrastructure and Application Releases

Containers have been in the hype for quite some time now and Orchestrators have enabled us to shift the way we deploy software from task runners to something more declarative way. In this article...

Using MySQL for testing (in Laravel)

I wrote about running your test suite faster against a disk-based database instead of an in-memory one, and a Docker trick that uses tmpfs to have MySQL writing in-memory. If you are into Laravel and/or testing, check it out at

Queues and Async Apps (Video)

Right after I posted the video where I introduce the Laravel WebSockets Package, I got a request to maybe talk more about a preview of an old talk I had...

Kubernetes 101

I took some notes while I was learning Kubernetes, added more content to it after my experiments and it resulted in an article that covers the basics, like lingo (naming of things in the Kubernetes World), architecture of a Kubernetes cluster. I also work through deploying a demo Laravel applicat...

Using Laravel WebSockets package (Video)

This is a short introduction to using a recently released package called Laravel WebSockets as a replacement for Pusher. Hope you like it. Check it out here:

Building a Slack clone using Laravel, Tailwind CSS and Vue.js

I shared a tweet a while back about building a Slack clone app in PHP using Laravel, VueJS, TailwindCSS, and Pusher. That got some attention, so I was invited by Pusher to blog about using Push...

Want to receive updates on new content? Here's my RSS feed.

My email address is tonysm@hey.com