Hacker News new | ask | show | jobs
by exikyut 1734 days ago
My acid test for all things "super-modern" is to try firing them up on older devices. Y'know, to combat the old "fast enough to reach production but quadratic once it gets there" thing.

Take 1: Galaxy Note 3 with Android 5

  E/AndroidRuntime(25964): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.kraken_gallery/com.example.kraken_gallery.MainActivity}: android.content.res.Resources$NotFoundException: File res/drawable-v21/launch_background.xml from drawable resource ID #0x7f040000
Hokay then. Moving on I guess?

Take 2: Galaxy Note 4 with Android 6

...Yep this is definitely running at about 19-20fps, maybe 23fps. It's not smooth. It's... responsive... I guess? But NOT smooth.

I experience the same effect when in websites that have long scrollable areas inside position:fixed divs or position:absolute divs anchored to the viewport edges.

Chrome seems to be able to special-case "scroll the root/body of the page" in such a way that it can run at like ~45fps on the Note 3 and pretty much the same on the '4. Random divs don't get that special-casing, and scroll rather choppily... exactly like this app.

I tried a Flutter API demo a while back and experienced identical behavior.

My reference case for rendering speed is the Drive PDF viewer (!), which on my Note 3 runs at easily 55-60fps and has just about the lowest latency I can recall of any app I've tried on that device. So I know the hardware can actually update very quickly... if you aren't reconstructing Mt Everest on every frame in the fast path ;)

"BuT DeVeLoPeR PrOdUcTiViTy"

Well, hot take: industrial/brutalist design can be a great fit for the "look" parts of apps... but not the "feel" parts. That always needs to be the result of a feat of integration engineering, for the UX to, well, feel good. All these toolkits break the "look" down into nice little manageable components... by applying isolation principles that also break down the cohesion of the "feel" as well in the process. In the name of progress. Or something.

4 comments

I was trying Matrix clients on an older Android phone, and both FluffyChat and Syphon (both Flutter, without a JS layer) were unable to scroll a user list or message list at 60fps on a Moto G5 plus (a 2017 phone) with LineageOS Android 11 installed.

Perhaps the Drive PDF viewer is fast, but I never liked how it uses RGB subpixel antialiasing on a phone with no fixed pixel layout, to and the GUI felt bare bones to me.

How was Element Android (native android) out of interest?
I uninstalled it after seeing the whopping 100 megabyte download size (what is even in the app?). I should try it again though.

Anyway I installed Element and the scrolling feels a lot smoother, at a stable 60? fps without constant hitches like in Flutter apps.

I noticed in Flutter apps there's a process named usap64 that burns CPU on startup and when I scroll through a list.

My iPhone 12 Pro drops frames when scrolling the Flutter Web gallery [0]. Flutter Web also doesn’t support iOS’ ubiquitous tap status bar to scroll to top and has different scrolling acceleration, deceleration and springiness.

Flutter on iOS has had animation hitches since the switch from OpenGL to Metal. Animations drop frames on their first run, during shader compilation [1].

0. https://gallery.flutter.dev/#/ 1. https://github.com/flutter/flutter/issues/61450

Galaxy Note 5 - released 2013 Galaxy Note 4 - released 2014

Seriously dude...

Seriously dude yourself.

Not all consumers live in a place where salaries are high and electronics are cheap.

Just out of curiosity...

Out of all the places where this impossible combination is somehow the case... do you know of any that have attractive rent options and cheap inbound flights? xD

The United States
3GB RAM, 2.7GHz quad core cpu/1.9GHzX4 + 1.3GHzX4 (oct core). This device is more powerful than my current phone.
Yep, 3GB RAM, but Chrome eats most of that and it swaps pretty much the entire time (yup, it has a 1GB swap partition, the poor flash)... and the CPU is a 32-bit Snapdragon 800 with 4 (symmetrical) cores at 2.2GHz. FWIW, I feel it.

https://phonedb.net/index.php?m=device&id=6573&c=samsung_sm-...

Can't deny I boggle at current-day budget-level devices with 2GB RAM tho. Like, wat.

I did say old :D.

They were actually given to me by a friend who wasn't using them, who learned I didn't have a phone.

I probably used Android for a cumulative total of 20 minutes from 2006-2020 before this. EXTREMELY interested in the platform, absolutely (and came up with some ideas for apps), but yeah, wasn't really viable to pursue.

Here, have two LifeProTips:

1. Rewrite your DNA during conception to edit out all the weird obscure medical issues you might otherwise get lumped with

2. Ensure you quantum phase-shift when selecting the reality you're born into so you ensure you skip the world(s) with a broken medical systems that doesn't have fundamental interest in research and discovery

Alternatively, spend nearly 30 years trying to get anyone at all to listen, without the resources to pay people to listen to you cuz you can't work.

</rant>

(In all seriousness, the Note 3 takes 10 seconds to open a new tab. I'm absolutely looking forward to upgrading. But it'll be sad to stop using it.)

Are you compiling in --release?
No, I went I'm-Feeling-Lucky APK Fishing™ on the releases tab and fed my phone whatever that was.

Which suggests the build process is a bit broken.

Why would the build process would be broken, if it offers debug builds by default (these are faster to prototype)?
(Because it crashed ("Unfortunately, ... has stopped") on Android 5, while working on 6)