RSS.Social

Pedro Piñera

follow: @[email protected]

Posts

Rails 8.1’s Local CI: Lessons for Apple Developers

My Terrible Experience with Germany's Health System

On Markets and ICPs

You can't build a Grafana

Gardens, commerce, and the art of growing something meaningful

Local-first AI development for mobile apps

The market

The coming disruption of Apple developer tooling

Agentic native app development

Setting up PeerTube with Cloudflare R2 Object Storage

Mobile CI will have to redefine itself

On mental health

On enthusiasm

Navigating anxiety

Compiler optimizations or speed of delivery

Remote macOS Containers as a Service

~AI~Vibe-first businesses

Full-time entertainers

Inviting ecosystems

Tuist's plans

The commoditization trap: why software needs community to thrive

Mobile CI is plateauing

If a business can be open source, it'll be open source

Nightly builds are the wrong solution to the right problem

Setting up Docker DinD in Forgejo Actions

Dogfood if you can

Lynx is an invitation for UI frameworks to support mobile development

AI as a tool to reduce OSS maintenance costs

Own your community

China is succeeding at what everyone else is failing at: localization

From open source to open core business

A Mise formula for Swift Package development

If Swift app development teams had the data...

CI is commoditizing

Science macht besser

Tuist’s vision for an open, cross-platform future

The missing commoditization

Where does the value lie in open-source businesses?

Communities

Tuist is evolving

Whom do you trust?

A convention for frictionless reproduction projects with Mise

Reverting some social recent behavioural and emotional patterns

From CLI to platform

Learnings from logging in a Swift CLI

Us or them

The paradox of OSS

If it can be open-source, it'll be open source

Programming languages are just tools

Growth, growth, growth

Setting up a Forgejo runner in Hetzner

Tuist is a product

Whom do I trust?

I am out of X

Set up a Woodpecker CI in Hetzner server for your Codeberg account

If system APIs where awaitable

Concurrent work in non-concurrent brains

Small but sexy

Brains are complex

Makers and takers

Monkey brain

Licenses, governance, and trademarks in the open-source world

A non-concurrent design in a conrurrent world

Should I join the show?

The iPad as a creativity device

On taking shortcuts to build communities

The missing narrow waist in CI

A different approach to building a software company

About mental health

An intrinsically motivated person in a extrinsically motivated environment

Open design

Fair Source: Sustainability with no customer risk

DX vendor locking

Where do I see myself in 10 years?

Continuous releases with automated changelog generation

Exploring commercial OSS

What is urgent?

Openness as a tool of trust

How synchronized groups work at the .pbxproj level

The specified item could not be found in the keychain

The best products tell stories

Does it need to be in JavaScript?

Falling behind

When you are open

It's a marathon

The technology does matter

A different company

BREAKME.md

Parallelism and programming languages

Lazy-learning

Website redesign

Emotional breakdowns

Why you need the -ObjC flag

Simplicity, standards, and the platform

Meeting developers where they are

The non-technological open source problem

Layering Tuist

When you become infrastructure

Connecting App Signal with Incident.io using Cloudflare Workers

Standards, standards, standards

Thoughts on Open-Source

Transitioning Tuist Cloud from Ruby to Elixir

Elixir scales better

Gain back attention

If I could just parallelize my tests execution

On protecting my creative energy

Global state is future debt

It takes a lot of determination

It's not about what, but how

JavaScript DX without JavaScript

Incremental Xcode workflows across environments

AirPods Max died after 2 years

Xcode is too magic

XCBundles

Gifting OSS

Global state, CLIs, and test scalability

Deterministic tool versions across environments with Mise

I'm allergic to complexities

Starting therapy next week

Open-source and the imposter syndrome

I'm sick

Type safety but at which cost?

JavaScript-owned state and accessibility

What if XCTest a concept akin to Elixir's processes?

Learning to love the problem and not the solution

Implicitness in Xcode and SPM. Why Apple?

What I expect from a knowledge management app

Swift Packages default to supporting all platforms

Swinging back to positivity

Open-sourcing the lightning_css Elixir package

On mental health

3 package managers + 2 build tools = One big mess

Peeling layers

Ensuring a smooth workshop experience

Balancing mastery and sustainability

Dear Bitrise

Integrating Swift Macros with Xcodeproj native blocks

Making Tuist easier to work with by saying goodbye to Ruby

From side project to sustainable tool

Empowering Development: The Journey and Vision of Tuist

Recalibrating Mental Models in Elixir Programming

We do it for the community

Between Simplicity and Limitations: A Developer's Take on Apple's Tooling Strategy

Reclaiming Mental Peace: My Personal Odyssey

Exploring Mocking Solutions in Elixir: Introducing Modulex

Passion vs. Profit: My Quest for Meaningful Craftsmanship in Tech

Tuist: From Passion to Craftsmanship, Charting New Horizons

Fixing request/2 is undefined or private with Ueberauth

Abstracted complexity remains complexity

The Power of Concurrency: My Journey Learning Elixir

Fixing psych compilation error trying to install Ruby on an Apple M2 laptop

An update on the entrepreneurship path

Integrating Tailwind into your Swift projects

Issues Dockerizing a Vapor project in M2

Focusing on Swift

Hitting memory limits deploying Vapor apps to Fly

Embracing the Journey of an Indie Developer

How to Configure VSCode to Use Alternative Shells

Generating client secret from Apple's P8 key in Elixir

Typescript not loading in Visual Studio Code

Iterating on my learning system

Static imports with ESM and startup time

An explicit build graph with Nx for a better DX

