56,966 blogs · [ { "id": "01a087eb-5eec-71f3-ae7c-5c9ded495231", "title": "Qwen Coder 2.5 32b on M4 Max", "url": "https://ben.terhech.de//posts/2024-11-11-qwen-coder-25-32b-on-m4-max.html", "published_at": "2024-11-11T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9ded4be73b", "title": "Tim Cook really doesn't want developers to use his beautiful iPads", "url": "https://ben.terhech.de//posts/2024-6-8-tim-cook-really-doesnt-want-developers-to-use-his-beautiful-ipads.html", "published_at": "2024-06-08T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9ded4fe52d", "title": "Tailored Pod: Personalized Newsletter & Podcast", "url": "https://ben.terhech.de//posts/2024-4-15-tailored-pod-personalized-newsletter-podcast.html", "published_at": "2024-04-15T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9ded9a8858", "title": "CrateMate: Search Rust crates via embeddings.", "url": "https://ben.terhech.de//posts/2024-3-20-cratemate-search-rust-crates-via-embeddings.html", "published_at": "2024-03-20T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9deda0c14d", "title": "uniffi-swift-async-example: How to use uniffi-swift with async/await", "url": "https://ben.terhech.de//posts/2024-3-20-uniffiswiftasyncexample-how-to-use-uniffiswift-with-asyncawait.html", "published_at": "2024-03-20T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9dee5c6cf9", "title": "Subtitlo: Enhance Your Presentations with Live Subtitles", "url": "https://ben.terhech.de//posts/2023-11-27-subtitlo-enhance-your-presentations-with-live-subtitles.html", "published_at": "2023-11-27T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9deef00f49", "title": "Navicula: A composable architecture for Rust-Dioxus", "url": "https://ben.terhech.de//posts/2023-7-7-navicula-a-composable-architecture-for-rustdioxus.html", "published_at": "2023-07-07T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9def04bc21", "title": "A Mastodon Client with a Messenger Feel", "url": "https://ben.terhech.de//posts/2023-6-16-a-mastodon-client-with-a-messenger-feel.html", "published_at": "2023-06-16T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9def21776d", "title": "GNUStep, macOS, Linux and Keybindings", "url": "https://ben.terhech.de//posts/2023-3-26-gnustep-macos-linux-and-keybindings.html", "published_at": "2023-03-26T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9def9c1557", "title": "Tauri and the performance of WebKit", "url": "https://ben.terhech.de//posts/2023-3-1-tauri-and-the-performance-of-webkit.html", "published_at": "2023-03-01T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9deff2f533", "title": "UpBeat: The Unfinished Twitter Emoji App", "url": "https://ben.terhech.de//posts/2023-2-2-upbeat-the-unfinished-twitter-emoji-app.html", "published_at": "2023-02-02T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df00ed94a", "title": "Emojito: Find all Emoji in a string. Supports complex emoji such as family", "url": "https://ben.terhech.de//posts/2022-12-30-emojito-find-all-emoji-in-a-string-supports-complex-emoji-such-as-family.html", "published_at": "2022-12-30T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df029e1c2", "title": "Tted: Render rich text and emoji on the GPU or CPU using Forma", "url": "https://ben.terhech.de//posts/2022-12-20-tted-render-rich-text-and-emoji-on-the-gpu-or-cpu-using-forma.html", "published_at": "2022-12-20T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df03301bf", "title": "Bevy Quickmenu: Streamlined, Multi-Input Game Menus for Bevy Engine", "url": "https://ben.terhech.de//posts/2022-11-18-bevy-quickmenu-streamlined-multiinput-game-menus-for-bevy-engine.html", "published_at": "2022-11-18T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df08cddaf", "title": "TwitVault: Easily Archive and Search Your Twitter Data with our Syncable Desktop App", "url": "https://ben.terhech.de//posts/2022-11-15-twitvault-easily-archive-and-search-your-twitter-data-with-our-syncable-desktop-app.html", "published_at": "2022-11-15T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df15c69ef", "title": "Why I don't like Xcode", "url": "https://ben.terhech.de//posts/2022-11-15-why-i-dont-like-xcode.html", "published_at": "2022-11-15T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df1f851a1", "title": "A New Bevy Game", "url": "https://ben.terhech.de//posts/2022-9-30-a-new-bevy-game.html", "published_at": "2022-09-30T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df2c1f45e", "title": "El Señor Pacbomber", "url": "https://ben.terhech.de//posts/2022-8-29-el-seor-pacbomber.html", "published_at": "2022-08-29T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df30bbf51", "title": "Rust strings are hard", "url": "https://ben.terhech.de//posts/2022-6-25-rust-strings-are-hard.html", "published_at": "2022-06-25T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df3fcb627", "title": "Sharing Code across platforms with Rust", "url": "https://ben.terhech.de//posts/2022-6-15-sharing-code-across-platforms-with-rust.html", "published_at": "2022-06-15T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df4cb26a6", "title": "Belum: Dependency Injection for Swift", "url": "https://ben.terhech.de//posts/2022-5-23-belum-dependency-injection-for-swift.html", "published_at": "2022-05-23T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df5692b1b", "title": "New Contravariance Episode: Index out of Bounds", "url": "https://ben.terhech.de//posts/2022-2-28-new-contravariance-episode-index-out-of-bounds.html", "published_at": "2022-02-28T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df607bc0f", "title": "WatchOut", "url": "https://ben.terhech.de//posts/2022-1-27-watchout.html", "published_at": "2022-01-27T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df6effda0", "title": "Postsack, a way to visualize clusters of emails", "url": "https://ben.terhech.de//posts/2021-12-20-postsack-a-way-to-visualize-clusters-of-emails.html", "published_at": "2021-12-20T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df7b04f13", "title": "New Contravariance Episode: Because 404 Not Found", "url": "https://ben.terhech.de//posts/2021-10-14-new-contravariance-episode-because-404-not-found.html", "published_at": "2021-10-14T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df7c3ee7c", "title": "SwfitUI and Catalyst", "url": "https://ben.terhech.de//posts/2021-9-9-swfitui-and-catalyst.html", "published_at": "2021-09-09T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df8744a14", "title": "New Contravariance Episode: A Surprise Guest", "url": "https://ben.terhech.de//posts/2021-8-19-new-contravariance-episode-a-surprise-guest.html", "published_at": "2021-08-19T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9df95742da", "title": "Writing a GUI Framework", "url": "https://ben.terhech.de//posts/2021-8-11-writing-a-gui-framework.html", "published_at": "2021-08-11T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9dfa02d5a3", "title": "GrapheneOS", "url": "https://ben.terhech.de//posts/2021-8-6-grapheneos.html", "published_at": "2021-08-06T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9dfafe106a", "title": "New Contravariance Episode: Platform Teams", "url": "https://ben.terhech.de//posts/2021-5-18-new-contravariance-episode-platform-teams.html", "published_at": "2021-05-18T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9dfb729f11", "title": "New Contravariance Episode: Hello Management, Goodbye Coding", "url": "https://ben.terhech.de//posts/2021-2-25-new-contravariance-episode-hello-management-goodbye-coding.html", "published_at": "2021-02-25T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9dfb873d46", "title": "New Contravariance Episode: A Jolly SwiftUI Christmas Special", "url": "https://ben.terhech.de//posts/2020-12-22-new-contravariance-episode-a-jolly-swiftui-christmas-special.html", "published_at": "2020-12-22T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9dfc6a885c", "title": "New Contravariance Episode: A Special Episode Looking Forward", "url": "https://ben.terhech.de//posts/2020-10-29-new-contravariance-episode-a-special-episode-looking-forward.html", "published_at": "2020-10-29T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9dfc96fcb1", "title": "New Contravariance Episode: iPhone 12 & Apple Silicon", "url": "https://ben.terhech.de//posts/2020-10-22-new-contravariance-episode-iphone-12-amp-apple-silicon.html", "published_at": "2020-10-22T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9dfcd11431", "title": "New Contravariance Episode: Bas leaves XING", "url": "https://ben.terhech.de//posts/2020-10-8-new-contravariance-episode-bas-leaves-xing.html", "published_at": "2020-10-08T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9dfcd58f6d", "title": "New Contravariance Episode: Windows, Apple Event and ARM Macs", "url": "https://ben.terhech.de//posts/2020-10-1-new-contravariance-episode-windows-apple-event-and-arm-macs.html", "published_at": "2020-10-01T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9dfd9b5159", "title": "New Contravariance Episode: The History of NSSpain", "url": "https://ben.terhech.de//posts/2020-9-24-new-contravariance-episode-the-history-of-nsspain.html", "published_at": "2020-09-24T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9dfde60385", "title": "New Contravariance Episode: iOS is Hard", "url": "https://ben.terhech.de//posts/2020-9-17-new-contravariance-episode-ios-is-hard.html", "published_at": "2020-09-17T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9dfeda8a5b", "title": "New Contravariance Episode: CodeConf", "url": "https://ben.terhech.de//posts/2020-9-10-new-contravariance-episode-codeconf.html", "published_at": "2020-09-10T10:30:30+00:00" }, { "id": "01a087eb-5eec-71f3-ae7c-5c9dffd718da", "title": "New Contravariance Episode: WWDC 2020", "url": "https://ben.terhech.de//posts/2020-7-21-new-contravariance-episode-wwdc-2020.html", "published_at": "2020-07-21T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c6eef04e7", "title": "A touch of Combine", "url": "https://ben.terhech.de//posts/2020-6-17-a-touch-of-combine.html", "published_at": "2020-06-17T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c6f434d3d", "title": "The Hyperdeck Tech Stack", "url": "https://ben.terhech.de//posts/2020-6-15-the-hyperdeck-tech-stack.html", "published_at": "2020-06-15T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c6fc3d664", "title": "New Contravariance Episode: Revealing Benedikt's Side Project", "url": "https://ben.terhech.de//posts/2020-6-11-new-contravariance-episode-revealing-benedikts-side-project.html", "published_at": "2020-06-11T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c6fc400d8", "title": "Hyperdeck Beta 2", "url": "https://ben.terhech.de//posts/2020-6-11-hyperdeck-beta-2.html", "published_at": "2020-06-11T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c70802852", "title": "New Contravariance Episode: The Star Wars Babka Computer Delivery", "url": "https://ben.terhech.de//posts/2020-5-14-new-contravariance-episode-the-star-wars-babka-computer-delivery.html", "published_at": "2020-05-14T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c70c60531", "title": "New Contravariance Episode: Clearly my home screen is better than yours", "url": "https://ben.terhech.de//posts/2020-4-16-new-contravariance-episode-clearly-my-home-screen-is-better-than-yours.html", "published_at": "2020-04-16T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c714a5eb8", "title": "New Contravariance Episode: What is a CNAME Again?", "url": "https://ben.terhech.de//posts/2020-3-19-new-contravariance-episode-what-is-a-cname-again.html", "published_at": "2020-03-19T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c714d3612", "title": "New Contravariance Episode: Chocolate, Time, and Swift Scripts. Your Move, Elon.", "url": "https://ben.terhech.de//posts/2020-3-5-new-contravariance-episode-chocolate-time-and-swift-scripts-your-move-elon.html", "published_at": "2020-03-05T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c724253ab", "title": "New Contravariance Episode: Ink, Plot, Publish and More - With Special Guest John 'Paul Hudson' Sundell", "url": "https://ben.terhech.de//posts/2020-2-14-new-contravariance-episode-ink-plot-publish-and-more-with-special-guest-john-paul-hudson-sundell.html", "published_at": "2020-02-14T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c72cc2fd4", "title": "New Contravariance Episode: Live from CocoaHeads Hamburg", "url": "https://ben.terhech.de//posts/2020-1-14-new-contravariance-episode-live-from-cocoaheads-hamburg.html", "published_at": "2020-01-14T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c72e65c7e", "title": "New Contravariance Episode: Donny Wals' Advent of Swift, Disney+ and other things - A special Christmas Episode", "url": "https://ben.terhech.de//posts/2019-12-19-new-contravariance-episode-donny-wals-advent-of-swift-disney-and-other-things-a-special-christmas-episode.html", "published_at": "2019-12-19T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c73a13cd0", "title": "New Contravariance Episode: MacBooks, AirPods Pro, GitHub Mobile & SwiftUI", "url": "https://ben.terhech.de//posts/2019-11-21-new-contravariance-episode-macbooks-airpods-pro-github-mobile-amp-swiftui.html", "published_at": "2019-11-21T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c748e2e1c", "title": "New Contravariance Episode: SwiftConf, NSSpain, mobiconf, and FrenchKit - With Special Guest Antoine van der Lee", "url": "https://ben.terhech.de//posts/2019-10-17-new-contravariance-episode-swiftconf-nsspain-mobiconf-and-frenchkit-with-special-guest-antoine-van-der-lee.html", "published_at": "2019-10-17T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c74efd3b6", "title": "New Contravariance Episode: Our thoughts on Xcode 11", "url": "https://ben.terhech.de//posts/2019-8-30-new-contravariance-episode-our-thoughts-on-xcode-11.html", "published_at": "2019-08-30T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c754fdc79", "title": "New Contravariance Episode: Implementing SwiftUI on top of UIKit in iOS 12", "url": "https://ben.terhech.de//posts/2019-8-13-new-contravariance-episode-implementing-swiftui-on-top-of-uikit-in-ios-12.html", "published_at": "2019-08-13T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c757afec6", "title": "New Contravariance Episode: Hackintoshes, new Apple Hardware, and an explanation of why VIM is cool", "url": "https://ben.terhech.de//posts/2019-8-8-new-contravariance-episode-hackintoshes-new-apple-hardware-and-an-explanation-of-why-vim-is-cool.html", "published_at": "2019-08-08T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c75c9523f", "title": "New Contravariance Episode: The Static Catalyst iPad Window Refactoring Project Conference", "url": "https://ben.terhech.de//posts/2019-7-11-new-contravariance-episode-the-static-catalyst-ipad-window-refactoring-project-conference.html", "published_at": "2019-07-11T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c76c15349", "title": "New Contravariance Episode: WWDC: Better Late Than Never", "url": "https://ben.terhech.de//posts/2019-6-20-new-contravariance-episode-wwdc-better-late-than-never.html", "published_at": "2019-06-20T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c776d5d9e", "title": "New Contravariance Episode: Not Work", "url": "https://ben.terhech.de//posts/2019-5-24-new-contravariance-episode-not-work.html", "published_at": "2019-05-24T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c783e3df0", "title": "New Contravariance Episode: WWDC Tips and Rumors", "url": "https://ben.terhech.de//posts/2019-5-10-new-contravariance-episode-wwdc-tips-and-rumors.html", "published_at": "2019-05-10T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c792a7337", "title": "New Contravariance Episode: let substring = string[string.index(string.startIndex, offsetBy: 5) ..< string.index(string.startIndex, offsetBy: 15)]", "url": "https://ben.terhech.de//posts/2019-4-4-new-contravariance-episode-let-substring-stringstringindexstringstartindex-offsetby-5-lt-stringindexstringstartindex-offsetby-15.html", "published_at": "2019-04-04T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c79ecacd9", "title": "Immerzu, a new Sarbatka track", "url": "https://ben.terhech.de//posts/2019-3-30-immerzu-a-new-sarbatka-track.html", "published_at": "2019-03-30T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c7a362b4f", "title": "New Contravariance Episode: Technical Writing", "url": "https://ben.terhech.de//posts/2019-3-21-new-contravariance-episode-technical-writing.html", "published_at": "2019-03-21T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c7af34603", "title": "Relaunching Appventure", "url": "https://ben.terhech.de//posts/2019-3-20-relaunching-appventure.html", "published_at": "2019-03-20T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c7b479c94", "title": "Techou - A Rust Static Site Generator", "url": "https://ben.terhech.de//posts/2019-3-19-techou-a-rust-static-site-generator.html", "published_at": "2019-03-19T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c7bc422ae", "title": "A Personal Blog", "url": "https://ben.terhech.de//posts/2019-3-19-a-personal-blog.html", "published_at": "2019-03-19T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c7bdfa687", "title": "Using protocol composition to untangle your codebase", "url": "https://ben.terhech.de//posts/2019-03-17-protocol-composition-untangle-codebase.html", "published_at": "2019-03-17T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c7bf16e20", "title": "New Contravariance Episode: Putting Pieces in Place", "url": "https://ben.terhech.de//posts/2019-3-7-new-contravariance-episode-putting-pieces-in-place.html", "published_at": "2019-03-07T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c7c9955c1", "title": "Cleaner Classes with Structs and Tuples", "url": "https://ben.terhech.de//posts/2019-02-24-anonymous-tuple-structs.html", "published_at": "2019-02-24T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c7d3aa7c1", "title": "New Contravariance Episode: application(_:willContinueUserActivityWithType:)", "url": "https://ben.terhech.de//posts/2019-2-21-new-contravariance-episode-applicationwillcontinueuseractivitywithtype.html", "published_at": "2019-02-21T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c7d9539b1", "title": "Mobile Language Benchmarks", "url": "https://ben.terhech.de//posts/2019-2-1-mobile-language-benchmarks.html", "published_at": "2019-02-01T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c7e92a743", "title": "New Contravariance Episode: Xcode 10.2 beta 1 and the Swift Community Podcast", "url": "https://ben.terhech.de//posts/2019-1-31-new-contravariance-episode-xcode-102-beta-1-and-the-swift-community-podcast.html", "published_at": "2019-01-31T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c7f38e030", "title": "An interactive Git Status client, written in C", "url": "https://ben.terhech.de//posts/2019-01-24-interactive-git-status-written-in-c.html", "published_at": "2019-01-24T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8009f5d2", "title": "New Contravariance Episode: Refactoring Across a Large Code Base", "url": "https://ben.terhech.de//posts/2018-11-8-new-contravariance-episode-refactoring-across-a-large-code-base.html", "published_at": "2018-11-08T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c805ca7e0", "title": "New Contravariance Episode: Paul 'John Sundell' Hudson", "url": "https://ben.terhech.de//posts/2018-10-18-new-contravariance-episode-paul-john-sundell-hudson.html", "published_at": "2018-10-18T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8114acfa", "title": "New Contravariance Episode: Conferences", "url": "https://ben.terhech.de//posts/2018-10-4-new-contravariance-episode-conferences.html", "published_at": "2018-10-04T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8195a626", "title": "New Contravariance Episode: A Philosophical Treatise on the Definition of Pro", "url": "https://ben.terhech.de//posts/2018-9-6-new-contravariance-episode-a-philosophical-treatise-on-the-definition-of-pro.html", "published_at": "2018-09-06T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c827b6a4c", "title": "New Contravariance Episode: The Most Awful Static Site Engine", "url": "https://ben.terhech.de//posts/2018-8-23-new-contravariance-episode-the-most-awful-static-site-engine.html", "published_at": "2018-08-23T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c828c7ac4", "title": "New Contravariance Episode: applicationDidFinishLaunching:", "url": "https://ben.terhech.de//posts/2018-8-13-new-contravariance-episode-applicationdidfinishlaunching.html", "published_at": "2018-08-13T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c82d257de", "title": "Expanding Swift's Reach", "url": "https://ben.terhech.de//posts/2018-05-03-expanding-swifts-reach.html", "published_at": "2018-05-03T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c83cc082f", "title": "Taming SourceKitService for Less Xcode Memory Consumption", "url": "https://ben.terhech.de//posts/2017-10-08-taming-sourcekitd.html", "published_at": "2017-10-08T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c846e075a", "title": "Value Types for Simple Difference Detection", "url": "https://ben.terhech.de//posts/2017-09-30-value-types-for-simple-difference-detection.html", "published_at": "2017-09-30T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8510f9ca", "title": "Data in Swift 3 parsing a Doom WAD File", "url": "https://ben.terhech.de//posts/2016-07-15-swift3-nsdata-data.html", "published_at": "2016-07-15T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c856cd85a", "title": "SwiftWatch", "url": "https://ben.terhech.de//posts/2016-04-28-swiftwatch.html", "published_at": "2016-04-28T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c85fa72fd", "title": "Raw value initializers for enums with associated types", "url": "https://ben.terhech.de//posts/2016-04-23-associated-types-enum-raw-value-initializers.html", "published_at": "2016-04-23T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c86a1bcd8", "title": "Force optionals in multi-unwrapped 'guard let' or 'if let'", "url": "https://ben.terhech.de//posts/2016-04-14-force-optionals-in-guard-or-let-optional-binding.html", "published_at": "2016-04-14T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c87a06ff4", "title": "Using Git Hooks to prevent commiting test code", "url": "https://ben.terhech.de//posts/2016-4-4-using-git-hooks-to-prevent-commiting-test-code.html", "published_at": "2016-04-04T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c88840400", "title": "Three tips for concise Swift using the Guard statement", "url": "https://ben.terhech.de//posts/2016-03-29-three-tips-for-clean-swift-code.html", "published_at": "2016-03-29T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c88cd3c37", "title": "Hirundo: Comfortably follow Swift Mailing Lists on OSX", "url": "https://ben.terhech.de//posts/2016-2-2-hirundo-comfortably-follow-swift-mailing-lists-on-osx.html", "published_at": "2016-02-02T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c898ab34f", "title": "Swift Package Manager: Create and Use a X11 package on Linux", "url": "https://ben.terhech.de//posts/2015-12-08-swift-ubuntu-x11-window-app.html", "published_at": "2015-12-08T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8a70ba77", "title": "Getting your iPhone 6s Chip Foundry from Swift", "url": "https://ben.terhech.de//posts/2015-09-30-getting-iphone6s-foundry-from-swift.html", "published_at": "2015-09-30T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8a783b34", "title": "Optional throw via try? in Swift 2", "url": "https://ben.terhech.de//posts/2015-08-25-optional-throw-swift.html", "published_at": "2015-08-25T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8afdfb8c", "title": "CoreValue: Lightweight Framework for using Core Data with Value Types", "url": "https://ben.terhech.de//posts/2015-7-18-corevalue-lightweight-framework-for-using-core-data-with-value-types.html", "published_at": "2015-07-18T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8bd1003e", "title": "Using try / catch in Swift with asynchronous closures", "url": "https://ben.terhech.de//posts/2015-06-19-swift-try-catch-asynchronous-closures.html", "published_at": "2015-06-19T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8c287440", "title": "Generic method overloading by protocol in Swift", "url": "https://ben.terhech.de//posts/2015-06-17-swift-method-overloading-by-protocol.html", "published_at": "2015-06-17T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8d04e910", "title": "Fantastic PhotoDesk 3 launch", "url": "https://ben.terhech.de//posts/2014-10-20-fantastic-photodesk-3-launch.html", "published_at": "2014-10-20T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8d7288e0", "title": "PhotoDesk 3", "url": "https://ben.terhech.de//posts/2014-10-17-photodesk-3.html", "published_at": "2014-10-17T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8e4135e1", "title": "TextEditors, Emacs and Vim", "url": "https://ben.terhech.de//posts/2014-7-25-texteditors-emacs-and-vim.html", "published_at": "2014-07-25T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8e80d909", "title": "Why Hotel WiFi is often slow and expensive", "url": "https://ben.terhech.de//posts/2014-7-24-why-hotel-wifi-is-often-slow-and-expensive.html", "published_at": "2014-07-24T10:30:30+00:00" }, { "id": "01a087eb-5eed-7313-90aa-f17c8f03f60f", "title": "Lua and OpenRest Webservers.", "url": "https://ben.terhech.de//posts/2014-7-11-lua-and-openrest-webservers.html", "published_at": "2014-07-11T10:30:30+00:00" } ] posts Claim your blog
Back to terhech.de: Index - Benedikt Terhechte
Blog · corpus.blog/blogs/terhech.de/posts

terhech.de: Index - Benedikt Terhechte

terhech.de

2024

2023

2022

2021

2020

2019

2018

2017

2016

2015

2014