There are 50 hardcoded smileys without ability to change their list without rebuild of the whole database and of course source modification, so users are in tight spot with this.
Proposition
remove long hardcoded regex
separate smiley logic to use small matches per smiley
move smileys to separate table in database for easier addition/removal
move smileys definitions with regexes to includable module of sorts, user modifiable
For inactive people with high lines count one last quote is used all the time which is, well, boring.
Proposition
Get X random quotes for each user on parsing stage, add them to DB and select random one on page generation.
This will increase DB size, but will produce more interesting combinations for top liners.
Reference database for ~9 months with 180k lines and ~800 different users is under 7.5Mb in size which is a low number even for in-memory operation on many channels.
Flag to store or not this information on parse stage may be an option to not inflate DB sizes for those not in need of this.
Inconsistency of most used nick used by stats with user's wanted nickname.
This won't be fixed by original author and I wouldn't want to stray too far from his vision at this point in time: #https://github.com/tommyrot/superseriousstats/issues/9
Proposition
List most active nicks (5 maybe) on user page to help people distinguish each other when user.php is used for a stats site.
This information with nicks relation is already present in the DB so should be easy to do.
Current implementation of 10 minute bins for higher precision uses the same logic author implemented with separate variable for each time slice and column in database.
This leads to long lists of variables and non-readable tables.
Proposition
Move from using variables to hours and minutes arrays.
Separate columns from current tables and views, make a new table with user id as a key (needs clarification on the date part).