<!>Conlang.org's community list (2020-03-07 18:04:38)
Conlang.org's community list
Anthologica Universe Atlas / Forums / Miscellaneria / Conlang.org's community list / <!>Conlang.org's community list (2020-03-07 18:04:38)

? Rhetorica Your Writing System Sucks
posts: 1279
, Kelatetía: Dis, Major Belt 1
And now, a monologue about site performance and what I'm going to do about it.

Truth be told, the current software stack behind Annie is never going to be blazing fast. All of its features come at a cost to performance. The single worst culprit of this is a conflict between programming paradigms: Cadre's page template philosophy encourages encapsulation (routing all activity through smaller pieces of code to keep it cleanly isolated) but this results in a lot of individual SQL queries (which might otherwise be grouped into one single query.) The forums and the languages page both have this problem, although I've done some work to mitigate it on the forums. (The site's front page is laggy because it counts unread forum posts; by contrast, it's very fast if you're not logged in, as are the forums more generally.)

I haven't mentioned this much, but the truth is that Cadre wasn't really designed as a production-grade platform for websites. Way, way back in 2009, when the project was new, my goal was to build a coding sandbox for prototyping new social platforms—alternatives to wikis, forums, Facebook, et cetera—so performance was never a top priority; instead, I was concerned with making it possible for users to program new site functionality through the website itself while respecting file-system-like access permissions so they couldn't damage the content made by others. This was a pretty unexplored piece of territory at the time, and I think Cadre's still better at it than, say, MediaWiki.

For a while I was looking at translating the Cadre software stack into C++, as it was the language I worked in the most while I was in grad school. These days most of my work is actually in JavaScript, for better or worse, and I've decided to do this with node.js instead. As I despise omnibus frameworks and libraries this might even be passably performant, and I'll get a lot of web-relevant functionality for little or no effort (HTTP handling, Unicode, multithreading) which would be a lot more granular to put together in C++. So, consider this notice that I'm starting work on this new project. It will still have an Octavia-like hosted language, but I may rethink some of its syntax choices.