1/7 Experience
Amadeus, Apr 2024 to Present
Senior iOS Engineer / SDK Architect, Mobile ID team.
Architecture-level engineer across multiple Swift Package SDK repos (document scanning, on-device
models, supporting libraries) consumed by internal teams and external integrators. Standardized
cross-repo conventions and wrote the engineering docs that cut integration friction for consuming
teams.
Swift Package Manager, SDK Architecture, On-device ML
Excell Communications, Deep Tracker, Jun 2023 to Mar 2024
Senior iOS Developer / iOS Team Leader.
Designed and maintained production iOS applications, focused on performance, testability and
long-term maintainability. Drove technical decisions and standards across the team.
UIKit, SwiftUI, Core Data, CloudKit, MVVM + TCA
Deloitte Digital, Hello Smart, Mar 2021 to Jun 2023
Senior iOS Developer / iOS Team Leader.
Led the iOS team for the first public release of the Hello Smart app (Smart electric vehicles),
from inception to launch: technical direction, delivery planning and sprint execution.
UIKit, SwiftUI, MVVM + TCA, Bitrise, SonarQube
Bliss Applications, moey!, Sep 2019 to Mar 2021
iOS Tech Lead / iOS Team Leader.
Tech lead for the iOS team on a production mobile banking application: estimations, sprint planning
and code review in a regulated, quality-critical environment.
UIKit, VIP Architecture, Azure DevOps
InnoWave Technologies, Apr 2016 to Sep 2019
Mobile Team Leader & Scrum Master, R&D (Aug 2017 to Sep 2019); Senior iOS Consultant (Apr 2016 to Aug 2017).
R&D on automated testing robots for the iOS ecosystem; then led research, architecture and implementation for internal and client-facing mobile products, including
CityPoints (Cascais) and Vodafone GNE&D Mate.
World Summit Awards 2018: Best Government/Citizen Engagement App
(press: Cascais, Portugal Reports)
TFV, Sistemas Informáticos, Oct 2012 to Mar 2016
Principal Mobile Software Architect.
Planning, coordination, recruitment and implementation of mobile applications (mainly iOS, also Android); trained teams on Objective-C/Cocoa. Shipped Notes4Coach and Notes4Fans, which reached the top of both the free and paid App Store charts in Portugal (July 2015).
AGAP2, Aug 2010 to Oct 2012
IT Consultant L3 / Cocoa & Objective-C coach.
Shipped iOS apps for clients (including InoMobile) and delivered ~150 hours of Objective-C / Cocoa training to engineering teams, alongside .NET projects for enterprise clients.
Methodus, Aug 2009 to Aug 2010
IT Consultant.
Consultant on ActionFlow.com, a library of ready-to-run business process templates.
2/7 Education
MSt, Computer Science, Universidade da Beira Interior, Computing and Intelligent Systems, 2005 to 2009. Research in face/iris recognition (published, incl. the UBIRIS.v2 database paper).
3/7 Skills
Swift, SwiftUI, UIKit, Combine, async/await, MVVM, TCA, VIP, Swift Package Manager, SDK architecture,
CI/CD (Bitrise, Azure DevOps), SwiftLint/SwiftFormat, Scrum Master (CSM), SAFe.
AI-assisted engineering: coding agents (Claude Code, my own Aurora), LLM tooling, local LLM inference (llama.cpp).
4/7 Languages
Portuguese (native) · English (professional working) · French and Spanish (elementary).
5/7 What people say
“As an iOS Lead, Ricardo consistently pushes the boundaries of quality and efficiency, always striving for the best possible outcomes. His ability to collaborate seamlessly with both backend developers and business analysts sets him apart. […] His solution-focused mindset and determination make him an invaluable asset to any team.”
“Besides being an iOS expert, Ricardo shows a wide set of technical skills that enable him to rapidly expose his work to the developers team. His resilience to failure, […] hard-work and effective learning heuristics enable Ricardo to tackle complex challenges, in a very autonomous way.”
All recommendations on LinkedIn
6/7 Publications
- The UBIRIS.v2: A Database of Visible Wavelength Iris Images Captured On-the-Move and At-a-Distance. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2010.
- Improving Spectroface using Pre-processing and Voting. IEEE, 2009.
7/7 Apps
Hello Smart, Deloitte Digital
moey!, mobile banking at Bliss Applications
Hobby & freelance: 15+ apps shipped to the App Store (2015 to 2019, since retired), among them Treble Clef, Crypto Pal, Ireland Trains, A Sir Says, Sort It, Color Tap and Bias Calc.
1/3 Aurora, a coding agent
Aurora works with Claude and other models through OpenRouter, or with a local llama.cpp or Ollama server, all from one model picker. Its approval gate lets you steer a change instead of only denying it, and it detects secrets automatically. The full-screen TUI keeps a checkpoint for every approved change, so you can rewind.
2/3 Hit Happens, an open-source iOS app
A personal life-event tracker: define trackers (“went for a run”, “had a coffee”), tap them when it happens, and browse your history as a list, a calendar heat map or a map. Its icon is the hexagon logo in this site's tab.
It is also a public example of how I build iOS apps: SwiftUI + MVVM on a Clean Architecture split into Domain, Core, DesignSystem and Common modules, dependency injection for testability, unit and UI tests, only three third-party dependencies, CloudKit sync, and XcodeGen, SwiftLint, SwiftFormat and Bitrise CI. The README explains the reasoning for each choice.
Source and architecture write-up on GitHub
3/3 Home lab
A small self-hosted setup I use to learn and test things: a mini PC with an external 32 GB GPU for running local LLMs, about 25 self-hosted apps, my own git server (Forgejo), and AI agents that help me run it. This site is served from it.
Writing
- The Index That Can't Lie, Part 2/2: making an agent's memory earn its own promotions
- The Index That Can't Lie, Part 1/2: giving Claude Code a memory that maintains itself
- Efficient caching in Swift
- Swift tips: Perfect Mapper
- Using SwiftLint to decrease code smell
- Adding a Design Language to your Xcode project
- Building an end-to-end encryption framework in Swift
- Deploying a Vapor (Swift) web app to Heroku, Part 2/2
- Deploying a Vapor (Swift) web app to Heroku, Part 1/2
- Avoiding merge conflicts with XcodeGen
