I’ve been looking forward to writing this new diary entry for a while, and it only took me about two years to come back to writing it. Why so long? Plenty of reasons. And they have been piling up one after another, delaying it even more. But here I am, finally hitting the keyboard writing one of my stories, to tell you more.
This Wednesday, Apple organized a workshop in Paris entitled “ Enhance your apps with Apple Intelligence and App Intents ”. An appealing title that immediately triggered my interest and pushed me to register.
In the last few weeks, I’ve started a “big rebuilding” for Padlok. The goal is to refine the first user experience right after the app was installed, bring more SwiftUI and love to the overall UI, rework the brand identity, and bring both more modern code architecture approaches, as well as Swift 6 strict concurrency, to the codebase.
This Wednesday morning, I had the opportunity to attend the in-person recap of this year WWDC in Paris. I’m very happy to see those events flourishing all around the world, and specifically this year as I hadn’t as much time as I’d have liked during WWDC to really make the most of it.
Depending on the challenges you face while building your app, you might encounter the need to build your own backend logic and APIs to bring your app to life. As discussed in an earlier story , backend is the best way to secure most of your API keys from stealing. But building your own backend comes with a hidden cost: evolution and compatibility. And this Thread from Mikaela confirms my suspicion…
Like I said in my last Indie Diary , I knew when starting what would become Omee that I’d need a very flexible architecture for my app, built with SwiftUI previews in mind. SwiftUI Previews are a tremendous improvement for DX since their introduction back in 2019. This time, I needed them more than ever, so I started experimenting with possible architectures for them.
At the end of last December, I came with an idea. I use Siri a lot for my connected home. Turn on this room, turn off this other… Sadly, I stopped counting when it didn’t worked as expected. What if I brought latest LLM with HomeKit together?
Communication between views in SwiftUI can be tricky. As explained in a previous story about SwiftUI State monitoring , SwiftUI PropertyWrappers offer us a lot by hiding some complexity of managing the source of truth for our views. However, they can also bring confusion regarding state management and how to communicate between views.
SwiftUI buttons are an example of what I would call an awesome and straight-to-the-point API: you describe a button and have a closure when it’s pressed!
2023 comes to an end, and it was a very long year, full of stories, new habits, and new development as well! It’s time to wrap the year up, and summarize what succeeded, and what didn’t!
Not so long ago, I read about this article from Thomas Vahter suggesting the distribution of API keys through on-demand resources. Although this approach is appealing, I suggest a different approach: avoid shipping your API keys at all costs!
When I started working on Padlok widgets, my initial goal was clear: showing the current closest address using location. And if location based widget is supported since widgets exist, setting it up is not as straightforward as it seems.
About a month ago, we launched our latest app, SharePal . Since we launched Padlok silently with low to no communication, this was our first real indie launch. This will serve of manifesto so we can improve our communication skills over time.
While I was working on the first version of my latest app SharePal ⚡️, I figured that I’d like to add haptic feedback for distinct action within the app.
Although SharePal launched last Wednesday, this diary is not yet about the launch itself, but everything that happened before, and oh boy, that was a very busy September. Let’s dive in!
I’m currently playing with ShareLink, a lot, for my upcoming app SharePal . And I couldn’t miss this very strange and inconsistent behavior I got with it. Specifically when providing a string as an item.
Shake to undo is a more than common UI on iOS. From Notes, Reminder and, well, mostly all apps, users expect it. This is why for my latest app SharePal , I decided it would be a nice to have for when the user manages his data.
This month have been fairly busy in my Indie journey. I’ve completed, and shipped a major release for Padlok, including a bunch of new features, but we’ve also been planning with my fiance the next big thing …
It’s been 7 years! Seven years I’ve resisted the urge to rewrite my blog with new frameworks. But I did it anyway. Why? Because I needed to uniformize a little bit the website I’m maintaining. And because of the features it brings with it.
I never really related about my indie apps journey until now in this blog. And that’s a miss because there is so much things to share! Today, I’ll take some time to discuss Padlok participation to the Indie App Sales earlier this week, how it did, and what we learned in those two days!
One of the most “off radar” feature from this year WWDC probably is the new Share experience introduced by Apple with iOS 17. From sharing your info with NameDrop, to starting a new SharePlay, we can now just approach the top of our phones together to share some content. NameDrop is entirely system based, and SharePlay is documented with a few sessions videos from WWDC. As for AirDrop, turns out…
Each year, new SwiftUI APIs are gladly arriving for our apps at WWDC. And each year, those new APIs are central to make your app a first class citizen on the newer OS, but as you know, it’s painful to maintain backward compatibility with older OSes when using newly introduced modifiers.
Since 2020, Widgets fully embrace SwiftUI by being a system extension fully based on them. Building SwiftUI views instead of UIKit views is advantageous, including: Declarative syntax is easier than dealing with old school constraints Less code for equivalent user interfaces Live Preview to iterate faster over the development life cycle
Updated on July 29, 2023 Updated the fact that this blog is now built with Hugo instead of Jekyll As an indie developer, I used to manually deploy my web applications to my VPS. But the more and more subsystems and apps I tend to build, the more my server get crowded with new applications to deploy and maintain.
Learning iOS I started iOS development in 2014, right when Swift language was announced at WWDC. Starting iOS was something I wanted to do for a long time, but this announcement alone was exactly the push I needed to buy a Mac, and begin this very long journey. It leaded me to a lot of small wins, but also to a lot of frustrations. Learning something new is long, but it guided me to what I…
One of the main reason for me to build Padlok was data management. I didn’t want anyone to retrieve my friends addresses and codes. As with any contact related infos, I may have trust issues about them. And so should you! That’s also why Padlok development is focused around data privacy and security . Data is stored on device only, an synced with iCloud. And early share feature was simply…
This story might be outdated: For now, I’ve stopped using Vapor on my VPS for multiple reasons. Although Swift and Vapor is not built to actually run on Debian, but for Ubuntu, let’s say that both distributions share enough so that running Vapor applications on it is not impossible. Since it’s not actually a supported solution, please note that maybe some features or things might not work…
This story might be outdated: Although it uses the same principles, this blog now uses TailwindCSS Safe Area extension Recently, Apple released its new beta software during WWDC21; and with it, the very new Safari 15. This new Safari requires some improvements for each websites to embrace the new design, with some attention to the new header that colors itself to feel like it’s part of the site…
This story might be outdated: I haven’t tested this technique for a while, so I’m not sure it’s working for latest software. If it still work, tell me on Mastodon! One of the most frustrating thing that could happen when developing with Xcode is the fact that using release version of Xcode can’t build an App for a device that is currently running a beta software. You’ll have to open Xcode-Beta in…
Why? Because we can! WWDC19 announcements came with CryptoKit; a new framework designed for making cryptography easy. Today, I want to show how to use CryptoKit to generate numbers.
What a long week it’s been! My first WWDC is now over, and there’s a lot to say. I’ve learnt a lot, met incredible people, and corrected a lot of bugs with the help of fellows Apple engineers.
IPv6 isn’t new at all, but it’s stunning to see how much the web isn’t ready for it at all! But that can change, and making your web server compatible with it is a great start!
(This is not an April fool!) It’s with great pleasure that I will attend this year WWDC . It’ll be my first WWDC from the inside, and I’m super excited about it already!
This story might be outdated: This blog now uses tailwindCSS to handle dark mode; the screenshots also are a bit outdated. This last Monday (March 25, 2019), Apple released the last version of macOS 10.14.4, along with Safari 12.1. This last version of Safari expose a CSS api using the @media tag allowing you to support a Dark theme for your site, working along with macOS’s dark mode.
This story might be outdated: PHP 7.x is now end-of-life. You might wanna update to PHP 8.x (and also update to a newer Debian?) When installing PHP on Debian 9, the default version is PHP 7.0 , that have been declared End-of-life since January 10, 2019 . PHP 7.0 will not go further version 7.0.33 on Debian 9. Adding a new repository for newer versions of PHP First, this repository uses APT…
Data privacy, and the usage of collected data have now became a controversial subject. People tends to acknowledge more and more the importance of keeping private data; and private life … well … private. In this tutorial, you’ll see what solution I came around keeping my own privacy at my home network.
As a software engineer for DiliTrust , I think software security as a primary feature for any kind of product or software. Every time we heard a story about any kind of security flaw, we take it seriously: how is that possible? Am we directly or indirectly impacted? Well, I guess I wasn’t yet prepared for my last discovery.
This story might be outdated: This code was written for Swift 3 with Xcode 8.1 . With libraries like CryptoSwift , it’s easier and easier to use encryption in your code. But there are also some common mistakes not to fall into when using cryptography! The rest of this article will use CryptoSwift as an example.
This story might be outdated: This code was last updated for Swift 3 with Xcode 8.1 . Disclosure indicators are very common in an iOS application, and they allow the user to know that if they select a cell, they will be pushed somewhere else. You can also read Apple documentation about them.
This story might be outdated: This code was last updated for Swift 3 with Xcode 8.1 . This code would be today either made using SwiftUI, or using UITableViewDiffableDataSource Now that I begin to feel very familiar with Swift syntax and iOS app design; and that I am totally convinced by how easy it is to do swift code, I want to share with you how to use it to make one of the more common UI and…
This story might be outdated: This blog now uses Hugo, see Renewing the blog (again!) For the people who knew the blog from before 2016, it’s completely gone. Why ? Because I previously used Dotclear, and it didn’t really fit my needs: it was too complex compared with my real needs. Plus, there were an issue with the Dotclear’s comment system, it was polluted by bots. So I decided to retire it.