Where I write down and catalogue my thoughts


Logging Etiquette

The basics + some opinions 🪵🏷️

03 Aug 2023
Logging etiquette is something that should naturally pop-up in any codebase that grows complex enough (hopefully before it is actually needed the most 😅🤞). When you start having too many simultaneously moving parts, crash reports and stack traces won’t always be enough to understand the underlying cause of a bug, and this is where logs will shine the brightest. If implemented correctly, they might just provide you with the missing puzzle pieces 🧩.
Estimated reading time:  16 mins
Tags: Swift opinion logging code swift

Custom Functional Programming Operators

Piping data and operations 👨‍🔧

27 Apr 2023
During the migration of a series of projects from simple MVVM-C to the more compartmentalized CLEAN architecture, while also transitioning from Combine to the less verbose async/await, I found myself wishing for something to reduce the amount of boilerplate when mapping nested optional data.
Estimated reading time:  13 mins
Tags: Swift iOS metaprogramming automation

Simple Service Locator

Keeping track and cleaning up 🧹

31 Jan 2023
Now that we have a more robust MVVM codebase that uses a Service, and we’ve ensured its testability, it’s time to address the elephant in the room.
Estimated reading time:  11 mins
Tags: Swift presentation iOS service-locator unit-tests

Simple Dependency Injection

a.k.a. how to manage dependencies and ensure testability

31 Jan 2023
In this post we’ll start with a simple MVVM codebase that uses a Service and make it more robust, then leverage that robustness for testability, and provide some alternative patterns for the pitfalls we find along the way.
Estimated reading time:  14 mins
Tags: Swift presentation iOS dependency-injection unit-tests

Migrating pages

While improving SEO and retaining previous URLs

29 Jan 2023
How do you go about migrating your existing blog entries from one URL scheme/pattern to another without breaking existing links scattered outside of your blog?
Estimated reading time:  1 min
Tags: Journal meta Jekyll SEO

Detecting memory leaks via tests

Part 2 - Harder. Better. Faster. Stronger.

23 Jul 2021
In the previous post I showcased how we could use our test suite to help us find potential memory leaks. This novel approach to Unit Tests was good at catching instances where we forgot to cleanup our properties and SUTs during the tearDown, but let’s not kid ourselves, short of adding assert clauses at the end of each test, we wouldn’t be detecting sneakier leaks. What’s more, that solution didn’t handle more complex testing scenarios with non-class entities and constants. Fret not. What if I told you we could narrow those gaps? (leak pun intended 🚱)
Estimated reading time:  24 mins
Tags: Swift iOS memory-leaks automation reflection unit-tests

Detecting memory leaks via tests

Part 1 - What, How, Why?

24 Jun 2021
It’s happened to most of us in one form or another. Your iOS app keeps crashing for no apparent reason, you can’t really reproduce it consistently, and it seems like it’s affecting older devices more often. If you’ve been in this situation, you probably witnessed first-hand the side-effects of memory leaks. But what are memory leaks and how do you plug them, and perhaps more importantly, how do you find them?
Estimated reading time:  17 mins
Tags: Swift iOS memory-leaks automation reflection unit-tests UI-tests

Enums with Associated values & Raw values

05 May 2021
The other day I was trying to make due with an existing enum that used it’s raw values and add associated values to it. I eventually found out the hard way that in Swift you can’t extract a raw value if the enum has associated values, but I wasn’t going to let that stop me from achieving my goal.
Estimated reading time:  14 mins
Tags: Swift iOS enums associated-values raw-values

Securing your secrets for fun and profit

06 Aug 2020
Any iOS developer worth his salt has probably faced the dire realization that handling environment variables through Xcode is anything but intuitive. This post will analyze several solutions to address this issue; some taken straight out of apple’s playbook and others that people far smarter than me have come up with. In the end, I propose a new approach, inspired by everything I’ve seen and learnt thus far.
Estimated reading time:  12 mins
Tags: Swift iOS Xcode metaprogramming security

Seeding a barren wasteland

