RSSAmplifier

Blog

Daniele Margutti

danielemargutti.comRSS feed ↗15 posts

Latest posts

HTTP Client for Swift

Oh dear, just what I needed… another delightful request for a refactor!

Oh no! Yet another refactor request!

Oh dear, just what I needed… another delightful request for a refactor! You can bet this is the first—and probably the second—thought that crosses the mind of any manager or engineering lead when some dev pops up with a shiny refactor idea during any brainstorming or planning session. It’s like, “Oh great, here we go again!” That’s because there are few—like, really few—valid reasons for something…

Fixing the Xcode 16 LLDB error "Couldn’t realize type of self”

Programming on iOS has never just been about chasing after Apple’s new APIs; often—indeed, more than necessary—it involves implementing more or less creative workarounds to overcome issues that arise specifically with the toolchains, Xcode being the primary one. Since the introduction of Swift—ten years ago now—the quality of debugging apps with complex architectures has always been a…

The engineer you’d want to be

Writing code is just one aspect that will make you a good engineer. In a future where AI will be an integral part of every workflow, standing out in an increasingly crowded field will be important. Today, while scrolling through my newsletters, I spotted this news: It turns out that Odysseus landed on the Moon without any altimetry data […] The moon lander’s range finders were discovered to be…

Don't hire for passion

Let me to be honest, there is a big lie in the world: Do what you love and you’ll never work a day in your life. If you’re reading this post and you know me, you’re probably wondering if I’ve lost my mind or something. I joined the world of computer science driven by a strong passion. Yet, many years of technical interviews with dozens and dozens of people of all seniorities have left me with a…

Beyond specialization

I dove into programming at a young age, driven by boundless curiosity. It was a world where anything was possible, and that very curiosity became my lifelong passion, eventually evolving into my career. The fact that it also happened to be a pretty cool job in these years was just a lucky coincidence. If I’d been into poetry, I might be under a bridge right now, scribbling away! Anyway, for a long…

Task & Threads in Swift Concurrency

To understand the difference between tasks and threads, we need to take a look at what threads are and how they are used in a modern general-purpose computer. Since this is not a post about CPU architectures I’ll try to simplify some concepts. At the very low level every processor has a thing called registers.We can refer to registers as a type of computer memory built directly into the processor…

The effect of indirect actions on team dynamics

When I started this role about 4+ years ago, I never thought about how indirect actions could shape the people around me even more than any direct action or speech on the stage. This is true both in the short and long term. Some time ago, during a break, we discussed this pattern along with some colleagues. It’s impressive to see how people slowly start to imitate their managers in their everyday…

Not everything has to be perfect the first time

It’s strange, but it often happens to many senior people: the more you move towards your career, the more it’s hard to love imperfection . Each new project starts with constraints: some of them are related to time-to-market bounds, some others instead came from the necessity to optimize and delay the necessary resources (mostly development time) while evaluating user feedback. Constraints mean…

Thoughts on moving to a leadership role

Moving to a leadership role does not mean you will need to check every line of each PR, tearing your hair and hoping it will be not that bad day. When I started the role of Technical Lead (feel free to replace it with any other variation of the role) I had a strong craving to control everything around me. This is not anything strange for tech people new to this kind of role. Therefore it’s easy to…

Healthy approach to code reviews

Code reviews are weird monsters. With no doubts they improve the overall quality of the code and help programmers build relationships and work together more effectively. However asking for a code review puts many people on edge because it is just like laying your creative soul bare. By generally speaking most of the devs lives CRs as a “personal intrusion” . Your team is only good as your weakest…

The broken window principle applied to software

“Broken Windows” is one of the most cited articles in the history of criminology. The theory was first suggested in the early 1980s by a social scientist, George L. Kelling, in his article in the Atlantic . It follows an experiment conducted by Standford’s psychologist Philip Zimbardo in 1969. Kelling explained the theory as follows: “Consider a building with a few broken windows. If the windows…

Modern networking in Swift

I’ve got a confession to make: Making networking layers has always been an exciting topic for me. Since the first days of iOS programming, in early 2007, each new project represented a fresh opportunity to refine or even break the entire approach I have used so far. My last attempt to write something on this topic is dated 2017 , and I considered it a milestone after the switch to Swift language.…

How Feature Flags can boost your mobile app

Modern mobile development moves quickly; here in our team, we release a new version of our iOS app every two weeks. If you are lucky enough to live the moment of a team expansion you will also see the exact moment where everything starts slowing down because you have multiple in-progress things that aren’t quite ready for production. It’s a typical scaling problem where you need to rethink how you…

The economy of tech debt

Most articles about tech debt are pretty much theory only with lots of interesting philosophies. I’d like to approach this topic in two steps: The first part of this article is all about theory: what’s a tech debt, what’s not, and what’s the root causes and impacts on product and team. In the second part, I’m going to give you a hands-on approach to how to manage it so you can improve your product…