{"guid":"54199492-b277-4a63-8014-8f62331dcd6c","title":"Keynote: How I Design Programs","subtitle":null,"slug":"bob2021-how-i-design-programs-gibbons","link":"bob2021-how-i-design-programs-gibbons","description":"Functional programming is full of “folk tricks” that\nseem inscrutable to novices. Many of them can be traced back to John\nReynolds, who showed us how to use continuation-passing style and\ndefunctionalization to transform a recursive interpreter for a\nlanguage into an abstract machine for programs in that language. The\nsame techniques explain zippers and accumulating parameters. Buried\nwithin all those applications there is usually a hidden appeal to the\nalgebraic property of associativity. In this talk, Jeremy Gibbons will entice\nassociativity out of the shadows and into the limelight.\n\n\t","original_language":"eng","persons":["Jeremy Gibbons"],"tags":["bob2021","1000","2021","Talk","BOB","BOBKonferenz"],"view_count":446,"promoted":false,"date":"2021-02-26T00:00:00.000+01:00","release_date":"2021-06-29T00:00:00.000+02:00","updated_at":"2026-03-14T00:45:04.450+01:00","length":2712,"duration":2712,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2021/1000-54199492-b277-4a63-8014-8f62331dcd6c.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2021/1000-54199492-b277-4a63-8014-8f62331dcd6c_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2021/1000-54199492-b277-4a63-8014-8f62331dcd6c.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2021/1000-54199492-b277-4a63-8014-8f62331dcd6c.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob2021-how-i-design-programs-gibbons","url":"https://api.media.ccc.de/public/events/54199492-b277-4a63-8014-8f62331dcd6c","conference_title":"BOB Konferenz 2021","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2021","related":[],"recordings":[{"size":172,"length":2712,"mime_type":"video/webm","language":"eng","filename":"bob2021-1000-eng-Keynote_How_I_Design_Programs_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2021-06-29T13:51:15.946+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2021/webm-hd/bob2021-1000-eng-Keynote_How_I_Design_Programs_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/54353","event_url":"https://api.media.ccc.de/public/events/54199492-b277-4a63-8014-8f62331dcd6c","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2021"},{"size":77,"length":2712,"mime_type":"video/webm","language":"eng","filename":"bob2021-1000-eng-Keynote_How_I_Design_Programs_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2021-06-29T13:27:52.715+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2021/webm-sd/bob2021-1000-eng-Keynote_How_I_Design_Programs_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/54352","event_url":"https://api.media.ccc.de/public/events/54199492-b277-4a63-8014-8f62331dcd6c","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2021"},{"size":62,"length":2712,"mime_type":"video/mp4","language":"eng","filename":"bob2021-1000-eng-Keynote_How_I_Design_Programs_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2021-06-29T13:17:36.586+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2021/h264-sd/bob2021-1000-eng-Keynote_How_I_Design_Programs_sd.mp4","url":"https://api.media.ccc.de/public/recordings/54351","event_url":"https://api.media.ccc.de/public/events/54199492-b277-4a63-8014-8f62331dcd6c","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2021"},{"size":41,"length":2712,"mime_type":"audio/mpeg","language":"eng","filename":"bob2021-1000-eng-Keynote_How_I_Design_Programs_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2021-06-29T13:16:45.396+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2021/mp3/bob2021-1000-eng-Keynote_How_I_Design_Programs_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/54350","event_url":"https://api.media.ccc.de/public/events/54199492-b277-4a63-8014-8f62331dcd6c","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2021"},{"size":22,"length":2712,"mime_type":"audio/opus","language":"eng","filename":"bob2021-1000-eng-Keynote_How_I_Design_Programs_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2021-06-29T13:16:29.263+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2021/opus/bob2021-1000-eng-Keynote_How_I_Design_Programs_opus.opus","url":"https://api.media.ccc.de/public/recordings/54349","event_url":"https://api.media.ccc.de/public/events/54199492-b277-4a63-8014-8f62331dcd6c","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2021"},{"size":102,"length":2712,"mime_type":"video/mp4","language":"eng","filename":"bob2021-1000-eng-Keynote_How_I_Design_Programs_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2021-06-29T13:16:26.675+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2021/h264-hd/bob2021-1000-eng-Keynote_How_I_Design_Programs_hd.mp4","url":"https://api.media.ccc.de/public/recordings/54348","event_url":"https://api.media.ccc.de/public/events/54199492-b277-4a63-8014-8f62331dcd6c","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2021"}]}