Guilherme RamboOverený účet

@_inside

I know a thing or two about AirPods. App developer, writer, speaker, tinkerer. 🏳️‍🌈

Florianópolis, Brazil
Na Twitteri od: august 2007

Tweety

Zablokovali ste používateľa @_inside

Naozaj chcete zobraziť tieto Tweety? Zobrazenie Tweetov neodblokuje používateľa @_inside

  1. pred 5 hodinami

    And yes, I wrote the about window UI and the background animation in SwiftUI

    Zobraziť toto vlákno
    Späť
  2. pred 5 hodinami

    It’s subtle, I know. I prioritized it looking good rather than making the Easter egg obvious. Here’s what it looks like without the blur, with me moving my head while wearing AirPods Max about 5s in

    Zobraziť toto vlákno
    Späť
  3. pred 5 hodinami

    The “moving clouds” in the about window each represent a nearby BLE device. The larger the cloud, the closer the device is to the Mac. Each flash is an advertisement received by the Mac. If you’re wearing AirPods Pro/Max connected to Mac and move your head, the clouds move.

    Zobraziť toto vlákno
    Späť
  4. Retweetol používateľ
    pred 15 hodinami

    👨🏻‍💻Building app was a captivating 9-months journey full of challenges! And it wouldn't be possible without amazing resources that helped me move forward. Here I want to share my personal favourites. (1/4) 👇

    Zobraziť toto vlákno
    Späť
  5. 22. 1.
    Zobraziť toto vlákno
    Späť
  6. Retweetol používateľ
    21. 1.

    Oh and btw, the new about window doesn’t include any hidden games, but it does have a fairly elaborate Easter egg. I wonder if anyone is going to find out what it is (without decompiling the app). If not, I’ll reveal it on Monday.

    Zobraziť toto vlákno
    Späť
  7. 21. 1.

    Oh and btw, the new about window doesn’t include any hidden games, but it does have a fairly elaborate Easter egg. I wonder if anyone is going to find out what it is (without decompiling the app). If not, I’ll reveal it on Monday.

    Zobraziť toto vlákno
    Späť
  8. Retweetol používateľ
    21. 1.

    🧵 But enough with the boring technical details, let’s look at some fun UI stuff I’ve done for AirBuddy 2.5. As we often mention on , that’s the sort of stuff that I really enjoy doing:

    Zobraziť toto vlákno
    Späť
  9. 21. 1.

    I also implemented a feature just for myself: this “marketing mode” made preparing screenshots for marketing materials A LOT easier. It even creates a fake Menu Bar (can you guess why the date/time is what it is?)

    Zobraziť toto vlákno
    Späť
  10. 21. 1.

    There was also a lot of time spent making the preferences window look more modern and simplifying settings. A couple of before/after images below

    Zobraziť toto vlákno
    Späť
  11. 21. 1.

    You wouldn’t believe how much time I spent working on this tiny plug icon 😅 It was also tricky to figure out the best way to make its border cut out the stuff underneath, but I managed to do it with the set up in the second image

    Zobraziť toto vlákno
    Späť
  12. 21. 1.

    And of course I made a little debugging utility so that I could tweak those values and see the results in real time

    Zobraziť toto vlákno
    Späť
  13. 21. 1.

    If you’re curious, here’s what it would look like WITHOUT those adjustments. Eww

    Zobraziť toto vlákno
    Späť
  14. 21. 1.

    The status window shows an animation of the device, so I had to make sure that the animation would match the current system appearance and look like it’s “reflecting” your wallpaper a little bit. I did that with some clever filtering and a tiny bit of translucency on the image

    Screenshot of macOS in light mode shows a translucent status window for “John’s AirPods Max”
    Screenshot of macOS in dark mode shows a translucent status window for “John’s AirPods Max"
    Zobraziť toto vlákno
    Späť
  15. 21. 1.

    I had prototyped some of its UI with translucency, but there were lots of challenges getting them in a state that could be shipped. This is really hard to get right. I spent several hours tweaking the background materials, corner radii, and the borders for the item groups

    Zobraziť toto vlákno
    Späť
  16. 21. 1.

    🧵 But enough with the boring technical details, let’s look at some fun UI stuff I’ve done for AirBuddy 2.5. As we often mention on , that’s the sort of stuff that I really enjoy doing:

    Zobraziť toto vlákno
    Späť
  17. 21. 1.

    The main core component that remains pretty much unchanged from v2 is the mobile devices service, which talks to iPhones, Apple Watch, etc. It could definitely use some improvements. It’s going to be a lot of work, but I’m going to tackle it soon(ish)

    Zobraziť toto vlákno
    Späť
  18. 21. 1.

    For Classic, I had to create two implementations: one for Big Sur and earlier, another for Monterey. I also took the opportunity to unify BT classic between headsets and peripherals. There were two implementations before: one for AirPods, another one for HID devices

    Zobraziť toto vlákno
    Späť
  19. 21. 1.

    I also implemented a completely new protocol that goes on top of the new transport, which corrected various shortcomings of the old one, mainly because it’s no longer limited by the small packet size of BLE

    Zobraziť toto vlákno
    Späť
  20. 21. 1.

    It took me a long time and lots of trial and error to figure out the sweet spot that guarantees the best reliability without compromising the user’s WiFi or Bluetooth performance. Ended up with a struct that would let me tweak everything in one place 😅

    Screenshot of a code snippet: public struct MagicHandoffTransportSettings: Hashable {

    public var multipeerServiceType: String
    public let discoveryIntervalInMinutes: Int
    public let discoveryWindowDuration: TimeInterval
    public let enableBLEOrchestration: Bool
    public let bleAdvertisementDuration: TimeInterval
    public let enablePersistentDiscoveryOnCriticalMode: Bool
    public let criticalModeDurationLimit: TimeInterval
    public let criticalModeDurationOnDarkWake: TimeInterval?
    public let minIntervalInMinutesBetweenDiscoveryActivationsOnDarkWake: Int
    public let enableRemoteWakeUp: Bool
    public let remoteWakeUpTimeoutInterval: TimeInterval
    
}
    Zobraziť toto vlákno
    Späť

Načítavanie bude chvíľu trvať.

Twitter je preťažený alebo sa vyskytla neočakávaná chyba. Skúste to znova alebo navštívte stránku Twitter Status, ktorá obsahuje viac informácií.

    Môže sa vám páčiť aj

    ·