Speeding Up a Fat Web Client
engineering.linkedin.com
engineering.linkedin.com
It seems like devs tend to ignore network latency entirely because it's something outside of our control. It seems to be getting worse too, things like the windows start menu can freeze when you're on a intermittent connection, SPA's can break entirely. I've spent a good chunk of my career fixing n+1 problems over a network, even when it's on a fast connection to a local database the latency becomes noticeable are fairly small values of n.
Polymer in particular is notoriously slow when using polyfill.
Even on a desktop I get a loading screen for maybe 2 seconds and the site loads in ~4 seconds.
A modern website that works well on all devices quickly is soundcloud. Seamless browsing/listening and excellent user experience.
Jira is especially cumbersome as when you update one thing it refreshes half a dozen other items and you have to wait for the whole lot before it becomes interactable again. In those cases, I would prefer it either to update on the component I touched or to not pretend to be reactive and just be a flat out form POST.
As it stands it is the worst of both worlds and the network delay compounds to make it a slow, page jittering mess the whole time I am using it.
Reason #1: They did a horrible job, this post reads like a list of things not to do.
Reason #2: They still did a much better job than my company. We had a similar rewrite from a reasonably well performing system to a dog slow monstrosity. However instead of acknowledging it was slow, we put on our doublethink hats and deployed anyways. "We" picked a couple metrics that were easier to game (time to first byte) and then we threw up our mission accomplished flag and moved on. We also wrote posts like this bragging about the performance improvements we'd made.
I hate the sort of "techcrunch driven development" that's so big in wanna-be facebook companies. Instead of solving business and customer needs, directors and vps are mostly focused on splashy articles and speaking engagements that make their resume look good.
I know, I know. LinkedIn is big and has a big team and this level of rigid formalism is what's required to manage a large team of developers and keep them from committing non-performant code. The joys of big teams. I really applaud them for being able to pull it off. The site is far, far more performant than it used to be.
For the most part though, for most of the rest of the world of web applications: just stop including so many fucking libraries in your js and don't do write-once ultra-scoped CSS.
Anyway, for those who haven't read/listened to it, Maciej Cegłowski has a wonderful talk on the subject.
Talk: http://idlewords.com/talks/website_obesity.htm
Video: https://vimeo.com/147806338
I don't have any proof handy, but I imagine this was leveraged in areas outside of gaming.
Spreadsheets seem likely to have used this, for example.
We should be writing a case study on it but never got around to doing it.
https://docs.unity3d.com/Manual/OcclusionCulling.html
edit: I wouldn't even call it frustum calling since I don't think frustum culling makes much sense in a retained mode API (the frustum culling happens when rendering the retained mode representation through the underlying immediate mode API). 'Level of detail' maybe.
"Before releasing it to the public, we knew it had to be at least as fast as our existing site."
Which wasn't saying much because the original site didn't load well at all. At least it didn't have all the state management issues. It is like they take all these newfangled technologies and then struggle to implement them correctly. So sad.