GET /api/v2/video/391
HTTP 200 OK Vary: Accept Content-Type: text/html; charset=utf-8 Allow: GET, PUT, PATCH, HEAD, OPTIONS
{ "category": "PyCon US 2011", "language": "English", "slug": "pycon-2011--best-practices-for-impossible-deadlin", "speakers": [ "Christopher Groskopf" ], "tags": [ "beeswithmachineguns", "bestpractices", "casestudy", "pycon", "pycon2011" ], "id": 391, "state": 1, "title": "Best Practices for Impossible Deadlines", "summary": "", "description": "Best Practices for Impossible Deadlines\n\nPresented by Christopher Groskopf\n\nAt the Chicago Tribune we develop, test, and deploy production web\napplications on schedules that range from two hours to two months. This talk\nwill discuss the tools and techniques that allow us to make our deadlines,\nincluding automated deployments, frameworks, just-in-time testing, and more.\nAttention will be paid to [http://github.com/newsapps/beeswithmachineguns](htt\np://github.com/newsapps/beeswithmachineguns) and the problems they solve.\n\nAbstract\n\nOn my first day at the Chicago Tribune I was given a CSV of data about\ndefoliant spraying in Vietnam and told to build this: Agent Orange. What\nfollowed was one of the most stressful and difficult weeks of my life, during\nwhich I learned an incredible amount about web development. I had to stop\nthinking about databases and start thinking about serialized JSON structures\nstashed on S3; stop thinking about building tools and start thinking about\nmashing up tech that was never designed to be married (in this case Simile\nTimeline and Google Maps); stop thinking about idealistic development\npractices and start thinking about getting a working product out the door. In\nshort: I had to rewire my brain for news.\n\nThis talk will go in-depth on deadline-oriented strategies that I've learned\nin a year of building news applications. Some of these revolve around specific\ntechnologies, like fabric for single-keystroke deployments or Varnish for\ncaching, but most will be matters of practice, like what to test when you have\nno time for testing or how to avoid (yes, avoid!) database migrations.\n\nThey say Django is \"the web framework for perfectionists with deadlines.\" This\nis their Art of War.\n\nTalk outline:\n\n * An anecdote: Agent Orange \n * We can't have nice things (or best practices) \n * Low-hanging fruit: staging environment, git branches, PEP8. \n * Only build it once: Iterations, interviews and stakeholders \n * Salvage, share and steal [code] \n * Keeping track: Be a ticketing warrior \n * Tools improve faster than you do: iterate your stack \n * Single-keystroke deployment (fabric) \n * Migrations are hard: Building read-only apps \n * Don't serve that: Using S3 for hosting \n * Caching > optimization (varnish) \n * Know your load limits (beeswithmachineguns) \n * Configuration-as-application: application frameworks (maps, tables) \n * Pair programming > functional testing > unit testing \n * except UseWordpress, e: print \"No, really\" \n\nSites that will be used as examples:\n\n * Agent Orange \n * Burr Oak Memorial \n * Census 2010: Cook county participation rates map \n * Area judges and supervision rates of speeders table \n * RedEye Homicide Tracker \n * Chicago Tribune Elections Center \n * 2010 Illinois School Report Cards \n * TribLocal \n\n", "quality_notes": "", "copyright_text": "Creative Commons Attribution-NonCommercial-ShareAlike 3.0", "embed": "", "thumbnail_url": "http://a.images.blip.tv/Pycon-PyCon2011BestPracticesForImpossibleDeadlines540-981.jpg", "duration": null, "video_ogv_length": 142203515, "video_ogv_url": null, "video_ogv_download_only": false, "video_mp4_length": null, "video_mp4_url": "http://05d2db1380b6504cc981-8cbed8cf7e3a131cd8f1c3e383d10041.r93.cf2.rackcdn.com/pycon-us-2011/391_best-practices-for-impossible-deadlines.mp4", "video_mp4_download_only": false, "video_webm_length": null, "video_webm_url": null, "video_webm_download_only": false, "video_flv_length": null, "video_flv_url": null, "video_flv_download_only": false, "source_url": "", "whiteboard": "", "recorded": "2011-03-11", "added": "2012-02-23T04:20:00", "updated": "2014-04-08T20:28:27.951" }