41554 blogs · [ { "id": "01a08c5e-e86a-701c-b6aa-fe3b6898829f", "title": "Prophet Song", "url": "https://vknabel.com/library/prophet-song/", "published_at": "2026-07-18T08:20:27+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b68e71602", "title": "Beasts of the Sea", "url": "https://vknabel.com/library/das-wesen-des-lebens/", "published_at": "2026-07-12T15:33:45+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b6966fe59", "title": "Prima Facie", "url": "https://vknabel.com/library/prima-facie/", "published_at": "2026-06-27T14:21:06+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b69b21e54", "title": "Text", "url": "https://vknabel.com/library/text/", "published_at": "2026-06-17T08:49:25+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b69fe93b1", "title": "James", "url": "https://vknabel.com/library/james/", "published_at": "2026-06-15T19:31:58+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b6ac547dd", "title": "NSA", "url": "https://vknabel.com/library/nationales-sicherheits-amt/", "published_at": "2026-05-25T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b6b4da70c", "title": "Bikepacking: Descent to Italy", "url": "https://vknabel.com/posts/bikepacking-descent-to-italy/", "published_at": "2026-04-10T19:30:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b6badc85f", "title": "Switching From Let's Encrypt to Actalis", "url": "https://vknabel.com/posts/switching-from-letsencrypt-to-actalis/", "published_at": "2026-03-02T15:41:56+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b6c977d34", "title": "The Smile of the Lamb", "url": "https://vknabel.com/library/the-smile-of-the-lamb/", "published_at": "2026-03-01T08:53:28+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b6d6443b3", "title": "The Grand Redesign", "url": "https://vknabel.com/posts/the-grand-redesign/", "published_at": "2026-02-26T21:13:55+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b6dabd930", "title": "Now", "url": "https://vknabel.com/now/", "published_at": "2026-02-26T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b6dfc35bb", "title": "Sovereignty", "url": "https://vknabel.com/sovereignty/", "published_at": "2026-02-25T18:53:11+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b6ee7a084", "title": "Projects", "url": "https://vknabel.com/projects/", "published_at": "2026-02-25T17:34:13+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b6f86e55c", "title": "Colophon", "url": "https://vknabel.com/colophon/", "published_at": "2026-02-25T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b706d8316", "title": "Trophy", "url": "https://vknabel.com/library/trophy/", "published_at": "2026-02-23T13:53:25+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b709bdb1f", "title": "Kein Guter Mann", "url": "https://vknabel.com/library/kein-guter-mann/", "published_at": "2026-02-06T13:53:31+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b70cd734a", "title": "Discontinuing of Projects", "url": "https://vknabel.com/posts/2026-01-02-discontinuing-of-projects/", "published_at": "2026-01-02T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b7103502e", "title": "Ungebetene Gäste", "url": "https://vknabel.com/library/ungebetene-g%C3%A4ste/", "published_at": "2025-12-01T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b71fc3a5c", "title": "Zirric: Going Virtual", "url": "https://vknabel.com/posts/2025-09-28-going-virtual/", "published_at": "2025-09-28T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b72269066", "title": "Zirric: A new Beginning", "url": "https://vknabel.com/posts/2025-09-16-a-new-beginning/", "published_at": "2025-09-16T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b73108d76", "title": "The Midnight Library", "url": "https://vknabel.com/library/die-mitternachtsbibliothek/", "published_at": "2025-07-01T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b73693988", "title": "Sparrow", "url": "https://vknabel.com/library/ich-sperling/", "published_at": "2025-04-01T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b7467b1e9", "title": "The Queen of Anthuriums: Warocqueanum", "url": "https://vknabel.com/posts/2024-05-25-the-queen-of-anthuriums-warocqueanum/", "published_at": "2024-05-25T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b7543af06", "title": "Overview of the Philodendron Malay Gold", "url": "https://vknabel.com/posts/2024-02-10-overview-of-the-philodendron-malay-gold/", "published_at": "2024-02-10T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b75c74713", "title": "Of Velvet and Silver: the Syngonium Wendlandii", "url": "https://vknabel.com/posts/2024-02-03-of-velvet-and-silver-the-syngonium-wendlandii/", "published_at": "2024-02-03T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b76689ba6", "title": "Anthurium Gracile: Care and Propagation", "url": "https://vknabel.com/posts/2024-01-31-anthurium-gracile-care-and-propagation/", "published_at": "2024-01-31T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b774e8e2b", "title": "The current state of Lithia after 2 years", "url": "https://vknabel.com/posts/the-current-state-of-lithia-after-2-years/", "published_at": "2024-01-18T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b77982bc1", "title": "Why Plant Care Guides on the Internet Are Bullshit", "url": "https://vknabel.com/posts/2024-01-01-why-plant-care-guides-on-the-internet-are-bullshit/", "published_at": "2024-01-01T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b785fab96", "title": "24hrs format for html inputs in Firefox", "url": "https://vknabel.com/posts/2023-11-09-firefox-24hrs-format-for-html-inputs/", "published_at": "2023-11-09T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b78f94070", "title": "My Personal View on Acorn", "url": "https://vknabel.com/posts/my-personal-view-on-acorn/", "published_at": "2022-12-12T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b79dfd0eb", "title": "Statically read files with go:embed", "url": "https://vknabel.com/posts/statically-read-files-with-go-embed/", "published_at": "2022-08-18T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b79fdc53e", "title": "Atomic Design", "url": "https://vknabel.com/library/atomic-design/", "published_at": "2022-08-17T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b7aac892f", "title": "Open Policy Agent", "url": "https://vknabel.com/posts/2022-08-15-open-policy-agent/", "published_at": "2022-08-15T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b7aec7895", "title": "Overriding Go values with ldflags", "url": "https://vknabel.com/posts/2022-08-12-overriding-go-values-with-ldflags/", "published_at": "2022-08-12T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b7bb0e4d9", "title": "Kubernetes without Load Balancers?", "url": "https://vknabel.com/posts/2022-08-06-kubernetes-without-load-balancers/", "published_at": "2022-08-06T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b7c79894b", "title": "Kind is the new minikube", "url": "https://vknabel.com/posts/2022-08-05-kind-is-the-new-minikube/", "published_at": "2022-08-05T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b7c860168", "title": "Bash scripts with Gum", "url": "https://vknabel.com/posts/2022-08-03-bash-scripts-with-gum/", "published_at": "2022-08-03T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b7d40de52", "title": "Go 1.19 new Garbage Collection Memory Limit", "url": "https://vknabel.com/posts/2022-07-30-go-1.19-new-garbage-collection-memory-limit/", "published_at": "2022-07-30T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b7dc4b0cc", "title": "Announcing Puffery for macOS and the command line", "url": "https://vknabel.com/posts/announcing-puffery-for-macos-and-the-command-line/", "published_at": "2022-07-29T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b7e6a7353", "title": "Extracting Tailwind constants using theme", "url": "https://vknabel.com/posts/2022-07-25-extracting-tailwind-constants-using-theme/", "published_at": "2022-07-25T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b7f3c8140", "title": "Hugo Assets placed in Folders", "url": "https://vknabel.com/posts/2022-07-24-hugo-assets-placed-in-folders/", "published_at": "2022-07-24T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b803992f6", "title": "Hugo's Syntax Highlighting is static", "url": "https://vknabel.com/posts/2022-07-24-hugo-syntax-highlighting-without-js/", "published_at": "2022-07-24T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b80ec07e9", "title": "Overriding internal Hugo templates", "url": "https://vknabel.com/posts/2022-07-24-overriding-internal-hugo-templates/", "published_at": "2022-07-24T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b81cce087", "title": "Templates for specific folders in Hugo", "url": "https://vknabel.com/posts/2022-07-24-templates-for-specific-folders/", "published_at": "2022-07-24T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b82c6006c", "title": "Ultra-fast Hugo GitHub actions", "url": "https://vknabel.com/posts/2022-07-24-ultra-fast-hugo-github-actions/", "published_at": "2022-07-24T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b83ac586c", "title": "About", "url": "https://vknabel.com/about/", "published_at": "2022-07-22T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b83ef24c8", "title": "Designing and scoping my programming language Lithia", "url": "https://vknabel.com/posts/designing-and-scoping-my-language-lithia/", "published_at": "2022-07-22T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b83f57ee0", "title": "Starting the journey about creating a new programming language", "url": "https://vknabel.com/posts/journey-about-creating-a-new-programming-language/", "published_at": "2022-07-22T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b84603862", "title": "Angular *ngFor trackBy", "url": "https://vknabel.com/posts/2022-07-19-angular-ngfor-trackby/", "published_at": "2022-07-19T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b85384493", "title": "Go Data Race Detector", "url": "https://vknabel.com/posts/2022-07-09-go-data-race-detector/", "published_at": "2022-07-09T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b861f0ac1", "title": "Kubernetes Overview for Beginners", "url": "https://vknabel.com/posts/2022-05-25-kubernetes-overview/", "published_at": "2022-05-25T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b86613032", "title": "Iterating over a map in Go", "url": "https://vknabel.com/posts/2022-05-17-iterating-over-a-map-in-go/", "published_at": "2022-05-17T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b8741c4ce", "title": "NSDataAsset reduces Code signing overhead", "url": "https://vknabel.com/posts/2022-05-03-nsdataasset-reduces-code-signing-overhead/", "published_at": "2022-05-03T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b87726da4", "title": "Attaching to UIScrollView's parent with Auto Layout", "url": "https://vknabel.com/posts/2022-03-25-uiscrollview-autolayout-parent/", "published_at": "2022-03-25T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b87e5e734", "title": "SwiftPM can detect breaking api changes", "url": "https://vknabel.com/posts/2022-03-17-swiftpm-breaking-api-changes/", "published_at": "2022-03-17T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b88234b87", "title": "Missing Async XCTests on Linux", "url": "https://vknabel.com/posts/2022-02-26-async-xctests-on-linux/", "published_at": "2022-02-26T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b884a3d19", "title": "WKWebView Configuration Cookies not working", "url": "https://vknabel.com/posts/2022-02-21-wkwebview-cookies-not-working/", "published_at": "2022-02-21T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b8943429a", "title": "Getting your IP address", "url": "https://vknabel.com/posts/2022-02-14-getting-your-ip-address/", "published_at": "2022-02-14T20:53:32+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b89d2393d", "title": "Swift custom table of contents lib", "url": "https://vknabel.com/posts/2022-02-10-swift-custom-table-of-contents-lib/", "published_at": "2022-02-10T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b8a41756e", "title": "Debugging Swift in VS Code in 2022", "url": "https://vknabel.com/posts/debugging-swift-in-vs-code-in-2022/", "published_at": "2022-02-08T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b8b15e57f", "title": "UINavigationBar black after Xcode 13 upgrade", "url": "https://vknabel.com/posts/2021-11-19-uinavigationbar-black-after-xcode-13-upgrade/", "published_at": "2021-11-19T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b8bd90f38", "title": "Reminder: websites contain weird characters", "url": "https://vknabel.com/posts/2021-11-16-reminder-websites-contain-weird-characters/", "published_at": "2021-11-16T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b8c842e65", "title": "There is a modular version manager: asdf!", "url": "https://vknabel.com/posts/2021-11-16-there-is-a-modular-version-manager-asdf/", "published_at": "2021-11-16T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b8d6cfe92", "title": "Adopting Swift Async Await in Vapor", "url": "https://vknabel.com/posts/adopting-swift-async-await-in-vapor/", "published_at": "2021-11-15T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b8e4f28c9", "title": "Having two admin dev accounts is a bad idea", "url": "https://vknabel.com/posts/2021-11-15-having-two-admin-dev-accounts-is-a-bad-idea/", "published_at": "2021-11-15T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b8f3c32c7", "title": "Converting simple iOS apps to tvOS is easy!", "url": "https://vknabel.com/posts/2021-08-02-converting-simple-ios-apps-to-tvos-is-easy/", "published_at": "2021-08-02T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b902e0430", "title": "UIApplication.shared not in Extensions", "url": "https://vknabel.com/posts/2021-08-02-uiapplication-shared-not-in-extensions/", "published_at": "2021-08-02T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b90beceec", "title": "Nestjs has great swagger decorators!", "url": "https://vknabel.com/posts/2021-07-16-nestjs-has-great-swagger-decorators/", "published_at": "2021-07-16T11:01:55+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b90eec985", "title": "XPath is powerful", "url": "https://vknabel.com/posts/2021-07-13-xpath-is-powerful/", "published_at": "2021-07-13T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b90f8785f", "title": "Static Table enums", "url": "https://vknabel.com/posts/2021-07-12-static-table-enums/", "published_at": "2021-07-12T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b91c91460", "title": "Reminder: base64 is not secure!", "url": "https://vknabel.com/posts/2021-07-02-reminder-base64-is-not-secure/", "published_at": "2021-07-02T16:17:27+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b920a544a", "title": "SwiftGen has evolved!", "url": "https://vknabel.com/posts/2021-06-30-swiftgen-has-evolved/", "published_at": "2021-06-30T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b92c617d9", "title": "iOS apps require account deletion", "url": "https://vknabel.com/posts/2021-06-08-ios-apps-require-account-deletion/", "published_at": "2021-06-08T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b92d6f460", "title": "Invalid Gradle Private Key", "url": "https://vknabel.com/posts/2021-06-07-invalid-gradle-private-key/", "published_at": "2021-06-07T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b92ddae08", "title": "CSS Rotate und Skew", "url": "https://vknabel.com/posts/2021-06-02-css-rotate-and-skew/", "published_at": "2021-06-02T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b92e72350", "title": "Swift and Firebase", "url": "https://vknabel.com/posts/2021-06-02-swift-and-firebase/", "published_at": "2021-06-02T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b93575b6d", "title": "SwiftUI @main AppDelegate", "url": "https://vknabel.com/posts/2021-05-27-swiftui-main-appdelegate/", "published_at": "2021-05-27T11:56:02+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b93da6e1b", "title": "Android Permission now requires a description", "url": "https://vknabel.com/posts/2021-05-27-android-permission-now-requires-a-description/", "published_at": "2021-05-27T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b94a543c1", "title": "Updating Bitrise binary uploads", "url": "https://vknabel.com/posts/2021-05-20-updating-bitrise-binary-uploads/", "published_at": "2021-05-20T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b95076a95", "title": "Localization order", "url": "https://vknabel.com/posts/2021-05-18-localization-order/", "published_at": "2021-05-18T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b95c144fc", "title": "SwiftUI translations and UIKit", "url": "https://vknabel.com/posts/2021-05-18-swiftui-translations-and-uikit/", "published_at": "2021-05-18T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b96badab2", "title": "ftp-simple vscode workspace", "url": "https://vknabel.com/posts/2021-05-12-ftp-simple-vscode-workspace/", "published_at": "2021-05-12T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b970ed716", "title": "Localizcable vs Swift unicode escapes", "url": "https://vknabel.com/posts/2021-05-12-localizcable-vs-swift-unicode-escapes/", "published_at": "2021-05-12T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b97e925eb", "title": "Android XML Translations", "url": "https://vknabel.com/posts/2021-05-11-android-xml-translations/", "published_at": "2021-05-11T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b98e20ed7", "title": "NSDataDetector", "url": "https://vknabel.com/posts/2021-05-11-nsdatadetector/", "published_at": "2021-05-11T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b99232189", "title": "Coordinator [unowned self]", "url": "https://vknabel.com/posts/2021-05-10-coordinator-unowned-self/", "published_at": "2021-05-10T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b99e1b31b", "title": "Fucking SwiftUI", "url": "https://vknabel.com/posts/2021-05-10-fucking-swiftui/", "published_at": "2021-05-10T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b9ac289be", "title": "Missing UIView animation delay", "url": "https://vknabel.com/posts/2021-05-10-missing-uiview-animation-delay/", "published_at": "2021-05-10T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b9b37c161", "title": "SwiftUI random colors", "url": "https://vknabel.com/posts/2021-05-10-swiftui-random-colors/", "published_at": "2021-05-10T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b9c2c5194", "title": "UICollectionViewCell alpha", "url": "https://vknabel.com/posts/2021-05-10-uicollectionviewcell-alpha/", "published_at": "2021-05-10T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b9d13e32c", "title": "UIImageView is not animatable", "url": "https://vknabel.com/posts/2021-05-10-uiimageview-is-not-animatable/", "published_at": "2021-05-10T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b9dd05bd8", "title": "Swift Coverage for VS Code", "url": "https://vknabel.com/posts/swift-coverage-for-vs-code/", "published_at": "2020-08-29T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b9e9b21bd", "title": "Upgrading a server-side Swift project to Vapor 4", "url": "https://vknabel.com/posts/upgrading-a-server-side-swift-project-to-vapor-4/", "published_at": "2020-04-22T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3b9f6575eb", "title": "Swift, VS Code and you", "url": "https://vknabel.com/posts/swift-vs-code-and-you/", "published_at": "2020-01-22T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3ba02ebf05", "title": "Debugging Swift in VS Code the old way", "url": "https://vknabel.com/posts/debugging-swift-in-vs-code/", "published_at": "2019-11-21T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3ba0db3c93", "title": "InferIt: a Constraint Solving Package Manager", "url": "https://vknabel.com/posts/inferit-a-constraint-solving-package-manager/", "published_at": "2019-10-15T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3ba13ba263", "title": "ReactifSwift: async function composition", "url": "https://vknabel.com/posts/reactifswift-async-function-composition/", "published_at": "2019-10-15T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3ba2335a17", "title": "Swifducks: simple Redux store with multiple reducers", "url": "https://vknabel.com/posts/swifducks-simple-redux-store-with-multiple-reducers/", "published_at": "2019-10-15T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3ba2400d0f", "title": "Archery 0.3.0 released", "url": "https://vknabel.com/posts/archery-0-3-0-released/", "published_at": "2019-10-12T00:00:00+00:00" }, { "id": "01a08c5e-e86a-701c-b6aa-fe3ba2c86fa0", "title": "SDE 2.7.0 released", "url": "https://vknabel.com/posts/sde-2-7-0-released/", "published_at": "2019-04-11T00:00:00+00:00" } ] posts Claim your blog
Back to vknabel
Blog · corpus.blog/blogs/vknabel.com/posts

vknabel

vknabel.com

2026

17 Jun 2026
25 May 2026
26 Feb 2026

2025

2024

2023

2022

2021

2020

2019