These forums have been archived and are now read-only.

The new forums are live and can be found at https://forums.eveonline.com/

EVE Technology Lab

 
  • Topic is locked indefinitely.
 

Looking for a few good Pythonistas

Author
Khorkrak
KarmaFleet
Goonswarm Federation
#1 - 2012-10-02 02:34:52 UTC  |  Edited by: Khorkrak
As you may know, I am the developer of pykb and the http://www.decloaked.com site that runs on it. The only completely Ad-Free public killboard that I'm aware of - all funded out of pocket by me.

I'm open to mentoring other Python developers interested in contributing some new features to the system, So far I've been the only one writing code for it. This has made for a consistent system but it's also a bit of a bottleneck to growth.

The code is obtainable via mercurial: hg clone http://hg.code.sf.net/p/pykb/code pykb-code
It's split into two projects - the backend library (pykb) and a sample web site using it (web). The decloaked site runs on the code in the web project. A completely different web site is quite possible of course using pykb - feel free to borrow whatever you want from it / make your own. Beware though, all code there is GPLv3 license so all uses must remain open source.

Some features I'd like to add off the top of my head:

  • User authentication using strong password encryption while minimizing the impact on varnish caching.
  • Enable themeroller pre-built themes and possibly user generated ones.
  • Add the ability to customize pages, including themes, and set up a monthly ISK fee based process for this.
  • Write a setup script for the web site install and automate as much of it as possible.
  • Write a database conversion patch from EDK MySQL to pykb MySQL or PostgreSQL.
  • Add a related kills / battle summary view similar to EVE-Kill's but improved in some way to set it apart.
  • Write an IRC bot in Twisted to help with admin tasks for decloaked.com.
  • Research ways to archive / delete old data while maintaining enough for stats and the ability to restore it on demand.
  • Adding UI features to enable registering an EDK board to pull data from easily.
  • Add the ability to open up a corresponding kill mail list when drilling down on a pie chart wedge in another tab.
  • Look into a way to share the data with other killboards including EDK based ones and EVE-Kill if they're interested while minimizing the impact on performance; i.e. replicating the database to another server and creating an API there instead.


I generally will not allow anything that's unethical, potentially illegal or that could tarnish the reputation of the system in any way. So for example if you're an artist and would like to contribute images that's great however they must be proven to be creative commons licensed or public domain.

Like most well written Python projects the coding is pep 8 compliant so for contributions to be accepted you'll need to follow suit: Pep 8

Stop by to chat on irc.coldfront.net #pykb

If you've coded mostly with PHP or Perl it's unlikely that you'll be a good fit unfortunately as I've seen my share of Perl written in Python syntax and can't tolerate it - perhaps though you may be different and will surprise me. Being a team player and agreeing with the Zen of Python is a good sign for starters:

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Developer of http://www.decloaked.com and http://sourceforge.net/projects/pykb/

June Ting
Full Broadside
Deepwater Hooligans
#2 - 2012-10-02 06:44:45 UTC  |  Edited by: June Ting
Some folks from V.N would be interested in assisting with this project. We are the authors of EVELink (https://forums.eveonline.com/default.aspx?g=posts&find=unread&t=153399) and of a couple other projects (http://eve-val.github.com).

We'll hop on your IRC and be in touch. Do you have a public issues tracker and pull tracker?

I fight for the freedom of my people.

Khorkrak
KarmaFleet
Goonswarm Federation
#3 - 2012-10-02 12:42:28 UTC
Awesome - looking forward to working with you! I'll add the items I posted above to the ticket system: tickets

Some other enhancements needed:

  • Add an optional fitting wheel - look at the awful EDK code for hints but avoid copying it.
  • Improve the pricing estimation script - perhaps contact the EVE-Central dev(s) for advice. It's slow and memory intensive.

Developer of http://www.decloaked.com and http://sourceforge.net/projects/pykb/

darmwand
Center for Advanced Studies
Gallente Federation
#4 - 2012-10-26 16:34:06 UTC
While I probably won't have the time to actively work on this, I'll certainly try it out to see whether we can replace our (unmaintained) EDK with it (and of course submit the occasional patch). It's great to see that there are people working on decent killboard software!

Khorkrak wrote:
Add an optional fitting wheel - look at the awful EDK code for hints but avoid copying it.


I started work on my own killboard software a while back (but abandoned it because I didn't feel like maintaining such a thing on my own) and used a simple fitting screen inspired by the "EVE pirate ledger". It doesn't use a fitting wheel but a much simpler representation that is fairly easy to implement in HTML and still gives you a good impression on how the ship was fitted. Since I couldn't find any active ledger installations anymore, I pasted a screen shot of my implementation just to give you some idea:

http://picpaste.com/kill-SqJa9c1j.png

Maybe something like that could be an option?

"The pen is mightier than the sword if the sword is very short, and the pen is very sharp."

Steve Ronuken
Fuzzwork Enterprises
Vote Steve Ronuken for CSM
#5 - 2012-10-26 20:09:08 UTC
Khorkrak wrote:
Awesome - looking forward to working with you! I'll add the items I posted above to the ticket system: tickets

Some other enhancements needed:

  • Add an optional fitting wheel - look at the awful EDK code for hints but avoid copying it.
  • Improve the pricing estimation script - perhaps contact the EVE-Central dev(s) for advice. It's slow and memory intensive.



If by fitting wheel all you mean is: 'stick stuff into a wheel for display'
https://github.com/fuzzysteve/Ship.js
might be of interest.

Woo! CSM XI!

Fuzzwork Enterprises

Twitter: @fuzzysteve on Twitter

Khorkrak
KarmaFleet
Goonswarm Federation
#6 - 2012-10-27 18:44:49 UTC  |  Edited by: Khorkrak
NIce work Darmwand and thanks for the the js implementation of the loudout wheel Steve. Certainly going to look at these soon. Right now I'm working on a branch of the project labelled protocol buffers. I'm converting two tables, the kill_items (stores destroyed and dropped items) and attackers tables into Google Protocol Buffer representations instead for scalability.

So since the data in these tables is now only needed when displaying kill mail details, I really don't need the significant overhead of storing these in a normalized form. These two tables grow very quickly as kills are added so this should serve to curb that significantly as data in protocol buffers is stored far more efficiently. These amount to two new small blob fields on the kills table rows.

Ultimately, my aim is to enable hosting a significantly sized killboard on a modest server. For example, one with a few million kills running efficiently with just 2 GB RAM, 2 CPUS and 40 GB of disk space (maybe more).

Right now I have ~165,000 kill mails and although read performance is very fast, I've started to see some occasional slow downs in calculating the stats along with inserting new kills against a normalized schema.

I've also added kill values to the kill rows instead of leaving these to be recalculated each time when updating aggregates so that should pay off quite well too. The aggregate update stored functions have been simplified with this change (only did the PostgreSQL one thus far). The branch is still being tested / debugged, but I expect to deploy it within a few days. Nonetheless the most recent version is checked in and viewable / downloadable in the code section of the pykb site.

Developer of http://www.decloaked.com and http://sourceforge.net/projects/pykb/