GET /api/v2/video/1310
HTTP 200 OK Vary: Accept Content-Type: text/html; charset=utf-8 Allow: GET, PUT, PATCH, HEAD, OPTIONS
{ "category": "EuroPython 2012", "language": null, "slug": "protocol-specifications-written-in-python", "speakers": [ "F Haard" ], "tags": [], "id": 1310, "state": 1, "title": "Protocol specifications written in python", "summary": "[EuroPython 2012] F Haard - 4 JULY 2012 in \"Track Ravioli\"\n\n", "description": "Rapidly updating the requirements and implementation of a machine-to-machine\ncommunication protocol is hard in itself, and keeping a protocol specification\nand documentation up-to-date is always a burden, and sometimes becomes an\nimpossibility. At Visual Units, when this became a problem with the protocol\nbetween the embedded software and the fleet management server, we changed the\napproach and specified the protocol in Python. This allows us to use the\nspecification directly when generating and parsing messages, as well as making\nit possible to generate protocol documentation, and source code for our Java\n(J2ME) client software. We implemented everything from scratch, and found it\nsurprisingly easy to do without documentation and specifications external to\nThe Code. This talk will focus on lessons learned and pitfalls found during\nthe implementation of this solution, with code examples from our current state\nof art as well as showcases of some of the mistakes we made and the types of\nmagic used in different iterations - most notably metaclasses and the inspect\nand imp modules. It will follow the evolution from the first (quite horrible)\nattempts, to our current implementation. I will also discuss what has been\ngained by adopting this solution and the tradeoffs that we have made. The\nintended audience is developers and designers who work with and design\nprotocols, as well as developers with a general interest in code as\nspecification. This is not a presentation of a framework for use in any\napplication (although code is available), but an in-depth look at how far you\ncan go with custom-built tools.\n\n", "quality_notes": "", "copyright_text": "Standard YouTube License", "embed": "<object width=\"640\" height=\"390\"><param name=\"movie\" value=\"http://youtube.com/v/Cgf73JmuINU?version=3&amp;hl=en_US\"></param><param name=\"allowFullScreen\" value=\"true\"></param><param name=\"allowscriptaccess\" value=\"always\"></param><embed src=\"http://youtube.com/v/Cgf73JmuINU?version=3&amp;hl=en_US\" type=\"application/x-shockwave-flash\" width=\"640\" height=\"390\" allowscriptaccess=\"always\" allowfullscreen=\"true\"></embed></object>", "thumbnail_url": "http://i.ytimg.com/vi/Cgf73JmuINU/hqdefault.jpg", "duration": null, "video_ogv_length": null, "video_ogv_url": null, "video_ogv_download_only": false, "video_mp4_length": null, "video_mp4_url": null, "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": "http://www.youtube.com/watch?v=Cgf73JmuINU", "whiteboard": "", "recorded": "2012-07-04", "added": "2012-09-06T22:33:20", "updated": "2014-04-08T20:28:27.292" }