41554 blogs · [
{
"id": "01a0879d-93ab-73aa-8c60-a0baeb93b6bb",
"title": "Enums. Swift's Secret Superpower.",
"url": "https://lumley.io/blogs/swift-enums/",
"published_at": "2026-04-27T17:23:58+00:00"
},
{
"id": "01a0d595-ebea-7288-8793-35ee4f0e2dad",
"title": "Blogs | My Portfolio",
"url": "https://lumley.io/blogs/",
"published_at": "2026-04-27T17:23:58+00:00"
},
{
"id": "01a0879d-93ac-701c-a818-37fedb457c62",
"title": "How I Turned My Broken Garage Remote Into a HomeKit Garage Door for Under $22",
"url": "https://lumley.io/blogs/smart-garage/",
"published_at": "2025-12-02T17:23:58+00:00"
},
{
"id": "01a0879d-93ac-701c-a818-37fedb8fce78",
"title": "AsyncCombine: Because Async Code Shouldn’t Be Ugly",
"url": "https://lumley.io/blogs/async-combine/",
"published_at": "2025-10-01T17:23:58+00:00"
},
{
"id": "01a0879d-93ac-701c-a818-37fedb8fe505",
"title": "How to Write Unit Tests for Combine Publishers in Swift Testing",
"url": "https://lumley.io/blogs/swift-testing-with-combine/",
"published_at": "2024-11-27T17:23:58+00:00"
},
{
"id": "01a0879d-93ac-701c-a818-37fedc8e900a",
"title": "How I Saved Over 80% on My AWS Hosting Bill with Hugo and S3",
"url": "https://lumley.io/blogs/ec2-to-cloudfront/",
"published_at": "2024-10-05T17:23:58+00:00"
},
{
"id": "01a0879d-93ac-701c-a818-37fedc8f0f54",
"title": "Using a NavigationStack with MVVM and SwiftUI",
"url": "https://lumley.io/blogs/swiftui-navigation/",
"published_at": "2024-04-05T17:23:58+00:00"
},
{
"id": "01a0879d-93ac-701c-a818-37fedcebbfde",
"title": "Find favicons used by any website",
"url": "https://lumley.io/blogs/find-favicons/",
"published_at": "2022-06-14T17:23:58+00:00"
}
] posts Claim your blog