Recent writing

My tech stack in 2020

I'm a bit reflective today; I guess because we are approaching the end of this so-odd year. Therefore, I'd like to share what has been my preferred tech stack in 2020 and what most likely continue to be in 2021. React for building web front…

Sparking joy working with Xcode

I learned by working with Ruby and Ruby on Rails during my time at Shopify that using tools and programming languages that spark joy is crucial for developers' motivation. Even though we developers love to understand complexities, we enjoy…

Tree-shaking Xcode projects

Tree-shaking is a concept inspired by Javascript and used by Tuist to generate lean Xcode projects that are processed and compile faster.

Module caching in Xcode projects

Bazel and Buck is the solution large companies have adopted to make Xcode build fast. However, it's complex and not accessible to medium and small companies. In this blog post, I share the approach Tuist is taking and how it's inspired by tools the community is already using.

Growing Tuist's community

In this blog post, I share my experience building the Tuist community. I talked about the things that have worked well, and the areas where there's still some room for improvement.

The exciting adventure of building a web app

I’ve been playing lately with building a web app that complements Tuist with some features that require storing state in a server. Since I have a mobile development background, being familiar with Swift, iOS, and very recently React Native,…

What I like from Ruby and Rails

The more I use Ruby and Rails, the more I like it. I’ve played with Typescript lately, and it continues to feel heavy: parenthesis and brackets everywhere, layers on indirection through tools to accommodate the Javascript to the browser or…

Generating Typescript code from a GraphQL schema

Today, I learned about a tool called GraphQL Code Generator turns a GraphQL schema into typed models and utilities for interacting with a GraphQL API. In my case, I'm using it in a React application where I'm using Apollo as the client. Usi…

Modularization in open source projects

I recently came across a blog post from Shopify where they share how they are componentize the main Rails application into smaller pieces with clearly defined boundaries and loose coupling between them. This made me think about the uFeature…

Finding focus

One of the things that I struggle a lot with these days is having focus. Despite my several attempts to mitigate distractions, they always find their way to make it into my attention span. The result of that is that I feel stressed, and whe…

Pairing sessions to introduce people to Tuist and open-source

I recently started having pairing sessions with developers interested in contributing to open-source; it’s something that usually intimidates people, but that becomes easier if someone guides you through the first contribution. You have a p…

Thinking in terms of problems

One of the things that I find the most challenging these days when building tools for developers is thinking in terms of problems . Very often Tuist's users ask for features that they have seen in Xcode and that they'd like to see in Tuist…

The beauty of not expecting something in return

Yesterday I had a thought-provoking chat with an acquaintance. He thinks that when we connect with someone is because they are a means to achieve goals - for example a business partnership. He was, in fact, trying to do that with me, and I…

A shift towards product development

Working on building tools for developers has helped me realize that what I like even more than coding is going through the product thinking process. That's why I'm so engaged building Tuist , and recently Galaxy . I used to be excited by pl…

Streamlining app development

One thing that I noticed after Shopify 's commitment to React Native is that it foster a culture of turning ideas into mobile apps. Doing app development is no longer a thing that only mobile developers do. In hindshight, it was a good comp…

Transitive React Native dependencies

Today I learned about how dependencies are organized by NPM and Yarn. Let's say we have the following scenario of dependencies: A -> B -> C (3.2.1) - A -> C (1.2.3) Javascript dependency managers will structure the dependencies fol…

WWDC's FOMO

I'm avoiding opening Twitter these days. It makes me a bit anxious receiving WWDC news through people racing to be the first one to publish the clickbait-type of tweet. I used to have energy to be part of that race and not suffering from FO…

First thoughts on Sorbet

We started using Sorbet to add types to Galaxy's codebase . Types are great to catch type-related issues statically, and prevent them from blowing up on production. This tiny blog-post contains my impressions using it for the first time: So…

Working on new features or tackling technical debt

One of the things that I find the hardest when working on Tuist these days is finding a good balance between adding new features and tackling technical debt. The most exciting part is always building new things. Indeed, yesterday I came acr…

Add and remove footer using NSBox

If you use macOS, you have probably realized many apps have the following UI component on their settings: I had to add one of those to the settings view of Angle , and then I realized that it's not a pre-defined component that you can drag…