A few more quick updates:
1) Leafcoin has been added. It forked earlier today, so a ton of people are on the wrong branch, I've confirmed we're on the correct one.
2) A few coins were disabled. Our host had some issues yesterday, and a few of the blockchains got corrupted on endpoints, they're removed from mining while syncing, and will be added later tonight. These are: philosopherstone and diamond.
3) Tagcoin is disabled for the forseeable future. It always looks to have great profitability, but every time we turn it on, we get ~50% orphans. Until this gets sorted out, it will be disabled and tested here and there.
4) Elacoin is disabled for now until Cryptsy processes our existing deposits. I don't want to be stuck mining something if they never confirm at the exchange.
I want to get in some code later that will notice blockchain problems on our endpoints. Right now, we have to disable mining a coin completely if one of the endpoints needs to resync the blockchain. I'd prefer to have it just disabled on one endpoint (and mine the 2nd most profitable during that time).
Which brings me to something that I need your guys' input on:
Recently we've been a bit below what I would hope for earnings (0.01 instead of 0.013ish). I think this has to do with our current reject policy. We currently accept slightly stale shares, what that means is that when a block switch happens (or a coin switch, same thing from server side), we keep accepting shares for 1-old block switch (we'll call these "1-stale" shares). If a share is "2-stale" (stale by 2 block switches) it is rejected. This was originally a "nice" thing to have on the server, as it makes users who join see fewer rejects, and earlier on, our profitability switcher was not nearly as aggressive as it is now in terms of coin switches (was switching every 30-60 seconds or so, now much faster).
I think some of our profitability deficit comes in from this policy. By allowing 1-stale shares, users have no incentive to tune their miner for the most number of valid shares, but instead, tweak their miner for raw number of shares (regardless of if they are 1-stale or not). This leads to miners to unfortunately crank up their miners as much as they can (higher intensity, queues, etc), to get higher hashrates, but this also leads to a larger number of 1-stale shares as a result.
By rejecting 1-stale shares (which extremely rarely lead to solved blocks), the overall reject rate of the pool will definitely increase (in line with other switching pools), but after configuring miners correctly to reduce rejected shares, overall effective hashrate (block finding) will most likely increase, as well as profitability.
Since this is a reasonably major change (not code wise, but end user perception wise) I'd like some input before I do it, that said, I really do think it is work doing.
tldr We should reject "1-stale" shares for better profitability, but some users will be all "WTF MY REJECTS ARE HIGHER NOW!!!?!". Should we reject "1-stale" shares Yes/No?