Writing ✏️
- 2025.04.02 Tuist's plans
- 2025.03.31 The commoditization trap: why software needs community to thrive
- 2025.03.25 Mobile CI is plateauing
- 2025.03.24 If a business can be open source, it'll be open source
- 2025.03.19 Nightly builds are the wrong solution to the right problem
- 2025.03.16 Setting up Docker DinD in Forgejo Actions
- 2025.03.12 Dogfood if you can
- 2025.03.10 Lynx is an invitation for UI frameworks to support mobile development
- 2025.03.09 AI as a tool to reduce OSS maintenance costs
- 2025.03.06 Own your community
- 2025.03.05 China is succeeding at what everyone else is failing at: localization
- 2025.03.04 From open source to open core business
- 2025.02.25 A Mise formula for Swift Package development
- 2025.02.25 If Swift app development teams had the data...
- 2025.02.24 CI is commoditizing
- 2025.02.19 Science macht besser
- 2025.02.14 Tuist’s vision for an open, cross-platform future
- 2025.02.06 The missing commoditization
- 2025.02.01 Where does the value lie in open-source businesses?
- 2025.01.28 Communities
- 2025.01.26 Tuist is evolving
- 2025.01.26 Whom do you trust?
- 2025.01.11 A convention for frictionless reproduction projects with Mise
- 2025.01.04 Reverting some social recent behavioural and emotional patterns
- 2024.12.30 From CLI to platform
- 2024.12.24 Learnings from logging in a Swift CLI
- 2024.12.19 Us or them
- 2024.12.16 The paradox of OSS
- 2024.12.11 If it can be open-source, it'll be open source
- 2024.12.02 Programming languages are just tools
- 2024.11.28 Growth, growth, growth
- 2024.11.24 Setting up a Forgejo runner in Hetzner
- 2024.11.22 Tuist is a product
- 2024.11.19 Whom do I trust?
- 2024.11.17 I am out of X
- 2024.11.05 Set up a Woodpecker CI in Hetzner server for your Codeberg account
- 2024.10.25 If system APIs where awaitable
- 2024.10.19 Concurrent work in non-concurrent brains
- 2024.10.19 Small but sexy
- 2024.10.15 Brains are complex
- 2024.10.13 Makers and takers
- 2024.10.08 Monkey brain
- 2024.10.05 Licenses, governance, and trademarks in the open-source world
- 2024.09.26 A non-concurrent design in a conrurrent world
- 2024.09.25 Should I join the show?
- 2024.09.19 The iPad as a creativity device
- 2024.09.15 On taking shortcuts to build communities
- 2024.09.08 The missing narrow waist in CI
- 2024.09.06 A different approach to building a software company
- 2024.09.04 About mental health
- 2024.08.24 An intrinsically motivated person in a extrinsically motivated environment
- 2024.08.20 Open design
- 2024.08.13 Fair Source: Sustainability with no customer risk
- 2024.08.05 DX vendor locking
- 2024.08.05 Where do I see myself in 10 years?
- 2024.08.04 Continuous releases with automated changelog generation
- 2024.08.02 Exploring commercial OSS
- 2024.07.31 What is urgent?
- 2024.07.22 Openness as a tool of trust
- 2024.07.20 How synchronized groups work at the .pbxproj level
- 2024.07.20 The specified item could not be found in the keychain
- 2024.07.15 The best products tell stories
- 2024.07.13 Does it need to be in JavaScript?
- 2024.07.13 Falling behind
- 2024.07.09 When you are open
- 2024.07.04 It's a marathon
- 2024.07.04 The technology does matter
- 2024.06.29 A different company
- 2024.06.25 BREAKME.md
- 2024.06.24 Parallelism and programming languages
- 2024.06.23 Lazy-learning
- 2024.06.22 Website redesign
- 2024.06.12 Emotional breakdowns
- 2024.06.04 Why you need the -ObjC flag
- 2024.05.25 Simplicity, standards, and the platform
- 2024.05.20 Meeting developers where they are
- 2024.05.16 The non-technological open source problem
- 2024.04.27 Layering Tuist
- 2024.04.26 When you become infrastructure
- 2024.04.25 Connecting App Signal with Incident.io using Cloudflare Workers
- 2024.04.04 Standards, standards, standards
- 2024.03.19 Thoughts on Open-Source
- 2024.03.14 Transitioning Tuist Cloud from Ruby to Elixir
- 2024.03.05 Elixir scales better
- 2024.03.04 Gain back attention
- 2024.02.29 If I could just parallelize my tests execution
- 2024.02.23 On protecting my creative energy
- 2024.02.15 Global state is future debt
- 2024.02.13 It takes a lot of determination
- 2024.02.10 It's not about what, but how
- 2024.02.07 JavaScript DX without JavaScript
- 2024.01.26 Incremental Xcode workflows across environments
- 2024.01.24 AirPods Max died after 2 years
- 2024.01.24 Xcode is too magic
- 2024.01.19 XCBundles
- 2024.01.16 Gifting OSS
- 2024.01.15 Global state, CLIs, and test scalability
- 2024.01.11 Deterministic tool versions across environments with Mise
- 2024.01.08 I'm allergic to complexities
- 2024.01.05 Starting therapy next week
- 2024.01.03 Open-source and the imposter syndrome
- 2023.12.28 I'm sick
- 2023.12.28 Type safety but at which cost?
- 2023.12.23 JavaScript-owned state and accessibility
- 2023.12.20 What if XCTest a concept akin to Elixir's processes?
- 2023.12.19 Learning to love the problem and not the solution
- 2023.12.19 Implicitness in Xcode and SPM. Why Apple?
- 2023.12.18 What I expect from a knowledge management app
- 2023.12.13 Swift Packages default to supporting all platforms
- 2023.12.13 Swinging back to positivity
- 2023.12.11 Open-sourcing the lightning_css Elixir package
- 2023.12.07 On mental health
- 2023.12.04 3 package managers + 2 build tools = One big mess
- 2023.11.21 Peeling layers
- 2023.11.17 Ensuring a smooth workshop experience
- 2023.11.14 Balancing mastery and sustainability
- 2023.11.10 Dear Bitrise
- 2023.11.08 Integrating Swift Macros with Xcodeproj native blocks
- 2023.11.07 Making Tuist easier to work with by saying goodbye to Ruby
- 2023.10.28 From side project to sustainable tool
- 2023.10.16 Empowering Development: The Journey and Vision of Tuist
- 2023.10.14 Recalibrating Mental Models in Elixir Programming
- 2023.10.06 We do it for the community
- 2023.09.29 Between Simplicity and Limitations: A Developer's Take on Apple's Tooling Strategy
- 2023.09.27 Reclaiming Mental Peace: My Personal Odyssey
- 2023.09.21 Exploring Mocking Solutions in Elixir: Introducing Modulex
- 2023.09.13 Passion vs. Profit: My Quest for Meaningful Craftsmanship in Tech
- 2023.08.19 Tuist: From Passion to Craftsmanship, Charting New Horizons
- 2023.08.06 Fixing request/2 is undefined or private with Ueberauth
- 2023.08.05 Abstracted complexity remains complexity
- 2023.07.26 The Power of Concurrency: My Journey Learning Elixir
- 2023.07.19 Fixing psych compilation error trying to install Ruby on an Apple M2 laptop
- 2023.07.14 An update on the entrepreneurship path
- 2023.06.18 Integrating Tailwind into your Swift projects
- 2023.06.09 Issues Dockerizing a Vapor project in M2
- 2023.06.08 Focusing on Swift
- 2023.06.08 Hitting memory limits deploying Vapor apps to Fly
- 2023.05.28 Embracing the Journey of an Indie Developer
- 2023.04.02 How to Configure VSCode to Use Alternative Shells
- 2023.03.27 Generating client secret from Apple's P8 key in Elixir
- 2023.03.09 Typescript not loading in Visual Studio Code
- 2023.02.14 Iterating on my learning system
- 2022.12.23 Static imports with ESM and startup time
- 2022.12.13 An explicit build graph with Nx for a better DX
- 2022.12.01 Hot-reloading and ESM
- 2022.11.01 Growing as a Staff Developer
- 2022.09.16 Typing file-system paths in Typescript
- 2022.08.25 On learning Elixir
- 2022.06.27 On finding passion in devising developer experiences
- 2022.06.23 Modular projects, Typescript, and developer experience
- 2022.05.27 On embracing my chaos
- 2022.05.06 Mitigating 'delete node_modules'
- 2022.05.05 But they are developers too
- 2022.05.04 CLIs are products too
- 2022.05.04 Javascript, ESM, and tools
- 2022.03.22 Users don't care about your web app's portable binary
- 2022.03.12 OSS and extrinsic motivators
- 2021.12.14 Platform-dependent CLIs
- 2021.12.08 On evolving opinions
- 2021.12.07 Migrated to SvelteKit
- 2021.11.08 Adapting to a platform
- 2021.10.25 I want to be rich
- 2021.10.13 The React chain
- 2021.10.11 On cutting off some dopamine dependency
- 2021.09.28 Great solutions for the wrong problems
- 2021.09.16 Developer platforms and diversity
- 2021.09.14 Spain, it's not time to be reunited (yet)
- 2021.08.20 A future note to self about Omniauth
- 2021.08.16 ./dev
- 2021.08.10 Seabolt support for M1
- 2021.08.04 Some Rust thoughts
- 2021.07.30 Planning open-source work
- 2021.07.21 Contributors' first experience
- 2021.07.20 What I learned as a manager
- 2021.07.15 Propose, prototype, and build
- 2021.07.10 Back to Jekyll
- 2021.06.01 Swinging the pendulum back to engineering
- 2021.05.24 Focused Xcode projects
- 2021.05.19 On not having focus
- 2021.05.18 Tuist 2.0 and next
- 2021.05.10 Building mental models
- 2021.04.22 ViteJS and Rails
- 2021.04.18 Learning Rust
- 2021.04.12 Migrating documentation to Docusaurus
- 2021.04.12 TailwindCSS or Theme-UI
- 2021.04.06 Community-driven and organization-driven open source
- 2021.03.21 The role of flexibility in scaling up Xcode projects
- 2021.03.20 Open source, people, and happiness
- 2021.03.16 Data-driven open source
- 2021.03.12 Building Tuist as a platform
- 2021.03.10 Tuist and JS bundlers
- 2021.02.16 Owning your workflows
- 2021.02.09 Focusing on the problems
- 2021.02.05 Tuist and the Swift Package Manager
- 2021.02.04 Tackling technical debt in Tuist
- 2021.02.03 Decision records
- 2021.01.28 Scaling up an open-source project
- 2021.01.18 The beauty of a standard command line interface
- 2021.01.18 Reflecting on 3 years at Shopify
- 2021.01.07 My first RFC in the React Native project
- 2020.12.28 My tech stack in 2020
- 2020.12.10 Sparking joy working with Xcode
- 2020.11.11 Tree-shaking Xcode projects
- 2020.11.10 Module caching in Xcode projects
- 2020.10.31 Growing Tuist's community
- 2020.10.02 The exciting adventure of building a web app
- 2020.09.30 Generating Typescript code from a GraphQL schema
- 2020.09.30 What I like from Ruby and Rails
- 2020.09.29 Modularization in open source projects
- 2020.09.07 Finding focus
- 2020.08.22 Pairing sessions to introduce people to Tuist and open-source
- 2020.08.03 Thinking in terms of problems
- 2020.08.01 The beauty of not expecting something in return
- 2020.07.13 A shift towards product development
- 2020.07.01 Transitive React Native dependencies
- 2020.07.01 Streamlining app development
- 2020.06.25 WWDC's FOMO
- 2020.06.03 First thoughts on Sorbet
- 2020.05.18 Working on new features or tackling technical debt
- 2020.05.10 Add and remove footer using NSBox
- 2020.05.07 My first coding video on Youtube
- 2020.05.06 To build, or not to build
- 2020.05.02 Cognitive overhead
- 2020.05.02 Graphed knowledge
- 2020.04.20 Catching crashes at launch time on Android React Native apps
- 2020.04.17 Control and innovation
- 2020.04.15 Anxiety-free working
- 2020.04.11 Keeping it simple
- 2020.04.09 Diving into Nix
- 2020.03.28 We need more crafters
- 2020.03.08 A better signing experience in Xcode
- 2020.03.06 From iOS engineer to a T-profiled techie
- 2020.02.25 Generation of Swift interfaces to access resources
- 2020.02.19 A standard CLI for Xcode projects
- 2020.02.10 Evolving Tuist's architecture
- 2020.01.07 Seeking inmutability
- 2020.01.02 Social anxiety
- 2019.12.30 Wrapping up 2019
- 2019.12.27 Signing with Xcode on CI
- 2019.12.24 Moving Pods to Packages
- 2019.12.08 Adding bits of reactive programming to Tuist
- 2019.12.06 Working on a new website for Tuist
- 2019.12.03 Creating experiences
- 2019.11.24 I am X
- 2019.11.18 Module caching with Galaxy
- 2019.11.04 Static site generators
- 2019.10.31 Better relative paths
- 2019.10.10 Project description helpers
- 2019.10.03 Abstractions
- 2019.09.10 Keeping up with dependencies updates
- 2019.09.09 What's coming to Tuist
- 2019.08.29 A period of changes
- 2019.07.22 Project generation
- 2019.07.16 Adding error tracking to a CLI written in Swift
- 2019.07.12 Derived Info.plist files
- 2019.07.10 Running system tasks with Swift and Foundation
- 2019.07.09 All you need is tools (talk)
- 2019.07.03 How I feel working on Tuist
- 2019.06.23 The tale of Xcode projects' complexity
- 2019.06.20 The urge to be the first
- 2019.06.08 Speaking at AltConf
- 2019.05.08 Abstracting Info.plist files
- 2019.04.13 T-shaped engineers
- 2019.04.12 Xcode updates are fun
- 2019.04.06 Reliably installing Xcode
- 2019.03.29 macOS development and being comfortable
- 2019.03.15 Interacting with Xcode projects in Swift
- 2019.03.14 Open source and trust
- 2019.03.13 Automated tests for a Swift CLI tool with Cucumber
- 2019.03.01 Software and people
- 2019.02.21 Turning negativism into positivism
- 2019.02.13 Deep linking into macOS apps
- 2019.02.08 GitHub as an organization hub
- 2019.02.02 The motivations behind building Tuist
- 2018.12.23 Wrapping up 2018 📦
- 2018.11.25 All you need is tools 🛠
- 2018.10.06 What a psychologist helped me realize
- 2018.09.06 GitHub workspaces using email
- 2018.08.19 Open source mindfulness
- 2018.07.23 Why am I obsessed with developers being productive using Xcode?
- 2018.04.29 Open Source
- 2018.04.11 On having focus
- 2018.02.23 Hallo Ruby, wie geht's?
- 2018.02.14 Thoughtful usage of technology
- 2018.01.31 I gave up using Medium
- 2018.01.28 The hermeticism and rigidity of Xcode and its projects
- 2018.01.20 This app could not be installed at this time
- 2018.01.19 Random thoughts a Friday night in Ottawa
- 2017.12.25 Wrapping up 2017 📦
- 2017.11.02 Linting your Xcode projects with xclint
- 2017.10.30 Consistent vs convenient
- 2017.09.29 Modular Xcode projects
- 2017.09.13 Providing mocks and testing data from your frameworks.
- 2017.09.13 Conditionally embed your dynamic frameworks
- 2017.08.21 Little tweak to be more productive writing XCTest tests
- 2017.07.31 Introducing xcodeproj
- 2017.07.18 Moving back to Berlin
- 2017.03.02 Composable UIs
- 2017.02.16 Divide and conquer
- 2016.12.18 📦 Wrapping up 2016
- 2016.11.16 Extensions, dependency injection and frameworks
- 2016.11.12 Developing tools for developers
- 2016.11.09 Stepping off the social world
- 2016.07.12 Be Reactive my friend
- 2016.07.10 Micro Features Architecture for iOS
- 2016.06.22 Network Testing - Say hello to Szimpla
- 2016.06.21 A journey into Frameworks - Le Testing Framework
- 2016.06.20 Being disconnected in a connected world
- 2016.05.23 Boy Scouts rule with Danger
- 2016.03.23 Automating iOS review tasks with Danger
- 2016.02.28 Marcheta en la vida
- 2016.02.07 Xcode scripts to rule them all
- 2016.01.14 States - The source of truth
- 2015.12.29 Install the last Carthage version on CI services (Travis, Circle, ...)
- 2015.12.21 Rewriting SugarRecord, 2.0
- 2015.10.27 Functional is about functions (Swift)
- 2015.10.14 Implementing a Mutable Collection Property for ReactiveCocoa
- 2015.08.09 Programación Reactiva en Swift: Parte 1, Introducción
- 2015.06.18 Paginated API requests using Functional Reactive in Swift
- 2015.06.11 Why Open Source helps you to become a better developer
- 2015.06.07 My first Apple Watch impressions
- 2015.05.25 Full control in your hybrid mobile apps with a local server, 8fit
- 2015.01.28 Modularize your mobile projects
- 2014.12.10 Boosting your mobile app with Javascript and some mobile knowledge
- 2014.12.08 Swift and Objective-C playing together
- 2014.11.23 Codemotion experience
- 2014.11.16 VIPER, Looking for the perfect architecture
- 2014.11.04 Github as your project management tool
- 2014.10.29 Leaving Redbooth
- 2014.10.13 Setup your iOS Projects for testing