vknabel
vknabel
Valentin Knabel
Developer, cyclist, coffee nerd, human. Open Source, kindness, honesty, vegan. It is fine to be imperfect, as long as we are honest and have fun along the way.
Latest Posts
UIApplication.shared isn’t available within an iOS app extension. To annotate your code paths not needed in an extension, but using UIApplication.shared, just use the @available(iOSApplicationExtension, unavailable) annotation. Now you...
Nestjs has very great decorators to annotate your routes, dtos and controllers. This makes it really easy to keep your Swagger or OpenAPI documentation up to date. https://docs.nestjs.com/openapi/types-and-parameters Only downside: as...
XPath is a really powerful tool to query XML documents, if you are forced to. But in contrast to JSON queries, XPath does not return the actual values, but the nodes or attribtes you queried. XPath ist ziemlich mächtig und man kommt...
Using enums in Swift for static Table View Data Sources is really great. Especially when declaring them as enum X: Int and using the rawValue to reflect the section or row index. You can even use the CaseIterable protocol to count the...
I have never actually seen serious code that’s running in production, that uses base64 encoding for password for over a decade. Today I did. Here is the not so friendly reminder: base64 is no encryption or hashing algorithm. You should...
I haven’t used SwiftGen for a long time, but wow, it has improved a lot. I am a bit impressed.
Since WWDC21 all iOS apps that provide registration are also required to provide the deletion of those accounts.
Gradle did reject my ssh key due to invalid privatekey. The solution: converting it into a different format. ssh-keygen-p -f id_rsa -m pem
Nothing especially new here, but a reminder: Firebase might be a good choice if you need realtime updates. Instead of implementing and connecting to websockets and implementing one-time requests and observing differently, you can simply...
With CSS skew you can simulate a perspective effect. If you want to additionally rotate the element, use rotate first then skew. Otherwise you might get a really wierd result.
When using @main on a SwiftUI.App and @UIApplicationDelegateAdaptor(AppDelegate.self) you can still have an AppDelegate without handling SwiftUI manually as without @main. You don’t even need a SceneDelegate! A huge difference for tiny...
Now, Android apps require a description for each permission. Back then, it was optional. In contrast to iOS, this is only a guideline and not enforced by the Android SDK. Instead the developer needs to implement their own alert. But with...
Bitrise binary uploads cannot be updated after saving. Instead they need to be deleted and recreated. Thus all workflow steps need to be updated if they rely on the data. Pro-tip: when copy-pasting, skip the BITRISE_IO and _URL parts –...
Nothing new today, but a quick reminder: Even if you don’t need to explicitly localize String literals for Text manually, you can still need to when passing Strings to UIAlertController or other UIKit classes. Of course. But sometimes I...
When maintaining multiple locales within your project, try to keep line numbers consistent across all locales. Also keep the order of translations consistent. That makes differences easy to spot.