I’m Pedro Piñera Buendía, 🇪🇸 iOS Developer currently working at SoundCloud as Core iOS Engineer. Even though I studied Telecommunication Engineer I became interested in mobile development back in 2010 and I’ve been doing that since then. I’ve worked for companies like Redbooth](https://redbooht.com), 8fit and recently SoundCloud. I’m a passionate runner and traveller. I’m always willing to learn new things and become a better developer and person. I like sharing what I learn and I do it on this website but also in a Newsletter that you can subscribe to. I’m a strong believer in the power of openness. I’m open in many aspects of my life such as sharing the problems that I’m facing in life, my new discoveries as a developer, or the projects I work on that can be useful for more developers. Most of my spare time projects are Open Source libraries that I share on my GitHub account. You can check them out here.
In my free time, I’ve also worked on projects like GitDo, an Issues management tool for GitHub, and some other apps with Caramba. We craft apps and tools for developers. We, as developers, have great tools to make this world better, why not using them?
- Setup project with an scalable structure and connect it with a CI environment (like Travis-CI, Jenkins, Wercker)
- Interaction with Web APIs (through client entities that handle remote request)
- Local persistence on databases, local app storage, … (experience with CoreData and Realm)
- CocoaPods/Gradle experience to setup different build configurations and integration with libraries/frameworks
- Experience with Unit Testing on both iOS (using native Frameworks or ruby-like syntax wrappers like Kiwi, Specta, OCMock,…)
- Strong layout experience using Autolayouts in case of iOS and building layouts from scratch on Android. In favour of coding Autolayout constraints.
- Mobile Architectures for scalable and modular apps. Experience architecturing Swift/Objective-C projects in multiple frameworks in order to build cross platform applications.
- Release processes using versioning tools (using milestones, releases, tags and branches to keep a clear vision of the release process and have everything coordinated and perfectly integrated)
- Experience in Ruby, developed small gems wich different purposes. I have also a few of experience with Rails.
- Node, Gulp, Nginx, Jekyll, Octopress.
- Regular Expressions.
- AngularJS, Ionic Framework.
- Rails, ActiveRecord.
- Android development.
I started with Redbooth in 2013 and I joined the iOS team to work remotely (I was finishing the University) as a Freelance. During the that year I was working for Redbooth I improved my knowledge on areas like data persistance, API interactions, Core Data, mobile architectures, Objective-C patterns, and had the opportunity to deal with XMPP helping the company to build its own chat client integrated into the company’s solution. Moreover I had the opportunity to develop for the Android team too which for me was a good chance to dive into the Android development. I’ve been improving my Android background since them and although it’s not at the level of the iOS one it’s pretty one.
I joined SoundCloud in October 2015 as iOS developer. During the time I’ve been working for SoundCloud so far I’ve learnt about the use of Reactive programming in an very consolidated codebase and improved my architectural knowledge with new patterns I hadn’t used before. Moreover I learnt about the importance of testing for apps development, since we have CI pipelines defined that run Unit and Acceptance tests.
GitDo is my spare time project. I started with a college I worked with before at Redbooth. This project taught me about team management, product design, the importance of company values, … I was founder of the project and I had to get my head out of the coding editor. I’m very excited about all the things I’m learning with that project.
Open Source projects
- UnsplashKit: Unsplash client in Swift. Link
- Paparajote: Client OAuth 2 handler written in Swift for iOS and macOS applications. Link
- SugarRecord: SugarRecord is a management library to make it easier work with CoreData and REALM. Thanks to SugarRecord you’ll be able to start working with CoreData/REALM with just a few lines of code. Link
- WorkFrom: Swift client for the WorkFrom API. Link
- DoneThisKit: Swift client for the iDoneThis API. Link
- CarambaKit: Set of reusable component for Caramba apps. Link
- PopcornTimeTV: PopcornTime client for tvOS. Link
- SoundCloudSwift: SoundCloud API client written in Swift. Link
- ReactiveCommander: Command pattern with a reactive interface written in Swift using RxSwift and ReactiveCocoa. Link.
- HTTPCommander: Command pattern wrapper for HTTP requests. Link.
- Transloadiit: Transloadit client for Objective-C. Link
- PPiAwesomeButton: UIButton category with new methods to setup a button with text + FontAwesome Icon. Open App. Link
- PPiFlatSegmentedControl: PPiFlatSegmentedControl is an UI Control developed avoiding original UISegmentedControl to get interesting features related with the flat design. For better appearance you can add Font Awesome library to your project and use their icons into the Segmented Control. Link
- MagicMP: I noticed that the new MultiPeer framework introduced in iOS 7 was segmented in two main components and still using delegates. The framework has an abstraction layer in viewController format to explore nearby users, or advertiser devices, but.. What if we don’t want to implement the module using viewControllers? Here’s where MagicMP appears, it unifies both components in an easy way, with blocks and a singleton class, use whenever you want without depending on a ViewController. Link
- PPiShowtime-Google-iOS-Library: Get showtimes from any City thanks to Google Showtime. I discovered there was no option to access to this information so I decided to parse the information directly from their Website. As iOS Developer I thought it would be useful to release a Objective-C class to get/parse this information for all developers. I called it PPiShowtime. Link
- Framework Oriented Programming (Mobiconf): Learn how to modularize your Swift/Objective-C project and benefit from it: reuse your code accross platform and scale your project and team easily. Link - Youtube
- Reactive Thinking in iOS Learn how to change your mindset and design your apps to be Reactive Link
- Framework Oriented Programming Organize your apps in reusable and platform independent frameworks Link
- Network Testing Testing your requests with Acceptance Tests on iOS Link
- En busca de la arquitectura perfecta: VIPER (iOS): Talk about the VIPER architecture applied to iOS application. I explain there the transition between using a monolytic architecture using MVC with elements too coupled to that new architecture where every component manages only one kind of operation. Link
- Hybrid mobile applications for a fast development - 8fit: Talk about the steps we followed on 8fit to have a mobile web-app solution for our platform with a real mobile experience. Link https://www.youtube.com/watch?v=5pf_GBR0dTs
- Swift and Objective-C playing together: Start using Swift in your Objective-C projects. Avoid some headaches with these useful tips and advices for the communication layer between your Objective-C code base and your future Swift implementations Link
- GitDo: Designing the app infrastructure Blog post that explains the architectural decissions that we took in order to implement the GitDo current architecture Link
- The spare time project journey. Why I started GitDo Personal reflexion about myself and why I came up with the idea of investing my spare time working on GitDo Link
- States - The source of truth Overview of states in iOS apps, how we tipically handle them, current challenges with states and how to overcome them Link
- Introducción a Swift Book that introduces developers into Swift (in Spanish) Link