41554 blogs · [ { "id": "01a087bf-7b7f-7047-bbee-8497ff50f905", "title": "Tuist's plans", "url": "https://pepicrft.me/blog/tuist-plans/", "published_at": "2025-04-02T12:00:00+00:00" }, { "id": "01a087bf-7b7f-7047-bbee-84980003e75b", "title": "The commoditization trap: why software needs community to thrive", "url": "https://pepicrft.me/blog/software-commoditizes/", "published_at": "2025-03-31T12:00:00+00:00" }, { "id": "01a087bf-7b7f-7047-bbee-8498008186a0", "title": "Mobile CI is plateauing", "url": "https://pepicrft.me/blog/mobile-ci-is-plateauing/", "published_at": "2025-03-25T12:00:00+00:00" }, { "id": "01a087bf-7b7f-7047-bbee-8498011267b6", "title": "Nightly builds are the wrong solution to the right problem", "url": "https://pepicrft.me/blog/nightly-builds/", "published_at": "2025-03-19T12:00:00+00:00" }, { "id": "01a087bf-7b7f-7047-bbee-849801d39a8b", "title": "Setting up Docker DinD in Forgejo Actions", "url": "https://pepicrft.me/blog/docker-dind-forgejo-actions/", "published_at": "2025-03-16T12:00:00+00:00" }, { "id": "01a087bf-7b7f-7047-bbee-849802538907", "title": "Dogfood if you can", "url": "https://pepicrft.me/blog/dogfooding/", "published_at": "2025-03-12T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1f6219542", "title": "Lynx is an invitation for UI frameworks to support mobile development", "url": "https://pepicrft.me/blog/lynx/", "published_at": "2025-03-10T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1f65353af", "title": "AI as a tool to reduce OSS maintenance costs", "url": "https://pepicrft.me/blog/ai-oss-cost/", "published_at": "2025-03-09T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1f70975c1", "title": "Own your community", "url": "https://pepicrft.me/blog/own-your-community/", "published_at": "2025-03-06T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1f7bd82dc", "title": "China is succeeding at what everyone else is failing at: localization", "url": "https://pepicrft.me/blog/china/", "published_at": "2025-03-05T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1f8a9240d", "title": "From open source to open core business", "url": "https://pepicrft.me/blog/tuist-mental-models/", "published_at": "2025-03-04T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1f91b01c7", "title": "If Swift app development teams had the data...", "url": "https://pepicrft.me/blog/missing-insights/", "published_at": "2025-02-25T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1f92154e7", "title": "A Mise formula for Swift Package development", "url": "https://pepicrft.me/blog/mise-formula-for-swift-packages/", "published_at": "2025-02-25T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1f9323c15", "title": "CI is commoditizing", "url": "https://pepicrft.me/blog/ci-is-commoditizing/", "published_at": "2025-02-24T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1f97b7605", "title": "Science macht besser", "url": "https://pepicrft.me/blog/surgery-day/", "published_at": "2025-02-19T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1f9d2274d", "title": "The missing commoditization", "url": "https://pepicrft.me/blog/missing-commoditization/", "published_at": "2025-02-06T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1fa10c7a6", "title": "Where does the value lie in open-source businesses?", "url": "https://pepicrft.me/blog/open-source-business/", "published_at": "2025-02-01T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1fa8f34c3", "title": "Whom do you trust?", "url": "https://pepicrft.me/blog/whom-do-you-trust/", "published_at": "2025-01-26T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1facd25fc", "title": "Tuist is evolving", "url": "https://pepicrft.me/blog/tuist-is-evolving/", "published_at": "2025-01-26T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1fb3a11ad", "title": "A convention for frictionless reproduction projects with Mise", "url": "https://pepicrft.me/blog/mise-reproduction-projects/", "published_at": "2025-01-11T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1fb88492a", "title": "Reverting some social recent behavioural and emotional patterns", "url": "https://pepicrft.me/blog/reverting-social-behaviours/", "published_at": "2025-01-04T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1fc36087a", "title": "From CLI to platform", "url": "https://pepicrft.me/blog/from-cli-to-platform/", "published_at": "2024-12-30T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1fcfd6bc3", "title": "Learnings from logging in a Swift CLI", "url": "https://pepicrft.me/blog/clis-ui/", "published_at": "2024-12-24T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1fddc28d3", "title": "Us or them", "url": "https://pepicrft.me/blog/us-or-them/", "published_at": "2024-12-19T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1fe781092", "title": "The paradox of OSS", "url": "https://pepicrft.me/blog/oss-paradox/", "published_at": "2024-12-16T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1ff6fa6d1", "title": "If it can be open-source, it'll be open source", "url": "https://pepicrft.me/blog/it-ll-be-open-source/", "published_at": "2024-12-11T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1ff7ab602", "title": "Programming languages are just tools", "url": "https://pepicrft.me/blog/programming-languages-are-tools/", "published_at": "2024-12-02T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1ffd35f8b", "title": "Growth, growth, growth", "url": "https://pepicrft.me/blog/growth-growth-growth/", "published_at": "2024-11-28T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f1ffe24abf", "title": "Setting up a Forgejo runner in Hetzner", "url": "https://pepicrft.me/blog/forgejo-runner-in-hetzner/", "published_at": "2024-11-24T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f20002a0a6", "title": "Tuist is a product", "url": "https://pepicrft.me/blog/tuist-is-a-product/", "published_at": "2024-11-22T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f20086184a", "title": "Whom do I trust?", "url": "https://pepicrft.me/blog/whom-do-i-trust/", "published_at": "2024-11-19T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f200bc804e", "title": "I am out of X", "url": "https://pepicrft.me/blog/i-am-out-of-x/", "published_at": "2024-11-17T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f200fc67ee", "title": "Set up a Woodpecker CI in Hetzner server for your Codeberg account", "url": "https://pepicrft.me/blog/woodpecker-ci-for-codeberg/", "published_at": "2024-11-05T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f201439ef6", "title": "If system APIs where awaitable", "url": "https://pepicrft.me/blog/if-system-apis-were-awaitable/", "published_at": "2024-10-25T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f2021a9777", "title": "Small but sexy", "url": "https://pepicrft.me/blog/small-but-sexy/", "published_at": "2024-10-19T12:00:00+00:00" }, { "id": "01a087bf-7b80-70f6-982a-28f20300aca1", "title": "Concurrent work in non-concurrent brains", "url": "https://pepicrft.me/blog/concurrent-brains/", "published_at": "2024-10-19T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed7152b5315", "title": "Brains are complex", "url": "https://pepicrft.me/blog/brains-are-complex/", "published_at": "2024-10-15T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed716205dc5", "title": "Makers and takers", "url": "https://pepicrft.me/blog/makers-and-takers/", "published_at": "2024-10-13T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71655d6b2", "title": "Monkey brain", "url": "https://pepicrft.me/blog/monkey-brains/", "published_at": "2024-10-08T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed716c4704d", "title": "Licenses, governance, and trademarks in the open-source world", "url": "https://pepicrft.me/blog/oss-thoughts/", "published_at": "2024-10-05T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71764246b", "title": "A non-concurrent design in a conrurrent world", "url": "https://pepicrft.me/blog/non-concurrent-design-in-a-concurrent-world/", "published_at": "2024-09-26T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed7180c54e3", "title": "The iPad as a creativity device", "url": "https://pepicrft.me/blog/ipad/", "published_at": "2024-09-19T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed718ef7266", "title": "On taking shortcuts to build communities", "url": "https://pepicrft.me/blog/communities/", "published_at": "2024-09-15T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed7197d49d2", "title": "The missing narrow waist in CI", "url": "https://pepicrft.me/blog/ci-narrow-waist/", "published_at": "2024-09-08T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71a282780", "title": "About mental health", "url": "https://pepicrft.me/blog/about-mental-health/", "published_at": "2024-09-04T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71b00f66b", "title": "An intrinsically motivated person in a extrinsically motivated environment", "url": "https://pepicrft.me/blog/intrinsic-motivations/", "published_at": "2024-08-24T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71bde3876", "title": "Open design", "url": "https://pepicrft.me/blog/open-design/", "published_at": "2024-08-20T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71c75d388", "title": "Fair Source: Sustainability with no customer risk", "url": "https://pepicrft.me/blog/open-tuist/", "published_at": "2024-08-13T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71c9d17b6", "title": "Where do I see myself in 10 years?", "url": "https://pepicrft.me/blog/where-do-i-see-myself/", "published_at": "2024-08-05T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71cd6a927", "title": "DX vendor locking", "url": "https://pepicrft.me/blog/dx-vendor-locking/", "published_at": "2024-08-05T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71ce23010", "title": "Continuous releases with automated changelog generation", "url": "https://pepicrft.me/blog/continuous-releases-with-automated-changelog-generation/", "published_at": "2024-08-04T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71d6393fe", "title": "Exploring commercial OSS", "url": "https://pepicrft.me/blog/commercial-oss/", "published_at": "2024-08-02T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71d9d154d", "title": "What is urgent?", "url": "https://pepicrft.me/blog/what-is-urgent/", "published_at": "2024-07-31T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71e364475", "title": "Openness as a tool of trust", "url": "https://pepicrft.me/blog/openness-as-a-tool-of-trust/", "published_at": "2024-07-22T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71ece0814", "title": "The specified item could not be found in the keychain", "url": "https://pepicrft.me/blog/keychain-item-not-found/", "published_at": "2024-07-20T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71f4a3a89", "title": "How synchronized groups work at the .pbxproj level", "url": "https://pepicrft.me/blog/how-synchronized-groups-work-at-the-pbxproj-level/", "published_at": "2024-07-20T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71f801517", "title": "The best products tell stories", "url": "https://pepicrft.me/blog/best-products-tell-stories/", "published_at": "2024-07-15T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed71ffe77c3", "title": "Falling behind", "url": "https://pepicrft.me/blog/falling-behind/", "published_at": "2024-07-13T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed720bbf194", "title": "Does it need to be in JavaScript?", "url": "https://pepicrft.me/blog/does-it-need-to-be-in-js/", "published_at": "2024-07-13T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed7210cff77", "title": "When you are open", "url": "https://pepicrft.me/blog/when-you-are-open/", "published_at": "2024-07-09T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed721f8ef1a", "title": "The technology does matter", "url": "https://pepicrft.me/blog/technology-matters/", "published_at": "2024-07-04T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed722e788d1", "title": "It's a marathon", "url": "https://pepicrft.me/blog/its-a-marathon/", "published_at": "2024-07-04T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed72398de7a", "title": "A different company", "url": "https://pepicrft.me/blog/a-different-company/", "published_at": "2024-06-29T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed7243437d5", "title": "BREAKME.md", "url": "https://pepicrft.me/blog/breakme/", "published_at": "2024-06-25T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed724c6bb43", "title": "Parallelism and programming languages", "url": "https://pepicrft.me/blog/parallelism-and-programming-languages/", "published_at": "2024-06-24T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed725c15f8d", "title": "Lazy-learning", "url": "https://pepicrft.me/blog/lazy-learning/", "published_at": "2024-06-23T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed726a51df9", "title": "Website redesign", "url": "https://pepicrft.me/blog/website-redesign/", "published_at": "2024-06-22T12:00:00+00:00" }, { "id": "01a087bf-7b81-70d5-8271-3ed72751b818", "title": "Emotional breakdowns", "url": "https://pepicrft.me/blog/mental-breakdowns/", "published_at": "2024-06-12T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758e653aaa4", "title": "Why you need the -ObjC flag", "url": "https://pepicrft.me/blog/why-you-need-objc/", "published_at": "2024-06-04T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758e7375135", "title": "Simplicity, standards, and the platform", "url": "https://pepicrft.me/blog/building-software-that-lasts/", "published_at": "2024-05-25T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758e78f82b1", "title": "Meeting developers where they are", "url": "https://pepicrft.me/blog/meeting-developers-where-they-are/", "published_at": "2024-05-20T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758e7d66d5c", "title": "The non-technological open source problem", "url": "https://pepicrft.me/blog/non-technological-open-source-problem/", "published_at": "2024-05-16T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758e8b9c6af", "title": "When you become infrastructure", "url": "https://pepicrft.me/blog/when-you-become-infastructure/", "published_at": "2024-04-26T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758e9aecb77", "title": "Connecting App Signal with Incident.io using Cloudflare Workers", "url": "https://pepicrft.me/blog/connecting-app-signal-with-incident/", "published_at": "2024-04-25T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758ea0e9d2c", "title": "Standards, standards, standards", "url": "https://pepicrft.me/blog/standards/", "published_at": "2024-04-04T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758eb05f978", "title": "Thoughts on Open-Source", "url": "https://pepicrft.me/blog/thoughts-on-open-source/", "published_at": "2024-03-19T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758eb60e14c", "title": "Transitioning Tuist Cloud from Ruby to Elixir", "url": "https://pepicrft.me/blog/transitioning-from-ruby-to-elixir/", "published_at": "2024-03-14T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758eb965657", "title": "Elixir scales better", "url": "https://pepicrft.me/blog/elixir-scales-better/", "published_at": "2024-03-05T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758ec1e2157", "title": "Gain back attention", "url": "https://pepicrft.me/blog/gaining-back-attention/", "published_at": "2024-03-04T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758eca6a5d0", "title": "If I could just parallelize my tests execution", "url": "https://pepicrft.me/blog/parallel-testing/", "published_at": "2024-02-29T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758ed45e794", "title": "On protecting my creative energy", "url": "https://pepicrft.me/blog/on-protecting-someones-creative-energy/", "published_at": "2024-02-23T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758edf82e0e", "title": "Global state is future debt", "url": "https://pepicrft.me/blog/global-state-is-future-debt/", "published_at": "2024-02-15T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758eeec1231", "title": "It takes a lot of determination", "url": "https://pepicrft.me/blog/it-takes-determination/", "published_at": "2024-02-13T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758ef4fc477", "title": "It's not about what, but how", "url": "https://pepicrft.me/blog/not-what-but-how/", "published_at": "2024-02-10T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758efa78962", "title": "JavaScript DX without JavaScript", "url": "https://pepicrft.me/blog/the-js-experience-without-js/", "published_at": "2024-02-07T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758f00ef54d", "title": "Incremental Xcode workflows across environments", "url": "https://pepicrft.me/blog/incremental-xcode-workflows/", "published_at": "2024-01-26T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758f0e20e12", "title": "Xcode is too magic", "url": "https://pepicrft.me/blog/xcode-is-too-magic/", "published_at": "2024-01-24T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758f0f2e14a", "title": "AirPods Max died after 2 years", "url": "https://pepicrft.me/blog/airpods-max-broke/", "published_at": "2024-01-24T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758f1100e27", "title": "XCBundles", "url": "https://pepicrft.me/blog/xcbundle/", "published_at": "2024-01-19T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758f1decc17", "title": "Gifting OSS", "url": "https://pepicrft.me/blog/gifting-oss/", "published_at": "2024-01-16T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758f217ee17", "title": "Global state, CLIs, and test scalability", "url": "https://pepicrft.me/blog/global-state-clis-and-test-scalability/", "published_at": "2024-01-15T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758f2d7fdb1", "title": "Deterministic tool versions across environments with Mise", "url": "https://pepicrft.me/blog/deterministic-tool-versions-across-envs/", "published_at": "2024-01-11T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758f3a4130d", "title": "I'm allergic to complexities", "url": "https://pepicrft.me/blog/allergic-to-complexities/", "published_at": "2024-01-08T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758f3a95e3e", "title": "Starting therapy next week", "url": "https://pepicrft.me/blog/therapy/", "published_at": "2024-01-05T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758f4811c51", "title": "Open-source and the imposter syndrome", "url": "https://pepicrft.me/blog/open-source-and-imposter-syndrome/", "published_at": "2024-01-03T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758f53d3065", "title": "Type safety but at which cost?", "url": "https://pepicrft.me/blog/type-safety-at-which-cost/", "published_at": "2023-12-28T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758f62f63b8", "title": "I'm sick", "url": "https://pepicrft.me/blog/i-m-sick/", "published_at": "2023-12-28T12:00:00+00:00" }, { "id": "01a087bf-7b82-739c-a10f-6758f64c8f76", "title": "JavaScript-owned state and accessibility", "url": "https://pepicrft.me/blog/js-owned-state-and-accessibility/", "published_at": "2023-12-23T12:00:00+00:00" }, { "id": "01a087bf-7b83-7039-a8f6-b8763082fdd6", "title": "What if XCTest a concept akin to Elixir's processes?", "url": "https://pepicrft.me/blog/elixir-processes-testing/", "published_at": "2023-12-20T12:00:00+00:00" }, { "id": "01a087bf-7b83-7039-a8f6-b87630c74e5b", "title": "Implicitness in Xcode and SPM. Why Apple?", "url": "https://pepicrft.me/blog/xcode-implicit-dependencies/", "published_at": "2023-12-19T12:00:00+00:00" } ] posts Claim your blog
Back to pepicrft.me
Blog · corpus.blog/blogs/pepicrft.me/posts

pepicrft.me

pepicrft.me

2025

2024

2023