My first job with UNIT9, I got dropped right into the middle of a really important gig (partnership with Google).
WebGL is not my cup of tea, however there was still plenty of work to be done that was much less visible than the crazy 3D animations.
- Dealing with EU laws: make sure the user-generated content originating in EU is physically stored on servers in EU?
- How do you even do that with App Engine? You can spin up an EU instance, but Google told us they won't even be able to set up billing whitelisting in time (the requirement popped up literally days before the launch date).
- There's Google Cloud Storage. I could "just" rewrite the entire backend code to talk to GCS instead of GAE blobstore. This is what we went for in the end.
- But the GAE instance was still in the US... Well, if everyone had their pictures stored in the EU, then US citizens would experience some extra lag, as their pictures would have to travel across the Atlantic! I've added an extra layer to store non-EU content in the US.
- Shader initialisation errors?
- We've already launched; lots of people have reported seeing black screens instead of a breathtaking 3D experience!
- Turns out other people are running other machines than Macs, and every person with a different GPU&driver combination had different kinds of problems and reasons why the site wouldn't load.
- We've already started using Sentry to catch errors on the backend. What if...
- I've exposed a quick & dirty API endpoint for the frontend guys to call if shit happened. Since we've expected a giant, giant, giant volume of such errors, I've added another tiny hack: keep the error codes in memcache; if the key was already present, drop... 99%... of the reports.
- We still got spammed like hell and went over the daily report quota! However a whole lot of most common shader initalisation issues were fixed within the next few days. Figuring out ways to fix random problems in live environments started to become my new specialisation.