Logs, Metrics and Events

Logging is an area of engineering that isn’t really discussed enough. At some point early during our careers, someone shows us how to debug stuff with print statements, console.log or one of the other variations and we are set. At a later point, someone shows us centralized logging with all our logs going to ELK or Splunk, and now we’re able to do the same sort of thing with loads of servers at once. [Read More]

Plan for Change

Change Software can change a lot over its lifetime because technology is moving faster, and I believe that software is living longer when operated as services. Change, driven by evolution and revolution in competitive technologies, huge changes in platforms, business models and shifts in customer expectations require us to be agile. I don’t mean that we have to adopt Scrum, but that we need to fundamentally consider software development with an agile viewpoint that accepts change as inevitable — you will be disrupted every 5 years or so, and you’d better be able to adapt. [Read More]

Standardized Python installs

Standardized Python installs Virtualenv for Python is wonderful, and you should use it. Our path to using it however, was rather rocky: working primarily on Windows, we were for quite some time victims of the Python community’s focus on Pip (and insistence on compiling everything during install). Working on Windows, with a large number of non-technical users, the idea of trying to get your tools to compile on an artists’ machine should really scare you (never-mind the lack of testing / support and particular versions of visual studio that had to exist). [Read More]

File Static Data

Eve Online started out life early on with the “Database”. Because the DB existed already and was relatively convenient, we put data into it. Later, we realized that a lot of data was stuff that our game designers authored (like solar systems and their contents) that we called “static data”, and a clever system was created for versioning this data with revisions at a row level. It didn’t seem unreasonable at the time, and the waterfall mechanics of our release process matched pretty closely with the mechanisms in the database versioning system. [Read More]

AWS Shared Account Automation

The Multi-Account Organization There are a lot of properties of having multiple AWS accounts in an organization to recommend it as a practice: Separate invoices for different teams In some organizations cost allocation is a thing, and being able to get different invoices for different product groups is good. You can achieve some of this using Tags, but various services have some costs that aren’t easily separated. Security It can be difficult to avoid giving developers IAM access, since there are an ever increasing number of services and uses for it with assumed roles for EC2 and AWS Lambda. [Read More]