29 Jul 2020
As with anything that is meant to grow over time, when starting out you are often faced with the harsh reality that it’s going to be a while until you can show off the fruits of your labour. This blog is no different, and if you’re following it at the time of writing (thanks for being an early supporter by the way! 🥳) you might have noticed that, even though it’s 2020 I have already posted some entries dating back as far as 2017. What’s going on here?
Estimated reading time:  3 mins
Tags: Journal meta markdown medium

Houston, we have a problem

20 Jul 2020
Not all launches go as smoothly as planned, and launching this blog wasn’t as easy as I though it would be. I had already setup Jekyll and a github repository to host my static pages, but something was off… I couldn’t serve them from the base url as I had initially planned, at least not yet. 🤨
Estimated reading time:  6 mins
Tags: Journal Jekyll code meta

So much text, so little time

08 Jul 2020
This time around I wanted to add a niche feature to the blog that I think could greatly improve it. We’ve all been there, so picture the following scenario: You’re scrolling through Reddit, YCombinator, or whatever news aggregator you use; spot a title/thumbnail that’s just clickbait-y enough to make you open the URL or thread and… BAM!
Estimated reading time:  2 mins
Tags: Journal time UX reading

Let there be references

02 Jul 2020
For the past few days I’ve been setting up this blog, and one thing i noticed the lack of was a proper referencing system, something to help me and my potential readers sift through what I aim to be hundreds of post entries. I was missing a categorization and tagging manager.
Estimated reading time:  1 min
Tags: Journal meta Jekyll code

In the beginning, there was nothing

30 Jun 2020
So I decided to start using Foam. I see much potential in it as a thought organizer, so I thought I might as well give it a go.
Estimated reading time:  1 min
Tags: Journal code music

Augmented Reality - What, How and Why?

Presented in reduced reality

22 Mar 2019
This talk will not teach you the basics of ARKit, it will take you on a journey through the process of discovering a very promising piece of technology and creating a “useful” AR experience. For most people AR is magic: they don’t know how it works or what can be done with it. This talk aims to demystify some concepts, teach a bit of the basics, and inspire people to create more AR content.
Estimated reading time:  1 min
Tags: Talks presentation AR

ARKit — A simple hands-on experience

Build an AR app that shows you nearby points of interest, how far away they are, and how to reach them

23 Aug 2018
Estimated reading time:  11 mins
Tags: Medium Apple AR swift

Augmented Reality — A Simple Technical Introduction

20 Jun 2018
Hey guys, it’s me, António again. 👋 Last time we interacted I was writing about how we used an external sensor to turn iPhones into breathing rate monitors for Brythm. This time however, I’m going to tell you all about the amazing world of Augmented Reality (or AR for short). This sudden thematic shift didn’t come out of nowhere but rather from Apple’s WWDC 2018 event, where they showcased many projects they are working on, how far they’ve come, and how there is still so much to improve upon. Among their many keynotes, one of them touched on their latest AR endeavor: ARKit 2. This in turn peaked my interest in the subject and, since I had some free time on my hands and wanted a new pet project, well… here we are 😅 so without further ado, let’s dive right in.
Estimated reading time:  12 mins
Tags: Medium Apple AR swift

Lessons learned while working with Deemaze

03 May 2018
I’ve been working with Deemaze Software for approximately 2 years now, and since my debut I have learnt more than I could have ever anticipated. It turns out, being a programmer isn’t just about coding. I know right, who would have thought?! There’s loads of management tips, tricks and nuances, business lingo, client expectations, internal and daily standups, quality assurance, code reviews, design specifications, alternating tight and lax schedules, cool and boring projects, etc. etc. It can be quite a handful! Thankfully, the team I work with has mastered the a̶r̶t̶ ̶o̶f̶ ̶w̶a̶r̶ art of juggling all of these concerns and taught me a great deal, so without further ado, here are some of the important lessons I’ve learnt throughout this incredible journey.
Estimated reading time:  5 mins
Tags: Medium deemaze meta self

Brythm — breathing with rhythm

20 Dec 2017
Here at Deemaze, we are constantly looking for challenges outside of our comfort zone, and this project is far from what we are accustomed to producing for our clients. While most products have a keystone that defines their solidity as a tool for management or business, Brythm is not intended as a commercial endeavor for either its owners or users, no; it was imagined, designed and built as a means to help attain a more noble goal.
Estimated reading time:  4 mins
Tags: Medium sensors Brythm