When working with images in iOS, it's sometimes necessary to convert between an image's pixel coordinates and the coordinates of the UIImageView that displays the image. Here's how to do it.
I envy most lead fictional characters of well-enough written stories. With their foes, their moral dilemmas, the high(ish) stakes. Wether they live in a manichean or a complex world, what matters usually is obvious. In these worlds, one knows what they have to care about if they want Here?
This should have been simple, but it wasn't. So if you too are having a hard time making a zoomable image in SwiftUI, come on in!
Intro. Mainly Mac-oriented Homebrew My go-to tool to install pretty much anything on my Mac, Homebrew is a nearly ubiquitous tool in the Mac-using developer community. Don't believe me? It can be used to install every single macOS app listed here. And that includes the awesome screensaver listed at the
Loosing your rounded corners or transparent background when saving an image to the user's photo library or sharing it with UIActivityViewController? It's because it's be turned into a JPEG. Here's how to solve that.
A few years back, in February 2019, I, like quite a handful of people, heard for the first time of OpenAI's GPT-2. And while it sure was impressive, it only gave us a glimpse of what GPT-3 would be able to do a year later. Impressive wouldn't start to describe
While working on a client's app's CI pipeline, I needed to use an API key. However, it was stored as a base64 environment variable, when the tool I needed to use required it to be plaintext in a JSON file. Fun times.
I've heard quite a few times that we, as a species, are terrible, destroying the Earth, ourselves, and that we are, all in all, the worse. That's assuming a lot. First and foremost, that we are as smart and great as we think ourselves to be.
While setting up a new step for a client's CI pipeline on a macOS agent, I needed to export an API key containing line breaks to a JSON file. Meaning I had to escape line breaks, in bash, on macOS. Turns out, it's not as easy as it sounds. Who would've guessed?
We needed an OpenCV Contrib module in an iOS app, using Swift Package Manager. I thought the hardest part would be using OpenCV. How wrong I was.
With remote work on the rise, I've seen people debating the fairness of companies adjusting pay based on one's location and cost of living. As if there ever was an intrinsic justification to compensation. Spoiler: there isn't.
Once you have tasted SwiftUI, this kind of UIKit lacking makes you wish you could refactor a client's whole codebase at a snap from your fingers. At least the UI side of it. But, alas, there is no magic spell for that. Yet. What kind of lacking? UITextView doesn't have
Recently, a client told me that the code I had written to sync their systems and a new datasource blew up their AWS EC2 instances. Apparently, the synchronisation engine kept getting killed for using up too much memory. More than a few gigabytes, actually. To sync a few tens of
Sometimes, opting for sensible defaults seems obvious. Yet, sometimes, the default and most obvious option isn't the most sensible.
Where we take the world down with us, and burn it all to the ground. All to play Portal 2. Seems oddly fitting.
I have, as a teenager, fiddled around with phpMyAdmin when fooling around with WordPress and OGSpy, back when OGSTeam still relied on SVN for versioning, and I didn't know crap about development, let alone architecture.
A simple way to print any and all errors in Nest.js, for people who aren't experienced with it.
Sometimes, the smallest things take up quite a bit of time. This time, it was a simple serialisation issue.
The thought came down onto me as I was leaving a job interview. I don't know where it came from. I didn't care. It was here now. And it was obvious. Whatever the idea. Whatever the project. It all comes down to people buy-in.
There’s a quote by André Gide, a French author, that goes along those lines: "Everything to be said has already been said. But since nobody was listening, it has to be said all over again" ...
You have a TypeORM entity. It has a relationship. The relationship entity has a nested relationship to a third. And you need that third entity to save the world and crack the bank vault open. How the hell do we get it?
This story comes from a book, where one of the protagonists tells it to another. One who direly needs to hear it. And little did I know; so did I. This is a story that disturbed me greatly. It almost made me cry. And I couldn't stop from thinking about
When we don't know, when we need to take some time to consider our answer, to build it. We own it. We own it, we shut up, and we take the time it will take. It's not an issue. On the contrary!
Failing to open a PDF form using Preview? Want to export a PDF form to a regular PDF (on macOS)? Here's the solution you weren't looking for.
After giving our UIViews' both shadows AND rounded corners, today we will learn how to animate UIButtons and make them visually respond to our users' touch!
I have a piece on how most things we try to accomplish in life often come down to people buy-in that has been sitting as a draft for over a year. I still hope to actually finish and publish it here some day in the near future, but answering to
While using Cloud9, and installing node dependencies, my instance ran out of space. I couldn't finish setting up my project, and the terminal's autocompletion was dead in the water.
I really can't remember why, but at some point I needed to get a RxSwift Observable's last two values, to compare them and decide what to do next.
Do you want to sell sugar water for the rest of your life or come with me and change the world?
Period: 2021/05 - 2021/07 • Technologies: Firestore, Firebase Cloud Functions, Firebase, APIs & Node.js • Language: Typescript
Period: 2021/04 - 2021/06 • Technologies: Firestore, Google Cloud Functions, GCP, APIs, Node.js, React • Language: Typescript
If you are an iOS or macOS developper, you probably work with Xcode. And if you work with Xcode, you've most probably had some weird times where, suddenly, things just stopped working. Here's how to solve that
Optimize your mobile app's performances and run "big" and "complex" queries in NoSQL, using CQRS & Serverless! (in our case, Firestore & Firebase Cloud Functions)
Where we learn to look around thoroughly before blindly trusting strangers.
Somehow, making a button rounded, and then adding a shadow to it, seems to be more difficult than it should. Here's how to do it in Swift!
Ever heard of the School of the Air? It's an Australian thing, from deep within the Australian outback. A peculiar and quite unusual one at that, until recently.
Ever uploaded a file to Firebase Storage, only to be hit with a 403 error when trying to access it? Here's how to get a publicly accessible URL for the file you just uploaded.
Improve your iOS app's performance and battery usage by not repeating expensive computation and network calls, using memoization, in Swift!
Tired of having your app crash on runtime because of a misspelled a tableView's or collectionView's cell identifier? Learn here how to stop that from happening, today!
Period: 2020/02 - 2021/07 • Technologies: APIs (integration), RxSwift, UIKit • Language: Swift
You're trying to figure out what some object looks like, and since you're not running your code locally you don't have access to a proper debugger. So you print it. And your whole Node.js app crashes. What do you do?
Want a 'soft' introduction to web scraping? Need to get some data from an Instagram post? Here's how to get it done, in Node.js, using cheerio!
Not satisfied with how you're handling pagination in your Swift iOS app? Pretty sure there has to be a better way to paginate your UICollectionView or UITableView? So did I, and here's how I did it!
Being a backend developer, there's an unusual thing with push notifications. Devices display what we send. The clients don't have a say in it; they can't remodel and transform them. Meaning, we basically have to do some UI (User Interface), and localize it.
Struggling to upload remote files to Firebase Storage? Running on Node.js? You're in luck!
When writing iOS, you will always end up using UITableView or UICollectionView. With them come cells, delegates, datasources, cellForRow(at indexPath:), didSelect,... I've often seen it become (and inherited) an ugly mess. Not anymore.
If you're like me, notifications, alerts and boucing things when working is at least annoying, and down right distracting when you're having a hard time focusing. Like I am right now, which is why I'm writing this post instead of actually working on my side project.
I currently work at Spotr [https://spotr.app], a company building a mobile app. We rely on Wix for the landing page, for the simple reason that it's simple enough to use for the rest of team to update it and design it themselves, letting me focus on back-end and
Sometimes, JSONDecoder fails. And when that happens, it can be difficult to figure out what went wrong. Not if you can print Data instances!
When handling navigation, we often end up having to pass some sort of state to our view controllers, wether directly or indirectly. Setting endless optional publicly exposed properties feels dirty and is a pain, while setting @IBOutlets before viewDidLoad is crash prone. Let's solve that together.
Period: 2019/06 - 2020/02 • Technologies: Firebase Firestore, Firebase Cloud Functions, Firebase Storage, Cloudflare Workers, Node.js, CQRS, APIs • Language: Typescript
Last time we dynamized your serverless resources based on your deployment stage. Now we'll dynamize your AWS deployment account! Yes, that's right, automation all the way!
Struggling with CORS? Wondering how to get rid of those 'the preflight request has failed' or that 'origin https://whatever.com is not allowed' errors? Let's sort this together.
Do some proper namespacing for your DynamoDB tables and kinesis streams, avoid collisions between your features in ci and automatically clean up after you!
Can't figure out which ad-blocker you can trust? Tired of seeing these mattress ads just after you bought one online? Look no further and adopt LittleSnitch!
You're building a Serverless microservice on AWS, authenticated via Cognito Federated Identity, and would like to test it? Read along!
Period: 2019/01 - 2019/02 • Technologies: UIKit, CoreBluetooth, private SDKs integration, APIs (integration) • Language: Swift
November 2018 to September 2019 (11 months) App: La Belle Vie Developing new features and maintaining a Swift iOS app
Cache your AWS Lambda functions results and make your life easier with a custom domain using Cloudfront!
You've learned about serverless but want to avoid getting locked-in? Already got burned and promised to yourself it wouldn't happen again? Come aboard!
Want to test some private methods or mock unexposed functions? Having trouble using rewire in Typescript Land? You are in the right place.
I was told to stay as far away as I could from Core Data. Some hate the poor thing, and others... don't really dislike him? Let's add my own story to this.
September 2018 (< 1 month) Support and reinforce the existing team to get the app's redesign implemented before beta release. Mostly updating UI, working with XIBs and Storyboards, with a little animation on layers (CoreAnimation)
January 2018 to April 2018 (4 months) I revamped the whole app using RxSwift and MVVM-C, smoothing the performances, and improving stability, as well as adding different metrics to analytics (such as detecting screenshots and where they were taken) and some features (live likes and comments using Pusher.io).
Period: 2017/05 - 2017/09 • Technologies: UIKit, RxSwift, some Android frameworks • Language: Swift, Java
July 2016 to May 2017 (11 months) Developper of the Spotr app, written in Swift 3, using Carthage as a dependency manager, Alamofire for the network requests, along with SDWebImage and a few other frameworks. It also features a backend integration (Stamplay) through RESTful API, and Algolia (via SDK).