Stemgames needs to be rethought, redesigned, recoded

This thread is an outcome of another conversation. This thread is critical on two fronts (that is, it criticizes, but it is also important, in my view) but my hope is it will help make Stemgames better.

I opened up a new browser window and loaded Stemgames default page while checking the load process in the network monitor. The default page makes 203 requests and loads 18+ MB in ~13s just to be able to paint an initial page.

54 of those requests are just CSS files and 15 are actually 404s! But, this insanity is not done yet – after loading, it keeps on making POST requests every second or so even though I never POSTed anything!

I have no other way but to say this is shoddy software or a shoddy implementation. Either way, this is something I personally would neither ever use nor would I put out in the real world for others to use. It violates every personal or good-taste and good-engineering principle I subscribe to.

Ok, the critical part is over. Now for some suggestions to make this better.

  1. sit down and rethink every part of the application
  2. remove everything that is not necessary
  3. minify, concat and gzip all CSSs and JSs into one (or as few as possible) to minimize http requests
  4. fix or remove all the 404s
  5. test on throttled/slower connections down to 3G and bring the initial page load down to a couple of seconds, max 3 or 4 seconds

That would be a good start. Good luck

3 Likes

This is easy to fix. @surendra can you have a look at this.

2 Likes

The heavy client loading so much of JS and CSS must be cleaned up. This cannot be met by forking discourse, instead we will do a progressive webApp using the APIs provided by discourse.org. By the time the site reaches 1 year, we should have the new app ready. Gearup!

2 Likes

Sounds like a good strategy. Unfortunately I can’t contribute to the coding aspect because of time constraints, but happy to serve in an advisory capacity if you all so want. Fwiw, my app Ocellus is a very lightweight [^1] progressive web app with zero framework [^2] and no cookies, tracking beacons or any other modern nonsense.

[^1]: not yet lightweight enough, but I am working on whittling it down. My aim is to have it run very well on 3G and somewhat well on 2G. Of course, since it is an image retrieval and display app, once you send a query, it will bring back a lot of data in the form of images. Oh, and it is based on Zenodeo a lightweight API that I created to Zenodo.

[^2]: no jQuery, react or vue were harmed in making any of this :slight_smile:

4 Likes