When I was 14, I wrote a book on Flash ActionScript programming, which kicked off my career in the most unusual of ways: with me convincing my parents to let me drop out of school, before I even finished 8th grade.

I abandoned Flash before Apple killed it, because I could already tell the future was in web standards. I wanted to learn what it took to develop traditional websites, with vanilla HTML screens backed by APIs and distributed databases. I wanted to learn how you could effectively deploy and scale them. Without any traditional education, the web was my university.

Startup Life

That's when I got involved with Python, back in 2004. Thanks to my dad, who was an ATC for a couple of decades, and perhaps, binge watching Friends and Senfield, I knew just about enough English to get my first remote job as a full stack engineer. Before I could truly master the ways of Python backend development back then, powered by things like Apache and FastCGI, Ruby on Rails was going mainstream and the startup I worked for chose to adopt it.

I got involved deeply with Ruby on Rails, so much that I still get job offers to work with it to this date. The premise of Rails was that developer time was more expensive than computer time, and companies would benefit from increased productivity delivering web applications. While that is actually true to some extent, it quickly became clear to me that was a slippery slope, with Rails services that truly handled millions of users becoming performance hogs, difficult to scale and keep running smoothly. That of course didn't prevent all companies that used Rails from suceeding, but I decided to go back to my Python origins.

When I got back to Python, it was quite a bit more mature, with things like uWSGI ready to be leveraged. Aaron Swartz and Mark Pilgrim were my main inspirations back then. Flask's author Armin Ronacher was also a huge influence.

I miss the early 2000s blogsphere dearly — I like to think following folks like Sam Ruby, Joe Gregorio, Tim Bray and Mark Pilgrim gave me a bit of the software engineering education I missed from ditching school.

That and hundreds of ebooks I could find.

How I fell for JavaScript

When Node.js began to merge, I dove in and even participated in Node Knockout. But I was still too heavily involved with Python to see things clearly. And after over a decade as a Python engineer, I proceeded to learn Go and still went on to use it professionally for some time.

It was only after I started dabbling with Vue.js as a way out of jQuery that things started to change. I considered myself pretty versed in CSS and jQuery at the time, but Vue.js was a game changer. I managed to ignore Angular and React for a long time and stayed within my backend comfort zone, but Vue.js was just too interesting to pass up. I ended up taking on a few full stack engineering roles where I would code the backend in Go and the frontend in Vue.js.

Fast forward to 2017, I was introduced to React server-side rendering (SSR). Since I actually learned Vue.js before React.js, I felt the React.js development experience wasn't so great. And as soon as Vue.js started supporting SSR, I migrated back to it. The thing about SSR is that you get to write your whole application using a common language: JavaScript! Performance on the server obviously wasn't as good as Go, but Go couldn't SSR JavaScript effectively.

My time on the Nuxt.js core team

Getting SSR right and having a good developer experience was challenging — just dealing with isomorphic code bundling and hydration were enough to constitute a big learning curve to this new way of developing applications.

Next.js and Nuxt.js were created to address this and are currently the most popular SSR frameworks for React.js and Vue.js, respectively.

After working with Nuxt.js for nearly two years and started contributing consistently to it, I was invited to be a member of its core team.

Many pieces of this blog are dedicated to it. Many of my public GitHub repositories are Nuxt.js modules or experiments.

Joining the Fastify team

Dealing with Nuxt.js performance issues led me to discover Fastify, which I consider to be the state-of-the-art web framework for Node.js. I eventually left the Nuxt.js core team to pursue a Fastify-based solution for SSR.

I joined the Fastify team in late 2021 to lead an effort to eliminate the need for specialized SSR frameworks offering transparent and simple SSR primitives to Fastify instead. Subscribe to this newsletter to get updates on this effort.

Personal Life

I am 36 and live in the state of São Paulo in Brazil (UTC-3) with my wife and our three cats. I work 100% remotely from a homely little town.

I very much still consider myself a workaholic, often unable to spend much time away from the screen, something I'm actively trying to change now.

Burnout Paradise, the Uncharted series and Horizon Zero Dawn are my favorite videogames. I also like to play pool and have been managing to spend a ridiculous amount of time the pool hall — as long as it's time offline, it's a win.

IMDb says I've seen 789 titles, but it's probably missing a few. I watch way too many movies and TV shows, sometimes several in parallel, in 5-minute chunks. I'm trying to cut down on this habit, as there'll never be enough time in the world to watch everything's potentially worth watching, so I've decided to just give up and further spend more time living my own life.

I am driven by purpose and cultivate a stoic attitude towards life.