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
Today I learned about asdf, which is a pluggable version manager. Previously I used nvm, rvm, swiftenv and more. I now use asdf. Just add the plugin of your choice and install your desired versions. The only drawback is installing...
Copying contents from the web often copies weird characters, like the invisible character U+FEFF or “Zero Width No-Break Space”. Code editors like VS Code might highlight those characters depending on your config, but other websites...
I tried to keep my work stuff separate from my personal stuff on the same machine. I created two admin users, set up a group for homebrew and set the permissions accordingly. Sadly this didn’t work out in the long run. So I started to...
A few months ago Swift 5.5 has been released and made async/await available. And in 4.50.0 Vapor added support for it, too! If you are still on Vapor 3, you first need to upgrade your server to Vapor 4. Now we can migrate most usages of...
Converting a simple and small iOS app was far easier than expected. Of course webviews, gesture recognizers, navbars, etc. are not supported or work differently, but at a first glance there are not a lot parts with visual regressions!
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
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.
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...