Plus, Libratone is a European company 🇪🇺.
]]>Casey Liss - Turning a Decommissioned iPhone into a UniFi Protect Camera
]]>Mail.app
Fastmail - This is my referral link
Photos.app
Calendar.app
iCloud Drive
Safari.app
Numbers.app
Keynote.app
Mastodon
Music.app
Up until that point, we had been using an AirPort Extreme A1521, the last model Apple produced in the Extreme line. Overall, I was quite happy with it. It was a well-equipped router with Gigabit LAN/WAN and the ability to attach a hard drive. It also had an aesthetically pleasing design that I didn’t mind displaying in the open. One of the most appealing features of Apple AirPort, as well as AirPort Time Capsule, was the ability to use them as targets for Time Machine backups without needing a separate Mac or an external drive. At the peak of my Apple networking journey, my home network consisted of at least one AirPort Extreme and multiple AirPort Express acting as repeaters and AirPlay targets for speakers throughout my apartment. This setup allowed me to run Time Machine backups for both my private and work MacBook, as well as stream media to my Apple TV using the same hard drive.
However, as time went on, these devices grew old, and there were no replacements in sight. The software started to deteriorate slowly but surely. The AirPort configuration tool looked outdated on modern operating systems, as it hadn’t received updates in a long time. I experienced multiple network crashes, and Time Machine backups would unexpectedly stop without any notification. The once reliable disk-sharing feature became buggy, and copying files to or from the attached hard drive would sometimes fail altogether.
Thus, I began searching for a replacement. I ultimately settled on the Linksys Hydra Pro 6E, a Wi-Fi 6E capable router. At the time of purchase, these routers were still relatively rare, and the Linksys Hydra Pro 6E was one of the few tri-band capable options, meaning it supported broadcasting the same SSID using the 2.4GHz, 5GHz, and 6GHz bands simultaneously. This was important because most smart home devices prefer the 2.4GHz band, and it would have been inconvenient to have them on a separate SSID.
Ever since I set up the Hydra Pro 6E router, my apartment has been free from any Wi-Fi issues. It provides me with the full bandwidth of my fiber internet connection throughout my entire living space. Surprisingly, even during work calls, my connection remains stable and strong, outperforming my colleagues who work in an office where networking is managed by knowledgeable professionals.
However, it’s important to note that it is immidiately apparent that this router is not manufactured by Apple. Sadly, Apple no longer makes routers at all. The Hydra Pro 6E may not have the aggressive or “gamer” aesthetic that most other routers seem to go for, but it certainly doesn’t look as sleek as an AirPort. The Linksys Velop system is certainly visually more appealing, but it was three times more expensive than the Hydra at the time of purchase, and I don’t really need the three access points that it comes with.
There are also some opportunities that Apple may have missed by not having a product in this category anymore. This became especially apparent when my partner and I were getting things ready to move out of our apartment and had to store some of our belongings. As we couldn’t take our TV with us, I decided to sell it. After selling it, I dismantled our media cabinet, which involved unplugging all the different devices, including the Apple TV. Later that evening, I realized that I couldn’t access our Homekit lights. It didn’t occur to me initially, but as our Apple TV also served as the Home Hub, I couldn’t store it away yet if I wanted to control our lights until the day of our move. Consequently, the Apple TV had to be placed in the network closet with only its power cable attached. If Apple had a modern router, it would likely function as a Home Hub as well. Perhaps Matter will eventually address this issue when more devices can act as Thread border routers. Until then, one of the most crucial aspects of my home network, HomeKit, can only be accessed by keeping an Apple TV or HomePod nearby, even if they aren’t required for their primary purposes.
]]>We already own a Melitta Caffeo CI, an AeroPress plus Porlex Grinder combo, a fairly simple drip coffee maker, a V60-style pour-over brewer and a siphone coffee maker that I got as a gift. So quite a collection of gadgets but no consistent theme and some crucial pieces are missing, e.g. an actual grinder. We use the Melitta superautomatic the most. It does a passable job at creating coffee drinks when provided with high-quality coffee beans. You really need to spend some money as any imperfections during roasting get amplified a lot.
It’s far from perfect. The brewer isn’t able to create actual espresso, it suffers from horrible retention and static issues that lead to a lot of coffee being wasted and I’ve also repaired it more times then I can count.
This lead to my wife and me getting more and more frustrated and ultimately deciding to build an actual coffee setup from scratch. Our goal is to integrate it seamlessly into our existing kitchen using the Decent coffee cart concept as our main point of inspiration.
We’re still in the early stages of planning, but we indent to finish the overall project by the end of the year.
You can visit the Craft project page to follow our progress.
]]>Picker or any layout specifics of that component to be honest. Admittedly this is a minor annoyance when you realise that there is no SwiftUI equivalent for WKWebView. Luckily the implementation of a simple UIKit wrapper is straight forward.
Update
Although this method works great for opening links to external content inside an app I’d highly discourage you from using it for that purpose. Due to the excellent research by Felix Krause it became apparent that this is misused by a lot of companies to track users, attribute ads or personalize content. Developers should take this as a hint to switch to
SFSafariViewControlleror open Safari outright. Felix goes into a lot more details so I highly encourage you to check out his work.It’s still completely fine to use this to show web content like HTML responses from your own servers, a Markdown preview screen for an editor or maybe a specific piece of UI was just easier to build using web technologies.
To get things started open a new file and import WebKit. We need this to have access to WKWebView which is Apples replacement for UIWebView.
import WebKit
Create a new struct called WebView which should conform to UIViewRepresentable.
import WebKit
struct WebView: UIViewRepresentable {
...
}
Keeping with Apples naming conventions for SwiftUI it should just be called Web but that seemed a bit odd to me. It also confused me when I realised that Apple did exactly that when they called the SwiftUI equivalent for MKMapView just Map.
Add a property called url. You can define this with String or URL as its type depending on where you want to implement the error handling in case the supplied URL is invalid.
import WebKit
struct WebView: UIViewRepresentable {
let url: String
}
Now you’re ready to implement the two methods required by the UIViewRepresentable protocol. Let’s start with makeUIView(context:).
import WebKit
struct WebView: UIViewRepresentable {
...
func makeUIView(context: Context) -> WKWebView {
WKWebView()
}
}
Pretty straight forward, right? Now we just need to load the supplied URL and we’re done. Continue by implementing the second required function like so.
import WebKit
struct WebView: UIViewRepresentable {
...
func updateUIView(_ uiView: WKWebView, context: Context) {
guard let url = URL(string: url) else {
return
}
let request = URLRequest(url: url)
uiView.load(request)
}
}
This function tries to create a URL using the provided string. If it succeeds the newly created URL is passed to a URLRequest which is subsequently handed to the load(_:) function of our WKWebView instance.
That’s all there is to it. Be aware that WKWebView is not equivalent to SFSafariViewController which basically embeds Safari into your application giving users access to Password Autofill for example.
Wrapping WKWebView like this gives you a quick and easy way to show web content inside your application.
If you found this helpful, feel free to let me know. You can send me an E-Mail to [email protected] or find me on Mastodon @technocidal.
]]>While posting to social media always felt low stakes, publishing you work on a dedicated photography platform like Unsplash felt intimidating.
When choosing some of my first pictures I realised how hard it can be to not be too critical with your own work. The first album I’m going through now contains all the pictures I took during a vacation to Israel. This was one of the most interesting experiences of my whole life, so it seemed like a good choice to start there. But is there anything interesting in there? I mean, most of the “tourist street photography style” pictures mainly make sense to me and a good chunk of the album are basically pictures I took for the sake of having a picture of what I saw during the trip. They are pretty recognisable by their poor composition, contrast and obvious lack of care. I just wanted a picture to remember that when I visited Masada, an ancient Roman fortress, there was a tiny model of the whole structure that had dollhouse-like mosaic floors.
Going through the album made me realise that one motive came up again and again - Flowers.
Everyone likes pictures of flowers. You can look through the profile pictures/home screens of the older part of your family and I bet that a lot of them will have picked flowers to put there. That’s where I started. I edited and uploaded a picture of an almond tree flower. It’s a start and let’s see where this goes.
]]>This site will mainly focus on technology and the ups and downs of working in software engineering. My intention for this site is for it to be helpful sometimes and a place of shared suffering at other times. I’ve a strong background developing for Apple platforms.
Feel free to contact me 📧.
]]>