Hot-reloading and ESM

Growing as a Staff Developer

Typing file-system paths in Typescript

On learning Elixir

On finding passion in devising developer experiences

Modular projects, Typescript, and developer experience

On embracing my chaos

Mitigating 'delete node_modules'

But they are developers too

CLIs are products too

Javascript, ESM, and tools

Users don't care about your web app's portable binary

OSS and extrinsic motivators

Platform-dependent CLIs

On evolving opinions

Migrated to SvelteKit

Adapting to a platform

I want to be rich

The React chain

On cutting off some dopamine dependency

Great solutions for the wrong problems

Developer platforms and diversity

Spain, it's not time to be reunited (yet)

A future note to self about Omniauth

./dev

Seabolt support for M1

Some Rust thoughts

Planning open-source work

Contributors' first experience

What I learned as a manager

Propose, prototype, and build

Back to Jekyll

Swinging the pendulum back to engineering

Focused Xcode projects

On not having focus

Tuist 2.0 and next

Building mental models

ViteJS and Rails

Learning Rust

Migrating documentation to Docusaurus

TailwindCSS or Theme-UI

Community-driven and organization-driven open source

The role of flexibility in scaling up Xcode projects

Open source, people, and happiness

Data-driven open source

Building Tuist as a platform

Tuist and JS bundlers

Owning your workflows

Focusing on the problems

Tuist and the Swift Package Manager

Tackling technical debt in Tuist

Decision records

Scaling up an open-source project

The beauty of a standard command line interface

Reflecting on 3 years at Shopify

My first RFC in the React Native project

My tech stack in 2020

Sparking joy working with Xcode

Tree-shaking Xcode projects

Module caching in Xcode projects

Growing Tuist's community

The exciting adventure of building a web app

Generating Typescript code from a GraphQL schema

What I like from Ruby and Rails

Modularization in open source projects

Finding focus

Pairing sessions to introduce people to Tuist and open-source

Thinking in terms of problems

The beauty of not expecting something in return

A shift towards product development

Transitive React Native dependencies

Streamlining app development

WWDC's FOMO

First thoughts on Sorbet

Working on new features or tackling technical debt

Add and remove footer using NSBox

My first coding video on Youtube

To build, or not to build

Cognitive overhead

Graphed knowledge

Catching crashes at launch time on Android React Native apps

Control and innovation

Anxiety-free working

Keeping it simple

Diving into Nix

We need more crafters

A better signing experience in Xcode

From iOS engineer to a T-profiled techie

Generation of Swift interfaces to access resources

A standard CLI for Xcode projects

Evolving Tuist's architecture

Seeking inmutability

Social anxiety

Wrapping up 2019

Signing with Xcode on CI

Moving Pods to Packages

Adding bits of reactive programming to Tuist

Working on a new website for Tuist

Creating experiences

I am X

Module caching with Galaxy

Static site generators

Better relative paths

Project description helpers

Abstractions

Keeping up with dependencies updates

What's coming to Tuist

A period of changes

Project generation

Adding error tracking to a CLI written in Swift

Derived Info.plist files

Running system tasks with Swift and Foundation

All you need is tools (talk)

How I feel working on Tuist

The tale of Xcode projects' complexity

The urge to be the first

Speaking at AltConf

Abstracting Info.plist files

T-shaped engineers

Xcode updates are fun

Reliably installing Xcode

macOS development and being comfortable

Interacting with Xcode projects in Swift

Open source and trust

Automated tests for a Swift CLI tool with Cucumber

Software and people

Turning negativism into positivism

Deep linking into macOS apps

GitHub as an organization hub

The motivations behind building Tuist

Wrapping up 2018 📦

All you need is tools 🛠

What a psychologist helped me realize

GitHub workspaces using email

Open source mindfulness

Why am I obsessed with developers being productive using Xcode?

Open Source

On having focus

Hallo Ruby, wie geht's?

Thoughtful usage of technology

I gave up using Medium

The hermeticism and rigidity of Xcode and its projects

This app could not be installed at this time

Random thoughts a Friday night in Ottawa

Wrapping up 2017 📦

Linting your Xcode projects with xclint

Consistent vs convenient

Modular Xcode projects

Providing mocks and testing data from your frameworks.

Conditionally embed your dynamic frameworks

Little tweak to be more productive writing XCTest tests

Introducing xcodeproj

Moving back to Berlin

Composable UIs

Divide and conquer

📦 Wrapping up 2016

Extensions, dependency injection and frameworks

Developing tools for developers

Stepping off the social world

Be Reactive my friend

Micro Features Architecture for iOS

Network Testing - Say hello to Szimpla

A journey into Frameworks - Le Testing Framework

Being disconnected in a connected world

Boy Scouts rule with Danger

Automating iOS review tasks with Danger

Marcheta en la vida

Xcode scripts to rule them all

States - The source of truth

Install the last Carthage version on CI services (Travis, Circle, ...)

Rewriting SugarRecord, 2.0

Functional is about functions (Swift)

Implementing a Mutable Collection Property for ReactiveCocoa

Programación Reactiva en Swift: Parte 1, Introducción

Paginated API requests using Functional Reactive in Swift

Why Open Source helps you to become a better developer

My first Apple Watch impressions

Full control in your hybrid mobile apps with a local server, 8fit

Modularize your mobile projects

Boosting your mobile app with Javascript and some mobile knowledge

Swift and Objective-C playing together

Codemotion experience

VIPER, Looking for the perfect architecture

Github as your project management tool

Leaving Redbooth

Setup your iOS Projects for testing