MMMetrics, Nexus

OK, where to start… MMMetrics. I’ve been pondering having a proper name to affiliate my work under for some time, so MMMetrics it is. Of course, short for Massively Multiplayer Metrics, and soon to be located at http://mmmetrics.co.uk- when the bloody DNS records update, that is…

Over the next few weeks I’ll be reskinning EVE Metrics, ISKsense, and various other things to have a much much nicer theme and one that is consistent across websites, giving each site their own visual take on the theme. Those sites will also be getting some much-needed optimisation, graphics, and new layouts.

Nexus is the other thing this brief post will touch on. Myself and flexd, the other developer working on the project and new member of VAF, have decided that open-sourcing the whole thing would be mad. It’s hideously complex to set up in places (though much easier than it used to be), and in any case a lot of the functionality Nexus provides is heavily aimed at alliances rather than corporations. We’ll still be offering Nexus to some alliances on an ask-and-we-might-let-you basis, but we will be forking Nexus, stripping it back to the killboard and fittings components, and releasing that as open source on Github.

That means if you’re an average corp you won’t get things like the tactical/intel overviews and IGB components, and all the alliance-level member managemet, capfleet management, and so on will be out. Because 99% of people don’t need it, to be honest. By keeping things more limited we’re keeping it much more hackable, more secure, easier to maintain and easier to extend, which means we’ll get it out of the door much quicker than we would have if we’d kept it all bundled together. So we’re looking at somewhere early-to-mid 2009 as our first release.

I think that just about covers it. Oh, other than to say happy holidays and a happy new year in advance, so I don’t forget as I obviously will do.

Officer and Faction Item Support

So, after seeing the hundredth ‘Error occured while loading market#view’ email arrive which related to someone getting an officer or faction item, I decided I would drop what I was working on (index pregeneration) and implement non-market items on the market.

You can now view non-market items, submit prices for them, and view prices aggregated weekly from eve-prices.net. It’s not perfect, but that’s just down to what data EVE Online will let us get at! Hopefully we’ll see more support of contracts over the API soon; CCP have now moved the API to it’s own SQL server, so performance of API requests isn’t such a huge problem any more.

I’m also experimenting with advertising on both this site and EVE Metrics. Hopefully I’ll be returning to Project Wonderful, which I’ve used to great success in the past on other websites. While I’d love to provide these sites ad-free and for-free, unfortunately server costs do exist and I just can’t afford to run things for free right now.

EVE Metrics gets Location-Aware

Tactical Map - GUI next!
EVE Map -Next step GUI!

I’ve been working on EVE Metrics as well as my out-of-game EVE map (still without a real name) over the past few days. First things first- EVE Metrics now provides indexes. Ever since the Matari Mineral Index closed trading, corps have been limited in choice for indexes on various items. EVE Metrics is now providing two indexes, one derived from reported orders and the other from EVE’s reported past data. The indexes are wide-ranging, the calculation takes a while, and more interestingly, EVE Metrics now supports favourite regions, allowing you to fine-tune your EVE Metrics browsing experience to provide indexes only related to your regions of operaiton. In future I hope to expand this out to the market, too.

This leads me to an interesting issue- performance. The indexes, what with the nature of customisable data, are all computed in realtime. Trouble is, that’s around 10 seconds of work once all the data has been pulled out of the database, had some maths done to it, and so on. Caching is no good because it’s customisable by users in realtime. Thus, my solution (soon to be implemented) is this; when you load an index, if you are the first person to request that specific set of regions for that index, you will be faced with a progress bar showing index generation. This will be AJAX-updated and hooked into BackgroundRB, which will do the actual index generation, cache it as serialised YAML in a database, and tell the AJAX loader to grab the page, which will render using those cached values from the database. Subsequent requests for that day will be cached automatically. While this seems like it wouldn’t help that much with performance, for those not logged in this will be an absolute boon- having the page instantly load with indexes for all of empire rather than having them wait for 10 seconds is a much better situation.

Once this is sorted out I plan to divert my efforts to Nexus, which includes the killboard components that will form the basis of the killboard in EVE Metrics. Hopefully I can get that sorted for the end of the week, and start merging the changes back upstream to EVE Metrics! From that point on it’s API all the way as I spend some time working out a security model and implementing all the API features as data loaders for EVE Metrics.