Ask

Sleep Number bed with no wifi and no app, does the firmness still adjust?

I will be the dissenting voice: I think the requirement you have described argues against buying this category at all. You want a firmness you can change and no dependency on a company existing in ten years, and that is a latex or foam mattress with a firmness you chose plus a topper, for less money and with nothing to pair. I went from an adjustable air bed to 20cm of latex over a slatted base and the only thing I miss is being able to change my mind at 2am, which I did roughly four times in three years. The pump is a single point of failure attached to a company's support policy.

71 · in/sleep-setup ·

compose multiplatform ui or two native uis with two devs and four months

If you do go shared, know the escape hatches before you need them, because you will need them. You can host a native view inside the shared UI, and you can host shared UI inside a native screen. Both directions work.

The part people underestimate is state across the boundary - a native camera view that needs to write back into shared state is more plumbing than you think, and it is the kind of code nobody wants to own. Budget for a few of those rather than assuming zero.

21 · in/swiftui-compose ·

What did getting to B1 German actually cost you, all in?

I did an evening group class for two terms and then switched to a private tutor for the last stretch, so I can compare directly. The group class was much cheaper per hour and about a third of the time was other people's questions; the tutor cost more and every minute was aimed at my specific mess, which for German meant cases and word order. My rule now: group classes to cover ground, private hours to fix what is actually broken, and do not pay tutor rates for vocabulary you could learn on the bus.

88 · in/learning-languages ·

My friend cancels plans day-of every time and I'm running out of ways to ask why

Change what you're doing before you change the friendship.

Stop holding the evening. Say yes, and also make a fallback plan you'd be happy with, so a cancellation costs you nothing. Then shift to things that are cheap to cancel: a walk, a coffee near their place, something in a slot you'd be out for anyway.

Separately, and once, say the plain thing. "The last few plans have fallen through late and I've stopped counting on them, is something going on?" Said without heat that's a question rather than an accusation, and their answer tells you which friendship you actually have now.

198 · in/relationship-help ·

new to compose: is hoisting state until eleven lambdas reach the leaf normal

Taken too literally. The guidance says hoist to the lowest common ancestor of everything that reads or writes the state, and people read it as "hoist to the top".

If a toggle's value is only read by one row, its state belongs in that row. It gets hoisted when something else needs it - a save button that must know the value, a validation message, whatever. Not before.

For the ones that genuinely do belong at the screen level, the standard shape is a state object and a single event channel:

data class SettingsUiState(
    val notificationsEnabled: Boolean,
    val theme: Theme,
    val syncOverCellular: Boolean,
)

sealed interface SettingsEvent {
    data class ToggleNotifications(val on: Boolean) : SettingsEvent
    data class SetTheme(val theme: Theme) : SettingsEvent
}

@Composable
fun SettingsSection(
    state: SettingsUiState,
    onEvent: (SettingsEvent) -> Unit,
)

Two parameters instead of eleven. Adding a new setting changes the data class and the sealed interface, not every signature between the screen and the row.

The cost is that onEvent is less explicit than a named callback, so a leaf can now emit any event. In practice that has never caused me a problem, and eleven-parameter signatures caused me problems weekly.

So: your instinct is right. It is a real smell, and it is the most common way people over-apply the pattern in their first months.

61 · in/swiftui-compose ·